Hui’s Thinkpad Header Image

很白很强大

失而复得

文静有一台小白 — 苹果的MacBook笔记本 — 是UT生物系给新生的发的。因为用起来不习惯,拿到没几天就被我们两个小小白用bootcamp给装上了Windows,但发现若干驱动不好,后来把一瓶矿泉水洒在上面之后机器就经常无法正常启动,而且Mac操作系统也不能用了。于是小白成了两个小小白最不喜欢用的电脑。而且我一直认为苹果系统是给傻瓜用的,华而不实,应该不是一个适合编程的OS。

但最近我意识到这种想法错了。前几天小白的电源线坏了,抱着试试看的心理拿到Apple的专卖店去修,本子三年的applecare还没到期,于是免费更换了电源线和logicboard(类似于PC的motherboard)。然后给机器装上了以前在学校电脑店购买的Mac OSX10.5 Leopard (10.5版本操作系统的codename是leopard)操作系统,用了几个小时发现Leopard还是很强大的,更重要的是它提供的编程环境一点都不比Linux差。

设计和使用感

Apple的华丽易用,就不多说了。其实任何一种操作系统,只要用久了都能习惯,当然Emacs除外 :lol: 不过Apple比其他的操作系统更容易上手,用起来的感觉非常简洁明快,而且程序响应比较快。我觉得苹果的本本设计成功的一点在于电脑上没有硬盘读写的指示灯,因此即使程序启动比较慢用户也没太大感觉。

有人可能觉得苹果桌面下方的托盘很酷,甚至有人在其他操作系统上也要装个软件模拟这种效果,但我觉得这是个失败的设计,至少在macbook上是如此,因为屏幕上方有个菜单条再加上下方的托盘导致打开的程序窗口上下高度很局促。我更喜欢把托盘拉到屏幕右方,像下面

picture-17.png
上图: 程序托盘

