对记录的痴迷

今天晚上,我终于能静下心来,整理一下我的个人维基了。我已经有很久没有编辑我的维基了,上次编辑还是去年十月份。

这次主要是折腾了几次系统,有写知识点想记录下来,但到最后总是懒得弄,所以拖到了今天。另外,和妻子在楼下的餐馆吃饭的时候,也说道要把所有点过的菜都记录下来,最终把菜单上的菜都尝一遍,这个事情我在加拿大的时候就做过,至今维基上还有记录。这些心里都想着要做,最后总是因为懒惰,没有及时之行。

我目前使用的维基系统是 MoinMoin,之前在博客里说过,我受到了啄木鸟社区的影响,十分喜欢他们的维基的界面,最终自己也上了 MoinMoin。今天我在想,我已经挺长时间没有鼓捣它的后台了,也不知道最新版本是个什么情况。我觉得 Python Web 应用比起 PHP 来,还是复杂一些,导致时间长了我都不敢动它了。MoinMoin另一个问题是搜索还不支持中文,网上好像有人弄成了,我也没有功夫去看一看。所以我想,我之前用过 DokuWiki,PHP 写的,还不错的样子,比较轻量,我想也许换成它是个好主意,于是在另一个子域名下进行了安装,结果效果不大理想,速度不大快,感觉还不如 MoinMoin,而且转移也要耗费功夫,单把每篇文章复制粘贴可不行,这些修改记录都是很宝贵的个人历史呢。

近年来我编辑个人维基的次数少多了。在加拿大的时候,我一有了新的东西就进行编辑,MoinMoin 也不赖,在要编辑的地方双击鼠标,就可以在这里进行编辑,不用耗费功夫,就把一个个的干货知识点给记录了下来,十分便捷。现在想想,那个时候我主要还是在用 MacBook,在家用,上学也带着,在校园里也在一直用,甚至在家里躺在床上也用。在这种情况下,有了新的想法,记录下来是很自然的事情。现在我不是这样了,手机替代了笔记本电脑,就没发再这么干了。手机上我不知道有没有 MoinMoin 的客户端,就算是在浏览器里编辑,打字也不爽快,最后也就算了。

个人维基对我来说,是一个记录自己的工具,就好比 Evernote 早年宣传的第二大脑。我之前有了博客,但它记录的是我的想法,我在上面写的是文章,既然是文章,就要有起承转合。维基不同,它像一个私人的笔记本,想到哪里,都可以写上几笔,不必在意格式,不必关心文章的间架结构,只写知识点。当然,这些也不是强制的,有的时候我也喜欢在上面发表一些见解,做一些解释,但毕竟少数。说回来,这是你的地方,想写什么随你。比起博客来,维基要有私密性,我不用 MediaWiki 的原因就是它不支持单个页面加密。MoinMoin 里我设了个私密区,里面所有不方便被别人看到的东西都在里面。我还保存了给我妻子谢的情书。

在手机上,维基就不怎么方便了,人们发明了其它方法来记录自己,这一度让我产生不安。我的手机里装了 Day One,我在里面努力写日记,每周要写一篇周记,但在里面写过一遍的东西,时间长了就不想在别的地方再写一次了。我担心这样下去,我的维基或博客还有没有继续存在的必要。后来我想通了,Day One 更加私密,我常常用来记录一些更佳琐碎的东西,比如同事见的龌龊、工作上的不顺利、甚至关于妻子的坏话。Day One 里面也记录了我的生活,不过方向完全不同,我不用担心谁取代谁。

维基对我来说不可取代的功能之一是内部链接。每篇维基都不是一个孤岛,通过内部链接,把他们串联起来,就能达到非常惊人的效果。像这次我在编写 Funtoo 的条目的时候,顺便浏览了 Linux、Arch Linux、Gentoo 的条目。这些信息的关联,就像是之前流行一时的知识图谱(Knowledge Graph)。

图这种数据结构,在人工智能领域里有很多的应用,对于知识/内容串联也非常有效。之前学英语的时候,我接受过一个理论,学英语要有一本英英词典,查一个单词,就要看它原汁原味的英文解释,有不认识的词就继续查,直到弄懂了所有的词(似乎是李笑来在新东方的课上说的),最终的效果,就是在脑中形成了一副知识图谱,你经历过的每个单词都在这张图的节点里,互相关联着,这样才起到了背单词的作用。我在学人工智能的时候,也做过神经网络方面的项目,心想如果有一台足够快、存储量足够大的计算机,是不是可以把这些算法用上去,让它分析整理全世界的知识,或者仅仅是维基百科上的知识,能不能至少形成一个 inference engine 来帮助我们工作呢?

当然这个想法现在还不能实现,至少不能普及实现,但不妨碍我对于记录这件事的痴迷。其实,不仅仅是维基,个人博客也是我对于自己的记录,很多事情我已经淡忘,但回顾过去的博客,常常会有一种恍然大悟的感觉,原来我这件事情是在这个时间点做的呀。我一共写了 11 年的博客,虽然文章数量不多,但我不打算停下。在 2005 年前后,中国博客最火的年代,我遇到了很多很好的博客,可惜现在 90% 已经不见了,这是多么可惜。我上次给域名续费,一下子续了 10 年,就是要把这个域名下的内容在我有生之年永远的维护下去,并不断补充。

Mac 比 Linux 好的一点

从上一篇文章到现在,我一有空就开始调教我的 X250,准备把系统弄得好用一些。Arch Linux 的 wiki 实在是让人感动不已,简直太全了。国内的用户也很用心,很多文章都有简体中文版本的,非常方便。跟着这些资料,以及一些前辈的博客,我不知不觉的就把系统弄得足够漂亮了。原先别扭的汉字,现在看着字体也顺眼多了。可惜这个东西,要想仔细观察,工作量太大,所以我也不知道是因为我编辑了哪个文件还是装了哪个包所导致。

