摘要: 昨天被问到一个问题:怎么把WinForms里的DataGrid的绑定了数据库bit字段的列默认显示的CheckBox换成“男”和“女”,也就是说怎么样像ASP.NET的模板列那样可以自定义。(此处不考虑在SQL在用Case把数据结果转换了) 由于,基本没有搞过WinForms,所以这个问题弄了很久才搞掂,可能对于WinForms高手来说,这是一个很简单的问题。(我搜了一下网页,有不少讲TableStyle和ColumnStyle的资料,但没有找到直接的解决方案,问了一些搞过WinForms的朋友,也没有直接的解决方案,所以把我的解决方案放在博客园首页,DUDU如觉不适合,请移除。) 阅读全文
posted @ 2006-09-05 15:39 Think 阅读(16811) 评论(11) 推荐(0) 编辑
摘要: 回顾一下,最近被网友问得最多的还是正则表达式的问题,看来这个东东好用,但大家都太忙,没时间花这个小东东上。 所以做了个自定义控件,在使用正则式进行验证时有个小帮手,也许会好点,这个编辑器实现起来不是很难,因为基本不用涉及到正则的组等高级概念。 阅读全文
posted @ 2006-08-24 23:35 Think 阅读(5401) 评论(10) 推荐(0) 编辑
摘要: [文件下载]为两个DLL,一个为ZIP压缩算法的,一个CompressedViewState的Page。 通过设置CompressedViewState.Web.UI.Page的CompressionLevel属性,可以定制压缩比,并可关闭压缩 下面是压缩的效果: BestCompression状态下的ViewState:1861个字符 Deflated状态下的ViewState:1865个字符 DefaultCompression状态下的ViewState:1861个字符 BestSpeed状态下的ViewState:2025个字符 NoCompression状态下的ViewState:4389个字符 阅读全文
posted @ 2006-08-23 17:27 Think 阅读(4801) 评论(10) 推荐(0) 编辑
摘要: 针对于UrlMapping的不支持正则表达式的缺陷,做个支持正则表达式的UrlMapping,要求对正则语法熟才能用起来,要是有空写个像EntLib那样的配置工具设配置就爽了:P 阅读全文
posted @ 2006-08-22 14:16 Think 阅读(6600) 评论(6) 推荐(2) 编辑
摘要: 优秀ASP.NET程序员修炼之路 “为人写程序” 初级的程序员或经验不足的程序员往往只意识到自己的程序是写给计算机的,而不会在意程序其实也是写给人的,或在意得不够、不全面。 写给机器的程序,往往追求的是运行正确、执行效率能满足要求。但程序员的任务仅仅就是把业务逻辑转成机器能编译的计算机语言吗? 其实,程序首先(注意,是首先)是写给人的。第一,程序是写给看代码的人的。第二,程... 阅读全文
posted @ 2006-08-21 11:44 Think 阅读(5585) 评论(6) 推荐(0) 编辑
摘要: 文件说明: 1、压缩文件包含一个VS2005工程,内含四个项目。 2、第一个项目为DotNetAOP.SingleRealProxy,为使用RealProxy和ProxyAttribute实现的简单AOP实现 3、第二个项目为DotNetAOP.NestedRealProxy,为使用嵌套RealProxy实现多个消息截获后利用代理多处对消息进行处理,但由于一个对象有两个RealProxy会出异常,所以这个实现是不成功的,不过有兴趣的朋友可以对它进行少量修改,通过委拖或自定义的消息接收器来完成消息处理链。 4、第三个项目为DotNetAOP.MessageSinkWithRealProxy,为使用RealProxy调用MessageSink链来实现对消息附加多个关注者链。具体实现如下: a) Framework目录下为链式消息处理框架 ...... 阅读全文 阅读全文
posted @ 2006-08-07 16:10 Think 阅读(2977) 评论(0) 推荐(0) 编辑
摘要: 利用ServerContextSink来实现多截获的代码 本系列代码看似简单,其实都是我专门去研究了一下Remoting才实现的,因为我原来对Remoting没有什么了解,所以请不要扔砖 阅读全文
posted @ 2006-07-26 19:12 Think 阅读(4407) 评论(37) 推荐(1) 编辑
摘要: 实现利用RealProxy调用MessageSink链来实现用Attribute灵活多截获AOP 本系列代码看似简单,其实都是我专门去研究了一下Remoting才实现的,因为我原来对Remoting没有什么了解,所以请不要扔砖 阅读全文
posted @ 2006-07-26 19:02 Think 阅读(4799) 评论(31) 推荐(1) 编辑
摘要: .net AOP实现之利用RealProxy实现单截获 本系列代码看似简单,其实都是我专门去研究了一下Remoting才实现的,因为我原来对Remoting没有什么了解,所以请不要扔砖 阅读全文
posted @ 2006-07-26 18:49 Think 阅读(8453) 评论(14) 推荐(0) 编辑
摘要: 本系列文章主要讲述如何利用.NET的Remoting消息框架实现AOP 三种实现 利用消息机制实现.NET AOP(面向方面编程)--通过RealProxy实现 利用消息机制实现.NET AOP(面向方面编程)--利用RealProxy和消息接收器实现多截获 利用消息机制实现.NET AOP(面向方面编程)--利用ServerContextSink实现多截获 先把代码贴出来,有必要再写解释 阅读全文
posted @ 2006-07-26 18:35 Think 阅读(7358) 评论(6) 推荐(2) 编辑
摘要: 这是我最早学习WAP开发时整理的资料,可惜现在国内的WAP开发很少涉及到脚本。 阅读全文
posted @ 2006-07-08 15:10 Think 阅读(3692) 评论(0) 推荐(0) 编辑
摘要: 格式限定符中往往有一些字母代表特点的意思比如,在DateTime.ToString中,y代码年,M代表月,等等那么如果ToString的结果我本身就需要这些字符又怎么办呢?此时就需要使用转义字符,而且这个转义标记就是我们熟悉的"\" DateTime now = DateTime.Now;now.ToString("yyyy,MM,dd HH:mm:ffff");//2006,07,06 14:5... 阅读全文
posted @ 2006-07-06 14:59 Think 阅读(1819) 评论(0) 推荐(0) 编辑
摘要: 做移动MISC接入,要分析其发给SP方的SOAP请求 代码演示如何Select带七七八八命名空间的XML的节点 阅读全文
posted @ 2006-07-06 14:38 Think 阅读(9934) 评论(12) 推荐(0) 编辑
摘要: 博客园有位朋友留言问我Regex怎么支持Unicode,于是我想取出一个汉字的Unicode编码,写到Regex 的Pattern中,来说明这个问题。 结果差点被Unicode的BOM问题困扰。 阅读全文
posted @ 2006-07-05 14:10 Think 阅读(3704) 评论(1) 推荐(0) 编辑
摘要: 使用ruby 和 rt 标签可以实现注音效果,以上代码效果如下图 阅读全文
posted @ 2006-06-17 11:53 Think 阅读(5373) 评论(5) 推荐(0) 编辑
摘要: 从五一节前开始,我读完了三本书 《企业级应用开发--使用VS.NET、UML和MSF》 《Ajax in action》 《Code Complete 2nd edition》(900Pages) 比尔.盖茨说,任何日后出色的程序员前几年都做得很好。意思是说,一些好的习惯在从业初期养成,而这些好的习惯能决定你的优劣。好在我入行的前几年这段时间还算不错,至少养成了一个看书的好习惯,很年都会看大量的书... 阅读全文
posted @ 2006-06-07 22:36 Think 阅读(2096) 评论(9) 推荐(0) 编辑
摘要: 重构--在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改原因:1、代码重复2、冗长的子程序3、循环过长或嵌套过深4、内聚性太差的类5、类的接口未能提供层次一致的抽象6、拥有太多参数的参数列表7、类的内部修改往往最局限于某部分8、变化导致对多个类的相同修改9、对继承体系的同样修改10、case语句需要做相同的修改11、同时使用的相关数据并未以类的方式进行组织12、成员函数... 阅读全文
posted @ 2006-05-30 23:53 Think 阅读(861) 评论(0) 推荐(0) 编辑
摘要: 把错误稳定下来如果错误只是时不时地出现,那么几乎没有可能找出它发生的原因 阅读全文
posted @ 2006-05-29 22:59 Think 阅读(663) 评论(0) 推荐(0) 编辑
摘要: 开发人员测试方法:单元测试、组件测试、集成测试、回归测试、系统测试其他人员测试方法:beta测试、客户验收测试、性能测试、配置测试、平台测试、压力测试、易用性测试测试的目标是找出错误不可能彻底证明程序无错本身不能改善程序质量要求测试者假设存在问题开发者测试占用时间应该在整个项目时间8%~25%方法:针对需求、设计关注点测试、基础测试、数据流测试、使用检查表 测试先行:先写测试用例迫使你思考一下需求... 阅读全文
posted @ 2006-05-28 18:42 Think 阅读(700) 评论(0) 推荐(0) 编辑
摘要: Why?协同构建是其他质量保证技术的补充协同构建有利于传授公司文化以及编程专业知识各人优点的集合个人离开的代价更小缺陷修正可以指派任何一个人How?构建前后都应该保持协作结对编程 用编码规范支持结对 不要让结对编程变成旁观--分析代码、提前思考下一步、对设计评估、对如何测试做出计划 在简单问题上可不强求结对 进行轮换 鼓励双方跟上对方的步伐 避免新手组合 ... 阅读全文
posted @ 2006-05-28 17:54 Think 阅读(640) 评论(0) 推荐(0) 编辑
摘要: 软件同时拥有外在和内在的质量特性,外在质量指用户所能感受到的部分。外在质量:正确性、可用性(使用容易)、效率、可靠性、完整性(限制权限、访问正确性)、适应性、精确性、健壮性内在质量:可维护性、灵活性、可移植性、可重用性、可读性、可测试性、可理解性(内在一致性)改善质量的技术:软件质量目标明确定义质量保证工作测试策略软件工程指南非正式技术复查(桌面检查、代码走查)正式技术复查(质量门,以确定走出下一... 阅读全文
posted @ 2006-05-28 17:16 Think 阅读(705) 评论(0) 推荐(0) 编辑
摘要: 表驱动代替复杂的逻辑和继承结构三种表访问法:直接访问、索引访问、阶梯访问 阅读全文
posted @ 2006-05-27 22:40 Think 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 在while和do...while结构中考虑使用安全计数器,递归中使用安全计数器递归应限定在一个子程序中递归速度慢,无法预测运行中使用的栈内存,难懂不要使用float做为循环下标和边界使用由内而外的方法创建循环仅在为了增强可读性和可维护性的情况下使用goto所以的goto都向前跳 阅读全文
posted @ 2006-05-26 22:59 Think 阅读(614) 评论(0) 推荐(0) 编辑
摘要: 有的时候我们要操作一个URL地址中查询参数,为了不破坏URL的原有结构,我们一般不能直接在URL的后面加&query=value,特别是我们的URL中有多个参数时,这种处理更麻烦。 下面两个小方法就是专门用来为一个URL添加一个查询参数或删除一个查询参数,这两个方法隐藏了原URL有无参数,是不是原来就有这个参数,有没有fragment(#anchor)这些细节和处理 ==这两天好像大家都不往首页上放文章,所以这样的小东东也放一下…… 阅读全文
posted @ 2006-05-25 13:08 Think 阅读(4853) 评论(12) 推荐(0) 编辑
摘要: Make code reading from top to bottom easy. 阅读全文
posted @ 2006-05-23 23:38 Think 阅读(634) 评论(0) 推荐(0) 编辑
摘要: 每一个指针包含二个部分:内存中的某处位置,以及如何解释该位置。用狗牌字段来检测损毁的内存,(在结构里中设定一个专用于检验的值不变的Tag,如果引用的一个结构其Tag值不对,说明引用有误)或把某个字段的数据重复两次。在删除链表中一个节点时,特别是首节点,一定要保证下一个节点有能访问到它的指针分配一片保留的内存后备区域引用和指针最重要的区别是,引用必须总是引用一个对象,而指针则可以指向空值,引用所指向... 阅读全文
posted @ 2006-05-22 23:43 Think 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 好像去年也写过这样内容的贴子……不记得了 阅读全文
posted @ 2006-05-22 15:58 Think 阅读(3517) 评论(4) 推荐(0) 编辑
摘要: 整数:检查整数溢出浮点数:避免数量级相差巨大的数之间的加减运算,避免等量运算,10个0.1相加不一定等于1.0布尔:用布尔变量来简化复杂的判断枚举:第一个元素留做非法值数组:用集合、栈、队列代替数组 阅读全文
posted @ 2006-05-21 20:18 Think 阅读(524) 评论(0) 推荐(0) 编辑
摘要: 命名:1、反应问题,而不是解决方案,What 而不是 How2、长度,以10~16个字符最好3、作用域非常有限的变量也可以使用i这样的命名4、计算值限定词(Total/Sum/Average/Max)应该放在后面,重要的词放在前面5、Num放在前面表示总数,放在后面下标或序号6、嵌套循环中循环变量最好有意义7、为状态变量和临时变量命名8、区分全局(g_Var)、局部(firstSecond)、类的... 阅读全文
posted @ 2006-05-21 15:04 Think 阅读(502) 评论(0) 推荐(0) 编辑
摘要: 声明即初始化,避免非预期值错误最小化变量的作用域使用相同变理的语句尽可能集中在一起早期绑定减少灵活性同时减少复杂度,反之亦然每个变量用于唯一的用途 阅读全文
posted @ 2006-05-21 14:39 Think 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 有效使用伪代码:1、用类似英语的语言2、避免使用特点语言的元素3、在本意(intent)层面上编写伪代码4、在低层编写伪代码通过伪代码创建子程序1、检查先决条件(定义明确,与整体设计相符,结合需求必须)2、定义子程序要解决的问题(隐藏什么,输入什么,输出什么,前后条件是什么)3、为子程序命名4、决定如何测试子程序5、在标准库中搜索可用的功能6、考虑错误处理7、考虑效率问题8、研究算法问题9、编写伪... 阅读全文
posted @ 2006-05-21 14:34 Think 阅读(663) 评论(0) 推荐(0) 编辑
摘要: 子程序不应该因传入错误的数据而被破坏,哪怕是由其它子程序产生的错误数据。1、检查所有来源于外部的数据2、检查子程序所有输入参数的值3、决定如何处理错误的输入数据使用断言1、用错误处理代码来处理预期会发生的错误,使用断言来处理绝不会发生的状况2、避免把需要执行的代码放在断言中3、用断言来注释并验证前条件和后条作4、应该先使用断言再处理错误错误处理技术1、返回中立值2、换用下一个正确的数据3、返回与前... 阅读全文
posted @ 2006-05-19 22:53 Think 阅读(535) 评论(1) 推荐(0) 编辑
摘要: 良好的类接口:1、类的接口应该展现一致的抽象层次2、一定要理解类所实现的抽象是什么3、提供成对的服务4、把不相关的信息转移到其它类去5、尽可能的让接口编程,而不是表达语义6、谨防在修改时破坏接口的抽象7、不要添加和接口抽象不一致的公用成员8、同时考虑抽象性和内聚性 良好的封装:1、尽可能的限制类和成员的可访问性2、不要公开暴露成员数据3、避免把私用的实现细节放入类的接口中4、不要对类的使用者进行任... 阅读全文
posted @ 2006-05-19 00:08 Think 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 子程序就是为实现一个特点目的而编写的一个可被调用的方法和过程。方法 -- 具有返回值过程 -- 不具有返回值 为什么要创建子程序:1、降低复杂度(隐藏信息)2、引入中间、易懂的抽象,一个命名合适的子程序,是说明代码用意的最好方法3、避免代码重复4、支持子类化5、隐藏顺序6、隐藏指针操作7、提高可移值性8、简化复杂的判断9、改善性能10、隐藏全局数据如何设计子程序:1、功能内聚性,顺序内聚性,而... 阅读全文
posted @ 2006-05-18 23:58 Think 阅读(504) 评论(0) 推荐(0) 编辑
摘要: “险恶的问题”就是那种只能通过解决或部分解决才能明确的问题。犯错正是设计的关键所在--在设计阶段犯错并加以改正,其代价要比在编码后才发现同样的错误并彻底修改低得多。设计永无止境--到你没有时间再做了为止。精心设计的对象关系使关注点相互分离,从而使你在每个时刻只专注于一件事情。理想设计特征:1、最小的复杂度2、易于维护3、松散耦合4、可扩展性5、可重用性6、高扇入7、低扇出8、可移植性9、精简性10... 阅读全文
posted @ 2006-05-14 20:41 Think 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 人类的思维以语言为载体,语言决定思维,没有语言就没有思维。深入语言去编程。 阅读全文
posted @ 2006-05-14 12:21 Think 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 架构师吃掉需求,设计师吃掉架构,程序员消化设计。就如同你做这个项目的时间越长,对这个项目的理解也就越深入一样,客户参与项目的时间越长,他们对项目的理解也就越深入。开发过程能帮助客户更好的地理解需求,这是需求变更的主要来源。如果你的需求不够好,那就停止工作,退回去,先把它做好,再继续前进。确保每个人都知道需求变更的代价,建立一套变更控件程序,使用能适应变更的开发方法,放弃这个项目,注意项目的商业案例... 阅读全文
posted @ 2006-05-14 12:17 Think 阅读(673) 评论(0) 推荐(0) 编辑
摘要: 隐喻是什么?人们常常利用隐喻来利用了解的事物理解不了解的事物,如,我们在用鸡蛋来理解地球的结构,认为它由地壳(蛋壳),地幔(蛋白),地心(蛋黄)组成。在软件开发中,隐喻是一种启发,而不是一种算法。比如人们用传统建筑业来比喻软件开发,于是发现了可用于软件构建的设计模式。常用的软件隐喻:“种植庄稼”“牡蛎培植珍珠”“建筑” 阅读全文
posted @ 2006-05-14 11:57 Think 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 软件开发过程中的活动:定义问题需求分析规划构建软件架构详细设计编码与调试单元测试集成测试集成系统测试保障维护 阅读全文
posted @ 2006-05-14 11:47 Think 阅读(434) 评论(0) 推荐(0) 编辑
摘要: 本文源于维生素C.net的一篇文章利用数学方法来大大降低一个逻辑判断实现的难度的例子 阅读全文
posted @ 2006-05-14 11:07 Think 阅读(5520) 评论(6) 推荐(0) 编辑