日知录

学而不思则殆

org-page的成长史

org-page的诞生,还是要感谢自己当时的头脑一热。当时自己刚从vim转投到emacs的阵营,而且刚刚对org mode有所了解。而那时候,我正在折腾github的pages(不明真相的童鞋请到这里围观),而且octopress这个静态站点生成器也很流行,于是我就试了一下,感觉很不错的说,只是要用markdown来写东西这点让我比较不爽。

我当时不懂markdown,当然,学会markdown的语法估计也不过半天的事,但是写程序的人有时候是很偏执的:既然我刚弄懂org mode,为什么不能用org mode来写东西呢?遂去Google了一番,发现了o-blog这么个东东,大喜过望,一试,发现除了他给的example能正常生成html之外,我自己写的org文件一个都不能生成,在运行的时候不是这里报 wrong-type-of-argument 错误,就是那里报 wrong-number-of-arguments 错误,而且我看他提供的example里面,除了org mode本身提供的一些语法规定之外,还多了很多自定义的东西,比方说 #+begin_o_blog_row 这样的东东,然而这些额外的语法又没有特别详细的说明。于是,“为什么不自己写一个以org文件作为源的静态站点生成器呢?”这个想法就这样形成了。

程序开写三把火,说写就写,但关键是我当时基本是没有 Elisp 或者任何 lisp 方言方面的知识的,于是,开始看GNU Emacs Lisp Reference Manual,啃英文,愣是看到了Macros那一章(后面没有继续看,因为我觉得前十二章的内容对当前的我来说已经够用了),然后,就开始写了,名字就叫做org-page。

写了一点之后,我发现就算是写一个org to html的解析器都不是一件容易事,同时也发现了原来org mode已经内置了publish html的功能,但是默认功能太过简单,于是,我就去看 org-publish.elorg-html.el 两个文件,希望实现一些hack,然后我发现org publish的自定义功能还是相当强大的,于是,我就开始了基于org publish的自定义。

很快,org-page的0.1版本出来了,实现了一些基本的feature,比方说page header、footer以及样式的自定义。这个过程我写得相当吃力,因为基本上任何一个函数我都需要用 C-h f 去查的。

悲剧的是,0.1版本出来后,项目开始忙了,而且因为大规模的同事离职(到最后我们team只剩两个开发人员,一个我,还有一个,是team leader,大家都懂的),我一个人扛了比较多的任务,基本上白天时间都是在跟人交流,什么Email,电话,OC,远程桌面什么的,只有等晚上大家都下班后,我才有时间coding。于是,org-page,我就只能给放那儿了。

就这么过了几个月,忙完了,我又开始闲了,而且是闲得蛋疼,一天基本收不到一封需要我仔细读,然后去处理的mail,也没人给我打电话。在看了几天书后,发现了躺在硬盘某个角落里的——org-page。

其实那时,我最初头脑一热的念头早就散尽(如果要我那时再去看Emacs Lisp Manual,我是万万不会愿意的),但是想,闲着也是闲着,而且蛋还疼,看书也没意思,还是找点事做吧,于是,就重新捡起了org-page。

到阁下现在看到的这里,org-page的0.2版本已经出来了。至于为什么不直接叫1.0版本,是因为还有一个在规划当中的RSS订阅的feature没有实现,我觉得对于我来说,目前最重要的,是将以前写的一些org文件先整理好给发出来,围观的人不多,RSS功能实现了也没什么用。所以,虽然还有一个feature没实现,我还是义无反顾地执行了 git tag v0.2

那么,以上就是org-page到现在为止的整个历史,作为一个demo site(至少目前只是demo),本打算随便写些test之类的内容就算了,后来想想,既然是给别人demo,还是写点正规的东东吧,于是就打算写点org-page的使用方法之类的,但没想到的是,作为一个文艺青年:-D,写着写着,就写成了《org-page的成长史》。 :-P

那么,就到这里吧。

Comments

使用Disqus评论 使用多说评论
comments powered by Disqus