Archive for June, 2008

先去探路

Monday, June 30th, 2008

项目GA了以后不再忙碌,周四周五休了年假。加上周末,一共四天,在家里吃了睡、睡了吃,比较腐朽。至于本周,周三上午培训,下午机考(组内C++考试,成绩直接影响MBO的5%),周五周六两组一起outing,而且居然是浙西大峡谷。

从2006年就开始和兄弟们计划,后来遇上雨季,然后我回校,找工作,回到上海,其间耽搁了两年。而更巧的是周六鲍总、谢总又和我谈起这件事。当时满口答应。真是“无巧不成书”,就当先去探路了。

Emacs Tip — 1

Saturday, June 28th, 2008

;; F11 to toggle fullscreen
(defun fullscreen ()
 (interactive)
 (set-frame-parameter nil ‘fullscreen
  (if (frame-parameter nil ‘fullscreen)
    nil
    ’fullboth)))

(global-set-key [f11] ‘fullscreen)

dwm

Friday, June 20th, 2008

从dwm-tools顺藤摸瓜,顺便关注了一下dwm,发现xmonad的快捷键设置和dwm完全一样。这是一个相当小巧的窗口管理器,4.7版本的源代码才2100多行,很值得仔细阅读之。

dwm一个比较另类的设计是,没有配置文件,所有配置需要修改源代码config.h,例如把默认的mod1Mask(alt键)改成mod4Mask(win键)。apt-get source抓下源代码,修改一下配置后dpkg-buildpackage便会创建新的deb包。

dwm原来所在站点是dwm.suckless.org,今天似乎不能访问。看了一下邮件列表,原来正在迁移到新的server。`suckless’这个域名很有意思,让我想起Mutt主页上的一句话:
“All mail clients suck. This one just sucks less.” - me, circa 1995

没有最好,只有更好。做到suckless其实真的很不容易。

Xmonad

Friday, June 20th, 2008

开始对自己的12.1寸小本有所抱怨,因为将屏幕垂直分割成两屏看代码时便显得有点拥簇。想来自己只需要三个窗口:Firefox, Emacs和Terminal。Firefox3的全屏功能非常棒,至于Emacs我也早已关掉menu-bar和tool-bar。作为一个习惯于全键盘操作的用户,Gnome的panel对我来说实在没有什么吸引力,于是去找键盘友好的窗口管理器。

早就在reddit上看见xmonad,于是apt-cache search了一把,居然命中。于是安装之。启动后Gnome桌面背景会消失,可以用xsetbg命令自己设置一个,要想每次登录后自动生效可以将该命令写在~/.xprofile文件中。

xmonad的默认功能键mod是alt键,这样用Emacs或者bash的时候都不怎么爽。可以把它改成win键,只要在~/.xmonad/xmonad.hs添加如下Haskell代码:

import XMonad

main = xmonad $ defaultConfig
{ modMask = mod4Mask }

注意的是,光有该配置文件还不够,它需要libghc6-xmonad-dev等等。要安装它实际上会一起安装ghc,比较主流的Haskell解释/编译器。重启,登录后配置便会生效。这时~/.xmonad/目录下会多出三个文件:xmonad.hi xmonad-i386-linux xmonad.o

如果确信自己不会再修改配置,可以把ghc等删除,只留下xmonad。这样会节省144MB硬盘空间。另外,一个不可不装的程序是dwm-tools, 有了它后,mod-p会启动dmenu。最后,因为没有了gnome-panel,看系统时间不方便,可以在Emacs的启动文件中添加一行:
(display-time-mode t)

更多键绑定,可以参考man xmonad。

Scheme笔记 — 3

Tuesday, June 17th, 2008

趁着最近比较闲,写完了关于符号处理,这里是编译出来的pdf文档:
http://live4thee.googlepages.com/scheme-intro.pdf.gz

另外,在sharesource的Hg仓库里保存着最新的LaTeX源文件:
http://hg.sharesource.org/sysnotes/

下一章介绍约束传播系统。以电路系统为例,因为方程V = IR始终成立,于是一条线路上,当电压、电阻和电流中有两者确定时,第三个元素的值便也随之确定。

虽然在数学中,只要一个方程便能描述。但在编程语言中往往不得不写三个过程,知道两个元素后求解第三个元素。因为传统上计算机程序总是被组织成一种单向的计算,对于给定参数给出所需要的结果。

约束传播系统通过组合各种基本约束,构造出约束网络,动态生成各种元素的状态。