MB466

终于入手 MacBook (MB466),外加鼠标和 VGA 转接线,共计 10030 元。Following myself…

感冒

不知不觉患了感冒,咽喉干毛,鼻涕不断,听力迟钝,眼热多泪,气短且虚,难受死了。都第三天了还不见好转。加上牙周炎,下面的牙龈都透出暗黑色的一片,上面的假门牙也隐隐痛,咬东西都要从侧面努力。要命。

Google Ads

Module::Install 中的 clean_files

如果开始一个新模块,一般都是用 module-starter –mi 开始。mi 指 Module::Install,以此作为生成 Mailfile 的后端。为了能使用 make clean 来清空测试过程中留存下来的临时文件,看 Module::Install 的文档。

但文档中没有发现关于 build_requires 之类的使用介绍,而这个指令是用 module-starter 构建后默认自动写好的,这挺奇怪。仔细看文档才发现只列出最常用的。它会使用 Module::Install::* 之类的模块作为扩展。所以最后在 Module/Install/Metadata.pm 里面找到了 build_requires 这个函数,在 Module/Install/Makefile.pm 里找到了 clean_files 这个函数。遗憾的是,除了这两个以外,还有许许多多其他的指令可以用,却没有对应的使用说明文档。所以只能连蒙带猜,尝试在 Makefile.PL 中写上:

clean_files 't/sandbox';

经过测试,确实在生成的 Makefile 中增加了:

clean :: clean_subdirs
...
	- $(RM_RF) \
	  t/sandbox blib
...

这么一来,终于可以在提交更新前 make clean 删掉无用的东西了。

如果不是 make realclean,Module::Install 还会在当前模块下面新建 inc 目录,然后把 Module::Install 自己的主要代码放进去,号称是以丁点的大小增长换取灵活——如果系统的 Module::Install 老旧了,或者你自己需要额外再做些什么的话都行。

用 git 保存空目录

git 和 svn 不同,仅仅跟踪文件的变动,不跟踪目录。Perforce 也是如此。所以,一个空目录,如果里面没有文件,即便 git add 这个目录,另外在别处 check out 的时候,是没有这个空目录的。

只跟踪文件变化,不跟踪目录,这么设计是有原因的。但这会带来一些小麻烦。有时候,确实需要在代码仓库中保留某个空目录。比如测试时需要用到的空目录。

变通的解决办法是在空目录下存一个 .gitignore 文件。然后 git add 此目录后,相当于跟踪了 .gitignore 文件,产生的“副作用”就是这个“空”目录也纳入“跟踪”,最终的效果是可以 check out 出一个看起来空空的目录。如果有许多这样的空目录,可以用下面的命令自动补充 .gitignore 文件:

$ find . \( -type d -empty \) -and \( -not -regex ./\.git.* \) -exec touch {}/.gitignore \;

递归找寻当前目录下,类型为目录,且为空,也没有 .git 开头的文件,在其中用 touch 新建一个空的 .gitignore 文件。然后 git add . 之后即可。

如果这些特殊文件会对测试带来干扰,那就只好在测试程序运行具体测试项目之前,先跑一段初始化目录结构的代码。另外可能还需要编写负责清理的代码。

SQLite Autoincrement – rowid

为了找自增主键的写法,查阅文档,发现竟然不需要自己定义,直接就可以用 rowid (或是 _rowid_ 或是 oid )取用。如果自己定义有 INTEGER PRIMARY KEY 的字段,rowid 就成为这个字段的化名,直接返回其中数据。

CREATE TABLE test1(a INT, b TEXT);
INSERT INTO test1(rowid, a, b) VALUES(123, 5, 'hello');

太贴心了。

MacBook 黄了

不出意外地黄了。赶上经济危机,美国那边不肯出钱。不等了,自己上。

gitweb on ubuntu

首先安装:

$ sudo apt-get install gitweb

gitweb.cgi 脚本安装在 /usr/lib/cgi-bin/ 中,该目录为默认 ubuntu 上 apache2 的 cgi-bin 目录。所以,打开:

http://localhost/cgi-bin/gitweb.cgi

默认没有 css 加载,把 gitweb 要用的静态文件连接到 DocumentRoot 下:

$ cd /var/www/
$ sudo ln -s /usr/share/gitweb/* .

修改配置:

$ sudo vi /etc/gitweb.conf

将 $projectroot 改为存放各个 .git 的目录。保存后刷新浏览器。

GAE Camp

有机会去 Google 上海公司参加 GAE Camp 活动。本来没打算作演讲的,碰巧 vpnc 能连上,加上精美 T 恤诱惑,于是结合正在修改的内部工具 wax 的实现,讲了一把 Catalyst。照片还是在 picasa,点这里。活动相关的邮件列表

不靠谱

这年头没什么靠谱的东西,特别是电脑上的数据。放在自家硬盘上,可能哪天硬盘咯吱一声就不认了。放在光盘上,不消几年,就可能读不出来。放在 usb 上,说不定哪天就丢在某个小角落里了。放在以前公司的服务器上,人家一闹纠纷,拔掉网线什么都没了。

以前用 svn 管理代码和文件,有次服务器硬盘出坏道,结果 svn 仓库中有个文件读不出来,check out 出来的数据也不完整。后来诚惶诚恐改用 git 无处不仓库。结果时常搞不清楚哪个最新哪个还没更新。

于是,开始狡兔三窟。无处不 rsync。