十二月 25, 2007

My first common lisp program

已经不记得自己第一个Perl程序是什么样子了,更不用说第一个C++程序了。那个时候,还没有什么版本控制概念,当然也没有自己的网站。哪像现在,是个东西就想塞进subversion里。

我的一个common lisp程序是一个推箱子游戏求解程序,参见http://www.wanglianghome.org/svn/pushbox/。不用等到几年后再回过头来看,现在我就知道这程序写得相当烂,尽管居然还有40多个单元测试。But it works! :-)

这个程序还有相当多应该改进的地方,不断完善的过程,也是我不断提高编写common lisp程序水平的过程,就用它来做个见证吧。

十二月 23, 2007

Declaring .emacs bankruptcy

看过人家的Declaring .emacs Backruptcy,就想做同样的事。一共有三台电脑,分别装了fedora, ubuntu和XP,XP上装了Cygwin,并且自己编译了Emacs 22。同时维护三台机器上的.emacs文件,不胜其烦。经过漫长的拖延,我终于完成了这项任务,完整的配置参见http://www.wanglianghome.org/svn/elisp/

由于我对elisp的理解有限,所以基本是照猫画虎,按照上文中提到的方式重新整理了.emacs文件。在最完美的情况下,.emacs文件里只需添加两行,比如在fedora上:

(add-to-list 'load-path "~/elisp")
(require 'wl-fedora-init)

由于三个平台上均没有最新版的SLIME,所以我把它也放到自己的版本控制之中,其他模块则在各自平台上分别下载安装。

十二月 18, 2007

Programming Language Books Comparison

没有任何一种程序设计语言可以通过只看一本书就学会的,C++、Perl如此,Common Lisp也不例外。于是我做了一个表格,按照不同类型列出三种语言的书籍,仅供参考。

十二月 12, 2007

Torify

torify是tor组件中的一员。有了它,我们不仅可以实现匿名,还相当于有了一个代理。一般来讲,公司网络与外部世界的连接有很多限制,上网可以,可ftp、ssh、cvs什么的就别想了。当然有了torify这些都不是问题。例如ssh到外部主机:

$ torify ssh -l username example.com

又或者check out最新的emacs-w3m

$ torify cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot login
$ torify cvs -d :pserver:anonymous@cvs.namazu.org:/storage/cvsroot co emacs-w3m

当然也可以查看IMAP邮箱:

$ torify mutt

使用torify的时候也要稍微注意一下安全问题,尽量不要使用明文发送密码的命令。

Build tag cloud with HTML::TagCloud

因为是用ftp方式发布blog,所以没法使用标签功能。幸好养成一个好习惯,每次写完一篇就添加到del.icio.us上,并统一使用标签netcasper。近日,结合使用Net::DeliciousHTML::TagCloud,开发了一个简单的标签云,参见文章分类,边栏上也可以找到相应的链接。

鉴于blog更新不算频繁,标签云每周更新一次。

源代码参见http://www.wanglianghome.org/svn/tagcloud/

十二月 10, 2007

Firefox: slow DNS lookup on Linux

从某天开始,Firefox响应变慢,准确地说,就是从域名找IP的时候非常慢,慢也就算了,还经常找不到。因为我使用了OpenDNS,所以在这种情况下会出现OpenDNS的搜索界面。

非常郁闷,本来就是为了去掉该死的114搜索才用了OpenDNS,可现在出问题的几率似乎比114出现的几率还高,还不如不用了。猜想可能是OpenDNS最近用户数量暴涨,处理能力不够。可是用dig的结果又好好的,速度也没什么问题,而且肯定没有Firefox里面那么慢。

尽管有些疑惑,可我仍然(错误地)认为是OpenDNS的问题,于是在周末做了个Cached DNS Server。dig的速度从500-1000毫秒之间迅速下降到0毫秒,当然是指dig同一个域名第二次的速度,即缓存之后的速度。第一次查询仍然通过OpenDNS。Firefox也没再出现问题。

然后就看到了这篇文章:Slow Firefox DNS Mac OS X Leopard。里面提到一位老兄和我用一样的方法,还用了interestingly来形容,也不知道是褒是贬。其中提到可能是IPv6引起,简单的解决方法是禁掉系统的IPv6功能,或者禁掉Firefox的IPv6功能。