有段时间我一直没写维基,主要是没什么精力和心思。维基这东西需要动脑整理,现在没有很强烈的意愿要把一些事务性的东西整理出来了。有时候有空,也只能写写博客,其实多数情况下还是懒惰,不过是在是不想把网站给荒废了,所以激励着自己动手敲字。维基就不像博客这么随性了,不大容易。今天我在维基上开了一个新的记录,专门记录 Arch Linux 的信息。因为之前安装配置的时候,实在是没有想到这个系统能够这么好用,因此也没有有做记录的想法,现在只能靠回忆,来尽可能的填一些东西。看看从 2012 年 2 月 1 日开始的记录,这几年匆匆过去,简直像眨眼一样快呀。

记录一个这几天使用 Linux 的感受。之前一直用 Windows、Linux,也没有感觉,可从 Mac 上切换过来后,就有点不适应。在 Mac 里,不管是在什么地方,只要是个文本框,都可以用 Emacs 风格的快捷键来移动光标。比如 Ctrl+a 到行首、Ctrl+e到行末等等。这是非常符合 UNIX 传统风格的。可在 Linux 里,这个功能似乎是失效了,至少不是默认的,这让我觉得有点被打脸的感觉,Mac 在程序员当中的流行,真的不是靠运气的。

印象笔记和个人 wiki

昨天晚上我找到了解决 Launchbar 不索引文件链接的方法。事情是这样的,我通过 Homebrew 安装 Emacs,之后 Homebrew 会把 Emacs.app 文件软链接到 /Applications 目录下,这样就可以在 Launchpad 里找到它运行了。可 Launchbar 不索引这样的文件链接,导致我过去基本没法通过 Launchbar 来启动 Emacs,只能把 Emacs 的图标拖到 Dock 上,用鼠标点击运行。当然 Launchbar 也不是完全不能启动 Emacs,我进入 Launchbar 后,先找到 /Applications 目录,再按方向右键,然后再搜索 Emacs 就可以了,不过这样也就失去了用 Launchbar 的意义了不是。

然后我找啊找啊找啊找,我想这个问题应该不会太生僻才对,最后在开发者提供的 FAQ 页面上找到了答案,最终记录在了我的 wiki 上

在记录这一点知识到 wiki 上时,我突然意识到我似乎有段时间没有更新 wiki 了。我搭建这个 wiki 就是为了能够保存记录知识,现在想来大概算是一种个人知识管理的工具吧。我很喜欢这个 wiki,因为我学到了知识就会再里面记录,当再次使用时就可以方便的把它找出来了。一个我提到过好几次的例子是关于配置 VPS 的笔记。折腾 VPS 这件事我是没有什么兴趣的,开始的时候都挺枯燥,配置这配置那的,弄完了之后还要担心是不是漏掉了什么。过去我试过用博客了记录这种知识,可博客实在不适合,因为博客对我来说是一种散文类型的问题,可以记事,可以记录想法、观点,但不适合总结记录一篇知识。后来我假设了 wiki,发现 wiki 是记录这个的好东西。于是有一次我在配置 VPS 的时候,把步骤详详细细的记录在了一篇 wiki 页面中,结果等下次我还要配置一个 VPS 的时候,只要按照页面上的步骤来一遍就行了。我把每一步要用的命令也记录下来了,甚至可以复制粘贴运行,就基本能够搞定一切。这个页面成了我的 wiki 当中最重要的页面之一。

而最近我开始大量的使用印象笔记,突然感觉印象笔记跟个人 wiki 有那么一点类似。印象笔记也是一款知识管理软件,说上去在功能上跟 wiki 非常相像。wiki 中有页面,而在印象笔记中则有了一篇篇的笔记。我总结了一下两者之间的不同,优点跟缺点。

印象笔记的优点非常的突出,首先它很方便,因为有本地客户端,上来就可以编辑笔记,剩下的就不用管了,然后你的笔记在各个平台上都可以访问,里面图片里的文字也可以被索引。另外,印象笔记更加的私密,因为默认情况下笔记本是私有的,不用担心被别人看到的问题。还有一点对中国人非常重要,就是它对中文搜索支持的不错。这一点,MoinMoin 搭建的 wiki 就不行了。MoinMoin 本身的搜索中文的功能还勉强能用,但加上了 xapian 插件后,直接就不能搜索中文了。这个实在是让我头疼,好在我的 wiki 里很多东西用英文也能搜索到。

个人 wiki 也有自己的特点。首先它是搭建在自己的服务器上的,我可以方便的设置公开访问。我的 wiki 上的信息只有很少数的几个页面是不想被别人看到的,所以我只把它们设定为只有我能浏览,其它的页面上存放的各种知识,我欢迎别人来阅读。另外,开源是 MoinMoin wiki 的一个优点。印象笔记刚推出的时候,很多国人都对此持否定态度,因为担心不安全。虽然事实上我们很少有这种敏感信息需要保存,但把信息放在一个开源的系统搭建的 wiki 上,会令人更加的放心。同时,wiki 上的数据完全是放在我自己的服务器上,我对它们有完全的控制权。最后是 wiki 最重要的优点,就是它可以方便的通过链接把所有页面有机的整合在一起,方便管理,这是印象笔记所不具备的。

发现了我最近比较少的编辑 wiki 这个问题后,我考虑过是不是我应该用印象笔记来取代 wiki?我的答案是 no。尽管在印象笔记里信息都可以非常方便的被搜索到,但我发现我在印象笔记里跟在 wiki 里的信息的性质有些不同。虽说印象笔记是一款个人知识管理应用,但我往里面存放的多数是信息、资料,而不是整理好了的知识,就像是人们常说的一样,印象笔记可以当做是我自己的第二个大脑,用来帮我记忆更多的信息。而 wiki 则不同,我在里面存放了很多知识,虽说这些知识也是通过页面来保存的,但它们都被整理过,非常的有条理,而不是杂乱的,待我搜索取用的信息。

因此,我觉得印象笔记跟个人 wiki 二者是互补的,两者对我来说缺一不可。尽管我最近没有编辑 wiki,那时因为知识的整理本身就是大量信息被存储后才从中提取、归纳出的。

Evernote 的白板

最近我用印象笔记比较多的。虽然我从 2008 年 Evernote 开放注册前就注册了帐号,但我多数是用它来保存网页上的内容的,自己往里写东西的时候还真是较少。虽然抓取网页内容也确实是 Evernote 的一项功能,但我觉得它脱离了笔记本的范畴。

限制我亲手往里面写内容的因素之一是 Evernote 是一个胖客户端程序,做不到随时就可以打开往里写一通。还有个因素就是在一些需要速记的场合,比如记录课堂笔记,我怀疑 Evernote 能不能胜任。如果我用电脑来记课堂笔记,我会用 Emacs 的 org-mode,当然 org-mode 出来之前我用过 Emacs Muse。当然我也在我用 MediaWiki 架设的 wiki 上记过,不过我没有认真对待它,算是一项玩票,因为在 wiki 上也没法好好、快速的记笔记。Emacs 的快捷键让我可以较为快速的移动光标,并且不用把手挪开主要键位,非常有效;可其它的程序中就不大有这些功能了。

还有一点就是格式的问题,纯文本的笔记格式是否够用,我对此持否定态度。我记笔记要有格式,至少要有列表功能,然后或许不能少了表格什么的,org-mode 在这点上很方便,Evernote 的功能在于同步,但要是把文章做的漂亮就比较弱一点了。

我后来买了智能手机,Galaxy Nexus。上面装了 Evernote 的客户端,这样我总算可以在外地访问、编辑笔记了。在之后的旅游中,我用它记录了一些想法,这好像是我第一次正式的用 Evernote 来记东西。那时候我已经放假,也没有记课堂笔记的机会了,不过我发现用 Evernote 记一些临时的想法很有效,特别是当我有了可以运行手机客户端的手机,那时候实在是太方便了。

前几天我去外地,当我有了写 blog 的观点时,我也用 Evernote 来记录。在当中我发现了 Evernote 居然可以在笔记中插入检查单(checklist)项目,还很方便。我想这不就是我一直想要的 todo list 功能吗,真没想到他便铁鞋无觅处,得来全不费工夫,我想要的软件原来一直都在我的手机上装着,看来我对手机客户端功能的挖掘还是太少了啊。

前几天我开了几个会,会后把会议记录整理到 Evernote 中时,发现在 Evernote 里可以很方便的创建列表,这让笔记变得非常的有条理。我这时对 Evernote,也就是印象笔记更加的感兴趣了。有一天我点了客户端上的那个喇叭图标,看到跳出来的是一个名叫《印象最前线》的类似博客的东西,介绍印象笔记的一些功能。我浏览了一下,发现在我不知不觉中,印象笔记已经有了好多有特色的功能了,还有各种个样的应用于各种笔记类型的模版。渐渐的,印象笔记也不再是几台设备之间同步文字的应用,而变得更加多彩了。

我觉得印象笔记中每一项笔记刚刚建立时的白板状态很有趣,因为空白,所以可以往里面填方任何的内容。当然现在可以往里面放的还不多,只有列表、表格、checkbox 之类的东西。我想在将来也许会有更多的所谓控件这种东西?让 Evernote 可以操作的笔记形式有所扩展?我很想有一个类似大杂烩的地方,让我可以随意的书写,但我觉得这类文档并不好保存,有时候还是可以保存成纯文本一类的文档才最稳定可靠。

我过去喜欢把笔记类的东西记录到 wiki 上面,一方面原因是 wiki 上的数据完全是我在管理,不假手他人比较放心;二方面是 wiki 不用客户端,在浏览器里就能访问、编辑;三方面是因为 wiki 便携,有浏览器就能看,不怕没有客户端的情况;五是 wiki 公开,只要我不加限制谁都可以看。不过 wiki 也有缺点,就是表达力不足。同样是做记录的,到现在应该没有任何一款软件能达到 OneNote 那种地步。

我没有用过 OneNote,只是过去在上课的时候,有一两个老师喜欢自己带个 tablet 在上面写板书,用的就是 OneNote。我从下面看软件有不少功能,当然老师用的只是手写这些,其它的功能我没有实际看到,但能看出 OneNote 这个软件是有很大能耐的。我考虑过如果印象笔记能有这些功能就好了,不过想想似乎不大可能,印象笔记是不会做到 OneNote 这么复杂的,因为它的重点不在这里,这让我稍微有些遗憾。

那么将来的印象笔记是什么样子的呢?我不知道。但基础是一张白板是一定要保留的。然后是通过插件扩展更多的格式还是仅仅保留一些比较重要的功能,我们再看吧。

MoinMoin 用了一年多了

今天编辑了我的 wiki 之后,顺手点了一下 RecentChanges 页面,看到了我的编辑记录,发现我这个用 MoinMoin 建的 wiki 已经使用了一念多的时间了。创立这个 wiki 的时间是 2012 年 2 月 1 日,现在想起来感觉就像是前几天一样,让我惊叹时间真是过的飞快啊。

我挺早的就接触了 wiki 这个东西。最开始自然是维基百科,后来买了空间后就在上面自己搭建私人的 wiki。当时 blog 正流行的火爆,很多人买了自己的域名和空间搭建自己的 blog,并把它当作首页。我不想这么做,所以一直是自己手写一个导航页面放上去,blog 和其它的东西放在下层域名中。但自己手写 HTML 并上传十分不方便,SSH 到服务器上修改又有编码问题,页面上的中文在 shell 中被解析成乱码,基本上处于无法改动的状态。最后我厌倦了,于是想用一个内容管理系统来生成首页。最早考虑的是 Movable Type,当时我也是在用 MT 来搭建 blog,MT4 又开始有了页面功能,不过弄来弄去一直不成功,我也不满意 MT 提供的美观效果。后来就把主意打到了 wiki 上面

当时我还只是想用 wiki 来管理首页,因此就排除了已经使用着的 MediaWiki,选择了一个小型的、简单的 wiki 软件来用。当时选择的是 UseMod,外观我挺喜欢的,简单,没有 MediaWiki 那些专门适用于百科全书的功能,整个页面基本上是个白板,我可以任意的往上写东西。不过很快我就遇到问题了。我的想法实际上是用软件当作一个动态管理的工具,说白了就是我可以在浏览器里面编辑这个页面,即时发布。可 UseMod 本质上是个 wiki 软件,因此在页面内容上做出了很大的限制。具体哪一点限制了我,在今天我已经记不起来了,总之它不让我用 HTML 来写页面,它自己提供的格式又无法满足我的要求。我查了一些资料,据说是为了安全考虑。对于一个多人编辑的 wiki 这是必要的,可对于只有我一个人维护的页面则有些过度保护了。没有放宽这个限制的办法,所以我只好作罢。后来我还尝试了一些其它的 wiki 软件,都无法达到要求。最后还是换回了一个我手写的页面,上面只有导航链接,算是一个鸡肋吧。

