RSS 2.0 Feed
2004-03 Entries
摘要:Kaneboy贴了一段日本程序员写的代码,JGTM对代码作了重构,俺觉得还可以继续重构成如下 : public void UpdateDataCell(DataTable table, int rowIndex, string columnName, object value) {     table[rowIndex][columnName] = value; } public void GetGridItemIndexInCurrentPage(DataGrid grid, int itemPagedIndex) {     return grid.CurrentPageIndex * grid.PageSize + itemPagedIndex; } public void XXX(...) {    UpdateCell(dt, GetGridItemIndexInCurrentPage(meisaiIchiran,e.Item.ItemIndex), t.BindFldName, txt); } 我觉得如果某个变量如果只被赋值一次,而且赋值之后只被用到很少几次的话,在不影响可读性和性能的前提下,可以replace temp with query,提倡节约使用,能省就省。...[阅读全文]

posted @ | Feedback (11) |

摘要:根据google的算法,标题含有热门搜索关键字,可以提高在google中的排名。 好的软件首先关注本质功能,然后才是外观以及其他 不可否认,软件的外观很重要,然而软件的根本在于其所提供的功能,当然,本来就以玩酷为卖点的除外。比如一个数据输入页面,为了让它能体现自己的((不是客户的))审美风格和设计思想,做得非常的酷,而且叶面中提供了很多辅助的功能,满怀希望的期望从客户那里获得如潮的好评,然而事实恰恰相反。用户常常是买来一些客户资料,然后飞快的输入的系统中,用户在输入资料时不会理会软件玩弄的那些技巧,而用户希望的功能--例如不会因为偶然多按了几下tab致使数据输入到错误的位置上恰恰没有提供。 追mm前首先要明白,长的很PP的MM不一定就是优秀的MM,虽然我们希望优秀的mm最好也很PP 好的软件要首先关注用户最最主要的使用模式 比如一个查询的叶面,当公司的客户打电话来询问的时候,用户可以用它来查询与该客户以前的交互纪录以及该客户购买的产品,兴趣范围等等,很不幸这些数据分散在不同的地方(开发者认为,这么多数据集中的一个地方会让叶面上数据很杂乱,而且影响速度),于是,用户的下场是被揪到办公室里训斥“喂,小子,转一个电话竟然要几分钟,干什么吃的!“ 追MM。首先要清楚MM最爱好什么。 好的软件,开发者该清楚使用者是用户,而不是他们自己 上面的例子也适用于本条,还可以补充一个,做报价单时,有一个叶面是查询产品信息以及最新价格的,开发者认为,产品的编号实在太长了,而且都是无序字母和字符,所以这个查询叶面应该按照.....等来查询,然而,产品的编号对于用户说是如此的亲切,若干个产品号码烂熟于胸,结果就是用户查询产品的信息的时间多了5倍,而开发人员为了实现这个复杂的叶面,浪费了5天。 追MM。不要以自己的思维模式去推测MM。 好的软件应该礼貌的 一个电子邮件软件,设置了收到邮件后提醒后,每收到一封电子邮件,就会弹出一个对话框,一次一次的打断我的工作,询问我要马上看,还是待会看,生怕我忽视了它的存在,即使采用这种弹出对话框的方式,告诉我邮件发件人以及邮件的主题是轻而易举的事情,只告诉我收到一封邮件,没有任何其他信息,我凭什么判断是马上看呢还是先搁置起来呢? 另外一个例子就是一些软件,每当出错时就问我要不要发送错误报告,如果出现错误是非常难得的事情,我有幸碰到了自然会荣幸的把错误信息发给软件的开发商,不幸的是,我常常会遭遇错误的袭击。 追MM,关键不在于骚扰的数量,而在于骚扰的方式, 好的软件应该友好的 一个项目管理软件,一项功能是调整项目人力资源的分配,就是项目分多少阶段,而每个人在不同的时段能提供的可供支配的时间是不同的,当我辛辛苦苦调整完之后想保存时,软件总是告诉我输入有错误,有人实际分配的时间大于可供分配的时间,但是,就是故意不告诉到底是谁以及在项目哪一个阶段。 你敢这么对待MM吗? 好的软件,应该体贴的 与其让所有的用户50%的满意,不如让50%的用户100%的满意。软件不停的升级,开发人员累死累活,不停的推出新的版本,添加新的功能,然而的更多的功能真的为争取来更多的用户吗? 你希望很多mm对你都是50%的满意度呢,还是一个PPMM对你100%的倾心呢? 好的软件应该是对用户体贴,善解人意的。。。。。。 好的软件不应该故意引导用户犯错误。。。。。。 好的软件不应该让用户感到自己是个笨蛋。。。。。。 好的软件。。。。。。...[阅读全文]

posted @ | Feedback (12) | Filed Under [ 无聊 ]

