Archive for February, 2008

Emacs 23 prebuild deb package

Wednesday, February 6th, 2008

Emacs 的 unicode branch 前日 merge 到 trunk 中了,brep 编译了一个 for Windows 的版本供下载Emfox 做了 amd-64 的预编译 deb 包,我用它那里的源码和元信息编译了 i386 平台的 deb 包,放在这里。Enjoy! :)

A 3rd-order Quine: Haskell -> Python -> Ruby

Wednesday, February 6th, 2008

我曾经在我的 Wiki 笔记 中介绍过 Quine ,就是能打印自身的程序。今天在这里看到一个很厉害的 Quine :

q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']
main=q "q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']" "def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'" "def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end"

这是一个 Haskell 程序,运行它会输出一个 Python 程序,再运行这个 Python 程序会输出一个 Ruby 程序,再运行这个 Ruby 程序会得到一个 Haskell 程序,对了!就和最开始那个 Haskell 程序一模一样的! :D

Rubinius 的首页改版了

Tuesday, February 5th, 2008

好久没有去看过,居然改头换面了,从前 Rubinius 的首页里面的信息量并不比 lifegoo team 的首页多多少。 :p 不过现在换了个风格,而且 Documentation 一页似乎多了不少东西! :D

Rubinius 是一个类似于 SmallTalk-80 架构的 Ruby 虚拟机,大部分代码用 Ruby 本身来写成:例如 byte-code 的编译器,这样字节码甚至可以直接在其他 Ruby 实现(比如 JRuby 或者 MRI)上加载。虽然说现在 Rubinius 还不太成熟,在各种测试中似乎都是在各个 Ruby 实现中排倒数的,但是看上去前景非常好,大家都在关注。也许会如他首页上说的那样,成为“the next generation virtual machine for the Ruby programming language”。 :)

Real Programmers use Emacs

Saturday, February 2nd, 2008

Click to enlarge:

Real Programmers use Emacs

From xkcd.

[ANN]RMMSeg 0.0.1 Released

Friday, February 1st, 2008

RMMSeg 是 MMSEG 中文分词算法的 Ruby 实现。可以作为独立的程序运行,也可以方便地和 Ferret 进行集成。

今天凌晨在完成了与 Ferret 的集成工作以后,我发布了 0.0.1 版,可以从 RubyForge 进行下载,也可以直接使用 RubyGems 进行安装:

$ sudo gem install rmmseg

下面是引用 RubyForge 上的 Announcement

Read the rest of this page »

Ruby: Caution with sub/gsub

Friday, February 1st, 2008

如果你不喜欢听我讲故事,那么请直接跳到末尾。其实故事很简单,最近几天的故事都是和 RMMSeg 有关。这次我是在做 RMMSeg 的主页,昨天晚上(或者说今天凌晨)我做完了和 Ferret 的集成,并发布了 0.0.1 版。可以看到,主页我也做好了。

其实主页早就做得差不多了,只是还缺一个和 Ferret 配合使用的例子。现在那里已经有一个例子了,用 Ferret 的 Highlight 输出为 HTML 格式:

highlights = $index.highlight("content:#{key}", id,
                              :field => :content,
                              :pre_tag => "<font color=red>",
                              :post_tag => "</font>")

其实原来是一个用终端的 Escape Sequence 进行高亮的例子:

highlights = $index.highlight("content:#{key}", id,
                              :field => :content,
                              :pre_tag => "\033[36m",
                              :post_tag => "\033[m")

修改是迫不得已,我那个主页是用 Gerbil 生成的,不知道怎么回事, \033 被它搞成了一堆乱七八糟的东西,类似于这样:

5d2dedb7d78d6d1f0629ea781cb92b6822c8648e33

当时很郁闷,想大概是处理 \ 的时候的 BUG 吧,因为已经很晚了,不想再去追究,就改成了 HTML 格式发布了。今天早上起来,便想探个究竟。先做了一些实验,发现诸如 \t 之类的都是正常的,而数字就不正常了。关键是,那一长串东西是什么?

Read the rest of this page »