Evil--在Emacs中模拟Vim

这篇文章过时了,参见皈依Emacs,现在我对操作方式有较大调整。

Vim模拟

平心而论,Vim的modal editing确实比Emacs强,而Emacs默认的按键绑定设计不好,不适合使用,要让它适合做工作环境往往要改大量按键。“一千个读者心中有一千个哈姆雷特”,Emacs的配置也确实大相径庭。

Read More

gcc中sqrt实现

对于sqrt(3);Visual Studio会报告有歧义的重载函数调用,而gcc却能把这个解释为对sqrt(double)的调用。研究了一下gcc的实现,发现sqrt其实是《C++ Templates: The Complete Guide》中提到的type function,使用了名为SFINAE (substitution failure is not an error)的技术。这里是给出一个使用该技术的sqrt的简易实现:

Read More

给xbindkeys添加key sequence支持

xbindkeys不支持emacs风格的key sequence,不过由于它可以调用guile来支持scheme的配置文件。xbindkeystarball里有一个配置文件,支持key sequence的特殊形式:两个键的序列。

最近正好学了些scheme,就好好折腾了一把,写了一份配置文件,可以支持任意长的key sequence(当然太长的一般用不到)。

Read More

网络学堂feeds2mail

用网页来看网络学堂的公告很费时间,就打算像 rss2email 那样,把消息制作成邮件。 用 Rubymechanize 来和网站交互,读取“课程公告”和“课程文件”中的消息, 把链接 sha1 后判断是否生成过提示邮件,没有则跟踪链接,用 w3m 输出成纯文本, 生成的邮件用 sendmail 投递。

Read More

八数码

八数码问题,已访问状态采用 factorial number system 表示,未访问的未使用(简化代码) 实现了 Breadth First SearchHeuristic Search 两种算法。 带上命令行选项 -g 能输出 Graphvizdot 格式的状态树。 比较满意的地方是把两种搜索算法的共同部分抽象出来了,写成了单独的 search 函数。

Read More