摘要:在google搜索PPMM,microhelper竟然排在第5位,哎,看来访问量有一半是靠PPM赚来的 中国的IT业有一个专家,当年在新浪IT论坛折腾过,也是博客的鼓吹者,他抱怨政府对IT投入不够。 农业。。。。,不说了,以前某人还吹中国粮食几年吃不完如何如何,教育要产业化如何如何,医疗要产业化如何如何...[阅读全文]

posted @ | Feedback (3) |

摘要:一直要求我们加一个功能:在编辑窗口,在数据改变了还没有保存的状态下,如果用户离开当前窗口,要提示用户保存数据。 如果使用GenericControl,那么需要加一个属性OriginalValue,保存原始的数据。 如果不用GenericControl,那么采用原来系统中用的xml island方案也是比较方便的。先调用Entity类的DTOToXML将数据转换成xml格式写到客户端,在客户端将xml和编辑控件绑定起来,检查时就将节点的value和originalvaue比较,还可以根据xml中的定义的属性对数据进行进一步的检查,比如数据类型,范围,将xml传回服务器端后,调用XMLToDTO或者fill方法就可以将用户数输入的数据fill到Entity中,xml可以看作一个DTO对象。 XML用在表格编辑就地中有一些缺点1:客户端XML绑定的速度比较慢2:如果XML没有数据节点,表格还是会多出一行空行,需要手工隐藏掉但是比起asp.net内置的编辑方式也有优点1:datagrid可以禁用viewstate2;一次编辑多行数据,不用每次postback3:客户端实现排序非常方便 明天出去游玩,可惜5点多就要起床赶车,哎。...[阅读全文]

posted @ | Feedback (0) |

摘要:http://www.wilsondotnet.com/是不错,可是如果选择了用中文显示,那就像我翻译的文章一样了 新的DAL的设计 访问数据库1:使用存储过程访问数据库, 2:借助于spDTO类访问存储过程,spDTO通过代码工具自动生成[StoreProcedure(myProcedure)]public class myProcedure {  [SpParameter("Parameter1",DbType.Int16)]  public int Parameter1} myProcedure sp = new myProcedure()myDataHelper.RunSp(sp) 3:轻量级ORM系统近30%的工作是CUID,需要一个轻量级的ORM,暂时不需要太多功能。 4:DTO与table的映射暂时用attribute吧,因为用interface访问,所以以后切换起来也方便。尽管xml可以方便的存储更多的信息,比如Datasource,UIControlType,但是现在还没时间实现,不认为使用xml可以不用编译能带来多大的好处。DTO类直接暴露公共属性,不用get.set了 5:从DataRow到DTO实现接口中定义的函数DataRowToObject 6:某些类可以自动生成DTO对象以及从DTO读取数据values = new Hashtable();foreach (PropertyInfo p in o.GetType().GetProperties()){ values[p.Name] = p.GetValue(o, null);} foreach (PropertyInfo p in o.GetType().GetProperties()){p.SetValue(o, values[p.Name], null);} 7:Query Builder ?不需要了。上一个系统单纯的Query页面只有两个。 8:数据库可移植?在有限的时间内,看不到会使用别的数据库,下一版本做吧 9:不使用com+的事务控制,尽量使用存储过程和ADO来做事务处理 10:对remote提供build in的支持?下下一版本吧,现在来看,规划的绝大多数程序不需要distribute 11支持DTO到xml的转换,DTOToXml,当然如果用xml文件来保存映射关系,直接用xslt就行了。 12:为每一个属性,提供统一的UI表现形式GenericControl根据Datatype,DataSource,Maxlength等确定UI上显示的实际html控件类型,自动填充数据,内置数据验证,统一定义控件不同状态下的表现风格,比如可编辑,不可编辑等,不知道有没有时间完成 13:编辑页面上UI界面控件和实体类的自动绑定?不做了 14:业务层?等需求确定以后把  ...[阅读全文]

posted @ | Feedback (6) |

摘要:前一段时间讨论sql注入式攻击,将sql注入式攻击的基本原理和基本防范方法加入的文章列表中 dotnetguru网站用的是什么语言呀,看着别扭,不过一部分文章还是能看得懂的,其中PetShopDNG,PetShopDNG2.0 with multi-layer,PetShop3.0 SOA可以当作入门教材。  ...[阅读全文]

posted @ | Feedback (3) |

摘要:微软的Sql Server 2000分析工具Microsoft SQL Server 2000 Best Practices Analyzer ,可以分析对MS SQL 2000的管理,使用,Script代码按照一定的最优规则进行分析。 在我的机器上运行了几次都没有成功后,就再也不用了。所以,实际的效果不得而知。不过,修改安装目录下html目录里面的文件,可能会起作用。  ...[阅读全文]

posted @ | Feedback (5) |