2008-07-28

工作札记 (6)

早晨刚坐下便接到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开始了。

标签:

2008-07-23

Scheme笔记 - 4

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

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

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

标签:

2008-07-19

求药记

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

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

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

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

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

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

标签:

2008-07-16

工作札记(5)

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

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

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

标签:

2008-07-15

无题

这几天也还是比较闲,于是花了点时间看了一下各种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中有篇链接指向一篇文章:奇迹的黄昏。一口气读完第一章,强烈推荐之。

标签:

2008-07-09

Emacs Tip -- 2

利用windmove进行快速窗口切换:
;; windmove keybindings
(if (<= emacs-major-version 21)
(progn
(global-set-key [?\e left] 'windmove-left)
(global-set-key [?\e right] 'windmove-right)
(global-set-key [?\e up] 'windmove-up)
(global-set-key [?\e down] 'windmove-down))
(windmove-default-keybindings 'alt))
下面一行加了个键绑定:``C-c v''用于切换view-mode:
(global-set-key "\C-cv" 'view-mode)
``view-mode''可以方便的浏览代码,比如:d/u两个键分别用来向前/后翻半页,该模式下缓冲区变为只读,避免误写。

标签:

2008-07-06

临安两日游

主要景区:浙西大峡谷,临安太湖源。

前者是以前一直想去徒步的地方。旅游大巴一直开到门口,午餐后已经一点过,在峡谷中也就大概花了四五个小时。烈日炎炎,但青山绿水夹带两岸,倒也惬意。虽然前几天大雨连连,但水流还是不够霸气,只是懒洋洋的匍匐在谷底。漂流的时候,橡皮筏竟然一度搁浅。其中一处``婚育文化风情苑'',有身着少数民族服饰的青年男女表演竹竿舞,耍几把后会找男士上台共舞、对拜,最后会拥簇着``入洞房'',当然要交钱才能出来滴,美其名曰``风俗''。

太湖源其实只是三十六个源头之一,原名小九寨,由于名不符实,民意之下改为太湖源。用导游的一句话说:以自然景观为主。一路爬上去,基本上没什么景点,权当锻炼身体罢了。本想爬上山顶极目远眺,一览太湖,没想到最后到达峰顶的百米尚未开发,只是一块石头上一个大大的红字,``源''。

标签:

2008-07-03

心都散了

自从GA了以后,基本上就过着无所事事的日子。偶尔的一些所谓investigation也就是看看文档以及两千行代码,写点report而已。因为没有SDK,基本上属于纸上谈兵罢了。

今天下午是组内考试,两个小时。我对头儿说,这是自从毕业后最正式的考试。题目就一道,大家都以为是C++,没想到却是实现一个内存池。这让所有猜题组的预测全都归于失败。花了半个多小时选择数据结构,剩下一个半小时刚够写好一些基本操作,仅仅是编译不会出错而已。这确实是个值得花时间自己好好研究的题目。

昨天和美眉合计请R/J晚餐。不想R老大晚上似乎便要回北京,于是作罢。明天后天出游,不是歹毒的太阳就是哗啦啦的雷雨,但好歹终于不宅了。

这几天沉醉于Lisp中,昨晚梦见的全是Lisp代码。这几天在玩PLT Scheme,越来越喜欢。于是在我所有的机器上都装了一份。昨天看见两篇比较很好的关于编译器的导读,而且示例都是Lisp代码,但是Guile, MzScheme都不能跑,仔细看了文档,原来是基于Chez Scheme。

刚上大学时,梦想有一天可以自己写一个操作系统,自己的编译器。渐渐发现,这是个遥不可及的目标。热情渐渐消退,虽然知道没啥终南捷径,但也着了魔似的看到相关电子书便忍不住看几页,而很少有能耐着性子全部看完的 -- 因为每次都觉得刚发现的新书会更容易阅读。

Lisp代码的语法格式基本上属于一种中间语言的形式,而且语法相当简单。希望某一天能先搞出一个简单的Lisp解释器。:-)

标签: