Archive for January, 2008

用 Emacs 上 IRC

Tuesday, January 8th, 2008

Emacs 有许多扩展可以用来上 IRC ,如果你的 Emacs 版本够新的话,已经自带了 ERC 。只要 M-x erc 就可以了。

erc.png

唉!可惜这边的时间和美国那边的时间相差好多,有时候想上去问问题,却少见几个人醒着的。 :(

当有虚拟机在运行的时候阻止 Windows 关机

Sunday, January 6th, 2008

我经常在后台开一个虚拟机运行 Linux ,而几乎每次关机的时候都忘记了还有一个虚拟机在运行,导致 Linux 非正常关机了。所以我写了一个小程序来防止这种悲剧继续发生:在关机的时候检测是否有虚拟机在运行,有则阻止 Windows 关机。

广告时间

在介绍我的小程序之前,我实在是忍不住要对我现在用的虚拟机和虚拟桌面广告一番了! :p VirtualBox 是一个很不错的虚拟机。和老牌的 VMware 对比,也有许多优点:

  • VirtualBox 可以免费使用,而且还有一个开源版本。而 VMware 是商业软件,虽然 VMware Player 可以免费使用,但是有一些不便之处(比如无法直接创建虚拟机,需要用一个第三方的在线工具)。
  • VirtualBox 性能卓越,许多人都说用它跑虚拟机跟在本地跑一样,比 VMware 的性能还好,更不用说开源的 qemu 了,但是这是牺牲了 host OS 的性能为代价的。我自己的感觉是确实速度很快,但是并没有发现 host OS 会因此而变得很卡,只有当 guest OS 里面在做什么密集计算或 IO 之类的(比如安装操作系统),才会出现 CPU 占用 50% 的情况(我是双核 ;) )。
  • VirtualBox 附带的工具在 Linux 下轻松编译。包括虚拟显卡驱动、共享文件夹、虚拟网卡驱动之类的内核模块在最新内核下很容易就编译过了。相反,VMware 提供的源代码在最新内核下根本编译不过,网卡驱动要打过补丁,但是共享文件夹又出问题了,总之是很麻烦的。
  • VirtualBox 很 “lightweight”。VirtualBox 1.5.4 的安装文件 17MB ,而 VMware Workstation ACE 6.0.1 的安装文件 300+MB 。VMware 安装好之后默认会建立两个虚拟网卡,而 VirtualBox 不需要建立虚拟网卡就可以用 NAT 方式上网。通过端口映射的方式访问 guest OS 的 ssh 端口速度飞快。
  • VirtualBox 的窗口能自动捕捉和释放鼠标和键盘,而 VMware 需要手动点击进入虚拟机中,还需要按 Ctrl+Alt 来释放键盘和鼠标。

当然 VirtualBox 也有它不足的地方:

Read the rest of this page »

Running RSpec in Emacs

Sunday, January 6th, 2008

RSpec is a Behaviour Driven Development framework for Ruby. It’s output format can be customized. However, the default format works well in Emacs’s compilation-mode. Type M-x compile and input spec file_name_spec.rb. The result will be prompted at a new buffer.

Some useful information are colorized. You can even use your mouse to click on the failures to go directly to the line where spec fails (Of course there’re shortcuts like C-` available). However, we can still make it better.

More highlighting

By default the cursor is at the beginning in the newly prompted buffer with the spec results. We want it to be at the end so that we can see how many examples failed. That’s easy, in fact, it is the default behavior before Emacs 20.3:

;; keep scrolling in compilation result buffer
(setq compilation-scroll-output t)

That’s simple and cool! But I want the number be highlighted! And more highlighted when the number of failures is not zero. That’s also easy, we can add some rules to achieve this:

Read the rest of this page »

崭新的 2008 年

Tuesday, January 1st, 2008

昨天是 2007 年的最后一天,今天是 2008 年的第一天,总是想写一点总结或者展望之类的,却又写不出来了。正好今天阳光如此明媚,就留一张照片吧,阳台的景象,不是很开阔,也没有秀丽风景,但是也伴随了我两年多了:

阳台风景

希望 2008 年的阳光一直都是这么灿烂!

IMG_0858

在这条路上来来往往的多少人呢?

IMG_0857

愿所有人在新的一年里迎接崭新的自己! :)