Web Analytics

C单元测试之使用cmockery

这么久以来一直没有找到一款很好的支持mock测试的C语言单元测试工具包,但前不久在一网友的评论中得知:去年Google曾发布了一款c语言的轻量级单元测试framework — “cmockery”,cmcokery很小巧,对其他开源包没有依赖,对被测试代码侵入性小;它支持mock test,同样也可以支持常规的单元测试。 之前在博客中曾描述过C语言实现mock的一个思路,不过和cmockery对比起来,当时我的思路显然还处于初级阶段,而cmockery则走到了更高级,使用起来也更为简便。 还是以我上一篇文章中的代码来举例,利用cmockery来对biz.c进行mock test。 应用层被测试代码不变: /* biz.h */ #ifndef BIZ_H #define BIZ_H ...

August 22, 2009 · 4 min · Tony Bai

简说GLIBC strncpy实现

比较以下两组代码,你认为哪组运行的更快些呢? Example1: int n = 100; int n4 = n » 2; int i = 0; int a[100]; for (i = 0; i < n4 ;i += 4) { a[i] = i; a[i+1] = i+1; a[i+2] = i+2; a[i+3] = i+3; } ...

April 15, 2009 · 2 min · Tony Bai

GLIBC strlen源代码分析

直接操作C标准库提供的字符串操作函数是有一定风险的,稍有不慎就会导致内存问题。这周用业余时间写了一个小型的安全字符串操作库,但是测试之后才发现自己的实现有很大的性能缺陷。 在Solaris上初步做了一个简单的性能比对,以下是得到的性能数据(以strlen的数据为例): 当传入的字符串长度为10时,执行100w次: strlen 执行时间是:32762毫秒 my_strlen执行时间是:491836毫秒 ...

April 11, 2009 · 5 min · Tony Bai

IE8的糟糕体验

北京时间2009年3月20日零点,软件巨头微软公司正式发布了其Internet Explorer系列的最新版本8.0,简称IE8。早上上班后我第一时间下载了IE8的简体中文版For Windows XP。执行安装文件,重启电脑,IE8很容易就安装完毕了。 ...

March 23, 2009 · 3 min · Tony Bai

也谈软件调试

每年二月末到三月初,公司都会安排一批实习生到各个部门实习。虽说去年经济危机了,但公司的实习生数量似乎并没有减少。起码我们部门"新同事"的数量基本与去年持平。按惯例,每位新同事都会有一名导师,与此同时各个部门还会根据自身的业务特点对这批学生进行有针对性的集中培训和交流。比起我入司那会儿,现在的实习生已经算是幸福多了。我那会儿实习生人数少,部门没有安排什么培训,完全靠导师安排自己努力学习。此次培训的内容是经过老员工们讨论和对新员工的需求调查后才确定的。其中新同事们普遍对如何进行程序调试这块比较感兴趣,我负责准备和实施了这个题目。虽说有过几年调试程序的经验,但是自已也没有系统的总结过,这次培训后顺便在这里做一下总结和记录。 ...

March 22, 2009 · 6 min · Tony Bai

发掘Trac

使用何种工具做Feature或Defect或Task的跟踪一直是挺让我闹心的一件事。用Excel记录,但却不便于共享、统计和直观展示;Jira算是做的好的工具之一了,但无奈它是商业软件,咱没付那份儿钱,所以也就"无福享用";Mingle是著名的Thoughtworks公司的产品,虽说不到5个license是可以免费使用的,但它却是出了名的"内存杀手",无奈我的机器配置太差,运行起来实在太慢,遂没有坚持下去(我"眼冒金星"的渴望着更换一台无所不能的超级计算机^_^);甚至我曾经用过ONENOTE来做跟踪,可是条目多了后,就基本不可用了。寻觅依旧进行中,这不Trac这款软件进入了我的视线中。 网络让我知道了"Trac"。“Trac"这个名字,估计与Track"异曲同工”。至于Trac具体能做什么,你可以到其Demo站点去体验一下。简单的说,Trac = wiki + 问题处理工作流;Wiki可以用来做知识积累和管理;问题处理工作流恰是我需要的功能。但到底Trac做到啥子程度,那还需要用起来后才能知道。还有一件让我觉得很"幸福"的事,那就是Trac自带一个独立的web server程序Tracd,并且Trac可使用Python 2.5.x自带的SQLite,这样我可以不用安装和配置庞大的Apache和MySQL了。让用户能快速上手应该是Trac值得其他开源软件学习和参考的一个亮点,要知道一些庞大的开源软件繁复的安装和配置过程让很多使用者产生了"挫败感"而"另辟蹊径"了。 ...

