摘要: 软件构建学问中总有一些理论上很美好,但是一使用就面目全非的东西,比如传统的瀑布模型。敏捷里很多被称之为思想的东西,恰恰没有太高深的理论,但都是一些实践的艺术,强调动手做而不是用理论论证。TDD就是这样一种东西,单纯去研究它的理论,分析它的优点和缺点没有任何意义,因为它本身就是一个很单纯的东西,再对其抽象也得不出象“相对论”那样深厚的理论。问题是你做了没有?支持TDD的人有没有从实践中真正体会到了它的优点,对TDD不屑一顾的人是否通过实践验证了自己的看法,而不是简单的人云亦云? 我第一次实践TDD是在做“TMS 配置数据转换工具”时进行的,在那之前其实已经注意TDD的很长时间了,但是一直无从下. 阅读全文
posted @ 2008-08-27 22:54 oRbIt 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 上学的时候有一道题目一直困扰着我,那就是厨师摆盘子问题,问题的描述是这样的:厨师的所有盘子都放在一个架子上,每天工作结束他都要将盘子按照从小到大的顺序排好,问题是架子不太稳,如果一次拿出一个或几个盘子,架子可能要倒掉,所以他必须只能从一边翻动盘子,由于他只有两只手,所以只能用两只手将拿起的盘子一起翻转。问题是当给出一个杂乱的盘子序列时,如何以最小的翻转次数将其排序。 当时用穷举的方法解决了这个问题,但是看到很多资料都说此类最优解的问题还可以用动态规划法解决,但是我一直没有找到分解最优子问题的方法,所以只好放弃了。前一段时间看《编程之美》,其中“一摞烙饼问题”那一章提到的一摞烙饼问题其实和厨师. 阅读全文
posted @ 2008-08-26 21:32 oRbIt 阅读(1372) 评论(0) 推荐(0) 编辑
摘要: 自己动手编译firefox,thunderbird 方法补充 去年,我在博文《自己动手编译Mozilla Firefox和Thunderbird》介绍了mozilla旗下的两款开源软件firefox和thunderbird在Windows平台上的编译方法,不过从去年年底开始,mozilla为了简化编译方法,将所有编译firefox和thunderbird的工具集成为一个统一的工具mozilla-build,并用MingW32代替了Cygwin,这样一来,编译firefox和thunderbird就简单多了,不过在编译过程中还是有一些意外情况需要处理,本为就简单介绍一下新的编译方法。我使用的的. 阅读全文
posted @ 2008-08-18 22:09 oRbIt 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 《编程之美》一摞烙饼问题探讨 这类问题我最早遇到是厨师摆盘子问题,就是厨师要把一个架子上的盘子按照从大到小排列,只能象本题中翻动烙饼的方式翻动盘子,当时我给出了这样的答案:int FindMaxIdx(int *pDishes, int nBegin, int nEnd){ int i,maxIdx = nBegin; for(i = nBegin + 1; i <= nEnd; i++) { if(pDishes[i] > pDishes[maxIdx]) { maxIdx = i; } } return maxIdx;}void Revert(int *pDishes, int 阅读全文
posted @ 2008-08-18 21:58 oRbIt 阅读(585) 评论(0) 推荐(0) 编辑
摘要: 上个月到福州路“扫”书店,本来想买几本敏捷和TDD的书,确意外发现了《编程之美》这本书。一开始被吸引是因为书名下面的副标题:微软面试。。。。,因为2005年毕业的时候曾有一次失败的微软面试,所以抱着事后看客的心态拿起来翻翻,这一翻就决定立刻买下这本书。从第一章开始,每一章的例子都很吸引我,虽然有一些题目早知道解法,但看到有更巧妙的方法时还是忍不住击节,要是但是面试的时候能先看看这本书就好了,嘿嘿。夸归夸,缺点还是要提的,本书的勘误之多也是出类拔萃的,拿到书时就看到里面夹了一张勘误表,当时没在意,到看的时候就发现不对劲了,上网一查,原来还有一张更长的勘误表,呵呵。 书中第9页给出了一个能够根据. 阅读全文
posted @ 2008-08-04 23:09 oRbIt 阅读(1186) 评论(0) 推荐(1) 编辑
摘要: TabSiPlus发布没有时间限制的版本 自从发布源代码后,就忘了TabSiPlus还有时间限制,直到今天早上一到公司就发现TabSiPlus过期罢工了,真是FT,弄得一天都不知道怎么写代码了,只好晚上赶快赶出一个没有时间限制的版本,这下大家都清静了。关于这个时间限制其实是一个学法律的同学建议的,我也曾给SourceDynamic发邮件咨询过这个问题,但是他们没有回复,现在就这样吧,等他们有要求的时候再说。 由于上一个版本新增了一个文件搜索定位功能,导致打开文件或文件Flip时非常慢,导致Source Insight长时间停止反应,这个版本中对之进行了优化,效果应该会好很多。 很多朋友问文件. 阅读全文
posted @ 2008-07-01 23:05 oRbIt 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 原作 :Mark Levison [英文原文:http://www.infoq.com/news/2008/06/multiple_versions ]翻译 :oRbIt 产品的第一个版本发布出去以后,你和你的团队就必须面临一个进退两难的局面--如何在维护已经发布的版本的基础上继续开发下一个版本。针对这个问题,Michael Dubakov(Target Process的创建者和CEO)在他的文章《Should We Have Parallel Releases and Iterations in a Project?》中总结了一些经验。 在文章举出的例子中,Michael需要修正1.0版本的 阅读全文
posted @ 2008-06-03 23:02 oRbIt 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 你的防火墙可靠吗 流氓软件和木马在各种防火墙和杀毒软件的“打压”之下已经开始逐步向内核“退缩”,传统的依靠查看本地打开的端口与进程的关系的方法检查非法网络访问已经不再适用,个人防火墙已经成为装机必备的软件。目前主流的个人防火墙软件都是构建在Windows内核之上的,但是Windows的内核驱动是分层的,防火墙工作在哪一层实际上就决定了防火墙的性能,工作在TDI层的防火墙是无论如何也不能知道NDIS层的数据收发情况的,因为TDI驱动层在内核中是高于NDIS驱动层的。过去的木马(上个世纪九十年代以前)都是构建在Windows应用层上的普通程序,工作在TDI层的防火墙可以轻易地觉察并阻断它们非法的. 阅读全文
posted @ 2008-03-31 21:39 oRbIt 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 不知道从什么时候开始,switch-case语句成了代码坏味道的代名词,写代码的时候小心翼翼地避开它,看到别人代码中的switch-case就皱眉头,想想其实大可不必这样,switch-case语句并不是代码坏味道的根源,坏味道来自糟糕的代码(结构)设计,比如过多的switch-case分支,或者多重switch-case嵌套等等,这些都将导致代码可读性下降,如果再加上代码风格较差,代码不对齐,那么坏味道就相当地大了。 简短的switch-case还是继续用吧,但是对于分支太多的长switch-case最好能想办法化解开,那么什么算长什么算短呢?我也不知道,就以在最低分辨率的显示器上能够在一. 阅读全文
posted @ 2008-02-25 21:28 oRbIt 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 关于如何做一个Source Insight外挂插件的全过程都已经写完了,这么一点东西拖了一年的时间才写完,足以说明我是一个很懒的人,如果不是很多朋友的关心和督促,恐怕是难以完成了。许多朋友希望顺着本文的思路也作一个类似于TabSiPlus功能的Source Insight外挂插件,抱歉让他们等了这么长时间,看了本文或许能让大家消消气(大头在后面)。其实即使不是为了给Source Insight做外挂插件,本文的很多方法都可以用于给其它软件做外挂。 尽管本文介绍了做TabSiPlus外挂插件的完整过程,但是要做一个有使用价值的外挂插件还有很多细节要注意,首先是稳定,插入到Source Insi. 阅读全文
posted @ 2008-01-21 00:24 oRbIt 阅读(1163) 评论(0) 推荐(0) 编辑