除了首页外,根据我的 blog 记录,我从 2010 年 2 月 7 日开始搭建自己的私人 wiki。当时我已经放弃了用 wiki 来做首页,因此就使用了最流行的 MediaWiki 来搭建了一个,用于自己日常的记录。开始的时候我因为觉得 wiki 是个好东西,因此就让自己尽量在上面写东西。后来发现这样做对了,因为有很多东西或许当时觉得不值得记录,于是就错过了,到之后再想找回来就很麻烦。而编辑 wiki 的成本很低,而且 wiki 是页面组织的,而不是像 blog 那样用文章来组织的,所以编辑 wiki 就像是随手再纸片上写点什么,而不用专门写一篇文章,所以也不用考虑太多,不用组织语言,直接把最纯粹的信息记录下来就行了。之后要用到了搜索一下就找到了。

我有几次这种经验,比如配置 VPS。一开始我觉得这不就是远程配置 Linux 么,有什么难的,有什么不会的去 Google 很快就能找到答案,因此也没有注重记录。只是因为第一次配这个东西,于是写了篇 blog 记录了一下,没有很详细,只是一些我过去没遇到过的一些设置。结果后来我换了一个新的 VPS 后,又需要配置一遍,我就有点抓瞎了,因为不清楚我有没有漏下什么。于是我就在配置的时候在 wiki 中记录下每一步,包括要做什么、命令、需要怎么编辑哪个文件,都详细的记录下来。之后我买了新的 VPS 后配置起来十分方便,按照这个列表走一遍就行了,不用担心漏掉了什么。

从那以后,我每当遇到这种情况,都用 wiki 把步骤记录下来,感觉安心了许多。

MediaWiki 并不是我最满意的 wiki 软件。首先它是专门为 Wikipedia 服务的,因此除了它的界面比起私人 wiki 更像是百科全书外,它还欠缺一些私人 wiki 上用得到的功能。比较重要的一项就是访问权限功能。我建立 wiki 是随身为了记录我的信息,而不是为了发布信息,因此我有些比较敏感的信息(比如帐号、密码之类的)不想公开,MediaWiki 就没有这个功能,而且也不准备添加这个功能,因为他们要做的 wiki 软件是为了自由的百科全书服务的,因此不应该有限制别人访问的功能。所以有机会我就会换到别的 wiki 软件。

中间因为我看到了 FreeBSDChina 的 wiki 觉得不错,就用了一阵子 DokuWiki。但我最终的目标还是 MoinMoin,或许是因为看到啄木鸟社区想弄一个那样的 wiki 页面。把里面的东西做好了真的是让人非常惊叹。后来经过几次尝试,我终于在 VPS 上成功跑起了 MoinMoin

使用 MoinMoin 伴随着的是我买了 512M 内存的 VPS,这样我可以放心的在上面跑 Apache 了。过去我用的 Nginx,设置页面转向非常困难,跟 Python 合作运行 MoinMoin 也需要很多第三方的东西,我弄了几次也没有成功。这次用了老牌的 web 服务器 Apache,我终于可以比较容易的设定 页面转向了。因此我的首页,也终于指向了我的 wiki 的用户页面。开始时我还想着怎么让 MoinMoin 生成一个 HTML 文件,后来才琢磨过来,直接用 301 转向不就行了吗。着算是完成了我最开始的目标。

我在刚刚搭建私人 wiki 的时候还幻想着会有人过来跟我一起写作,共同完善一些条目,因此就没有设定权限,结果很快我的页面就充斥了各种 spam,我一气之下就禁止了用户注册和游客写入,这是我在用 MediaWiki 时发生的事情。后来用 MoinMoin 后同样如此,现在在我的修改记录页面还能看到那些 spam 的条目,以及我的删除记录。经过此事,我同样禁止了游客的写入功能,这才清净下来。

在用 MoinMoin 的这一年里,我也遇到了一些问题。比如 MoinMoin 使用 xapian 来索引全文。当然,对于英文来说它很好使,但它不支持中文。因此在 MoinMoin 里基本上没法用 xapian 来搜索中文,我也不知道猴年马月 xapian 会支持中文。

另外就是 MoinMoin 的数据存储问题。它把每个页面用一个目录来保存,放在硬盘上。对于磁盘文件和数据库的优劣网上有很多的讨论,虽然我觉得把数据放在数据库里应该更好一些,但目前 MoinMoin 还不支持数据库。我过去也关注过 MoinMoin 2,但它的进展似乎不快,还不知道什么时候才有完成度比较高的版本出来。

回顾过去一年中的使用情况,我发现我往里面填充了许许多多的东西。不光是编程、网络方面的资料与笔记;我买过的咖啡品牌,我在中国餐馆点过的外卖菜名,我比较喜欢的歌曲名和歌词等等,我都往里面添加。我希望多年后我能有一个包容万象的私人知识库,不知道有多少年可以完成,而我有生之年可以往里面塞多少东西。

用 MoinMoin 做首页

我最早接触的 wiki 系统是 MediaWiki,带我进入 wiki 这扇大门的正是维基百科。我读过一些文章描写过有些人第一次听说一种新技术而激动不已,我当时对 wiki 没有这种感觉。事实上,我那时也不理解 wiki 的作用是什么。为了尝试,我在维基百科上建立了一个 “Gnu 宣言”页面,然后把那篇文章给复制了上去。结果没一会儿,我就发现我建立的页面不见了,然后我的 talk 页面上多了这么一条消息:

欢迎加入Wikipedia大家庭!在动手之前,请先抽出时间阅读Wikipedia:版权信息、Wikipedia:如何编辑页面及Wikipedia:帮助。您也可以到Wikipedia:沙盒中实验一下,有什么问题请到Wikipedia:互助客栈提出,或者直接与我联系。请注意Wikipedia并不收入原始资料。例如“GNU宣言”一文,应当加入介绍GNU宣言的文章,而不是原文。谢谢!–Formulax 2003年8月9日 02:42 (UTC)

