Real Programmers use Emacs
Click to enlarge: From xkcd.
The Free Mind of pluskid
Click to enlarge: From xkcd.
RMMSeg 是 MMSEG 中文分词算法的 Ruby 实现。可以作为独立的程序运行,也可以方便地和 Ferret 进行集成。 今天凌晨在完成了与 Ferret 的集成工作以后,我发布了 0.0.1 版,可以从 RubyForge 进行下载,也可以直接使用 RubyGems 进行安装: $ sudo gem install rmmseg 下面是引用 RubyForge 上的 Announcement :
如果你不喜欢听我讲故事,那么请直接跳到末尾。其实故事很简单,最近几天的故事都是和 RMMSeg 有关。这次我是在做 RMMSeg 的主页,昨天晚上(或者说今天凌晨)我做完了和 Ferret 的集成,并发布了 0.0.1 版。可以看到,主页我也做好了。 其实主页早就做得差不多了,只是还缺一个和 Ferret 配合使用的例子。现在那里已经有一个例子了,用 Ferret 的 Highlight 输出为 HTML 格式: highlights = $index.highlight("content:#{key}", id, :field => :content, :pre_tag => "", [...]
起因 我试图用 sow 工具来创建一个 gem ,但是当我执行 sow 的时候却得到了一个错误提示: $ sow rmmseg /usr/bin/env: ruby -ws: No such file or directory 经过 这是为什么呢?我首先找到了 sow 脚本的位置,发现它第一行的 Sha-Bang 如下: #!/usr/bin/env ruby -ws 我立即尝试在 shell 下输入 /usr/bin/env ruby -ws ,发现一切正常,再创建了一个具有同样 Sha-Bang 的脚本,直接执行,却又同样的错误。这是为什么呢?
我在前面曾经提到过,中文分词比较困难,不像英文那样,直接在空格和标点符号的地方断开就可以了。 Jack 在评论中提到即使是英文,在进行短语层次的分“词”时也会有类似的困难。还有在进行手写识别时,空格有时候不能很精确地识别出来,也会要用到中文分词中的一些技术。 RMMSeg 我近日做的一个 Ruby 的中文分词实现,下一步是和 Ferret 进行集成。不过,在介绍 RMMSeg 之前让我先来简要介绍一下中文分词。 如何分词? 那么中文分词究竟要如何做呢?想想你自己看到一个句子的时候,如何进行分词?似乎是及其复杂的吧?好像感觉到现在的电脑还达不到这个层次,至少一台普通 PC [...]
secureCRT 是 Windows 下一款非常优秀的 SSH 客户端软件(商业软件),目前它的最新版本是 6.0 ,从 5.5 版开始支持 OpenSSH 格式的 Private Key ,并可以把它自己的 Private Key 转换为 OpenSSH 格式。 OpenSSH 是 Linux 下广泛使用的 SSH 程序。我自己在前一段时间广泛使用的一对密钥是通过 secureCRT 生成的,最近需要在 Linux 下也使用密钥的方式进行 SSH 连接,维护多对 SSH 密钥是比较麻烦的事情,而且容易搞混,可是私钥格式并没有统一标准,各个程序之间的格式通常是不兼容的。 [...]
近日做一个 Ruby 的程序需要用到一个大约 2 MB 大小的词典,我把它构造在一个 Ruby 的 Hash 里,然而程序启动需要花上大约 4 秒多的时间,主要都是花在加载词典上了。虽然这个程序许多情况下可以在初始化之后处理许多数据,因此可以把启动时间忽略掉,但是在测试的时候还是让人相当不爽。于是就想看看是否可以改进。 首先我测试了只读入一个大约 2 M 的文件的操作,速度非常快,在我这里大约在 0.16 秒左右,然后尝试在读入每行的时候把数据加入到一个 Hash 中去,速度降低到了越 0.43 秒左右: h = Hash.new File.open("words.dic", "r") do [...]
Ruby 1.9.0 已经发布了,1.9 的一个重大改进就是对 Unicode 的支持,这里有一篇介绍 Ruby 1.9 中 Unicode 的文章,可惜是日文的,不过配合代码和部分汉字应该能理解大概意思。 在 Ruby 1.9 中,将如下代码保存为 UTF-8 编码,可以轻松运行通过: # -*- coding: utf-8 -*- require 'test/unit' class TestUnicode 注意第一行的注释中的 coding: utf-8 是必须的(当然也可以通过其他各种方式来指定,不过我很喜欢这种方式,因为这样 Emacs 也可以认出这个文件的编码来)。在 Ruby [...]
平时用起来似乎感觉和英文没有什么大的区别,大概是人脑太强大了,中文和英文都是“小菜一碟”,所以不太能感觉得出区别吧,但是放到现在的电脑上就能明显感觉出区别来了。比如说输入,要依靠输入法,而且输入法的学问也很大。输入以后要显示,字体也是一个问题,英文字体文件可以很小,而中文的话通常会很大。最麻烦的应该还是做检索,要做索引的话需要进行分词,英文很方便,直接 text.split
在 Debian 这样有强大的包管理系统的发行版里面,通常会有许多地方和已有的插件管理系统有重叠,例如 Ruby 的扩展(gem)、Firefox 的扩展等等,用哪个管理系统就是仁者见仁了。全部都用系统提供的管理系统当然保证了统一性,更加方便。但是特定的管理系统通常更全更新。例如 Ruby 的话,安装扩展的时候我通常都是通过 gem 直接从 RubyForge 上安装的。 如果 Ruby 本身是通过 apt-get 安装的,然后通过 gem 来安装某个扩展时需要编译的话(例如 Hpricot 或者 Ferret 等),会出现如下错误: /usr/bin/ruby1.8 extconf.rb [...]
我同 cc98 上一个去内蒙方向的土木的同学和 88 上的一个老乡一起在玉泉正门口通宵排队 15 个小时买火车票。也算是买到了吧,自贺一下。 昨天下午 5 点多到玉泉正门口,本来是想去城站排队的,好歹是室内,暖和啊,可是城站临时变更售票规则,不再提前 11 天出售卧铺票,真是奇怪,火车站反而不可以买,而代售点倒是可以买。总之,昨天下午我们三个人排在第 14、15、16 这三个位置,可惜我们三个人总共就要买 9 张票,没法轮班排队,因为每个人限买三张卧铺嘛。排在最前面的一波人好像是要买去重庆的票,听说是中午一点就过来的。他们似乎有很庞大的队伍,经常轮换。我们几个从紫金港过去,换了也没地方住。
今天在 newsmth 的 FuncProgram 版看到这个消息,真是大吃一惊。我在这篇文章中提过 MIT 的 CS 6.001 ,就是那个著名的教材和课程名称都叫做 Structure and Interpretation of Computer Programs 的程序设计基础课程。版上贴出来的链接是这个。 CS 6.001 是 Hal Abelson 和 Gerry Sussman 于 1980 年创立,以 Scheme 语言为基础讲述程序设计的原理(听说后来换成 Python 了?)。事实上,Scheme [...]
Mechanize 是一个用于在 Ruby 脚本里将与 Web 页面的交互工作自动化的库。它会自动处理 Cookie 、重定向、Referer 之类的东西,使用起来非常方便。我就用我今天写的一个小脚本作为例子来介绍一下 Mechanize 吧! 其实我是在寻找 Ruby 里面处理 Cookie 的库的时候找到它的。学校的网络以前是要先通过一个 Web 页面登录才能上网的(可恶的电信!),早就有前辈们写了上网登录脚本,方便使用(事实上在 Linux 下想要使用学校提供的 201+ 卡方式访问校外网的话,只有用登陆脚本了,电信提供的 IE 插件根本没法用)。可是脚本是用 perl [...]
Emacs 有许多扩展可以用来上 IRC ,如果你的 Emacs 版本够新的话,已经自带了 ERC 。只要 M-x erc 就可以了。 唉!可惜这边的时间和美国那边的时间相差好多,有时候想上去问问题,却少见几个人醒着的。 :(
我经常在后台开一个虚拟机运行 Linux ,而几乎每次关机的时候都忘记了还有一个虚拟机在运行,导致 Linux 非正常关机了。所以我写了一个小程序来防止这种悲剧继续发生:在关机的时候检测是否有虚拟机在运行,有则阻止 Windows 关机。 广告时间 在介绍我的小程序之前,我实在是忍不住要对我现在用的虚拟机和虚拟桌面广告一番了! :p VirtualBox 是一个很不错的虚拟机。和老牌的 VMware 对比,也有许多优点: VirtualBox 可以免费使用,而且还有一个开源版本。而 VMware 是商业软件,虽然 VMware Player [...]