All Stories

我怎么也用不了TDD

  TDD中说的是要先写测试用例,再写功能代码,可是无论如何,我都做不到这一点,我无论如何都要先写好功能代码,再回头来写测试用例。  不过虽然这么做了,但我觉得还是不影响我做单元测试的,哈哈。今天是我将CppUnit换成googlettest以来第一次正儿八经地写单元测试用例,感觉还是比较爽的,有种写代码就是一种享受的感觉。用googletest可以比用CppUnit少敲不少字,而且我猛然发现,不用GUI的TestRunner,也没有什么不好的感觉。  通过单元测试来保证类或函数的功能,最适用的场合是算法性的代码,真是太安逸了。

插件依赖

  因为要使得插件支持依赖,比如在插件描述中说明,某个插件A,依赖于插件B和插件C,而插件C又依赖于插件D,那么在装载插件A之前,需要先装载插件D,再装载插件B和插件C,最后才是插件A。  这个依赖关于跟C/C++程序代码中的头文件包含处理方式几乎一模一样,典型的做法就是把这所有的依赖关系最终用一张有向图表示,这样通过DFS可以查找到是否有循环依赖,如果有,可以彻底中断装载过程,或者只是简单地把最后一个回边打断而继续装载。  最终整理出来的插件装载顺序也是很容易的。首先查找没有依赖于任何其他插件的插件,无论是理论上还是实际上,肯定是有这种插件存在的。找到这些插件后,把对这些插件的依赖关系都删掉,这样肯定又多出一些插件是已经解决依赖关系的。再把这些多出来的插件作为被依赖的关系删掉,重复前面一步操作,最终可以将所有插件都顺利装载。

boost 1.39.0发布

  早上起来看了一眼邮件列表,发现boost 1.39.0居然发布,这次好像测试都没有多少消息,怪不得前两天就有人在邮件列表上开始说要1.40.0的release building了,真是快啊。这个节奏还真让人有点手足无措的。  在公司里,用的都是正规release出来的版本,那样每次build出来的lib和dll一般都是没有问题的。而在家里,我都是直接从svn里check out来的,里面有的代码还存在些bug,有些则可能连编译都成问题。本来因为懒得编译的原因,我一直都是只用header only的库的,可最近因为公司里那个项目的影响,用了boost::regex、boost::program_options、boost::system、boost::file_system等的库,渐渐对这些需要编译的库也有点依赖心理了,防范心理也弱了不少,可是svn里的代码几乎天天有所更新,编译的话,就太头痛了。

读《Imperfect C++》

  这书买了有一段日子了,但一直没有拿起来读过。几年前,也从公司的图书馆里借来过,好像那时候还在测试组吧,只是网上吹得厉害,于是就好奇地借来看看,结果完全不知所云,还暗骂网上吹的人不厚道。直到最近,一个同事以为自己把图书馆里借的那本搞丢了,在那说说,于是我又好奇心起,拿来翻了翻前面几页,发现讲得真好啊,原来以前是自己水平不够才看不懂的,于是上网买了一本。  我有这样的坏习惯,书借来的时候觉得挺好挺有用,于是自己去买,买了来就丢一边了,好像里面的知识已经掌握了似的。这次也不例外,但是昨天不知怎么的,拿出来,以最近最认真的状态看了两章,有些收获,只不过,这一年多来,沉迷于网络小说,实在静不下心来认认真真做些有意义的事呀!

手工皂

  托小妞在淘宝上买了块手工皂,照片很好看,那种那糕点,用小妞的话说,就是黄豆糕内嵌紫色布丁。昨天中午跟小妞他们两口子去万科城的夜郎国吃田鸡,把手工皂拿了来。包装也比较可爱,最外边是一个绿色的硬纸壳,纸壳夹起手工皂,两边没封起,可以看到里面,用一个塑料袋装着手工皂,塑料袋和纸壳在最上边还用一根绿色的小绳串起来打了个活结,很是吸引那些小女生的样子。  手工皂很小一块,小妞说大概每天用一下,能用两三个月吧。嗯,我明明记得以前是小妞跟我说的,男人过了25就应该保养了,可是上次她硬是说自己说的是女人,我大汗,不过看着自己脸上日渐粗大的毛孔,我就只认我记得的了,哈哈。

高质量就是装B吗

  google上有个讨论组,一直标榜自己高质量,可是为什么我订阅了这么些日子后,越来越感觉到这些个主题不知所云了,难道所谓的高质量在我看来就是装B的意思?  我狂烈地晕啊!

《Exceptional C++》看得郁闷

  这两天都是干点儿活,看两眼《Exceptional C++》,看得我异常郁闷!这是一本老书,讲的内容也都是我没关注过的,可能也正是这个原因,使得我看起来非常吃力,老是觉得不知所云,偶尔看到一些似乎有点儿明白的“原则”之类的tips,也是翻过一页立马就忘了,而更多的时候是不知道为什么要这样。  极度郁闷啊!

多线程下载有问题

  给升级程序加了多线程http下载后让同事试用,结果今天他打来电话报怨下载速度太慢了,甚至比以前单线程的时候还慢。用netmeeting看了一下,发现本来预计有5个线程同时下载的,现在居然是5个线程一个接一个地进行下载,这样明天会比单线程的要慢了,因为多了几次等待网络连接的时间,而且事实上自从改用多线程后才明显感觉到有时候一个网络连接的等待是好久,可能是十几秒。我在虚拟机里又试用了一下,还是5个线程并行的,那就郁闷了!  后来又想到一些可以改进的地方,但没动手,只是记到todo list里了。  唉,钱好少!

线程阻塞在连接操作

  今天终于把升级程序的http下载部分改成多线程下载了,用的WinINet用5个线程同时下载,发现总是会有1到2个线程会阻塞在连接操作上,这是花费时间最多的地方!暂没想到好的办法,先这样了,对于大文件来说,确实能提升不少下载性能。