还是建了一个 wiki

最近一段时间,我一直断断续续的研究 wiki。主要的目的是想用 wiki 来做首页,因为我厌倦了一直依赖手写 HTML 代码来更新首页。因为这样弄起来麻烦,所以过去我的首页基本上都是常年不变的。我一直觉得首页应该是一个站点的门户,所以我在 2007 年第一次建立这个站点的时候就决定把 blog 分离出来。那时候有很多人的首页上来就是自己的 blog,我觉得作为一个学计算机的,网站应该保留一些传统,所以尽管我的主页常年不动,几乎是个废物,我还是一直留着它。

直到我忍不了了,心想应该需要大修一下,最起码要做到内容和格式分离。开始的时候我想的是用 MT 来一并管理了,后来总是不得法,一直没有成功。然后就决定用 wiki 来做,也能达到一个 CMS 的要求了。我当时想的是首页不需要多少功能,就选了个最简单的 wiki 程序──UseMod Wiki。它不使用数据库,所有数据用纯文件保存。后来觉得首页全用 wiki 写有很大限制,比方说不能插入 javascript 代码,这样我就不能在页面上放一些贴纸(比如 Ubuntu 发布倒计时什么的)。我试验了好几个 wiki 程序,他们的设计方向都是多人共同编辑,因此在插入可执行代码方面的政策相当保守。最后只好作罢。后来想起了之前用过的 Blosxom,它可以在文章中放置任何代码,但我最后还是觉得 Blosxom 主要还是为 Blog 系统设计的,要想让它编程首页的样子,就要重新设计模板,而这正式我最不擅长的。

前几个星期我在看 Ramhost 的消息的时候,看到它的老板曾经写过一个叫 Ram-CMS 的项目。它很类似 Blosxom,也是手动把页面写在纯文本文件里,放在一个目录中,系统会通过链接找到文件,显式出来。我把在首页上放了几天,觉得还算不错,不过也有部分问题,就是这个项目的开发还不够成熟,用它来做很多事都挺麻烦。虽然能够完成,但我毕竟是不想再手写 HTML 代码,要是能有类似 Markdown 那样的抽象机制就好了。同样的,那个项目不是一个产品项目,而是作者给自己开发的小玩意。我要对模板做一些改动才能使用。我于是一遍慢慢进行,一遍在寻找其它产品。

我前几天又上了 Zoom.Quiet 的页面,他们一帮人组织的致力于 Python 的推广学习的啄木鸟社区,用的是 MoinMoin 做的 wiki。而那个社区里的一些看上去杂乱的页面风格挺符合我的胃口,我那时候有正在考虑 CMS 的问题,就想试试 MoinMoin。后来看了半天文档、又实践,却发现 MoinMoin 很难安装在共享虚拟主机上。最后也不得不放弃,同时发现,Python 程序和 Ruby 写的 CMS 往我的 Site5 主机上放都不太容易。Perl 写的 CGI 已经就差不多了,当然最方便的还是 PHP。

后来由于怀念起很早之前用 MediaWiki 搭建的一个歌词为主题的 wiki 了,于是就又装了一个 MediaWiki。我印象里一直以为 MediaWiki 只支持 MySQL 的,结果查了一下发现 MediaWiki 同样支持 SQLite。我目前觉得 SQLite 数据库比纯文本文件数据库还要方便,毕竟一个目录和一个文件的便宜程度是没法比的。Site5 主机上的 MySQL 默认的字符编码是 Swedish,很讨厌,我一直也没有成功的弄到 UTF-8 上,于是我没有在主机上建立一个数据库,全部用的 SQLite。不过装上 MediaWiki 后却发现不会用了。我过去为了管那个站点,还研究过一段时间,但将近两年的时间没有再管理了,再次见到一头瞎。最后觉得也不甚理想,于是就删除。

昨天看到 TualatriX 写的文章《摆脱信息爆炸,开启个人Wiki的时代》,提到他用 MoinMoin 建立了一个 wiki。我看了之后也挺羡慕的,只谈自己没有 VPS 啊。不过文章却启发了我,之前一直想用 wiki 做首页,但其实真正弄一个私人的 wiki 还真是个不错的主意。日常里有些信息还真得需要用 wiki 来维护。

我最头疼的首先是打开的网页。我的习惯是看到好页面,如果不是特别想看的话,而且还有别的页面也想看时,就把它的标签留着,以后再看。反正我平时的本子基本上不管,移动的话直接一扣,Mac OS X 的电源管理还是做得很好的。这样时间长了我的 Firefox 就积攒很多标签,既影响速度,又让我觉得很难看完,而关掉有觉得不甘心。最后要么把所有标签收藏起来,好么就把链接保存在文件里,等将来再看(虽然绝大多数情况是将来再也没有看过)。我曾经写过一个 Google App Engine 上运行的程序,名叫 URL-Basket,专门收集临时链接的。跨年的时候写的,但不能处理非英文的字符,后来事情多了也没有再修改。现在觉得而这些东西放进 wiki 里应该也不错。同样因为是放在网上,移动的问题也解决了,远比在硬盘上建立文件方便。

我心中理想的产品,是一个 wiki 为基础的大杂烩,可以进行普通的编辑,也可以在上面加各种各样的应用,最好它本身就是一种语言的解释器,可以运行自己的语言。所有的东西可以放在一个页面里,也可以进入不同的目录。程序也即文本,也就是那些小程序模块可以像文字一样复制粘帖。其实这个东西就相当于一个在线版的 Emacs,我这想法也没有任何依据表明它一定会有用,不过我空想中觉得应该是挺好玩的。目前的 wiki 程序算是完成了一半的要求,不过毕竟发展的思路不同,或许将来会有类似的东西吧。

既然自己要弄一个 wiki 系统,我还是选择了 MediaWiki。因为不是想用它做首页了,所以复杂一些也没关系。过去在 Dreamhost 上运行 MediaWiki 要忍受它的龟速,但在 Site5 的共享主机上就完全没有速度的问题了。我试过一些其它的 PHP 写的 wiki 程序,很多都只支持 MySQL 数据库,这是我不想要的。MediaWiki 支持 SQLite,也被 Wikipedia 证明了它的稳定性,所以我也就义无反顾的选择了它。安装好了还是想不起来怎么用,只好查文档看各种资料,折腾了一会好歹把之前的数据都放进去了。

目前来看,我对这个 wiki 还是比较满意的。本着能用就好的原则,我也没有进行过多的设置。把自己的 favicon 和 MediaWiki 的 logo 合并,作为了 wiki 的 logo,虽然觉得那粗线挺丑的,但也算到了我设计能力的“极限”了,也只好将就了。

弄了 wiki 后,首页我就不打算放 wiki 了。之前那些杂货也都挪到 wiki 上了,首页就让我设计成几个指向我几个不同帐户的图标组合了。目前看起来一切都还好。