随手翻译了一个 Colophon

Cover

[Linux System Programming](http://www.oreilly.com/catalog/9780596009588/) 封面上的图是在一个正在飞行机器上的人。早在莱特兄弟于 1903 年实现他们第一台“重于空气”的可控飞行器以前,世界上的许多人就已经在用简单而精致的机器探寻飞行的奥秘了。在二世纪或三世纪时,就有中国的诸葛亮在孔明灯中飞行的记录,这是第一个热气球。而在六至七世纪,许多中国人尝试将自己绑在大型的风筝上以在空气中飞行。

此外,据说中国还创造了会转动的玩具,它是直升机的早期版本,这个设计可能在莱昂纳多达芬奇对人类飞行进行早期尝试时给予了他灵感,而在 1845 年,他设计了一台扑翼机,一台试图通过展动翅膀载人于空中飞行的机器。尽管他从未将这台机器建造出来,扑翼机的鸟状结构影响了后续几个世纪对飞行器的设计。

绘于本书封面的这台飞行机器要比 James Means 在 1893 的模型飞行器更为精细,多出了螺旋桨。Means 后来给他的飞行器印制了一份使用手册,其中提到“于 Willard 山巅,Crawford 屋畔,觅一良所”来试验这台机器。

不过这类试验通常是很危险的,在十九世纪后期,Otto Lilienthal 建造了一些单翼机、双翼机和滑翔机,他是第一个展示出飞行是在人类可控的范围内的人,也因此获得了“飞行测试之父”的称号:他曾参与超过 2000 次滑翔机飞行,有时单次飞行距离就超过了一千英尺。他在 1896 年死于一次降落事故,在那次事故中他折断了脊椎。

飞行器还被称作机器鸟或飞行船,也偶尔会叫成人造信天翁 (Artificial Albatross) 这样华美的名字。人们对飞行器的热情现在依然高涨,直到今天还有航空爱好者在建造早期的飞行器。

封面图和章节题图来自 Dover Pictorial Archive。封面的字体是 Adobe ITC Garamond。正文字体是 Linotype Birka,标题字体是 Adobe Myriad Condensed,代码字体则是 LucasFont 的 TheSans Mono Condensed。

注:孔明灯的传说里并没有提到诸葛亮借此飞行,当为老外附会。

网志改名

网志改名,其实也早该修改了,这个 web log 的内容将不再以 web 标准的宣传为主题,事实上,很早就不是了。

之所以今天来改,是因为以前只是觉得厌倦,但现在发生的 XHTML 到 HTML 5 这件事情让我对“web 标准”的宣传感到恶心了,我不能理解为什么那些所谓的“专家”,上一分钟还在向人推销 XHTML 是多么的好,下一分钟就翻脸不认大唱 HTML 5 的赞歌。脸皮之厚,堪称神奇。

既然如此,我也懒得帮他们一起圆下一个谎,反正是浏览器厂商你方唱罢我登场,慢慢唱吧,我写我的程序去。

管理大型的 Cocoa 项目

NetNewsWire 的作者 Brent Simmons 最近的一篇文章介绍了[如何有效的管理大型 Cocoa 项目](http://inessential.com/2007/04/25.php)。他的建议可以总结为下面几条:

为了改善代码的可读,可查找性,应该遵循:

1. 只对那些没有明显关系的对象之间的交互使用 Notification。
2. Key-Value Observing 也是很危险的,应该只对 Preferences 项目使用这一特性。
3. 只将 Binding 用于很简单的情形,复杂的 TableView 还是用 datasource/delegate 比较好。

管理代码时可以使用的技巧:

1. 用 `#pragma mark` 来划分代码的区域
2. 用 Ctrl-2 来列出当前打开文件的符号 outline。
3. 用 Shift-cmd-D 来快速打开指定文件。
4. 用 opt-cmd-T 来将当前打开的文件和左侧的目录树同步。
5. ctrl+double click 打开符号的定义,opt+double click 打开符号的文档。
6. 在文件系统中用平面方式组织文件,不划分多层目录,在 Xcode project 中用 group 来划分层级结构。

对于有 Cocoa 开发经验的人,尤其是管理过这种超过 200 个源文件的较大项目的人来说,这些经验是很有用的。

What I’ve done with my MBP

算来买到 MBP 距今也有 4 个月了,这四个月里我主要做了哪些 hack 工作呢?这里罗列出来,或许你会有兴趣:

* 因为 OS X 上没有一个文本编辑程序 (ok, let’s forget vim and emacs) 支持自动的编码探测,所以我在 jserv port 的 Mozilla 的[编码探测技术](http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html) 的 [charset-detector](http://blog.linux.org.tw/~jserv/archives/001672.html) 基础上稍作修改使之能在 OS X 下工作,并打算修改 open source 的 Text Editor 的代码,使之能够自动探测选择常见的编码。这个工作前一部分已经完成,后一部分打算在这个周末做一做,包括 pack charset-detector 为 Framework 等等。[link](http://www3.newsmth.org/bbscon.php?bid=719&id=126786), [binary](http://www3.newsmth.org/att.php?p.719.126786.891.bz2), [source](http://www3.newsmth.org/att.php?p.719.126786.69633.bz2).

* 因为突然要听 APE ([Monkey’s Audio](http://www.monkeysaudio.com)),但 OS X 下把 APE 转换为 MP3/Apple Loss less/AAC 必须先用 MAC (Monkey’s Audio Console) 将 APE decode 为 WAV 格式。但却没有人提供 Universal Binary 的 MAC。所以就自己修改、移植、编译了一份 MAC for Intel。[link](http://www.newsmth.net/bbscon.php?bid=719&id=128445), [binary](http://www.newsmth.net/att.php?p.719.128445.458).

* 将 Apple 提供的输入法例子 BasicInputMethod 修改为 Intel Macs 下可编译。[link](http://www3.newsmth.org/bbscon.php?bid=719&id=128237), [source](http://www3.newsmth.org/att.php?s.719.128310.380.gz).

* 因为想玩《金庸群侠传》,但 OS X 下先前别人编译的 [DOSBox](http://dosbox.sf.net) UB 版本却一跑“《金庸》” 就崩溃,于是自己编译了一份新的 CVS 版本。[link1](http://www.newsmth.net/bbscon.php?bid=719&id=140864), [binary](http://www.newsmth.org/att.php?p.719.140864.482.gz).

* 修改 gVim for Mac OS X,提供完整的中文支持和 ATSUI 渲染功能。并改进对部分中文输入法 (QIM) 的支持。这是最近几天做的,也是最复杂的一个。[link](http://www3.newsmth.org/bbscon.php?bid=719&id=145814), [patch](http://www3.newsmth.org/att.php?s.719.145814.1526989.patch), [binary](http://www3.newsmth.org/att.php?p.719.145947.419.bz2).

还有几个未完成或者未 announce 的 project 🙂 上面这些项目我都是在一完成后就在 newsmth.org 的 [Apple 版](http://www3.newsmth.org/bbsdoc.php?board=Apple)发布,我也时常在那儿停留,参与讨论,如果你有兴趣也不妨来逛逛。

Hacking 真是人生最大的乐趣 😉