没想到法培考试系统是 Linux

今天考交规,考试机器开机后直接看到启动自举画面,很意外考试系统竟然是基于 Linux 的,kernel 还是 2.6.12,banner 是 Intel 什么的,没记住。大约是从网络 DHCP 拿到地址后直接 tftp 下载内核 image 然后解压引导,这部分我饶有兴趣的看了半天,不过 kernel boot 过程的输出全被关了,最后屏幕变全黑,中间出现一个叉叉形状的鼠标,原来是熟悉的 X,没想到考试系统还是个 X 程序,更没想到从这个叉叉鼠标到出现程序界面竟然要那么长时间,没看表,不过足足有六、七分钟,半柱香的时间了吧?

很快的做完,没有检查,直接交了卷,得 91 分,惊险,不过对得起我付出的那点时间了。

因为身份证没有领回,今天考试用的护照作证件,效果很不一般,监考以及考后给我办手续的都很恭敬地问:您是外籍吧? :cool:

面试不该做的两件事

今天的面试结束后,我的一位同事事后对面试者的评价是:“超级自信”,“进门先面试了我”,原来那家伙进门先问他叫什么,中文名怎么写,之前是哪个公司的。

我面试的那个则更离谱。由于时间比较充裕,我给了他大块的时间介绍自己的项目,此君说的泛泛,但是越来越 high,大概是觉得我不懂他做的东西,感觉很好,竟然闪起腿来。

结果是这两个人得分都不高,虽说真正原因还是技术方面,但是主观印象也不可忽略。

出头

在围棋里边,棋要尽量避免被对手封住,因为一旦被完整地封住,轻则难有发展,重则需委屈求活甚至有性命之忧,即使活了也难免将来被两面搜刮;反之,出头了可以牵制对手的模样,进可发展实地,退可固守眼形,如此才是棋道。

我要说的并不是围棋。在外企干活,有个叫“visibility”的东西跟这个道理很像。组里有个同事最近升职了,在我们同组的人看来,他代码写得不怎么好,设计思路像初学者,工作效率也不高,答应的事情经常不能按时完成,但人家就是这个 visibility 好,敢于承担(做得好不好再说),勤于和各种 lead、manager 打交道,从他们的角度看,这个人很活跃,有潜力,要升就升这样的人。

这里要先给各位扫扫盲,据我的经理介绍,业内有一种理论,认为员工的潜力、表现和职位要求可以用下面这种九宫格来描述:

Potential
^ | |
| | A | C
| | |
|------+------+------
| | |
| | O | B
| | |
|------+------+------
| | |
| | |
| | |
`------'------'------> Performance

O 位置表示职位要求,C 位置的人就是潜力和表现都超过职位的要求,这种人该升职、加薪,这个很显然。那么 A 位和 B 位的人哪个更应升职?答案是 A,就是说,从经理的角度看,处于 A 位的人可以让他承担更多的责任(潜台词就是更利于经理在自己的 career path 上爬梯子),B 位的人应该期望加薪而不是升职。

明白了这个道理,剩下的就看你的了。:P

其实我是个 C 程序员

最近开始修改其他人的 ksh 脚本,边改边庆幸不是跟这些人一起用 C 开发程序。在下虽然现在只写脚本,但是用 C 时养成的习惯已经在脑中根深蒂固,不管看什么程序,最见不得与自己习惯相违背的代码。shell 虽然很灵活,但有些一般性的原则总不能不遵循吧?试举数例:

  1. 函数定义一会 function f 一会 f(),其实两者区别很大,就算没搞清楚,保持一致应该不难吧?
  2. 函数内部变量不加 typeset,到处都是全局变量
  3. 代码缩进风格不一致,空格和 TAB 混用?建议大学程序设计入门改成教 python,先学会写整齐的代码再说。
  4. 变量名字这里大写那里小写,时不时又出来个大小写混合,还好你没听说 camelCase
  5. 重复代码宁愿贴来贴去,也不抽象出一个函数
  6. 函数不加返回值,有返回值的也不检查
  7. 公共函数不加注释,不检查输入参数
  8. 不检查空串,经常出来个 awk syntax error,或者 grep 等在那(因为输入文件名为空)
  9. set -x 不删除就提交了
  10. log 语句太少,阅读 journal 是不够的,出错之后看源码是必需的
  11. 临时输出宁愿重定向到中间文件,而且文件名是个随意的

据说美国人曾抓住一个前苏联高级间谍,审问的几个人故意当着他的面作出各种愚蠢假设和推理,最后间谍听不下去,招了。让一个严谨的程序员抓狂的,莫过于阅读有上面这些类问题的程序。

玩玩开源

将以前写的一个 Code Review 小工具放到 Google Code 上了。放上去一是玩玩开源,体验一下 Google Code 的功能,二是发挥它的“萤火之光”。东西是很简单,但是前同事离职创业的时候把这个东东拷回家了(偶然在他的电脑上看到 :-),让我觉得这个小玩意还是有点用的。

类似的工具很多,但要么不通用,例如 Sun 有个 wx webrev 全套工具很好用,可惜只支持内部的代码管理工具,要不就是太大,例如 Review Borad,太庞大了。而我这个刚刚好,简单说一下就是提供一个工具可以比较两个文件或者目录,生成各种格式 diff 的静态 html 页面,另有有一个 wrapper 脚本可以在当前 svn 工作目录从还未提交的修改生成代码复查的 web 页面,比原始的 diff -r 或者 svn diff 好读得多,反正用在我们自己项目里面非常方便。

增加其他版本控制工具的支持也不难,但是我们现在用 svn,所以我就先不给自己找麻烦了。其他就看主页 coderev 吧。

(Update on Aug 23, 2008) 将版本控制相关的命令抽象了一下,定义了一些 entry point,SVN 和 CVS 的操作放到单独的 lib 里面实现,很像驱动程序了,呵呵。这个设计我自个很满意,写好了之后加个 CVS 支持只花了几分钟,等用到 git 的时候相信也能很快实现。

下载 mms 流

apt-cache search mms | grep down 找到了这个

mimms - MMS (e.g. mms://) stream downloader

奥运会歌《我和你》官网这里查看源代码就能找到 mms:// 地址,虽然听来还可以,但不知道为什么不用电视上天天放的《北京欢迎你》。还有,福娃居然缺席开幕式。

给 vimpress 增加 slug 支持,以及一点改进

如果能发布成功,证明我对 vimpress 的修改是 OK 的。

修改有两条:

  • 增加对 post slug 的支持
  • BlogList 可带参数指定取最近几篇,缺省则只列出最近 10 篇,给 0 才取所有的

patch 在这里 vimpress-0.9-slug-and-listcount.patch.txt。xmlrpc
好像没有关于 trackback 的规范,要不就是 python 的 xmlrpclib 不支持,反正我在
post 字典里面没有看到这个字段。

其实改进的地方还有很多,感觉离作者自定的“0.9”还差得远呢。

奥运来了,我被查了

话说这天我跟老婆从沃尔玛出来,带了个便携袋子,准备坐一站公交回家,人少,有座,刚上车我就把袋子放身边座上。面无表情的乘务员过来了,带着红袖箍,

红袖箍:袋子啥?
我:啊?
红袖箍:袋子。
我:(以为说我袋子占了座,拿到腿上)
红袖箍:袋子啥东西?
老婆:超市里买的东西。
我:(反应过来,打开袋口)超市里刚买的,喏,排骨,喏,饮料。
红袖箍:哦。(继续回他座位面无表情)

据说每辆公交车都配了一个“保安员”,原来就是中国特色的红袖箍。

我也试下 Linux QQ

$ ./QQmkdir: cannot create directory `/home/wyl': Permission deniedprepare fork engine....
QQ Engine Running....
IPC_TCP_PORT=9759
Failed to execl autoupdate ....
[17:10:06][TLOG][warn]unable to open database file
open database failed!
[17:10:06][TLOG][warn]mid_db: error message unable to open database file,
errno=21
create table failed!
create config file failed!
[17:10:06][TLOG][warn]mid_db: error message-> unable to open database file
fail to get table handle!
[17:10:06][TLOG][warn]mid_db: error message-> unable to open database file
fail to get count!

$ echo ~/u/wyl

不支持代理,在公司是没戏了,反正我也不用了。还是写 DokuWiki 好玩。

审美疲劳

装新空调请假在家。于是又折腾了一遍模板。还是觉得越简洁越好。下一次审美疲劳就把侧边栏拿掉,内容做成下拉菜单。

发现 gimp 存储图片的时候会丢失一些颜色信息,即使不压缩或者存成 bmp 也不能与原始 xcf 格式完全一致,郁闷。

← Previous  1 2 3 4 5 6 … 26 Next →