Archive for July, 2008

工作札记 (6)

Monday, July 28th, 2008

早晨刚坐下便接到xuan哥转过来一封partner的邮件,稍一思量之下发现这是一个不折不扣的bug,然而一直藏了数月都未能发现。单元测试覆盖面不够是主要原因。

故事的开始
我需要在C代码中修改Linux本地用户的密码,于是strace了一下passwd命令,没发现什么猫腻之出。于是用Expect写了个脚本调用passwd,然后C中system之。后来知道某些passwd版本有个`–stdin’,但非标准选项。又能体现工作量,又相对通用,于是就Expect之。

潜在的危险:
`system’的参数其实会传递给`/bin/sh -c’,因此参数中不能有特殊字符,如$等等。我们的partner设置了一个超级NB的密码,其中出现了三次`$’,但不幸的是`xyz$foo$bar$abc’最终只是`xyz’,因为`$foo’是foo变量的值,bar, abc同理,于是可怜、无辜的partner只有抓狂了。

改进的方案:
抛弃懒惰,找到passwd的源代码,发现它原来是通过PAM提供的API搞定的。我诚恳的ltrace了一把,果然发现如下输出:
pam_start(…)
pam_chauthtok(…)
misc_conv(…)

肠子都悔青了。闷头改起,单元测试,内存测试,提交补丁。

下午突然一阵犯困,头歪在椅子上很是不爽,便去霸占了老爷椅美美的睡了一下。V2结束一个多月,V2.5的计划也开始渐渐影响到我这种喽喽。一个新的cycle开始了。

Scheme笔记 - 4

Wednesday, July 23rd, 2008

这一个礼拜以来写了近千行Scheme代码,其中包含一个Scheme解释器,以及对L-99中部分题目的解答。第一次,我写出了自己的求解排列组合问题的程序,以前的源代码其实都是网上淘来。明天开始继续在SICP的指导之下改进解释器。

有点犯困,没有半点写代码的热情。想起下午和头儿one/on/one时丢给我的一句话:你的写作水平很好,但要多练习口语,随时准备和老美交流。汗,我差点以为随时要把我丢米国去。不过,实话说,我练就的确确实实是哑巴英语。

上周末用png2html处理了一张照片,也放在了Hg仓库。还有一句话,放在磁盘占用一个文件不大划算,贴这里吧:“Misunderstandings are not the user’s but the designer’s fault.”

求药记

Saturday, July 19th, 2008

路过药店,于是准备买瓶治过敏性鼻炎的鼻喷。

我:xx药有没有卖?
售货员:是鼻喷吧?
我:(大喜过望,暗思终于不用去医院)对,是的。
售货员:有兴奋剂,去医院开。

靠!只听说感冒药遭限,居然鼻喷也池鱼之殃!转了一圈后,又返回柜台。

我:有没有口服药?
售货员:(扔过来一盒药)二十七块五,去收银台付款。签一下名,留下电话号码。

这是什么样的世界!胡吹什么便民、利民,自己做奴才却还绑架全国人民做三陪。我们的媒体赞扬着奥运奖牌是多么多么的具有中国元素,TMD什么时候对国计民生上上心?

MM问,“政府不会邀请外国友人游长城吧?”我觉得有可能。姑且拭目以待。

工作札记(5)

Tuesday, July 15th, 2008

去年的今天on board,倒腾了一个半小时的车后,终于掐着表在最后五秒钟内冲到training room门口。迎面我们的trainer伸出右手,来了一句:“I am xx, welcome!”仓促之间竟不知如何回答。

一年匆匆过去,其间OT次数在个位数以内。工作强度和难度基本上都比较温和,因而很容易挤出一点时间写写笔记。一件比较后悔的事情是,大学时候没把编译原理学好,于是搜罗了一些入门读物重新补过。

换了三个窝点,并从单细胞生物进化为双细胞生物,change亦大矣!

无题

Tuesday, July 15th, 2008

这几天也还是比较闲,于是花了点时间看了一下各种parser的例子。除了传统的flex/bison以外,其它两个也挺精巧:boost库中的spiritglib中的gscanner。因为对C的热爱,一直比较喜欢glib,这也是我一直使用GNOME的主要原因 — 虽然glib和display一点关系都没有。

组内ftp有各种Linux的ISO镜像,恰好需要一个基于rpm的平台,于是手工选择软件包装了个最小化的FC9。不巧的是后来需要一个hex editor,于是yum中搜到了bless,安装过程发现它基于mono,而我的FC9没装X11,于是启动不了。幸运的是,学UCB网站的SICP在线课程时,下载过它的STk,安装好后会有Cygwin/X11,于是我在命令行中输入:
# export DISPLAY=host_ip_addr:0.0
`host_ip_addr’是我的XP机器的IP地址,刚好打开着Cgywin/X11。再次启动bless,果然一个图形界面在我的WinXP中跳了出来。

6/12之后有有开/平 — 阳光下无新鲜事。我毫不惮以最毒的恶意揣测背后的毒瘤。离那个吉利的日子越来越近,天朝在不紧不慢地展示积攒了五千年的糟粕。晚上看见订阅的RSS中有篇链接指向一篇文章:奇迹的黄昏。一口气读完第一章,强烈推荐之。