熟悉一些快捷键使用起来会更加得心应手,比如
command+q 退出应用程序
command+w 退出当前窗口,但并不退出该应用程序
command+n 打开新窗口
command+tab 在程序间切换
command+` 在同一程序的不同窗口间切换
command+= 浏览器字体字号增大
command+- 浏览器字体字号缩小
F11 显示/隐藏桌面
F12 显示/隐藏Dashboard

picture-1.png

上图: Dashboard 中的小工具

F9 显示所有窗口的缩略图(见下图)

picture-18.png

F8 显示工作区缩略图(Leopard引入了工作区workspace的概念,这显然是抄袭Linux下的一些wm的)
另外,还有几个屏幕抓图的快捷键很上手,比如
command+shift+3 抓取整个屏幕并保存文件到桌面
command+shift+4 抓取鼠标拖拽的区域并保存到桌面
command+shift+4 然后按空格,抓取某个窗口的内容并保存到桌面

系统有一个很纳粹的设计让我很不习惯,就是没有快捷按钮可以让窗口最大化,而且点击窗口左上方的“+”绿色按钮并不能放大到整个屏幕,apple对此的解释是“根据情况”而不是用户的意志来放大窗口。比较一下下面两图,第一张是点击最大化之前的finder(类似windows的资源管理器),第二张是“最大化”之后的。

picture-20.png

上图: finder放大之前

picture-21.png

上图: 放大之后

另外,mac的字体本身并不特别漂亮,还不如Linux的一些open的字体,但macbook的屏幕显示很晶莹剔透,应该和mac OSX的图形驱动有关。

软件

Mac的软件其实不比windows的贵到哪去,只不过盗版不多罢了。UT的校园电脑店可以买到$20左右的Office套装,日常的文书处理就足够了,另外学校网站的bevoware里有一些特别授权的正版软件可以下载,比如norton的防病毒软件,realplay和mediaplay等,差不多可以满足日常需要。

中文输入法我用的是Fun Input Toy,和Fcitx很类似。

http://fit.coollittlethings.com/

picture-16.png

上图: FIT的选项菜单

picture-8.png

上图: FIT的选词菜单

leopard自带了一个英英词典,可以查wikipedia的条目

picture-15.png

上图: wikipedia in dictionary

在finder中加入了对文件进行cover flow的查看功能,这是leopard的一个亮点,不仅能对图片进行预览,还可以对ppt和pdf等进行预览,而且预览时可以对pdf/ppt前后翻页!

picture-22.png

上图: cover flow

Apple系统一个让人不爽的地方是package management system做的不好,程序容易装上但想完全卸载有时需要一番功夫,这个在下篇文章中会提及。

编程环境

如果Mac OSX只是有上面这些,那还不足以称为强大的小白。Mac本身是基于Unix的,而且部分apple系统用的是intel的CPU,所以很多Linux下的应用程序可以轻易移植到leopard下。Leopard系统本身就集成不少开源工具,比如VIM,Python等。

Mac的编程之旅,不需要通过像windows那样使用某个IDE开始,而应当从系统自带的terminal开始(application->Utilities->Terminal)。不过很多normal user应该不知道有这个Terminal,更勿说apple电脑专卖店修电脑的帅哥了。

picture-23.png

上图: Mac的Terminal

picture-14.png

上图: VIM in terminal

不过这也正是Apple强大之处,一般用户可以很快上手,同时做程序开发的也有完整的一套编程工具,大家可以各取所需。

下篇文章将谈谈Leopard的编程环境。

阅读(1431 次)

Ubuntu 8.04

Ubuntu出了新版本8.04,一个长期支持(LTS, long-term support)的版本,一时间大家争先恐后去下载,以至于Ubuntu的主页都瘫了,us.archive的源也暂时无法连上。

updater.jpg

图:从Update Manager处更新至8.04

这次更新的包不少,我的机器上有1273个包要更新,花了大约4个多小时。升级比较大的变化有

1. Firefox更新到了3.0beta5, 启动速度明显加快,不过以前在2.0下的几乎所有插件都不能用了
2. 新版本捆绑了新的Searching and indexing的工具trackerd,不过刚启动就直接crash了
3. Kernel 更新到了2.6.24, Python 更新到了2.5.2
4. gnome-terminal 的字体显示有一个bug尚未解决,就是无论在System->Preferences->Appearance中如何修改自己的hinting,gnome-terminal的字体显示总是一样的模糊,看得时间长眼睛都绿了。从这个网页找到了解决方法

$ cd /etc/fonts/conf.d
$ sudo rm 10-hinting-medium.conf
$ sudo ln -s ../conf.avail/10-hinting-full.conf

另外,还很土星地发现了WenQuanYi的zenhei矢量字体包,效果不错:

$ sudo apt-get install ttf-wqy-zenhei

wqy.png

除了上述变化,其他方面的改变几乎感觉不出来。

阅读(1038 次)

Albert MSN聊天机器人

einstein_baby.jpg

Albert 是我写以前写的一个web界面的聊天机器人。现在我把他移植到了MSN上,大家只要把

albert@huichen.org

加为好友就可以和他用英文聊天了。 聊天时请使用完整的句子结构。

输入help可以查看一些除了聊天之外的小功能,比如显示一条英文的fortune cookie或者背诵一首唐诗宋词等。

程序在不断完善中。如果你在使用中遇到了什么问题,可以在这里留言告诉我。

[源代码]

放在了google code上(有介绍和安装说明):

http://code.google.com/p/ichatbot/

请抓取最新的svn repos

svn checkout http://ichatbot.googlecode.com/svn/trunk/ ichatbot-read-only

或者到这里浏览代码:

http://ichatbot.googlecode.com/svn/trunk/

阅读(1004 次)

pdfwp: Python写的开源的WordPress PDF文摘生成器

前几天给《博客李淼》写了一个文摘生成器,能让读者选择喜欢的文章装订起来生成PDF文档,主要是为了提供支持数学公式的效果更好的打印功能。支持繁体和简体,并能生成 UTF-8/GBK/Big5格式的 LaTeX 源代码。(其实生成的顺序是先有LaTeX源码这只鸡,再有PDF这个蛋)。

今天中午简单整理了一下放在了google code上遵循GPLv3发布:

http://code.google.com/p/pdfwp/

系统要求和怎样安装都在里面了,就不多说了。代码只有500多行,写的比较乱,没注释,基本属于write-only,不过可以用。

原理是这样的:首先Python脚本从WP的数据库里把帖子标题和内容提取出来,除去HTML tag后做符合LaTeX语法的转换并写入到一个LaTeX源文件,然后调用iconv和zh-autoconvert进行编码和繁简转换,最后调用texlive的pdflatex将LaTeX源文件编译生成简体和繁体的PDF文件。

得感谢TeX不是一种WYSIWYG的文档格式,从帖子到LaTeX源码的转换只要集中注意力在内容的逻辑结构上即可。另外,写脚本花的时间还不如配置TeX系统的时间长,配置了N种Free的CJK字体显示都不理想(主要是宋体过细),最后无耻地从CTeX套装的texmflocal目录里把字体裸拷出来复制到~/texmf中然后updmap就搞定了简体。但繁体字还是有极少数的缺字,因为Debian上默认的繁体UTF-8文鼎字体bsmi字库不全,只能靠使用者下载LaTeX源文件自己编译了。

阅读(1168 次)

FleaHttpd 超快的Web服务器

我用C和socket从零开始写了一个Web服务器,实现了静态文件服务功能和最基本的CGI服务。我给这个程序命名为FleaHttpd,因为它像跳蚤一样小,目前代码只有不到500行,放在了Google Code上:

http://code.google.com/p/fleahttpd/

下载地址在这里:

http://fleahttpd.googlecode.com/svn/trunk/

跳蚤虽小,五脏俱全 :smile: FleaHttpd能响应浏览器的GET/POST请求。用apache的ab测试表明,在concurrency为1的情况下静态文件的访问速度可以达到Apache的三倍,测试结果在这个页面:

http://code.google.com/p/fleahttpd/wiki/BenchmarkResults

对同样一个37103字节的文件访问10000次,FleaHttpd可以在1.6秒完成万次请求:

Requests per second: 6224.93 [#/sec] (mean)
Time per request: 0.161 [ms] (mean)
Time per request: 0.161 [ms] (mean, across all concurrent requests)
Transfer rate: 225817.40 [Kbytes/sec] received

Apache完成万次请求则需要5秒:

Requests per second: 2022.08 [#/sec] (mean)
Time per request: 0.495 [ms] (mean)
Time per request: 0.495 [ms] (mean, across all concurrent requests)
Transfer rate: 73764.41 [Kbytes/sec] received

基于FleaHttpd的网站(王垠主页的镜像):

http://limiao.net:8080/

网站中包括1447个文件(HTML/JPG/PNG/CSS/PDF/GZ等),共114M。

目前FleaHttpd没有负载平衡,将来准备用OpenMPI把FleaHttpd写成一个并行程序,在cluster上运行;并加入memcached,进一步加快静态文件的访问速度;目前CGI的响应比Apache慢,可能是CGI程序载入的速度比较慢,不过FleaHttpd的主要目的是提供静态文件服务,或者是非常专门的CGI动态服务(提高速度的最好办法是直接把CGI程序的源代码编译到fleahttpd中去让网站和服务器成为一个整体,在启动时就载入)。

阅读(1152 次)