Web Analytics

别忘了测试你的假定

周四下午,收到同事的一封mail,他告诉我他的业务代码中使用的一个库接口的行为与预期不同,并在mail中给出了测试代码和测试结果。而这个接口是之前由我封装实现的。 ...

January 8, 2011 · 2 min · Tony Bai

关于年终总结

年终岁尾,又到了该做年终总结的时候了。有些人觉得年终总结很难写,于是自欺欺人的在网上到处高价找枪手;亲自动手写总结的人也是抓耳挠腮,迟迟无法下笔。其实我倒不觉得总结有这么难,自己做过的事写出来又有何难呢!也许是你的心魔在作怪罢了(什么心魔,你懂的!)。对自己负责的人肯定是会主动积极地去做总结的,总结的第一对象也一定是自己,其次它的另外一个用途才是用来提交给领导看的。你的总结无需文采飞扬,关键要言之有物,切中要害,否则与一张废纸无异。总结无非是回顾过去,展望将来,甚至连结构形式都大同小异,所以你只需要认真思考内容就行了。 ...

January 4, 2011 · 2 min · Tony Bai

果果祝大家新年快乐

好久没在博客里说果果了,小家伙儿现在淘气的很,这是因为她已经会爬了^_^。其实一个月前果果就能爬了,但只能类似蛙泳式的双手拔地的爬,显得很笨拙,爬行速度和距离都有限。但现在已经可以抬起肚子跪爬了,长距离爬行已不再是问题了。而且遇到床沿儿、沙发扶手之类的>物体,她用手扶着就能自己站立起来。作父母的在欣喜之余,也甚是担心。这一个月来果果没少磕磕碰碰,这也许就是成长的代价吧^_^。 果果已经开始吃辅食了,而且食欲很好,很能吃,一次甚至可以吃掉一个大苹果(这点有些像爸爸^_^)。再加上母乳很充足,使得果果体格看起来很壮实,个头似乎也比同阶段的孩子大些。不过前两个月健康体检,医生说果果略为缺D(即老百姓常说的缺钙),并有轻微贫血。医生给果果开了大剂量补D的胆维丁乳和一些治疗贫血的药。补血的药果果是很不愿意吃的,喂起来也着实费劲,看着孩子痛苦的表情,遂决定不喂了,代以食补为主。 ...

January 1, 2011 · 2 min · Tony Bai

基于svn diff结果的有效代码量统计

很多公司的过程中都有阶段性统计新增或修改的有效代码行数这一环节,这里先不论统计出的结果用于做什么,就统计本身而言,常常存在诸多问题,比如统计过程耗时且繁琐、统计结果中估算成分较大,不精确等。这些问题以前也一直困扰着我们,并且长时间没有想出很好的解决办法。 ...

December 24, 2010 · 2 min · Tony Bai

关于在线代码评审的几点考量

记得上次折腾Review Board这个在线代码评审工具还是在一年前,那时的Review Board版本是1.0.3;这周部门的一位同事也在折腾Review Board,不过现在的版本已经升级到了1.5.1了。新版Review Board显然修正了许多旧版本中存在的问题,另外无法支持ssl邮件端口的问题也被我这位同事通过更换django源文件的方式搞定了。Review Board好用了,下一步需要关注的就是怎样才能用好Review Board的问题了。 ...

December 18, 2010 · 2 min · Tony Bai

使用Libtool创建库文件

除了autoconf和automake,GNU的autotools工具包中还有一种工具,它就是libtool。顾名思义,libtool是一个关于库文件制作、安装和使用的工具,它屏蔽了各个平台在库制作、安装和使用方面的差异,为上层提供了统一的接口。你可以直接使用libtool创建静态或共享库,也可以将libtool与autoconf、automake结合在一起使用。第二种方式显然更具实际意义,也更为简单。 在一个使用autoconf和automake构建的编译环境中添加libtool的支持,只需改动几处即可: 首先,你需要在configure.in(或configure.ac)中添加AC_PROG_LIBTOOL宏(注意:去掉AC_PROC_RANLIB宏)。 其次,修改Makefile.am: 如果是建立库文件,则需将lib_LIBRARIES改为lib_LTLIBRARIES,同时将库的后缀名由.a改为.la,这将告诉automake采用libtool来创建相关库: lib_LIBRARIES = libfoo.a => lib_LTLIBRARIES = libfoo.la libfoo_a_SOURCES = libfoo.c => libfoo_la_sources = libfoo.c ...

December 14, 2010 · 3 min · Tony Bai

尝试博客搬家

早在若干年前就有朋友建议我搭建一个独立博客,可当时的我觉得blogbus提供的服务很不错,自己没有必要去折腾,费钱又费力,所以我选择了继续留在blogbus。 这两年blogbus服务一直在不断的提高,自己也一直很欣赏blogbus的简单、清新、无广告的风格,大巴后台管理中心的功能也变得越来越强大了。不过这期间blogbus也出现过几次较为严重的故障,导致长时间的无法提供服务。上周blogbus再次出现文件服务器故障,导致上传的图片不能正常显示。这次我做了另外一个选择:尝试搬家。之所以称为“尝试搬家”,是因为搬家可能成功,也可能失败。 ...

November 30, 2010 · 3 min · Tony Bai

给assert加上返回值,不给力!

众所周知,assert是程序调试阶段的一柄利器,可以帮助程序员快速的定位代码问题。但一般来说当程序部署到生产环境的时候,我们会选择关闭assert。不过由于历史原因,我们运行在生产环境下的程序中的assert依旧发挥着作用,这样一把双刃剑就悬在了我们头上。 ...

November 24, 2010 · 3 min · Tony Bai

有选择的保留遗留“惯例”

在工作中,我们常常会听到这样的声音:“原来的系统就是这么做的!”。 没错儿,在工作中我们潜移默化地受到了遗留系统的一些设计和实现的“惯例”的影响,另外天生携带的懒惰基因使我们很少去思考和判断这些惯例的正确性和保留的必要性。但事实上,我们确应该经常重新审视这些遗留的“惯例”,有选择的保留,并敢于放弃。 ...

November 15, 2010 · 4 min · Tony Bai

lcut增加对mock的支持

记得恰好是在一个月前的今天,我发布了lcut(轻量级C语言单元测试框架)0.1.0版本 。由于发布仓促,文档没能及时跟上。在stackoverflow的一个关于单元测试的帖子 上,一位叫Craig McQueen的朋友也给出了建议:“Some documentation would be helpful. Project background and goals, a features list, advantages over existing alternatives, etc would be helpful for people who are checking it out for the first time.” 看完这个建议后心里那个汗啊!不过一想到用E文编写文档心里就有些打怵。就这样在这一个月里文档依旧没有改观:(。不过,lcut本身还是有一些进步的,这两天一直规划着为lcut增加mock的支持,今天终于将这个功能加进了lcut,并发布了lcut-0.2.0-beta版,欢迎大家试用,并提出意见和建议。 ...

October 29, 2010 · 3 min · Tony Bai