March 18, 2009 · 8 min · Tony Bai

“扶正”Bash Shell

近日,Bash Shell正式发布了其4.0版本,该版本可以看作3.x的bugfix版,同时增加了诸如"Associative Arrays"等新特性。在Bash Shell的官方站点你可以下载到最新的4.0版本,不过在GNU的Bash主页上,似乎还找不到4.0版本的所在。Bash作为Linux系统默认Shell,一直受到广泛关注,而且它还是目前几大Shell(Bourne Shell, C Shell、Korn Shell、Bash Shell)里唯一还继续维护和更新的Shell版本了,目前其主要维护者是Chet Ramey,Bash的两个原始作者之一。 ...

February 27, 2009 · 2 min · Tony Bai

CSCOPE使用中问题小解

拥有了某种工具,往往不等于就能使用好这种工具。拥有工具简单,用好工具、发挥出最大作用则较难。CSCOPE让VIM的使用者有了与SourceInsight"平起平坐“的机会,但是能否将CSCOPE的功能发挥出来还要看你是如何使用它了。 自从VIM”重装上阵“以后,我一直在使用CSCOPE。在使用过程中还是发现了一些”别扭“的事情。一般我会在一个大型Project的源代码的顶层目录使用CSCOPE -Rbq来生成cscope.out文件,如果你在cscope.out所在目录执行VIM的话,VIM会优先将cscope.out作为”符号交叉索引库“(与ctags相比),但是如果你在某个子目录下执行VIM进入编辑状态的话,因当前目录没有cscope.out,所以VIM无法加载cscope.out文件,也就无法在文件间跳转。而必要时你还需要手动执行命令行:cs add {TOP_LEVEL_PATH}/cscope.out才能连接到cscope,发挥其功用。 ...

February 23, 2009 · 4 min · Tony Bai

VIM“重装上阵”

国内很多学习Python的人都喜欢看"A Byte of Python",这是一本由印度小伙儿Swaroop C H写的书,之所以受到大家关注和欢迎,想必其简单而实用的写作风格是其中的重要原因吧,作为入门书很适合。我的Laptop中就有一本中文翻译版,不过书中用的还是Python 2.3.4版本。本月3日(2008-12-3)Python 3.0 Release版祭出,Swaroop C H也在其站点上增加了A Byte of Python for 3.0版。在下载新版"A Byte of Python"的同时,我又发现了Swaroop C H的另外一部作品"A Byte of VIM"。 ...

December 30, 2008 · 7 min · Tony Bai

使用Scons改造现有项目

今天是冬至,也是入冬以来感觉最冷的一天,毫不夸张的说:你一张嘴,牙就冻上了。上午LP在家收拾卫生,我继续用Scons改造现有的项目。下午出去理发,头发长长了后,似乎会造成思维迟钝^_^。 试验性的用Scons改造现有的project,过程中对Scons了解又多了一些。上篇文章对Scons的性能没有给出定论,经过对Scons的深入后,发现Scons在执行初始时的性能的确不够快,这是因为Scons启动后,会对全部SConstruct以及下面子目录中的SConscript进行分析,子目录越多Sconscript文件个数越多,性能也就越差。但是这种分析也有一个优点,就是能帮你提前发现你SConscript中的一些“语义”错误,比如如果你在编译两个基础库,一个叫add,一个叫sub,这个基础库源码分别分布在两个目录add和sub中,编译后将分别生成libadd.a和libsub.a的库文件,但是如果你马虎了,在编写SConscript时将target都写成了’add’或都写成了’sub’,则Scons会在执行gcc之前就帮你找出这个"语义"错误,提示如下: /export/home1/tony_bai/xxlib>scons -f SC*t scons: Reading SConscript files … scons: *** Multiple ways to build the same target were specified for: /export/home1/tony_bai/xxlib/lib/libsub.a (from [’/export/home1/tony_bai/xxlib/add/libsub.a’] and from [’libsub.a’]) File “/export/home1/tony_bai/xxlib/sub/SConscript”, line 3, in ...

December 21, 2008 · 6 min · Tony Bai