这是我第一次的 wiki 的体验。这之后,我陆续在维基百科上进行过数次编辑,渐渐的了解了 wiki 是什么东西。不过,真正让我体会到 wiki 可以用来生成网站的页面是后来的事情了。

当我意识到 wiki 可以用来生成首页时,我已经用一个手写的 HTML 静态页面来做我的首页几年时间了。因为时我随意手写的,因此那个网页非常简单,上面除了我的名字之外,就只有一些我别的网页的链接,比如说 blog、相册等等。之前我还在上面放过我写的论文、我的头像等等,不过靠手动来管理这些东西,实在是太麻烦了,我渐渐的就把它简化成了像这样最最基础的页面了: My homepage until Feb 11, 2012

我过去是通过 ssh 登陆到主机上,用 vim 来编辑 index.html 文件来制作首页。有时候要往上面放中文时而终端不支持中文字符的话,就用 Emacs 远程编辑这个文件。我也考虑过在本地写好了所有的东西后再同步到服务器上,但这些页面保存在本地上,我又不能随时带着电脑,没法做到随地修改,还是太麻烦。正因为没有一种非常方便的编辑页面的方法,所以我的首页都是万年一个样,我都想考虑过要不要把我的 blog 直接放在根目录下呢。直到后来我想到了 wiki 可以帮我完成这一切。

其实,我最早想用到的工具不是 wiki,而是 Movable Type。MT 5 出来之后,我发现它在过去的基础上添加了 website 这个概念。经过尝试,我觉得 website 就是用来放 blog,这其实不就是一个网页么。而 MT 的后台编辑也勉强可以达到我的要求了。把 blog 和首页一起生成,不但让首页的风格跟 blog 统一,而且还可以让首页趁此机会丰富一下内容。可惜到后来我失败了。当我对 MT 5 的了解加深之后,我才发现 website 并不是我要的东西,中间有些东西要配置起来实在是太复杂了。

MT 不行,我之后才选择了 wiki。出于我个人对于简洁的喜好,我选择了相当简单的 wiki 系统——UseMod Wiki。安装它特别容易,我很快用它生成了一个比较不错的页面。但是当我往页面上添加东西时,我发现这个 wiki 系统不让我在页面里添加 HTML 代码,而它本身的格式功能也比较弱,这就让我感觉很不爽。比方说我想在页面上放几个贴纸,人家给出的代码我复制过来就没有用。我找过不少资料想解决这个问题,结果发现原来时出于安全的考虑,它禁止在页面里插入一些 HTML 代码。不仅仅是 UseMod Wiki,我找了一些其它的 wiki 系统,都禁止你这么做。如果一个 wiki 是给一个团队用来统一管理文档的,那么这种安全措施非常必要,但对于一个把 wiki 自己用的用户来说,这样就非常不方便了,尤其是我还希望可以用它来生成我的首页。

在尝试了一些其它的 wiki 之后,我渐渐的开始怀疑我这样做是否正确,是不是也有其它人和我一样用 wiki 来生成自己的首页。当中我早就听说过 MoinMoin,但我一直没有成功的安装。原因是那时我对于 FastCGI、WSGI 之类的没有任何经验,因此对这类程序完全不开窍,所以我那时选择的 wiki 基本上是 PHP 写的或者是 Perl CGI 的。到后来我渐渐的对这一点死心了,觉得或许用 wiki 来做首页有点不太实际,于是在 2010 年 2 月,我在空间上用 MediaWiki 单独搭建了一个 wiki

从那时候开始,我也尝试并转换使用了一些其它 wiki 工具。当然 MediaWiki 用的时间最长,后来我换成了 DokuWiki,然后是 MoinMoin。每换用一个 wiki,我都想过如何用它来管理首页。当中我也做过尝试,比如说把 DokuWiki 放在根目录下,把命名空间的分隔符由默认的冒号换成斜杠,结果页面没法显示了。我还考虑过在根目录下搭建 MoinMoin,然后 blog 之类的其它域名指向它们的子目录。结果这样我的 blog 就没法访问了,链接全被 MoinMoin 给拦截了。要让子目录可以访问,只好在 Apache 的配置文件里给它们添加 Alias,实在是太麻烦了。

不过几天早上我突然想到,MoinMoin 不是有用户页面么?在一个团队中,每个人都有自己的页面非常正常,那么私人的 wiki 呢?个人页面不是和我的首页用途重复了么?既然这样,我就用 Apache 的 rewrite 模块来把根域名转向到我的 MoinMoin 的用户页面上不就行了么?经过尝试,我发现这样做确实可以。我很愉快的在我的个人页面里加上了很多东西,编辑完毕后点一下保存,页面马上就生成了,非常方便。而且完全没有字符编码的问题,因为一切都可以在浏览器中完成,我也可以随地编辑我的页面。要在页面上放插图什么的,也不需要我手动用 FTP 来搞来搞去了,都交给 wiki 来管理,太方便了。

虽然我不知道这样做是不是一个好的主意,但至少现在它满足了我一直以来的愿望,现在看来它完全满足我的要求吧。

Wiki 和 Blog 对我来说本质上不同

我最早用 MediaWiki 在自己的共享空间里搭建了一个 wiki 之后,曾经有过不知所措的感觉。在用之前觉得自己有一个 wiki 来说应该会很方便,但有了 wiki 之后又不晓得改往上放什么东西。

我在考虑了之后,发现在我原先的想象中,wiki 与 blog 的职能有很大一部分是重叠的。因为这两者都是我的思维的一个输出端口,那么当我有了东西要写时,我是把它放在 blog 上呢、还是 wiki 上呢?我在建立 wiki 前已经用了很长时间的 blog 了,那么我为什么还要再建立一个新的输出渠道呢?

