六月 25, 2008

rgrep

原来都是使用find-grep在emacs里面搜索文件,但是每次都要手工修改find-grep的命令来过滤.svn这样的目录。其实很想使用ack,可惜它的输出格式与grep不一样。

翻看emacs文档的时候发现了rgrep,它在搜索时会略过用于版本控制的目录,但在使用方式上也与find-grep有些不同,需要习惯一下。

六月 18, 2008

Watching Google I/O

这两天一直在看Google I/O会议的视频,由于这些视频都比较大,一般在100M以上,所以都是先用Firefox的插件Video DownloadHelper下载到本地,然后用vlc观看。

先后看了Maile Ohye的Search Friendly Development,Chris DiBona(这哥们讲话真快)的Open Source is Magic,Steve Yegge的Server-side JavaScript on the Java Virtual Machine,以及Marissa Mayer的Keynote。还有几个已经下载,准备在今后几天观看。

从视频内容本身获得的收获就不说了,单单是这种把会议做成视频放在YouTube上让大家免费观看的方式就让我唏嘘不已。闭门造车是要不得的,要走出去,把自己的东西讲给别人听、听别人讲他们的东西,相互了解、相互启发,这对于一个程序员来说是非常重要的。然而由于各种各样的原因,有些地方我们去不了,有些时间我们挤不开。幸好还有Google想到了我们,不仅是这次会议的视频可以在YouTube上找到,我们还可以找到很多Google举办的内部讲座,比如Linus Torvalds on git等等,都是非常值得一看的。

我相信很多技术公司也举办过类似的会议,我甚至看过Ballmer先生怒吼着Developers! Developers! Developers!的视频,然而,仅此而已。以人为本,不仅要放在嘴上,而且要放在心里,还要有行动。

六月 16, 2008

SELinux

SELinux是Security Enhanced Linux的缩写。望文生义的时候还以为是关于黑客啊、攻击啊、漏洞啊之类的事情,这两天在读《SELinux by example》的时候才明白,原来这个东东竟然是用来对付程序员的,准确的说,是为了防止由于程序员的疏忽或错误对系统造成不可预料的伤害。

书中的例子是关于文件/etc/passwd,碰巧同时在读的《Mastering Perl》的第三章Secure Programming Techniques中也用这个文件举例。后者主要是说明处理外部数据时要格外当心,否则可能导致泄露系统信息。然而,要求每个程序员在写程序的时候都要打起120分的精力来注意安全问题是不现实的,总有这样那样的原因导致安全问题被有意无意的忽略。而且,与其让每个程序单独的考虑安全问题,不如将其放在一个集中的地方,就如同SELinux那样,使用各种规则来保证每个程序只能访问特定的系统资源,以及每种系统资源只能被特定的程序访问。

通俗地讲,即使某些应用程序在运行时被提升为具有root权限以访问某些系统资源,但是由于SELinux的存在,一个具有root权限的程序也不意味着它可以访问任何系统资源,相反,它只能访问那些被SELinux规则允许的系统资源,这样就避免了由于程序员的疏忽或错误而对系统造成伤害。

六月 11, 2008

2008 resolution revisited

上半年在技术、生活上有所收获,在工作、投资和开源上基本没有进展。

技术上,通过编写一个小的webapp,开始接触Catalyst, DBIx::Class以及SQLite。在那之后还用DBIx::Class和SQLite写了一个小程序来备份del.icio.us的收藏。写了一个Emacs major mode,学会了高亮显示、隐藏文本、调用ediff、使用narrow等等,为了测试,还写了一个unit test framework。开始频繁使用virtualbox。git成为日常使用的版本控制工具。

老婆怀孕了,所以下半年的第一要务是照顾好孕妇,其它的事情不求有功但求无过。

六月 04, 2008

Backup gmail with offlineimap

一直使用POP3方式备份Gmail,前一段突然出了问题,总是那拿不到最近几天的邮件,十分郁闷。昨天在弄mutt,突然想到可以用offlineimap来备份gmail,通过IMAP协议,而不是POP。以前读过这样的blog,所以有点印象。

IMAP的优势在于很多操作都是在服务器上,省去了同步的烦恼,然而必须在线的要求实在太苛刻,这有点像版本控制工具的发展,git等分布式版本控制工具的出现,部分原因就是为了在离线的状态下也可以进行操作,方法是在本地复制一个repository。IMAP也有类似的机制,方法是在本地建一个IMAP服务器,然后用同步工具把邮件从远端的IMAP服务器搬到自己的IMAP服务器上,offlineimap就是这样的工具。

在备份gmail的过程中offlineimap偶尔会崩溃,导致我一晚上只备份了5000多份邮件,稍微有点郁闷。

六月 03, 2008

Searching Mail

读了sacha的Searching Mail之后非常兴奋,下载了nnir和imap,然而在我的IMAP server上尝试失败,搜索结果总是返回空。无助之际,想到了mutt,在以前学习的基础上稍加调整,就可以用了,搜索功能用起来很爽。唯一的问题是在Ubuntu上如果从GNU Screen里面打开mutt,会花屏,用mcabber上gtalk也有类似的问题。在Fedora 8和9上都没有问题。

这时候Virtualbox就排派上用场了。装上Fedora 9,做了port forwarding,这样就可以通过ssh连进去。然后启动GNU Screen,并在里面开一个mutt(顺便把mcabber也搬进去了)。

看起来有点复杂,其实很多步骤都是以前做好的,比如mutt的设置,虚拟机的安装,port forwarding的设置等等,一点一点的积累,最终就变成完整的解决方案。