Archive for September 2008

My Thunderbird Add-ons

Mozilla 出品的软件,最大的特点就是通过 add-on 可以不断地扩展软件的功能和特性。一般来说,能够提供额外有用信息和能够使的操作更方便的 add-on 是最值得使用的。

Attachment Reminder - 用户在发送邮件的时候偶尔会忘记添加附件,却又在 email 中说到“请看附件”之类的话,如果是发生在比较正式的场合,往往难免会比较尴尬。这个 add-on 的通过扫描邮件中的关键字,在发现有可能表示有附件的文字,发送时又没有添加附件的时候,给用户提醒一下。

Country Lookup - 显示邮件发送地的地理信息。

Display Mail User Agent - 显示用户客户端的信息。

Display mailing list header - 显示在 RFC 2369 文档中定义的 header 信息。

Enigmail - 使用 OpenPGP 加密邮件或者添加数字签名。

GmailUI - 添加一些 Gmail 中的特性,比如说 j/k 键用来上下翻阅邮件。

ImportExportTools - 增强的邮件导入导出功能。

Menehy - Country Lookup 和 Display mailing list header 依赖的扩展……

Nostalgy - 为切换邮件目录、拷贝移动邮件增加快捷键,同时提供目录路径自动完成的功能。

pasteCode - 连带语法高亮信息地将代码拷贝到邮件中。

Quote Colors - 使用不同的颜色区分邮件中嵌套的引用(quote)。

Remove Duplicate Message (Alternate) - 删除重复的邮件。

Signature Switch - 可以根据收件人、新闻组、邮件列表的不同自动使用不同的签名档,支持 HTML 签名。

Stationery - 提供编辑 HTML 邮件源代码的功能。

Zindus - 自动同步本地通讯录与 Gmail 或者 Zimbra 通讯录。

最后来一张截图:

(点击查看原尺寸图片)

Ruby 技巧:如何高效读取大文件末尾的数据

在处理某些大文件(例如数以 G 计的文件)时,可以事先知道需要读取的数据即在文件的末尾部分(例如只需要知道文件最后大约5%的数据)。如果按照普通方法,从文件起始部分开始读取,将会花费大量时间在 IO 操作上。如果能像 *nix 的命令 tail 那样直接读取文件末尾的数据,将会大大提高处理程序的性能。在 Ruby 中,IO 类有如下三个常量用于指示从何处开始在 IO 流中搜寻数据:
SEEK_CUR:从当前位置开始
SEEK_END:从 IO 流末尾位置开始
SEEK_SET:从 IO 流起始位置开始(亦即”绝对位置“)

示例代码:


fileSize = File.size(fileName)
seeklen = ((0.05 * fileSize) * -1).to_i
file = File.open(ARGV[0)
file.seek(seeklen, IO::SEEK_END)
puts file.readlines