在我接触过的 wiki 中,有许多都是多人共同维护的 wiki。这些 wiki 有一个主题,只要有了跟主题有关的内容,都适合往 wiki 上面去放。而对于一个个人的 wiki,这就有点行不通了,因为个人是一个既大又小的主题。往大里说,所有与“我”相关的东西都可以算作个人这个主题的内容;往小里说,个人的事情太琐碎了一些,没有往 wiki 上整理的价值。而 blog 就非常适合这个方面,不管有的没的都是一篇文章,而一个 blog 都跟个人有关,这样的信息整理就显得非常自然了。

所以在一段时间内,我甚至仅是把我的 wiki 当作一个收藏夹来用。在里面建立一个页面,把我想收藏的链接分短期和中期写在页面里。因为经常有一种情况发生:我在浏览器里打开了许多标签页,在我没有把它们都看完的时候,我想关闭浏览器或者把这些页面都放到一个更安全的地方去。直接用收藏夹不是很合适,因为有些不是我想要收藏的,只是想有个临时的容器把它们放一放,而我的 wiki 页面就做了这样一件事。后来我为了挖掘 wiki 更多的用处,我还用它来记过课堂笔记。到后来我渐渐的才开辟了一些如口琴、VPS、Emacs等话题,把日常遇到的一些琐碎的信息放在里面。

直到上个月,我在买了两个新的 512M 的 VPS 之后,发生了一件事让我对 wiki 有了更加清晰的认识。话说在我第一次使用 VPS 之前,我对自己管理一个服务器一直处于一种比较惧怕的状态。后来当我有机会使用 VPS 并自己操作过一次之后,我发现其实 VPS 不是那么的令人恐惧的,于是我的意识里对于我对 VPS 的知识设定变成了“会了”。但当我这次买了新 VPS 之后,我本来以为我可以很容易的把所有的安装、设定都很快独立的完成,结果我发现我错了。服务器这东西就是你做完一遍就不想再触摸的东西,如果你天天配置自己的服务器,那么你基本上就没有在做正事了。所以,在我把 VPS 设定好后,我就没有再摸过这方面的东西,因此这次需要我来配置 VPS 了,我给抓瞎了。所以我只好从往上找别人写的流程,一点一点的按照自己的需求配置。

当我配置好了 KVM 这台 VPS 后,我又买了 XEN 服务器。这次配置的时候,我决定把我的配置过程在我的 wiki 上记录下来,特别是配置文件,那个文件改了那里,这些都是非常琐碎的东西。把它们记录下来,之后再遇到类似的情况,就可以按照我的记录,很快的完成配置。

于是我在安装、配置的同时,也把中间的操作详细的记录了下来。在这个过程中,我多次有过想要放弃的想法,因为太麻烦了——毕竟当你在键盘上操作了一会,还要再在另一个地方把你自己的操作记录下来,这不是一件轻松愉快的事情。不过把所有事情做完之后,我觉得付出是值得的。看我写的流程,之后配置服务器就可以按照这一套来,完全不用担心中间漏掉了什么东西。

在这次经历之后,我渐渐的发觉对我来说,写 blog 和写 wiki 是两种完全不同的体验。写 wiki 有的时候很痛苦,因为我需要把我脑中想的给整理出来。这里的“整理”不仅仅是把思想给转化成文字后书面化,而是要把琐碎的思想给分清条理,中间有几个章节,哪些内容该放到哪个章节里去,这些都是需要考虑的。而写 blog 相对而言就轻松多了,只要把我脑中想好的话敲下来就好了,不需要进行过度的整理。也许有人会把自己的 blog 弄成一个知识库,给自己和别人浏览。我在配置自己的 VPS 时也参考过很多 blog 文章,它们对我很有帮助,但我自己写不出这样的 blog 文章来。虽然我也有这方面的文章,但它们都在 wiki 里,而不在 blog 中。

总体来看,我觉得 blog 对于我来说就是纯粹的输出,而 wiki 对我来说时整理。Blog 的内容时未经整理的,我常常时想到什么就写什么,虽然常常会想如果把文章重新整理一下会更好读,但我实在时没有这个耐心。我现在要找过去 blog 文章里的信息,需要搜索,而 blog 现有的分类体系实在时不适于信息的整理。而且,blog 对我最大的作用时日后可以回顾从前发生的事情于我自己的想法,未经整理的信息输出就已经完全足够了。而 wiki 由于自己的格式的原因,给我了一个整理自己的信息的地方于机会,从而弥补了我的 blog 的不足。所以,笼统来说,blog 承载着我的思想的感性的一面;而 wiki 承载着的则时我的思想的理性的那一面了。

终于开始使用 MoinMoin

今天我终于把自己的 wiki 系统换成了 MoinMoin。

我对 MoinMoin 算是觊觎已久了,我的 blog 上关于 MoinMoin 最早的一篇文章是两年前的《还是建了一个 wiki》,那也是我在自己的网站上搭建 wiki 的开始。本来我用 wiki 是像用它来管理我的网页,因为这样可以在浏览器里用方便的结构化文本来生成页面,而不用我麻烦的手写 HTML,当时我试用了几个 wiki 程序都不符合我的要求。主要原因是 wiki 的内容限制有些死板,我不想把我的首页弄得像一个 wiki,我想让它像一个网页。而那些 wiki 程序都以安全为由把用户可以输入的内容限制的死死的,令我非常不爽。后来我放弃了用 wiki 来管理整个网站的想法,转而建立一个单独的 wiki,于是我在当时用的 Site5 共享空间上用 MediaWiki 搭建了一个 wiki。当时我已经想用 MoinMoin 了,可惜用共享空间来搭建 MoinMoin 太麻烦,我最后放弃了。

到了 2010 年的 10 月,我自己开始试用了 VPS,当时也尝试过安装 MoinMoin,不过失败了。虽然现在看来我觉得安装 MoinMoin 不难,但对我来说有些事情是必须要经历过一次才能理解的,在这之前我没有成功的在远程主机上安装成功过 MoinMoin。

2011 年 7 月 2 日我第一次在自己的 VPS 成功安装了 MoinMoin,用 Nginx + FastCGI 来运行,感觉不错。不过由于中文文件名等原因,我到了第二天就放弃了

今年年初我第一次给自己买了 512M 内存的 VPS,有很大的资源可以让我稍微挥霍一下,不用严格计算内存的用量了。本着学习的想法,我在这个 VPS 上装上了 Apache 服务器。在稍微熟悉了一下 Apache 的配置之后,我尝试着在上面跑 MoinMoin。MoinMoin 的文档上说用 WSGI 来运行 MoinMoin 是推荐的方法,但我就是没办法让 MoinMoin 在 Apache + mod_wsgi 模式下正常运行,于是我的尝试又一次失败了。那时我把 wiki 程序换成了 DokuWiki,用起来感觉很不错,当时我基本上都决定了之后就一直用 DokuWiki 下去了,结果命运弄人,偏偏我这时候瞎猫碰上死耗子一般的成功把 MoinMoin 在 Apache + mod_wsgi 模式下给跑起来了。

我今年初在买 VPS 的时候,因为 Ramhost 的 512M OpenVZ VPS 断货,于是我就买了 KVM 的。后来我又找到了 YardVPS 的更廉价的 512M Xen VPS,于是我最终把我的网站放到了 Xen 上。而 KVM 在这一个月内就被我用作了实验的机器。在把可以安装的操作系统装了个遍后,空余下来的我又尝试了一次安装 MoinMoin。这次我按照这篇文章中的讲解做了一遍,结果就成功了。对比这次和我之前的安装方法,我发现很大一部分原因是我中间少了给 moin.wsgi 文件添加查找路径那一步,还有就是我对 WSGIScriptAlias 要放在什么位置有困惑,这次上我试验了一下就给成了。

我是在实验用的 KVM 主机上安装的 MoinMoin,但要不要用它来替换我正在使用的 DokuWiki,我还拿不准。我稍微的在实验用的主机上用 MoinMoin 添加了几篇文章看了看,发现 MoinMoin 和 DokuWiki 的 wiki 语法在有些方面正好相反,需要转换一下;后台文字界面的编辑器没有乱七八糟的多余功能,其它方面的差距并不是特别明显。相比较而言,DokuWiki 更加方便一些,功能都被配置到了最好,安装上去后几乎不用改什么地方就可以很好的使用,而 MoinMoin 的配置性更高一些,看了一下帮助文档,我也学到了很多东西。

我之后打算把实验用的 MoinMoin 给搬到我的工作主机上来,先放在不同的目录下,同时运行,在转移数据的同时也好做对比。不过这时,发生了一个小意外。

我原本的 DokuWiki 是放在 /public_html/wiki 下面的,为了把 wiki 这个名字让给 MoinMoin,我在 ssh 里执行了 mv wiki doku 命令,之后进去 doku 目录找我过去的页面,发现我原先的页面都不见了。大惊之下我仔细检查,发现我原先在安装 DokuWiki 的时候就在 /public_html/doku 下面安装过一个 DokuWiki 来做实验,确定它运行正常之后才在 wiki 下面重新装了一个新的 DokuWiki。而原先的目录没有删除,结果这次出了问题。

我当时脑子不清晰,觉得这有些出乎我的意料,因为我印象里是如果 mv 命令的目标目录已经存在的话,是会覆盖目标目录的,结果这次却是把原始目录给丢掉了。虽然很不解,但我并没有太过担心,因为网页在 Google 上还有缓存,我可以用搜索出过去被缓存的页面,再从上面把内容转移到新的 wiki 中去,虽然有些私有页面和孤立页面没有被缓存很可惜,但我的损失并不大。这也让我下定决心转移到 MoinMoin 上来——因为 DokuWiki 已经被我给弄丢了。结果当我慢悠悠的转移了一个页面之后,再从 Google 搜索里打开其它的页面缓存的时候,我发现那些缓存竟然失效了。看来是在我编辑那个页面的时候,Google 访问了我的主机,发现原先的页面不存在了,于是就把缓存设定成失效了。我抱着试一试的心情去 web.archive.org 看了下,它根本没有收录我的 wiki,我这时才真的急了。

之后我发现我在换到 DokuWiki 之前用的 MediaWiki 还在,我没有删除它,只是给它变了个域名,而里面还有一些早期版本的文章。这让我心情稍微平复了一点,我毕竟没有失去一切,虽然在这一个月内我往 wiki 里添加了很多内容,这些内容的丢失还是让我心疼的想砸电脑来泄愤。话虽如此,这毕竟是我自己的所作所为,也怨不得别人,我也只好接受现实,默默的把文章从 MediaWiki 往 MoinMoin 上转。结果在转移的途中,我竟然看到了 /public_html/doku/wiki/ 这个目录,进去一看这不就是我之前的 DokuWiki 吗,原来我之前的数据还没有丢。静下心来回想了一下,我在执行 mv 命令的时候,目标目录 doku 已经存在了,结果不就是把原始目录给移动到 doku 下面吗。想到这里,我不禁想抽自己一耳光,惩罚自己犯下了如此低级的错误,白惊慌了一场。

之后就好说了,我把过去的数据下载下来,自己一篇一篇的添加进了 MoinMoin 中。文章不算太多,我手动修改添加也没有费多少功夫。当然,在做这些的同时我也学到了不少东西。比如说过去我以为 MoinMoin 没有最近更改这项功能,结果发现这是需要在 RecentChanges 页面下面添加一个 macro 才能搬到的,虽然我很奇怪为什么 MoinMoin 不直接把这个 macro 加到 RecentChanges 里去,不过这样也是 MoinMoin 定制性高的一种体现,毕竟易用性与定制性算是零和博弈的关系。

从两年前到现在,我的主机上的 wiki 系统终于演化到了我的目标 MoinMoin,让我有了一种两年的长跑结束了的感觉。当然,我对于 MoinMoin 的接触才刚刚开始,我已经发现 MoinMoin 有很多我不了解的地方,看来我在将来又可以学到新东西了。

换了一个 wiki 引擎

今天我把我一直用着的 MediaWiki 换成了 DokuWiki。

其实想换 wiki 引擎的想法由来已久,过去综合考虑之后,我选择了 MediaWiki,其实它对我的要求还有一些无法满足的地方。而且 MediaWiki 是为了 Wikipedia 设计的,对于我这种个人用户来说,在某一方面有些过于强大了,反而在另一些我需要的方面没有达到要求,而且并不是目前没有达到要求,而是人家的设计思想就拒绝了我的要求。这方面的例子有页面隐私这一项。对于个人 wiki 来说,有些页面我不想让别人看到,这是再正常不过的事情了。但 MediaWiki 的设计思想就是开放,因此这一项功能开发者永远也不回实现,并且明确的在它们的页面上说了,如果你想用这种功能,你应该换一个 CMS 系统。

不过,MediaWiki 总体来说还是一个非常不错的 wiki 引擎,我用了两年的时间里,它比较好的服务了我。虽然中间有一些比如 spam、access key 之类的麻烦的设置,但我也算是忍下来了。当然说忍是有点过分了,不过我在期间有好几次想要把它换掉。除了上面说的页面隐私问题外,还有原因就是它有些太厚重了。我在期间也尝试了一下 UseMod wiki 之类的“老前辈”,它们与 MediaWiki 在体积上比简直是蚂蚁和大象的区别。虽然说一直没有更换成功,但我脑子里隐隐有种想法,就是 MediaWiki 可能并不适合我。

我想更换的首要目标就是 MoinMoin。最吸引我的 MoinMoin 网站就要属啄木鸟社区了。我主要是特别喜欢那个站点的页面风格,尤其是 Zoom.Quiet 搞的那一套。虽然说页面看上去很混乱,但仔细读起来却能发现信息都被比较好的组织起来了。当然因为啄木鸟社区运行了数年,里面信息实在是太多的缘故,所以看上去还是乱,这时就要用搜索了。总之 ,对于 wiki 这种东西,这种大杂烩的页面风格一直很吸引我。

不过 MoinMoin 的规模也不小,啄木鸟社区的文档也不是一个个人 wiki 可以比的。因此如果用 MoinMoin 来搭建一个个人 wiki 来说,其实还是有些过大了。我自己的 wiki 文档还没有积攒到啄木鸟社区的那种程度,因此注定了我无法把自己的 wiki 弄成啄木鸟社区的那种风格。更重要的是,我这次更换 VPS 之后配置 Apache + MoinMoin 失败了 ;)。过去我用过 Nginx 来跑 MoinMoin 成功了,但这次因为对 Apache 不熟悉,因此到最后也没有运行起来。可气的是,因为 VPS 的资源限制,现在越来越多的人都放弃了 Apache 转用 Nginx 和 Lighttpd 等轻量的 web server 了,结果让我很难搜到在 Apache 上配置 MoinMoin 的中文资料,反而有不少 Nginx 上的。拜托,我就是为了用 Apache 才换 512M 内存的 VPS 的啊……

另外一个吸引我眼球的 wiki 是 FreeBSDChina 的 wiki。我前几天写回顾 FreeBSD 的文章时,我又上了 FreeBSDChina 的论坛上找了一些我的旧帖子,后来不知不觉的旧顺到了《设置你自己的 FVWM2》这个页面。吸引我过去的是 FVWM 的内容,因为我在用 Linux 的时候就爱用 FVWM,因此也想看一看别人是怎么用的。不过当我来到这个页面之后,我反而被这种页面的风格给吸引住了,因为实在是太有条理了。而看看这个 wiki 的首页,让我觉得一股清新扑面而来,同时文档的组织也非常的雅观。研究了一下这个 wiki 引擎的本身 DokuWiki,我发现它没有 MediaWiki 和 MoinMoin 那么复杂,用 PHP 写成,安装配置非常方便;它是使用文件而非数据库存储数据,虽然这一点我不是很喜欢,但另一方面也让迁移站点变得容易了——只要把整个目录打包就可以了。另外,它虽然简单,但是却有 MediaWiki 所没有的功能,其中就包括了我最想要的对单独页面的 ACL 访问控制。于是我就在另一个目录里安装了一个 DokuWiki 尝试。

这是上个星期的事情了。今天正好有空,我就仔细研究了一下 DokuWiki 的资料,发现原来这套软件不仅可以做 wiki 引擎来用,还可以用它来写 blog。比如说这个 blog 就是用 DokuWiki 来做的,非常漂亮,功能也很齐全。这个 blog 里也有一些关于 DokuWiki 的文章,对我也有了很大的帮助。

MediaWiki 有一个我不喜欢的地方就是没有一个统一的设定界面。很多选项,比如限制用户对页面的改动权限的功能,都只能自己编辑 LocalSettings.php 文件来设定。而别看 DokuWiki 规模小,但它有一个统一的设定页面,让人可以非常方便的设定关于这个系统的所有选项,更加清晰了。

我觉得也许 MediaWiki 这样的软件设计的格局都特别的大,因此当你新安装了一个 MediaWiki 的时候,这个 wiki 系统虽然可以完成很多工作,但在一些细节方面总显得粗糙,比方说 MediaWiki 那个编辑器,实在是让我很头疼。相比较起来,DokuWiki 在这方面做的就特别精细,这个编辑器,至少用起来已经像是一个代码编辑器了。这之间的差别就好像你用记事本和 Vim 来写代码一样。我觉得这和两个 Wiki 之间的设计目标不一样。总之,我觉得 DokuWiki 比 MediaWiki 要更加适合我一些。

我不知道有没有把 MediaWiki 转换成 DokuWiki 的工具,好在我过去的 wiki 的内容并不算多,因此我是手动完成了转换的工作,中间用了一些编辑器的查找和替换功能。虽然麻烦一点,但好在大部分的工作已经完成了。

我依旧有用一套 CMS 软件来管理我的整个网站的想法,毕竟手写 HTML 太干了,我的首页也好久没有变动了。今天试了 DokuWiki 后,我也考虑要不要用它连我的首页也一块给管了,不过我一不想用两套相同的软件管理首页和 wiki,二不想把所有的 wiki 内容都放到一个命名空间下,因此还是暂时作罢。

DokuWiki 有一点不好的国际化问题。当我把界面的语言切换成中文后,编辑器里就不再是等宽字体了,这非常难看。我简单的找了一下,也没有找到地区语言下编辑器的样式设定在什么地方,只好留待以后再解决了。现在我还是用着英文界面,其实没有什么不便的地方。