又一次安装 blosxom

自从搬家之后,我的主域名下的首页一直都是空白的。之前是什么都没有,进去后直接显式目录,现在是加上了一个链接,指向我的 blog。之所以一直没有放首页,是因为我想找一种“完美”的方案,来自动管理这些页面。

最早的时候,我的首页是用 HTML 手写的。这样有优点也有缺点。优点是方便,不需要额外的工具,要加什么内容,直接 ssh 登录到服务器上修改文件就行了。缺点是不方便,虽然看上去与优点正好矛盾,但却是事实。时间长了之后,我也厌倦了手写重复的 HTML,所以很长时间我的首页上只有一个“首页”,基本上没有其它分页面。而且基本上也不更新,因为更新的话就要 ssh 登录,而且普遍的虚拟主机都对非英文字符支持的不好,修改页面当中的中文的时候,一不小心就会把页面弄乱。所以我很早之前就想改变这种维护的方式了。

之前我对 blog 做出了一个不小的改变──把 blog 子域名改成了 blog 子目录。原因是我当时看了 Movable Type 5 的说明之后,觉得既然有了 Website 概念,就可以用 Movable Type 来生成首页了。虽然目前的版本也可以做到,但毕竟把首页也当成一个 blog 感觉很不自然。而我尝试了几次,都无法让 MT 来正确的往子域名中发布网页,因此就一咬牙把子域名换成了子目录。结果改过来之后,却发现即使是到了正式版,MT 还是无法正确的发布我目前这个 blog 的导出数据,所以我也一直是没有升级。我本来以为是 MT5 对中文的支持问题,结果发现网上的一些中文用户都升级了,再自习排查发现错误出在 Markdown 上,我对比了 MT4 中的 Markdown 插件,也没找到什么不同,因此也无法修改,这让我很郁闷。

不过从想到用 MT 来管理我的首页时,我就觉得用 CMS 来发布首页应该是个好主意。除了 MT 之外,我首先想到的是 wiki。我于是在根目录下用 UseMod Wiki 搭建了一个 wiki,用英文在上面也写过一些东西,感觉还不错。除了系统本身简单方便外,可以在浏览器中直接编辑也很好。但毕竟它是一个 wiki,因此有 wiki 的规则。Wiki 本身的目的是多人合作写作,因此系统的安全性就非常重要了。所以基本上所有的 wiki 系统都禁止在页面中直接放入 HTML 代码。虽然这一点排除了有人插入不良脚本的可能性,但这对我想用作生成首页的人来说就非常不方便了。首先我的首页只有我自己能编辑,因此没有安全性的问题,更重要的是,我无法在里面添加 HTML 代码了。所以一些标签、Google Analytics 的统计代码、以及 OpenID 的代码我都无法添加进去了,前两点不行也就罢了,最后一点不能办到就非常恼人了。我几乎所有的用 OpenID 注册的网站,用的都是我自己的域名,一旦无法添加 OpenID 的代码,我的这些帐户就都无法登录了。所以,我从了解到这一点之后,就决定将来搬家之后一定要用一种新的方法。

今天在网上看到了有人又在讨论 Ramhost 的问题,我于是就去了 Ramhost 的管理员的网页上去看了看。从他的页面中,我看到了他曾经的项目有 ram-cms,而且 Ramhost 的页面也是用 ram-cms 生成的。我一看觉得不错,于是就上去试了试。现在我忘了当时是因为什么原因删除了的,虽然它总体上不错,但我还是想起了过去用过的 blosxom 来。

说道 blosxom,我顿时又想起了我过去几次安装 blosxom 的经验。第一次在国内的时候听说过了这个程序,觉得挺有意思,就从自己当时的虚拟主机上安装。那时候我的相关知识都很不充足,cgi 程序是怎么运作的我都不了解,于是很正常的就失败了。那一次的失败耗光了我当时的耐心,于是就回去用 WordPress 了。第二次的尝试印象里是在 2008 年底一次期末考试结束,我当时走出考场后突然感觉悟到了一些东西,于是就走到机房里实践,结果当时不知不觉中就成功了。我当时也不会调整 .htaccess 之类的设定,所以生成的路径也是 cgi-bin/blosxom.cgi?xxx 的一大串。后来我还是放弃了,因为觉得设定起来很麻烦,默认也没有留言之类的东西。

这次我想起 blosxom 后,觉得可以试试看用它来生成首页。于是下载了之后,顺水行舟的就装上了。我去年暑假里学了 Distributed Computing 课,里面用 Perl 写了很多 cgi 程序,因此对于这些都比较了解了。也没有死按照文档说的去设定,直接把 blosxom.cgi 改名成 index.cgi 放进根目录下,并在上层目录里建立几个目录放数据文件就可以了。其实配合 Emacs 的远程编辑,我感觉如果作为 blog 程序还是很方便的。它的 flavour 的设定也不难。生成的路径格式我没有改,不过有了之前的经验,设定起来应该不难。

不过最后我还是把它放弃了,因为我觉得很难把 blosxom 当作一个 CMS,它还是更偏向于 blog 系统的功能(虽然它默认上还缺很多部分)。我需要的是一个能够生成页面的 CMS,而不是一个 blog。像一些如日期、文章页面之类的东西,我还是不需要的。虽然通过修改了 flavour,我可以把这些给抹去,但毕竟用作生成页面还是不方便。

其实我现在觉得还是 wiki 更方便,如果它能够插入 HTML 就完美了。我找过很多 wiki 系统,基本上都有这方面的限制。我还想过自己结合 Markdown 写 cgi 程序,每次改动后发布也好,用 crontab 来定期执行也好,不过最后觉得这个程序不是一朝一夕能够完成的,我的 Perl 也荒废了很久了,像一些文件处理之类的地方,我都忘得差不多了。

自从 Movable Type 5 的测试版本释放出来之后,我自己安装过好几次了。从很早开始我就发现当我导入我之前写过的文章之后,重新生成站点时会出现错误。几乎每个版本放出来后,我都会尝试一次,但每次都是同样的问题,我之前也写过好几次了。去年 12 月中旬我和 MT5 的开发者 Beau Smith 交流过这个问题,到最后也不了了之。

几天前 MT5 的正式版也出来了,我测试了一下,问题依旧存在。看到一些人已经把站点升级了,我也有点着急,可惜着急也没用,开发者自己都找不出问题来,何况是用户?

不过,昨天晚上我在后台查看相关的设置的时候,看到了调试这个选项。以前我知道这个功能,但一直没有用过。昨天灵机一动,想不知道打开 debug mode 后会不会有更多的提示呢?于是我按照文档上的说明,启动了调试模式,再发布站点,果然告诉了我更多的信息:

Wide character in subroutine entry at /home/dogsayne/public_html/cgi-bin/MT-5.01-en/plugins/Markdown/Markdown.pl line 286.

很明显的看出来,问题是发生在 Markdown 身上。这让我不禁有些无语,我从还在用 WordPress 的时候就开始用 Markdown 了,我觉得 Markdown 在格式和输入速度上达到了一个比较好的平衡,因此我一直都是在用 Markdown 来写每一篇文章的。这时候告诉我 Markdown 不行,我要怎么样来重新调整每一篇文章啊?

我对 Markdown 的程序本身没有什么研究,因此到了 286 行看了看之后,也毫无头绪。而且 Markdown.pl 已经算是一个老程序了,作者很久没有更新了,所以按理说也不应该出现这个问题才对。我试着从 Markdown 的官方网站上下载了这个程序,替换到 MT 里面,结果生成的时候 MT 直接告诉我程序的 hash 值和原先的不符,好像意思是不允许我自己改动程序的组成部分。

在我目前使用的 MT 4.32 版本中,我用的 Markdown 还是正常的,因此我把两个 Markdown.pl 文件用 diff 来比对,结果新版本只是多了use bytes; 这么一行,理论上说来这应该不会是问题才对。

目前来说,遇到这个情况,在还没有解决方法的时候,我觉得应该可以升级,保留之前生成的文件也算是一种取巧的方法,毕竟 MT 不同于 WP。但这样一来就无法重新生成整站了,只属于无奈之举。

MT 的文章管理功能应该还是比较薄弱的,比如说我不能统一把所有文章的格式都从目前的设定改动到其它设定。当然在日常生活中这样做是无意义的,但我现在没有这项功能,就无法确定是不是到底是 Markdown 的问题,这让我一直很头疼。

制作了一个新的样式

lf-year2010-style.png之前我有提到过,我对网页设计方面没有什么研究,尤其是在美工方面是没有什么天赋的。

对于计算机的学习与了解,从小我一路上来,我身边的朋友,如果不是接触编程这方面的话,基本上就是制作网页了。那个时候买个盗版的 Microsoft Office 里面就有 FrontPage 软件,可以像制作 Word 文档那样子制作网页。而用到 DreamWeaver 已经是比较厉害的了。我只打开过 FrontPage 这个软件,而 DreamWeaver 需要单独买,那个时候也没有网络可以下载软件,所以我就从来没有打开过 DreamWeaver。现在不知道是因为我很少看面向大众的电脑报之类的东西的原因,我反而很少听到有人提起这两个软件了,也不知道它们都发展的怎么样。我在 Site5 上的空间上是有 FrontPage 扩展的,不过我不知道有什么具体的作用;而 Adobe 公司到现在还在买 DreamWeaver 也是事实。我觉得现在之所以人们都不大讨论这两个网页制作工具,应该跟目前比较红火的 blog 制做工具有关。几年前(大概有 10 年了吧)人们流行制作网页,其实那些人想要的只是一个 blog,这是我能想到的解释了。

我个人,至少是到目前位置,还是对于当年我没有沉醉于制作网页这件事上感觉比较庆幸的。我没有什么手工美术天分,从小对于需要自己动手画画的美术课就比较头疼,同样体现在我对电子的网页上的美学要求就没有什么具体的想法。我看到一个网页可以说出来我觉得它漂亮不漂亮,但让我凭空想出一个漂亮的网页,对我来说很难。而做一个 blog 的样式,基本上就属于这种类似的工作。我对于设计这方面也比较懒惰,我更喜欢有现成的东西可以套用,就像 TeX 那样子,标准的一些样式就已经非常漂亮了,基本不用自己设计宏包。

而偏偏事情不如意,Movable Type 平台上的主题还是太少了。先不说是否美观了,就是基本的主题数量就没有多少。我估计和 WordPress 的走红有很大的关系。我在刚开始用 WP 的时候,从来没有感觉到模板不够用,那时候发愁的是不知道选哪个好。我当时找到了一个 1024-px 的模板,自己略微改动了一下细节,用得就比较舒心了。而在 MT 领域就基本上是另外一个样子了,一个初级用户可以选择的也不过是系统自己提供的那几个。更夸张的是,MT 4 的默认字体显式中文实在是太恶心了,我其实觉得显式英文也没有非常好看。我估计是 6A 有一大部分股份是日本的缘故,所以很多默认的模板里面的字体设定都有很多是日文字体。这些模板显式中文,有的字竟然会比其它汉字窄(最明显的就是“关”子了),而且经常也一篇粗一片细的,非常不美观。

当然,MT 也有好看的模板,但是数量实在是太少了。比如 MT4 的 Mid-Century 和 MT5 的 Pico 都是相当不错的模板。Pico 走的是简洁风,Mid-Century 走的是“简约不简单”风,基本上很抓我的眼球。最基本的是,他们显式的中文都非常的漂亮。其实目前的网页环境下,中文已经比较漂亮了,但可惜 MT 的默认模板中有很多的 font-family 的设定都不利于中文的显示,所以过去很长一段时间中我都搞不定字体的设定,后来自己从头开始自己从零开始写样式,这样才算解决了这个字体的难题。

设计模板另一点对我不利的地方是,我没有系统的学过 CSS。今天我在外面的时候想了一下,总结出我目前和我小时候学习方法的不同。小时候也许是因为我看的所有计算机的资料都是课外的,所以我就特别的有兴趣。基本上所有的计算机书籍,我都是一字不落的从前言开始看。所有的东西就像是看故事一样,从头看到尾,这是我现在觉得“系统学习”的方法。而现在则有不同,由于时间的原因,我现在看的资料就非常的功利了,需要什么技术,就看相应技术的资料,现学现卖。所以我现在对于 CSS 的掌握是非常浅薄的,使用起来也没有什么信心,基本上是修改了一下 CSS 文件,然后就刷新一下浏览器看看有没有生效。

其实我觉得这种学习方法不是正确的学习方法。别人我不了解,我自己就是这样。举例来说,我现在感觉我真正对 Python 语言有了感觉是在我强迫自己安下心来从头看了一遍 Dive Into Python 之后。那个时候我已经不能像过去看 Learning Perl 一样可以静心的从头到尾的看一本技术书了,所以要强迫自己才能完成。而我在学习 Ruby 语言的时候就没有这么多时间了,所以学起来就很浅的看了看。再加上那时候 Ruby on Rails 已经流行起来了,所以学习 Ruby 的时候就有很大一部分心情是为了用 Rails 才学的。中间我们学校的面向对象这门课又用 Ruby 作为交作业用的三种语言之一,我又学了一下基本的语法。但我现在总结起来,我对 Ruby 还是没有什么感觉。目前写程序,我喜欢用的还是 Python。Perl 长时间不用,有些东西忘记了,Ruby 还需要查手册才能写下程序。

正因为没有系统的学过 CSS,我过去对于 CSS 的使用基本上就是现学现卖的水平。自己的网页需要一种功能,就去 Google 上查,找到 CSS 之后就放进自己的文件中去。或者就是看到别人的页面挺漂亮的,就去看他们的 CSS 是怎么写的,自己在吸收一些不错的东西到自己的网页中去。这种方式弄一些基础的东西还是够了,但要做一些高级的事情就不行,原因其实是对于那些复制的代码还是一知半解,比如说 idclass 的区别、什么时候用点开头什么时候用井号开头什么时候什么也不用之类的。

我在今年暑假的时候第一次自己做了一个模板,当时的目的是因为默认的页面实在是太丑了。字体已经说过了,简直是惨不忍睹,而页面配色本身也很难看,header 的血红色的背景色,加上小小的字体,给人一种头重脚轻的感觉,字符的颜色也淡,看上去很吃力。而系统提供的其它模板,基本上没有好看的。唯独有一个 Unstyled 模板还挺有意思的,就是把所有的 CSS 设定都清空,可以总结成只有 reset 功能的 CSS 模板,再加上侧边栏的感觉。我一看这个模板还不错,至少字体是正常了,于是我就在这个模板的基础上加上了一些其它的设定,以及从我之前照的照片中剪裁出来的 header 和 footer 背景,当时用的还不错。后来我受一些台湾的 MT 用户的影响,觉得把 blog 做成大杂烩的样子也不错,于是就在之后用了 cityscape-sf 模板,一直到大概一个星期之前,我才用了 Mid-Century 模板。

Mid-Century 模板算是一种对 MT 的显式系统本身的比较大的改动。也就是说它不能像普通模板一样把目录复制到 mt-static/themes 目录下面就行,而是要用 plugin 的形式,从 Templates 页面里把整个的模板组给换了。这样做了之后,widgets 这些东西就不归系统管了,而是要 Mid-Century 自己来管理,所以 Widgets 页面就失效了。现在说起来,我感觉它就像 WordPress 的 K2 模板一样。我过去对于这种模板是略微有点排斥的,主要是怕它把 blog 弄坏了,无法恢复,我的 blog 当然也是要以稳定为主的。后来我因为快要换主机了,早晚也要迁移 blog,于是就下定决心在旧的主机上尝试了一下,果然非常漂亮,但我能改动的也就不多了。在更换了主机之后,我还是没有使用 Mid-Century 模板,同样是之前的考虑,我觉得如果能不动那些基础的东西就不动。

其实从设计上来说,MT 的风格设计还是合理的。基本上一个标准风格的模板,就是在 mt-static/themes-base/blog.css 的基础上做一些设定。而这个 CSS 文件的作用,基本上就是网上的那种 reset 作用的 CSS,经过它之后,之前的一切设定都没有了,留下的只是边栏。有了它之后,在加上一些字体、链接风格之类的东西,页面就比较美观了。我的上一个模板和我今天做的这个新模板都是基于上面的这个 reset 文件的。我这次其实也是从过去的基础上,参考了冯大辉阮一峰的 blog 的 CSS,加上了一些自己喜欢的设定。我的 CSS 文件还是非常简单,我测试了没有太明显的效果的,我统统的没有加上。

其实做来做去,我现在也是非常羡慕可以做出漂亮网页的人了。昨天我研究了一晚上的 VPS,看到了 iStef 制作的卖 VPS 的网页,佩服的不得了。那个网页使用的是 MT 5rc3,做出来的相当漂亮,有水准。

我目前做出来的东西主要就是我目前的 blog 的这种样子,没有什么特别的修饰,能不加的就不加。这次的改动主要有链接的修饰、字体默认换成了 Georgia 因为它的数字显式很有感觉,标题的字体字号之类的。其它的连 header 和 footer 的图片背景都没有加,倒不是因为载入速度的考虑,主要是因为我不知道上面弄上么好,我自己又没有合适的素材,目前的这种纯白的效果感觉上已经不错了。为了方便日后使用,我还是把它打了包,上传在这里。使用的时候把它解包后,放进 mt-static/themes/ 目录下就好了,然后从后台的 Styles 页面选中他就可以了。

不负责任的 MT 安装文档

six-apart-logo.jpg换了虚拟空间之后,我昨天晚上重新安装了 Movable Type 4 Pro。

现在的我对于安装一个 MT 自然觉得没什么的,但我在第一次安装时也是走了一些弯路的。从那次之后,我知道了 MT 有自动帮忙设定文件的 mt-wizard.cgi,用它在浏览器里选择填写一些参数后就可以装好一个 MT。安装文件也没有必要把一些目录复制出来什么的,全都放在一个总的文件夹里面也可以运行。

后来在翻阅 MT 的文档的时候,我看到了一些用 ssh 的安装的方法。而且这次用了 Site5 的主机,我感觉我过去在 Dreamhost 上弄的那些东西都是不安全的。在那里 cgi-bin/ 就是一个普通的目录,从浏览器里面直接就可以访问。除了这个主要的 blog 之外,我还安装过一些其它版本的 MT,为了不干扰这个主要的 blog,我都是用的 SQLite3 数据库的。MT 的 SQLite3 数据库的默认路径是 ./db/mt.db,而这些竟然通通都是可读的。也就是说,外人完全可以下载到这个数据库文件,然后解析出我的密码来。而在 Site5 的空间上,cgi-bin/ 默认的权限就是无法读取的,所以更加安全一些。除了这个,在 MT 的安装文档上,也教了我通过软链接来保存多个办本的 MT 的用法。所以这次安装 MT,我就尝试使用了比较“正统”的方法。

而我说 6A 不负责任,是他们的文档实在是维护的太差了。作为一个软件,文档的第一步就是要教给人们安装。而在 MT 4 的安装文档上面竟然写着:“这是 MT 5 的安装文档,如果你用的是 MT 4 或者 MT 3,可以参考这篇文档,因为安装过程很相似”。但 MT 5 和 MT 4 的安装过程当然是有不同的!过去还好,我只是参考的这篇文档,但这次我要安装这个主 blog,自然要看得仔细一点了。但当中有个 themes/ 目录,我怎么也无法从文档的指定目录上找到,反而在上一级目录上能看到它。为此我下载了 MT 5rc3,果然找到了文档上的路径。原来这个路径是 MT 5 才有的。像这种东西,如何能让用户理解呢?

如果 MT 5 已经发布了,是 MT 的主要版本,这也就算了。可在 MT 5 正式版两次跳票之后,目前在日本之外,MT 的正式版本还是 MT 4。而 6A 匆匆忙忙的就把文档给换上去了,让人觉得比较莽撞了。而且,新的文档上去了,旧的文档能不能有个 archive 呢?

如果这事情只发生在 movabletype.org 上,也还算了。但我在找不到 MT 4 的安装文档之后,觉得 MT Pro 作为商业的版本,应该文档都比较正式,于是就去 movabletype.com 上去找了一找。结果发现 MT Pro 的安装文档直接指向的是 MTOS 的安装文档,也就是我之前看到的那一份。虽然 MT 的商业版本有针对个人用户的免费版,但 MT 的开源版本与商业版本面向毕竟不同。开源版的使用者可以钻研,所以给一份不完美的文档、甚至不给文档都可以,但商业版的文档竟也是这个样子,让我觉得 6A 是不是有点儿戏呢?

如果 6A 是一群爱好者组成的软件小组,这事也就罢了,但作为一家商业公司,6A 对待文档的态度,我觉得是不可以的。

我对 MT 和 6A 是很尊重的。虽然我不是像王建硕那样的早期用户,足以在 7 年多的时间里对 MT 不离不弃,但也是先用了 WordPress 再用到 MT 的。对于个人的 blog 工具来说,是否静态的影响并不是特别大,但对于后台的执行速度,MT 给我的冲击力实在是不小。虽然在换了新主机之后,这种速度的问题解决了,但我仍然对 MT 抱有谨慎的态度。

更新虚拟主机

25 日中午一点多钟,我刚下床,看到 leeseon 从 Google Talk 上告诉我他已经买了 Site5 的虚拟主机了。我当时心想好日子终于来临了,就什么都不顾的去答复 leeseon 了,很快就在后台看到了 leeseon 已经为我添加了这个域名,因此我要做的就是更新这个域名的 DNS 解析了。

我在 24 日写完了上一篇文章之后,便迫不及待的开始备份在 Dreamhost 虚拟主机下资料了。虽然 leeseon 说 DH 主机明年二月份才到期,但在年终加上圣诞节的缘故,Site5 有折扣活动,因此他告诉我会在年底之前把主机买下来。到了 24 日,我觉得离年终应该没几天了,于是就备份资料,所以连 blog 也不再更新了。当时觉得这样做挺合适,但没想到更新 DNS 的速度实在是慢,所以我直到现在才写了新一篇的文章。

当我把资料备份好了之后,我就立刻上了 GoDaddy 的后台,修改了这个域名的 DNS 地址。我在测试 Site5 的主机的时候,用的是另外一个备用的域名,结果凌晨更新的设置,到了中午去了学校之后就生效了。所以说我觉得这次更新设定应该也不会慢才对。不过我那天从下午一直盼到晚上,当中不停的刷新,但看到的总是我的就的网页的地址。我中间又到过 GoDaddy 的后台里检查了一遍又一遍的设定,生怕是我输入错误,但总也找不出错来。我还试着把 DNS 弄到默认再弄回来,还是没有用。

当中有一阵子似乎是生效了,我的首页上显式的是淡淡的墨绿色背景的 cPanel 的 Apache 服务器设置成功的消息。偏偏这个时候我发现我无法从 Site5 的后台进入到设定了,也就是我的域名信息不见了,所以说我也不确定这个 cPanel 的消息是来自那个主机。当时 leeseon 不在线上,我也没法问,不过之前从来没有遇到过这个消息,所以我估计是 DNS 已经生效了。而且有人在 Twitter 上给我我的 blog 进不去了,我也估计是 DNS 生效的原因。但郁闷的是我进入 blog/ 目录下之后,却依然看到的是我的 blog。到后来连首页也回去了过去的首页的样子,似乎 DNS 的更新又完全失效了。而我通过 DNS 工具查看我的域名,DNS 明明已经是 Site5 的了啊。没办法,所以我只有继续等待了。

到了今天,leeseon 在网上回复了我,并帮我重新设定了站点,于是后台的域名设定则又出来了。到了晚些时候,我终于发现域名打开后有变成了 cPanel 的消息。我在用测试帐号的时候,添加了域名并等 DNS 设定更新完毕之后,从浏览器里访问直接就是 public_html/ 里面的目录列表,可不是这个 cPanel 的提示信息。我通过 ssh 查看目录,也发现在 public_html/ 目录里面有些隐藏文件,于是我就打开两个帐号的后台一一比对。后来我看到正式的帐号里面的 FrontPage 扩展这个功能打开了,而在测试帐号里面这个功能是关闭着的。我看了介绍,这个功能似乎和微软的 FrontPage 这个软件有关,我又不用它,于是就把这个功能给关上了。果然关上之后 public_html/ 目录里面的一些隐藏文件就没有了,但浏览器里显式的还是 cPanel 的消息,无论我有没有在目录里面放上 index.html

没办法,我只好仔细看看上面怎么说的。结果上面说如果这不是你预期的结果,就应该联系管理员。于是我就去找了 Site5 的客服。和上次一样,在线聊天的客服帮我创立了一个 ticket,然后我就等回复。回复说我的虚拟主机上的 DNS 设定有问题,帮我改过来之后,说是这个设定要 90 分钟才能生效,他们到时候会通知我。我于是觉得 Site5 的客服确实态度很不错,我接触过的虚拟主机公司的客服除了 Site5 外,就只有 iWeb 了,虽然没有什么发言权,但作为普通用户来说,这种服务算是很周到了。到了 90 分钟后,设定还没有生效,但对方已经发了邮件过来他们会继续观察。而又过了一会,他们给我发邮件说现在问题应该已经解决了,我看了一下果然已经可以显式我上传的测试网页了。Site5 客服还有一个比较贴心的内容就是交流的记录都可以保存下来。除了聊天记录在服务结束之后可以选择发送到邮箱外,我今天才发现在后台的 Support 标签下会记录你每一次通过 ticket 和客服交流的过程,这一点我过去从来没有遇到过。

这一点弄好之后,其它就基本上没有问题了。我于是就把 DH 主机上打的包放进公开的域名目录下,然后从 Site5 的 ssh 里面直接通过 wget 下载过来。我怀疑这两个公司用的机房是不是很近啊,我这种下载的最后平均速度竟然达到了 9 Mb/s。而我下载 6A 公司主机上的 Movable Type 的速度才只有 600 Kb/s。不过顾不上兴奋,我就想先把 blog 弄起来再说,因为测试时使用 MT 的速度实在是让我太爽了。

我用了 SSH 的方法安装了 MT 之后,就 import 了之前 export 下来的文本文件。一开始我用的是 restore 的,结果提示有错误发生。其实正确的做法是使用 backup/restore,这样在后台上传的图片之类的信息(不止是图片文件)都会备份下来。而我过去不知道应该这样,就一直 export/import,但这样转移的就仅仅是文章。过去已经这样弄了几次,很多附件的信息早就丢了,所以我也不在意这次是用的什么方法了。重新生成站点后,把过去的 uploads 目录和 asserts_c/ 目录都复制到新的域名下,站点看上去就正常了。MT 就是这点好,静态化的结果,无论后台是怎么样,生成的结果都是完美的。

等我把这一切搞定之后,我去了 phpMyAdmin 看一看 MySQL 数据库的效果如何。其实也就是瞎看看,基本上看不出什么道道来。但这次我却悲剧的发现,数据库的字符集设定竟然是 latin1!!!天杀的 Site5,我在用测试帐号的时候检查过 phpMyAdmin 的启示页面,那时的字符集明明就是 utf8 的,怎么这会一下子成了 latin1。我在 2007 年用 WordPress 的时候遇到过这么一遭,到后来一直没有遇到过这种问题,这下子一下出现我也有些措手不及。我试着从 Operation 里面直接修改数据库的字符集设定,然后数据库这边的内容变成了乱码,MT 后台的文章也全部变成了乱码。天杀的。

我没有仔细考虑解决方案,而是平感觉找了条最简单却未必简捷的方法,就是重新生成数据库。我 Drop 了所有的表,重新运行 mt.cgi 程序,然后重新进行各种设定。结果导入完毕之后,后台竟然直接就成了乱码。奶奶的,实在不行就删除了这个数据库,重新建立,然后马上修更改字符集的设定,然后再安装。结果还是一样。我觉得我可能要修改了全局的变量才行吧,但我似乎又没有这个权限,只好有时间找 leeseon 或客服帮忙了。

不过,我倒懒得再弄 phpMyAdmin 了。MySQL 不行,我就直接用 SQLite3。我在测试 MT5 的时候经常用它来做数据引擎,一点也不耽误正常的数据库服务器,是我的最爱,我日常写数据库相关的程序也用它。其实我觉得个人 blog 上用 SQLite3 和 MT 应该也算是绝配了,只是不明白为什么 MT5 要放弃它。不过我看 MT5rc3(目前日文版之外的最新 Release Candidate 版本)的 mt-wizard 里面的数据库设置的下拉菜单选项中,还能看到 SQLite3 的名字,希望 6A 能够回心转意吧。其实我这次首先选择 MySQL 就是因为 MT5 会把 MySQL 当作主要支持的引擎,因此才放弃 SQLite3。不过 6A 已经有转换方案,而且目前的 MT5 版本对我来说都有个致命的 bug,我也许会在刚发布一段时间之内无法使用这个版本,所以我这次用 SQLite3 也没有什么顾虑。

结果上传了现有的文章之后,得到一个 4.3Mb 的 SQLite3 数据库文件,我目前的 400 多篇文章的数量来说,数据库这方面我感觉不到会影响使用的速度。不过我目前也仍然在测试当中。

但至此,使用新服务器的幸福日子应该开始了吧。昨天和 leeseon 聊天的时候,他说 Site5 可能是他在换到 VPS 之前最后使用的虚拟主机了吧。我目前对 Site5 的虚拟主机感觉还不错,但我的心里还有一个 media temple。网上对它的评价是虚拟主机的终点站,也就是一旦用了它之后,在虚拟主机方面就不会考虑别家的了。不过它的价格比较高端,最基础的 plan 是 20 美元一个月,所以很多人都是一起合租的它的虚拟主机。不过我测试过那些用 mt 的人的网站,感觉速度上也一般,自己从心里比较一下,除了操纵的体验之外,想不出 mt 比 Site5 强很多的地方。也许某一天自己有钱了,会弄个 mt 的空间来满足一下这个“夙愿”吧。 :)

鸡冻

site5-logo.png昨天早上,之前给我提供主机空间leeseon 在 Google Talk 上跟我说,他的 Dreamhost 快要到期了,他打算搬家到 Site5 的主机上,问我要不要一起合租。

我看了一下 Site5 的主机配置,感觉还不错。最主要的几点是有 SSH,PHP、MySQL、Perl、Python、Ruby 的版本也比较新,还预装 Rails。我最近主要在学 Django,预装 Rails 的话说明装 Django 应该也没什么问题。两人合租的价钱(hostPro 计划)也还可以接受,于是就答应了。当时最担心的还是 Movable Type 的问题。MT 在发布的时候会需要比较高的资源,整站生成的时候更是如此,我看过不少用 MT 的前辈,比如 Fenng,就抱怨过几次 MT 占用资源导致的 500 错误的问题。到时候搬过去了却无法生成 blog 网页就苦了。于是我马上就问 leeseon 主机的 CPU 资源有没有什么限制,对方也没有考虑过这个问题,但他从 Site5 的网页上找到了限制条款。我扫了一下,就是对 “Utilize in excess of 15 seconds of CPU time.” 这一条比较担心,是不是意思是一个进程如果运行超过 15 秒就有问题呢?后来想可能不是这样理解的,因为 httpd 之类的进程肯定会运行时间更长。所以我心里是挺担心的。好在 Site5 有 60 天退款的策略,我就跟 leeseon 说买来后先试试,不行的话就退掉。

然后 leeseon 告诉我说 Site5 有免费试用 30 天的 COUPON,我就赶紧注册了一个试试。开通网站是比较慢速的,我有一个备用域名,添加进了 Site5 的帐号中后一直说让我等待。由于 Site5 的页面上没有提示我,所以我过了一会才想到需要更改域名的 DNS 才对。Dreamhost 上添加域名后可马上会说的清清楚楚的。而且我还不知道 Site5 的 DNS 是什么,最后是从它们的 Wiki 上找到的,这也让我比较吃惊。我在 GoDaddy 那边修改 DNS 也挺慢的,修该完之后我一直刷新,一直是显式我过去在 Dreamhost 上的内容。

到了昨天晚上,我又刷新了一次,发现已经显式新的内容了。我在 Site5 的后台也可以操纵了。首先就是打开 SSH 访问,然后我还花了一阵子功夫来找我的密码和用户名。总之进去了之后,发现我的提示符竟然是 #,不知道是不是意味着我是 root 帐户。不过我没有多想,只是来回看来看去。我首先输入的是 “dja”,然后按 tab 键,果然出现了 “django-admin.py”,主机是预装了 Django 的,不错。我接着运行了 “django-admin.py --version” 查看版本,告知我是最新的 1.1.1 版本,心头不由一阵窃喜。然后就顺便看看其它工具的版本,gcc 是 4.1.2 的,挺新的,我在 Dreamhost 上才是 3.3.5 版本;Rails 是 2.3.5 的;Python 默认是 2.4.3 的,但也有 2.6 和 3.0 的版本的,都挺不错的,在 Dreamhost 上只有 2.4 的。运行 uname 得到内核版本是 2.6.27,是 x86_64 版本的。没有写是什么发行版本,但 gcc 给出版本的时候返回的是 “gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)”,所以我估计应该是 RadHat 吧。

看了一会之后,想到我的主要任务是测试 MT 的发布有没有问题,于是我就下载了 4.32 版本。下载之后我突然想测试一下访问的速度怎么样,就把这个 5.6M 的 MT 文件放到了 http 目录中,在浏览器里下载,看到速度慢慢的升到了 500K/s 多,也挺不错的。解开包之后,我按照 MT 的说明就装上了。装上 MT 后我第一个感觉就是“快”!在后台的设定什么的,都非常流畅,简直不是现在可以相比的。但是 MT 说找不到 ImageMagick 包,因此没法让我上传头像之类的。但我在 SSH 中确实看到了有 convert 之类的命令。我搜索了一下 Site5 的论坛,有人遇到过类似情况,但没有人给出解答。Site5 官方支持的 blog 程序列表里面没有 MT,所以我估计没有做相应的配置。不过我暂时估计问题不是很大,就先放一放,能否生成整个站点才是重点。

于是我从这边直接导出整站的文章,然后从那边导入。我的导出文章的文件有 1.8MB 大小,我从那边开始导入后,就看着 Chrome 左下角指示的上传进度。然后到 100% 之后几乎是一眨眼的功夫,就告诉我导入完毕了。我当时就有点震惊,这是真的假的啊?要知道我在 Dreamhost 上测试的时候,导入同样大小的文件至少要花费 5 分钟左右。该不会是导入出错吧?不过我在后台确实看到了有 400 多篇文章。然后我没怎么做其它设定,直接就点了 Publish 按钮,然后就在 SSH 中运行 top 命令,看看 mt.cgi 执行的情况。

其实我获得的信息不太多,只是看到 mt.cgi 的 %cpu 那一栏是 96.x 以上,因此挺担心的,会不会被系统给 kill 掉。我确实看到过几次有 mt.cgi 跑到列表的下面了,出现了一个新的什么程序,但一会 mt.cgi 有上去了。不过看 MT 的发布框的进度条就比较有意思了,基本上是呼呼的往前跑,我在 Dreamhost 发布的时候都几乎看不到进度条在动,特别是当发布单篇的时候。而我看了一会,就告诉我已经发布完毕了。我看了一下报告上说的时间,只有一分多钟而已!我目前的 blog 有 400 多篇,在 Dreamhost 上发布一次需要 45 分钟另几秒的时间!我看到这个结果,几乎马上就疯掉了,当时惊讶的都喊出声音来了。

然后我还测试了其它的地方,比如说在这里,用户能发现最慢的地方就是 tag 了。我在这个 blog 上用了 AnySql 的缓存,因此当第二次点击同一个 tag 时,会直接把缓存中的页面展示出来,缓存的有效期是 24 小时,但当没有这个 tag 的缓存或者缓存已经过期了时,速度就会特别的慢。而我在测试的 blog 上面做了个实验,单击一个 tag 后,几乎马上就出现了页面。搜索也是一样,留言的速度也不是这里可以比的。我目前的测试网址在这里,读者愿意的话,可以和我目前的 blog 比较一下速度,可以有很明显的感觉。

所以我在试用了 Site5 的虚拟主机之后,我才明白了一件事情:6A 之所以把 MT4 的速度弄成这样,其实不一定是故意的,而是在他们的主机那里,MT 跑的确实很快。我们买不起好的主机,用的都是 Dreamhost 这种廉价主机,所以才会有“MT 太慢了”这种想法。相同的,MT 目前已经不是一个最主流的 blog 系统了,它对主机的要求也较高,所以用 WordPress 会得到更好的速度,Site5 也官方支持 WordPress,这一点倒不是我非常想见到的。

不过,我也有点怀疑,有点卑鄙的想──可能 Site5 为了宣传,所以把这些免费的 30 天试用帐号都放在比较空余的主机上,这样速度就快了,而正式使用后速度就下来了。不过我是希望我想多了吧。

总之,在试用过 Site5 上面跑 MT 之后,我就像吃了美味大餐一样,就不想再回来嚼蜡了。我是希望可以尽快转移到 Site5 那边去,并且(有可能的话)就再也不用 Dreamhost 的虚拟主机了。

修整一下内链

这个月初我发现我的 blog 有很多的坏链的问题。最主要的原因是我更换 blog 程序后导致链接的变动,还有 WordPress 和 Movable Type 的 Trackback 格式的差异也是个问题。文章本身的 URL 倒也罢了,我通过在 404 页面上加上了说明文字,勉强算解决了这个问题。但文章内的链接错误,就很让人讨厌了。我当时是通过 Google Webmasters Tools 发现这个问题的,当时也没有办法把它们一下子都找出来,更别提统一修改了。于是当时的策略是发现一个就改一个,一段时间后总会有所改观。

今天在网上搜索 Site5 的资料的时候,看到了有人说他的 blog 用 Xenu 来消除坏链,我当时想,Xenu 是不是也适用于我的情况呢?于是我就去了 Xenu 的网站,找到了这款软件。软件是 for Windows 的,不过也不怕,像这种小型的工具类软件,用 wine 模拟就可以了。我没有单独安装 wine,其实是直接从 WinApps 系列里面直接调用命令而已(WinApps 已收费,我是在收费前下载的)。进行一遍安装程序之后,就可以使用了。运行的结果如图:

xenu-screenshot.png

除了窗口本身的提示外,Xenu 还问我关于我的服务器的 ftp 之类的问题。我填写了我的情况,可是没见到有什么效果。过了一会,它从我的浏览器里弹出了报告,我从报告里找到一我的 blog 的地址开头的链接,进去把相应的地方修改过来就行了,重复的 Trackback 也顺便清扫了一下。

这样一番下来,blog 内部的坏链应该少了很多,但其实我也怀疑并没有全部都解决,不过已经比之前好很多了。

如果我们的网页是 PDF

在整个做网页的技术中,我唯一不在行的就是 CSS 了。严格来讲其它技术也不怎么在行,而我对于 CSS 则有种“畏惧”的心理,很长时间不敢动它。过去我同样有这种感觉的是 javascript,后来在今年暑假的学期中有一门课需要我们自己写 javascript 来做 AJAX 页面,那一阵子 firebug 和 Safari 的内建调试工具同时出动,虽然痛苦,也让我对 javascript 不那么恐惧了。而 CSS 则不然,我从头到尾一直都没有学过,因此虽然 CSS 不是一门很难的技术,我却一直感到恐惧。

今年初把 blog 程序转换到 Movable Type 中后,发觉所有的默认模板显式中文都很难看,用 Unstyled 这个没有任何 CSS 的模板后中文反倒更好看。之前用的 Wordpress 的模板的 CSS 就写的不错,所以我一直都没考虑过这个问题。同样是今年暑假的某一天,我实在忍不了默认的恶心的字体设定,痛下决心,埋头研究了 Eric Raymond 的网页和蔡智浩的 Taiwan 2.0 部落格的 CSS 文件,把字体部分的设定挪到自己的 CSS 文件中来。当时为了弄明白 CSS 中每一部分对于页面的影响,我尝试了许多次,最终终于成功,整个 blog 顿时感觉清爽了许多。不过我对 CSS 的了解只限于那一部分,之后就再也没有动它。

这次我的 blog 更换地址后,我手动更新了新 blog 的 CSS,虽然学到了一些新的东西,但仍然感觉相当痛苦。而且做出的更改还是只限于正文,文章的标题的字体依旧还是很难看,很多字明显粗细不一,而且有一些特殊的字,比如“关”,看上去就明显比正常的字窄。有一部分我怀疑是 Mac 下的字体的原因,估计在 Windows 下可能会好一点,不过我没有查证。我试过几次,发现无论怎么改都还是那样,最终放弃。

这几天我还看了两篇讲述 CSS 字体设定的很好的文章。第一篇看到的是《再谈 Web 默认字体》。这篇文章开始时我匆匆浏览了一下,觉得非常不错,这天就一直在我的浏览器里开着。今天自习看了一下文章的留言,又找到了这一篇《默认Web字体样式》,看下来感觉更有帮助。他们页面的字体也很美观,不是我这个 MT4 站点可以比的。其实我觉得 Wordpress 的很多模板的默认字体就已经很不错了,自己改改的意义也不是很大。可对于 MT4 站点来说,模板的字体就需要作者改动许多了,这两篇文章的意义也就大的多了。在 MT5 中的 Pico 风格对这一点有了很大的改善,但其它的一些之前就有的模板就还是有这个问题。

我这个学期的《密码学》这门课的笔记,我主要是用 ConTeXt 来记录的。其实不论是那个 TeX 分支,其基本的排版方式是相同的。也就是说,排出来的结果都是统一的。TeX 有个最大的特色,就是美观,生成的 PDF 的整个页面,无论中文还是英文,都显得落落大方。更厉害的是,做好了基础的配置后,这些几乎都是自动完成的,不用用户操心。所以我就想,因为网页的发布与普通的页面出版相当类似,所以如果我们的网页都是一个个 PDF 格式的页面,会不会让网页更美观呢?

结合这一观点,也和 Macintosh 系统有一定的关系。在 Mac 中,PDF 是基础的页面渲染格式之一,内嵌与系统之中。如果在 Safari 中点进去了一个指向 PDF 文件的链接,直接从 Safari 中就可以把文件显式出来。因为 PDF 是内建在系统之中的,所以显式的速度非常快。而且在 Mac 的基础打印功能中,它的预览功能其实就是把页面转换成 PDF,再从 Preview 里面显式的,生成的 PDF 文件还可以保存,这说明,PDF 文件格式已经被苹果接受作为其其本的页面渲染格式之一了。而现在的 PDF 文件中都可以内嵌链接、也支持 Form,所以就有了 HTML 的最基本的功能。更大的好处是,PDF 文件有点把整个文章当作画一样“画”出来,而描述这幅“画”的语言是通用的,这样在不同平台上就不用担心兼容问题了。坏处就是浏览的用户不能设定自己的格式,弹性方面打了折扣。

有一个网站基本就是这样子做的,就是 ConTeXt 的老家 ── PRAGMA-ADE。看看这个文件,它是一个所有示例的索引,从里面可以直接点击跳到不同的页面。我之前浏览这个网页的时候,也纳闷为什么好多说明文档他不用 HTML 来写,非要生成 PDF 的格式?但后来也觉得想通了:PRAGMA-ADE 就是一家推广排版的公司,自然要支持 PDF。

当然,PDF 文件做网页的缺陷也是很明显的。最主要的是文件的体积远大于普通的 HTML 文件,不利于网页传输。光是这一点就让近期实现变得不可能。将来网络更发达的时候,难保不会出现更先进的技术。所以,这一点也仅仅是我自己的幻想。不过说道 MT 的发布,其实与 TeX 文件的编译应该是有异曲同工之妙的。在后台写 TeX 格式的文件,让 MT 再编译成美观的网页,其实就是 MT 发布在做的事情,只是生成的结果不同罢了。

通用留言用语

这是我的blog在几天前收到的一则留言,可能很多人也收到过类似的:

I am really impressed with the overall subject matter of your blog. It is obvious that you know you subject matter and you are passionate about it. If only I had your publishing ability I hope to find similar articles in the near future. Good luck.

虽然是则spam,不过感觉句子用的挺有意思的。说的是不太华丽的表扬的话,让人揪不出痛脚,然后在用户的链接那里放上推广页面的链接。这样的留言如果放在一个英文网站上应该是挺有迷惑性的。可惜我这个blog是中文的,一眼就看出不对劲来了,再仔细一看就知道底细了。

虽然删除了这则留言,不过鉴于对于英文的使用有一定的教育意义,特写此文留念。

头疼的内链

我在把blog的程序由Wordpress换到Movable Type后,有一个问题就是链接。我过去的文章是以目录的形式表示的,用了Movable Type后结尾则成了html。理论上文章的链接是不应该变动的,否则会导致指向这篇文章的网页的废链。不过我觉得html结尾更顺眼一些,于是就还是用了Movable Type的链接形式。

当时我着手解决废链的问题,本来的打算是在.htaccess文件中写一些转向规则,自动把链接替换的。后来弄了半天也没有让它正常实现,最后我放弃了。因为我的文章,在网上“广泛流传”的也就那么两篇,链接变更不会有太大的影响。而且我写了一个比较友好的404页面,告诉读者发生了什么事情,怎么样把旧的链接修改成新的,这样影响就比较小了。我在Google Webmasters Tools上看到有一些页面未找到错误,因此也没有在意。

今天早上在Google Webmasters Tools后台观察最近变更域名之后网页被索引的情况,发现了几个抓取错误的报告。我觉得可能还是页面域名改动的原因,但点进去一看,有的链接竟然是从我自己的blog上发出来的?

开始时我非常奇怪,后来却想起来了,我的blog上确实存在一些坏链。

我的blog的域名是在中间开始改的。在改动之前我已经写了很多文章了,而在那些文章里面我也有一些引用自己文章的情况。那些链接存在与许许多多的文章里面,很难找出来统一修改。我想过是不是要先把所有文章导出,然后用查找替换来把URL的后缀一下子全改过来,不过想了一会还是发现没有比较简单的方法做到。

最后我决定,还是慢慢来吧。我先把今天看到的错误修改过来,然后每次看到有错误的时候就花一点时间改正过来。反正时间多的是,满满的总会全部改回来的。

大折腾

我在之前说到我想改变网站的目录结构,主要原因是想用MT来把普通网页一并管理了。之前我手工写网页,但太麻烦了,尤其是想建立多个页面的时候。而且一些统计代码什么的也不方便添加。用MT可以有统一的模板,而且还可以用Markdown,正是我需要的效果。我目前来用UseMod Wiki来管理普通页面,但基于安全性的考虑,wiki系统普遍都不支持纯HTML,这样我的页面的表达能力就大打折扣,javascript代码、标签什么的都不能加,所以我觉得我终究要回到CMS系统上来。尤其是MT5会添加一个website概念,所有的blog都是在website下面的,这基本上就是我的需求了。

后来我发现问题不是那么简单的。因为我在开始建立blog的时候,把目录建立在了子域名下了。而主域名似乎和子域名是不相通的。我在MT后台里试了几次,都无法指定把一个blog的文章发布到一个子域名下。我试验过MT4和MT5系统,都无法这样子做。

后来我在另外一个域名下做实验,找到了一个解决方法。就是把子域名在虚拟主机上的目录设定在主域名下面。例如,我在Dreamhost上的用户路径是cnliufeng/,这个主域名指向的目录是cnliufeng/cnliufeng/。过去的blog子域名的目录是cnliufeng/blog/,现在改为指向cnliufeng/cnliufeng/blog/。我在另外一个域名上试过后觉得可以,今天就在这个域名下做了同样的改动。

虽然域名变过来了,但整个blog的链接系统还是老样子。于是我导出了旧的blog,用emacs的查找替换把里面所有的http://blog.cnliufeng.com/给替换成http://www.cnliufeng.com/blog/,然后在主域名下新安装了一个MT4,再导入,然后重新发布一下整个blog就成了。这样一来,老的子域名并没有被删除,通过老的域名来访问原来的网页,但再次在页面里面点击内部链接,就都变成了新的域名了。

当然,这样做损失也很大。但由于我只是给过去的域名换了一个位置,所以就的链接都可以正常访问。但现在应该每个页面会有两个地址。我觉得用301重定向应该可以解决问题,而且可以把原先的PR给转过来,不过还没有研究htaccess文件的写法。新blog我没有使用过去自己做的风格,而是使用了系统自带的Cityspace SF风格,结果中文字体又成了老样子。之所以使用这个风格是因为我想尝试一下三栏的主题。我看一些人的blog,弄的虽然有些“拥挤”,不过仔细看起来感觉也不错。当初通过carol的部落格知道的憂郁馬戲團用的就是这个主题,我看了后挺喜欢,于是现在就用了。我现在MT知识多了一些,因此直接从后台修改css文件,覆盖默认设定,也比较方便。目前页面的中文字体基本上正常了,唯一有问题的就是文章的标题,还是有大小不一的情况发生。后台的字体我还没来得及改,因此现在我写这篇文章的感觉相当难受。好在之前有记录,照着再改回去应该就可以了。

过去我一直用的是开源版本的MT,但试用MT5的时候看到默认的下载就是MT5 Pro。因此我这次装新系统,下载的也是MT4 Pro。目前除了一些细节上不一样外,还没有发现有什么不同。我到现在还是不能正常使用MT5,而今天MT的网页上有新文章说在日本MT5已经正式发行了,而我这里的MT5还是有宽字符错误,真让人吃惊。MT5在欧美将于12月8日发布,现在RC3都还是有问题,我有点怀疑在正式发行之后宽字符错误会依旧存在,我能正式使用MT5还是要等待一阵子。

除了字体设定之外,之前我一直没有对MT进行一些底层的改动。今天趁着新设定一个系统,正好又看到了《通过Cache提升MT基于Tag搜索的速度》这篇文章。我过去看过这篇文章,不过因为tag的速度还勉强可以忍受,而且也不确定会不会给系统带来影响,所以一直没有尝试。今天看了一下需要进行的步骤,下载文件后把相应的文件放在相应的地方就可以了,所以就试了一下。弄好之后,测试了一下,果然有效。tag的缓存时间为一天,也恰到好处。

目前的feed地址依然有效,不过我现在觉得遇到整个系统变动的话feed地址的问题还真是麻烦,早知道当初别停用feedburner就好了。MT的默认feed地址是http://www.cnliufeng.com/blog/atom.xml,我估计将来要整治这一块。如果页面也用MT生成的话,搞个合烧还是不错的。只是这个可能要等到用了MT5之后再说了。

MT5 Release Candidate 1

今天中午的时候看MT官网上在11月6日发布了一篇新文章,说是MT5发布了RC1版本。本来我是没什么兴趣的,但看到介绍说有了新的Theme──Pico,从截图上看也挺好看,于是就从另外一个域名上安装一下试试。

MT从3版本开始的安装程序就已经非常不错了,因此安装起来没有任何困难。但仍然是数据库的问题在困扰我:如果选择使用sqlite来做数据库,默认的数据库路径是Site Root/MT/db/mt.db,但默认情况下,MT目录下面并没有db目录。可如果没有db目录,安装程序在检测数据库的时候就会报错,因此必须手工创建db目录。我觉得程序应该可以做的更智能一点(或者说“不那么愚蠢”),解决这个不算是问题的问题应该不难。我印象里MT3没有这个问题,MT4就有了,现在MT5到了RC1版本还是有这个瑕疵。

MT5自从Alpha版本发布后,我就测试过,但因为不是正式版,因此我一直没有仔细研究。现在感觉我对MT真是搞不懂,website和page、blog的关系越来越复杂了。也许是我的观念没转过来的原因,总之安装好之后让我很困惑。

安装完毕后,我直接建立了一个blog,没想到pico这个新theme不是我想象的那样是之后选择,而是在创建的时候就要决定。我本来是以为pico就是一个普通的theme,可以随时替换的那样,结果实际上似乎比我想的更大。总之选定了之后,发布一看,效果确实不错。我导入了这个blog的导出内容,虽然等了大约5分多中,但最后没有什么问题。导入结束后我查看了一下mt.db文件的大小,3.7M,还可以。看来我的blog目前的规模,用sqlite应该是可以承受的。试着发布了一下,等了又5分多钟,竟然报错了:

mt5-publish-failure.png

我印象里我在尝试上一个版本的时候也发生过这种问题。我一直不清楚是什么原因,也没有去查,只是“祈祷”在MT5正式发布后会有所改善。

我比较喜欢简洁的观感,因此这次的新的pico主题让我比较喜欢,这是首页最上面的截图:

mt5-pico-style-up.png

这是首页最下面的截图:

mt5-pico-style-bottom.png

虽然简单,但别有风味,我觉得也是一个不错的选择。而且汉字的显式也很舒服,而不是像MT4的默认设定,让你看着就觉得别扭。在后台的Style设定下,Pico主题有自己的分栏,里面有深蓝、深灰、棕褐以及白色四种选择。我估计通过修改css文件,应该可以手动设定更多的风格:

mt5-style-pico.png

安装后我一直挺纳闷,为什么主页上什么内容都没有呢?我用的是Classic的页面风格,就是那个枣红色的。我试着创建新page,但也没搞清楚page的设定关系。结果我创建了一个在打开页面后默认显式的page,想当然的把它的名称定义为index.html,结果页面还是空空如也,只是在右边栏上多了一个index.html的链接。点了之后依旧没有反应,我估计是和默认的页面文件名相冲突的原因。于是我在后台删除了我刚建立的index.html这个页面,结果竟然把本来的index.html也给删掉了,直接导致根目录下没有了index.html文件,直接把赤裸裸的目录结构给展示出来了。

我在重新生成了整个website后,发现了一个更让我困惑的地方──website居然就是我的blog在Classic风格下面的展示:

mt5-website.png

既然website和blog的内容一模一样,只是风格换了,那么website的意义何在呢?当然这也可能是我没有写任何page的缘故。不过website还没有pico风格,如何让website和blog的风格统一,也是一个问题。同样的,希望在正式版中会有所改进。

最后我还是没有搞定子域名的问题。这个问题来源于我想用MT来管理我的整个网站包括首页和blog。我目前首页的网址是http://www.cnliufeng.com/,MT5在新建blog的时候可以设定blog的URL地址,并且有“建立在子域名下”的选项。可当我选定了这个选项后,blog的网址就变成了“XXX.www.cnliufeng.com/”,而XXX就是我要填写的。即使这样设定了之后,子域名还是工作不正常,因此我只是把blog建立在了子目录下面,但我在子域名下写了将近三年blog,就这样切换URL肯定会导致链接问题。而且我也开始怀疑子域名的问题必须在服务器那边进行设置,通过MT来设定是没有办法的。

虽然我目前用UseMod Wiki来做首页感觉还不错,但有一个最关键的问题一直在困扰我──就是wiki不能插入纯HTML代码。目前情况下我在页面里插入HTML代码后都不能正常解析,而是直接把HTML代码输出出来。这样的问题就是我无法在wiki上放badge、也无法在页脚放置Google Analytics的javascript代码。所以我对用MT管理首页还是抱有希望的,同时我也在继续探索其它的wiki中。

PS:目前Six Apart似乎把更多的重点放在了blog之外的交流上。比如今天我在官方网页上看到了上面对于Motion的通告:

typepad-motion.png

我之前讨论过motion,其实就是一个类似Twitter的让人们发布短小信息的社区工具,当然它对信息的格式更宽容一些,但毕竟没有一个很好的交互模式,让我感觉目前与主流社区(Twitter、Plurk)格格不入,所以还是有待观望。不过从上面那个宣传条上,居然看到了Zachary Quinto的名字,去了他的网页一看,果然很漂亮、很绚丽,不过对于个人用户来说,现在并没有看出什么实际用途。

第一次遇到Internal Server Error

刚才在写上一篇文章的时候,中间需要插入一张图片。为了保证访问,我现在比较少把图片上传到flickr上再链接到文章中,而是直接上传到了服务器上。

在点了MT后台的上传图片按钮之后,这次弹出的不是上传选项,而是一个“Internal Server Error”的提示。之前我从网上看过其他一些用MT的人说过这个问题,是因为服务器的资源限制。现在Dreamhost不限制CPU时间了,出现这个问题让我挺奇怪。

我最担心的是,之前写的那些文字还没有保存。虽然现在MT有定时保存的功能,但能够保存多少,我还不知道。试着按了一下esc键,竟然成功的退回来了。我马上把全文复制了一下。

我又试了几次,每次都是出现这种错误,包括我把草稿保存了后,重新进了一次后台,也是这个样子。没办法,我用ssh登录上了服务器,用top看了一下正在运行的程序,发现除了bash和top外,其它的进程都是mt-tb.cgi。我不知道正常情况下是什么样子,但我推测有十几个mt-tb.cgi进程在运行,应该是有十几个服务器在进行trackback。要么就是我在trackback一个没有相应的服务器。总之大概不是正常的情况。我试着用killall来杀死了那些进程,在点上传图片按钮,于是就正常了。

我检查了一下后台的错误记录,发现和mt-cb.cgi相关的信息是这样子的:

Premature end of script headers: mt-tb.cgi

还没有查过究竟是什么问题,但确实是长了一点经验。

另外,我今天第一次登录后台的时候,很长时间都没有成功,最后收到提示是说无法正确连接到MySQL服务器。我现在觉得MySQL是把数据不知道以什么形式放在服务器上,虽然可能效率高一些,但相比起看得见的文件来说,还是文件更放心一些,备份起来也方便。MT支持sqlite数据库,我一直有把数据库从MySQL换到sqlite的想法,但又没找到一些相关的案例,对执行效率有点担心,也没有什么时间。等过一阵子再看看吧。

为什么你应该用真实身份留言

自从我的blog有了一些人访问后,我经常会遇到这样一种情况:有人留言,却不愿意填写真实的用户信息。一般名字就随便起或者用代号;邮箱就胡乱写一个,明显就是不可能存在的域名。当然这种情况下的留言,多半不是什么好话,基本上都是与文章作者持反面观点的,或者直接骂文章作者本人的。

我觉得这种情况,能避免就尽量避免。blog不同于论坛,而是blog作者个人思想输出的地方,与正文相比,评论基本上占据的分量较轻,最多也不过是从正文的讨论上延伸,而不应该是像论坛一样“楼主”抛出一个事实或观点,然后两方互相争执。因此相对来说,blog是比论坛更加正式的地方。你在论坛上可以随便起网名,但在blog上却最好用真实的身份。

蔡智浩在2006年写过两篇相关文章《為什麼你應該用真實姓名寫部落格》和《你還是應該用真實姓名寫部落格》,意思分别是说blog是个人的身份之一,用真是姓名写blog会帮助你在网络上建立个人口碑;和用真实姓名写blog会让你自我审视自己的公开言论,为自己的言论负责。这两篇文章我深以为然,自己也一直身体力行。当然我没有像蔡智浩那样直接用自己的汉字姓名,而是用拼音来代替。一来输入方便,二来我自己也没有习惯自己的中文姓名出现在各地。留言也是一样,我在各个blog上的留言,都是用liufeng来做用户名。我也觉得大家,如果要在blog留言,应当尽量使用真实身份。

当然,我说“真实身份”不是代表“真实姓名”。我知道现在很多人都不习惯用真实姓名来留言,用一个代号来代表自己,会让自己感觉更加安心一些。我说的“真是身份”的意思是,你可以用代号来表示自己,但请尽量维持这一个身份,哪怕它不是完全真实的。有不少人是这样做的,很多知名的blogger,我们都是先知道他们的代号,然后才知道真实姓名的,比如flypig、Herock等。

为什么建议人们用真实身份来留言呢?我觉得蔡智浩说的话非常好:

部落格上的自由度,並不包括言論免責權。保護自己最好的作法,就是使用真實姓名寫部落格,讓自己有百分之百的現實感。如果你覺得某些言論不適合用真實姓名公開發表,那麼它們也不適合匿名(或用筆名)發表。

使用真實姓名發表言論,能夠提醒自己磨鍊表達能力,學習如何表達才不會給自己惹來麻煩。如果之前長期匿名,轉換為真實姓名一開始或許覺得綁手綁腳。但只要練習的時間夠長,你就會找到新的自由度。你會發現你還是可以評論無限多的主題,但不再有那種「萬一別人知道是我寫的怎麼辦」的恐懼。

互联网的发展,我觉得离不开人们在网络上生活,而在网络上的言论是它的根基之一。而目前中国的网络还过于娱乐化,人们在上面享乐,而不是生活。这也是造就人们不愿用真是身份留言的原因之一。人都有奇怪的心理:不会有人知道我们做了什么时,我们可能会做一些在正常情况下不会做的坏事。所以我们的老祖宗才会留下“君子慎其独也”的警句。在blog上留言也是一样,当你用了一个假的身份来留言时,你会觉得别人不会知道是谁做的,而肆无忌惮。但这种感觉从网络技术上来说是虚假的,在现在的网络上,人不大可能完全隐藏自己的身份。另外,为了在blog上留言骂人而使用虚假身份,也是没有任何意义的。

有时候,人们用虚假身份留言,是害怕自己说错了话,让别人笑话。我觉得这也是不必要的。现在网络经过了这么长时间的发展,人们也不把网络看得太重了。彼得·施泰纳过去说过“在互联网上,没人知道你是一条狗”,后来我感觉网络发展为“互联网上,没有人不知道你是一条狗”。现在我觉得应该这样说:“互联网上,没有人管你是不是一条狗”。网络逐渐融入生活,生活节奏逐渐加快,网络上的这些小事,我们会看得越来越淡了。

装了MT 2.661

我是从今年四月份正式开始使用Movable Type来作为我的blog的程序的,之前一直都是WordPress。我第一次接触MT是在2007年9月份时,在另一个域名下用MT搭建过一个英文blog,但当时是把自己定位在一个完全的菜鸟上来做的,模板、中文字体(所以才是英文blog)什么的都没动,单纯是在上面用英文写日记练英文写作而已,现在那个域名早就没了。而从那时候起我下载到的MT就是4.x的版本了,刚才看了一下过去的记录,似乎没有记录附版本号,因此我也不清楚具体是哪个小版本。

由于入门的晚,我没有赶上MT4之前的版本。而我经常能在一些MT老用户的blog上看到对过去版本的怀念,比如杨康怀念MT3;Jedi也有一堆理由还在用MT2;还有就是飞猪,他的blog也一直是MT3,而不是MT4。因此我一直想体验一把MT4之前的版本,看看到底有什么好处,让那些人一直拒绝升级到一个免费的新版本。

但MT的公司Six Apart早就不提供旧版本下载了,我在网上找过很久,也没有找到过去的版本。但今年六月,一个偶然的机会让我下到了MT3.37,装上之后,确实感觉不错,有被怀念的道理,于是写了一篇文章《终于知道了为什么人们怀念MT3了》。其实,要不是我对新技术的信任,MT4也没有慢到我忍不了的地步,我说不定就把blog换到MT3上了。

在那篇文章后面,herock留言说他真正怀念的是MT2.6。本来我有考虑过给一些MT老用户发邮件,看看能不能给我寄一份旧的存档。后来觉得不好意思为了满足自己的好奇心就打扰人家,于是就作罢。这次看到有老用户留言,于是就赶紧给herock发邮件询问,结果他也没有旧程序的存档了。看到他找了Web Archive,又找了Rapidshare,真是过意不去,因此更加打消了我给别人发邮件的想法。

我前几天从网上找到了Jedi的blog,他是MTBook的撰写者。有一段时间他的域名无法访问,让我担心是不是他停止维护了,现在看来可能只是技术故障而已。不过同时,他的MTBook.net网站也能访问了,这可是不可多得的好资料。突然想起Jedi是坚持使用MT2的,他又写了MT2的教材,那么他的网站上应该有MT2的存档吧?

抱着试试看的想法,我去mtbook上的檔案下載页面上看,结果果然发现了!不仅有UNIX下用的原始压缩文件,也有给Windows服务器定制的版本。可惜他把Windows定制的版本放在了前面,而我看到了后发现居然能下载,就激动的看不到别的东西了,因此错过了我应该下载的原始UNIX版,结果走了弯路。

我在Mac上下载了exe自解压问文件,心想好不容易有这个机会,一定要弄到手。exe不能运行没关系,我用wine运行,一样解压了文件。当时没有什么时间,因此草草看了一下得到的文件夹,发现基本上是Windows上运行的东西,比如Perl什么的。于是放到后来研究。结果昨天在每个子文件夹下浏览一番,在diff目录下看到了MT-2.661-full-lib.tar文件。赶紧解压看看,果然是MT2.661的原始安装文件!

当时兴冲冲的上传到了Dreamhost服务器上,心想有了MT4和MT3的安装经验,MT2应该很容易弄上。结果进入了mt文件夹后,竟然给了一些文档。当时没有沉下心来,匆匆扫了一眼文档,知道要运行mt-load.cgi程序,也不管三七二十一,直接运行。被提示说没有db目录,就在shell下创建了一个,刷新,接着运行,得到了这些信息:

Loading initial data into system... Loading database schema...

Loading weblog...
Loading author...
Loading permissions...
Loading templates...
Mapping templates to blog archive types...
    Mapping template ID '12' to 'Daily'
    Mapping template ID '12' to 'Weekly'
    Mapping template ID '12' to 'Monthly'
    Mapping template ID '13' to 'Category'
    Mapping template ID '14' to 'Individual'

Done loading initial data! All went well.

VERY IMPORTANT NOTE:

Now that you have run mt-load.cgi, you will never need to run it again. You should now delete mt-load.cgi from your webserver.

FAILURE TO DELETE mt-load.cgi INTRODUCES A MAJOR SECURITY RISK.

当时我还处于高度兴奋状态,没有仔细看说了什么,只是大意是要删除mt-load.cgi文件,不能让别人运行第二遍,还有就是自动删除失败了。当时看到“失败”一字,觉得有不好的感觉,于是就到处看看,后来运行mt.cgi得到了登录界面。这时候才想起没有设定管理员信息,用户名、密码什么的都不知道,简直是睁眼瞎。我根据之前安装MT4和MT3的经验,觉得可能使运行mt-load.cgi这一步出了问题──按理说管理员用户名和密码应该在安装的时候设定的啊。后来试着再来了几次,也没发现问题。

今天中午觉得要不再试一次看看。结果出来文档后,我沉下心来读了一下,惊讶的发现原来MT2.661是有初始用户名和密码的。在文档的“RUNNING MOVABLE TYPE”一节,我找到了系统默认的用户名是“Melody”,默认密码是“Nelson”。MT要求安装人员在首次登录后在后台更改用户名和密码,还真够落后的啊。因此想来,可能我昨天就已经安装成功了,但没有仔细看文档导致无法登录。而今天在登录之前,我还按照文章修改mt.cfg文件,不知道如果不改会不会有问题,不过现在系统倒是可以正常使用了。

进去后马上写一篇文章体验一把,书写界面还真是落后啊,完全没有一点现代的感觉。不过这对我来说不是问题。但写标题的时候,汉字的下面十分之一左右被切断了,我估计是当初设计上没有考虑多语言的原因。没有Markdown支持,我是用手写HTML的方式来加链接的。其它的都很明显。不过MT2似乎是用的GET的方式来与服务器打交道的,因为我点了一下设定那些元素显式,修改完后竟然刷新了页面,而我前面写的几行字就没有了。我试着用了后退,结果他们就这么出来了,呵呵。后台运行的倒是相当流畅,印象里MT3和它的速度相当,当然远不是MT4的速度可比的。

不过当我写完后,点保存后,发现我在编辑框中的汉字都编程了数字编码了,可以从截图上看出来:

mt-2661-new-entry.png

但发布后字符倒是正常的,当然发布的速度也是极快。MT2的默认首页很清淡,我比较喜欢:

mt-2661-index.png

我试着导入一下我这个MT4构建的blog的导出文件,只要把得到的.txt文件放进import目录里去,并在后台选择import后,简单设定一下就行了。我本来还以为是要有弹出对话框让我选择文件呢,果然有够原始。导入后发现不管是后台还是发布后的页面,中文都是乱码。我想是编码设定的问题,这个是小事情,只要导入功能正常就可以了。

经过这次体验,我感觉MT2在默认上,尤其是对于中文用户,没有MT3支持的那么好。不过应该经过调校,应该会比较顺手。我没有测试更多的功能,Jedi展示了用MT2做一个像他那样的blog是绰绰有余的。同时我希望这些MT老的程序包,可以在网上流传下去,以造福初学者。我手上保留了MT2.66、MT3.37这两个版本,等有时间把它们整理一下放上去。

少写Twitter多写博

Twitter无疑是互联网界的一大革新。从几年前它推出一来,这两年它的如火如荼的发展,让我们都承认──Twitter革了blog的命。不过,Twitter革命的不彻底。在我看来,它在形式上让群众参与互联网有了新的等级;但在结果上,则不那么尽如人意。当然,我们都热爱Twitter,想尽量的把自己展示在Twitter上与大家交流,但我还是觉得,我们应该多分一点时间在blog上面。

这个想法是我在上周日突然明确的出现在我脑中的。我的同学ZH打算总结一下常见的(荒谬的)大众想法,于是就开始一条一条的把他的想法推了上去。我当时看到了他总结了有六条之多,虽然语言上不是那么完美,但也已经让我觉得惊喜,挺有价值的。当时我就想到,这么好的东西,过不了几天就被新的tweets给挤到后面去了,几乎无法再挖掘出来。而Twitter的服务器不保存/公开早先的tweets,也就是说,一段时间之后,他在周日总结的想法就彻底的消失了。

这是多么可惜的啊,不过目前的Twitter也只能做到这种程度了。我在过去手写程序保存自己的tweets的目的之一就是想解决这个问题,但也只能是某种程度上的。

而我近一年对blog的看法,也相对过去有了改变。我觉得blog不一定要搞的那么正式,你日常生活中的一些小事,只要对你有意义,就可以把它写下来。人脑的记忆是有限的,很少人能记得一年前的一天发生的一些事情。我就经常想到在过去的某一天做了什么事,但具体事情是怎么发生的,我怎么想也回想不起来了。而这时,如果有了当时写的一篇文章来刺激,事情就会容易的多了。我每次浏览我过去的blog文章时,都有深刻的这种感觉──要不是当时写了这么篇文章,我说不定一辈子都难以回想起这么多细节来了。

刚才蔡智浩发布了一篇文章《我的電子記憶》,讲了他是如何克服自己对过去发生的某件事情的遗忘的。蔡智浩使用了Twitter、GPS 軌跡記錄器、數位相機、相片定位和智慧型手機来帮助自己记录每日发生的事情的细节,在将来回顾起来就有了依据。其实我觉得可以再加上一条──常写blog。我没有蔡智浩的那些数码定位设施,但通过写blog,就能在未来或多或少的回顾今天发生的事情。

当然,我也知道在今天,很多人都放弃了常常更新blog,我过去就发现一些人都不更新或很少更新了(比如[1]|[2])。据我猜测的原因有几条:一是到了一定的年纪,可能就不大写blog了,网上写blog的人是我的晚辈,我不大知道而已;二是有很多的东西可以分散想法,让你难以把它留在脑中“发酵”并在合适的时间整理成文章。

比如说我,在2007年开始用Twitter后,对blog的更新就少了。从我的blog的月份archive上看,有的月竟然没有一篇文章,那就是我的一些观点都用来更新了Twitter了。写在了Twitter上,就不想再在blog上写一次了。我有一段时间怀疑,现在有了Twitter,我的这个blog还有没有存在的必要,甚至有段时间我想把blog做成静态的HTML网页,反正写的也少,也没有什么评论。现在我对那种想法已经不以为然了。我的Twitter现在有了8500多条,中间肯定有一点好的idea,现在也早已被其它的废话给湮没了。如果我当时能把它们抽时间整理成文章,现在都可以很好的保存。

有的时候坚持写blog确实不容易。我身边的很多人在几年前也顺应潮流开通了blog,现在也早就停了。我依稀记得从王建硕那里看到他说,坚持写blog是个习惯问题。养成了习惯后,就会自然而然了。有人说平时太忙,没有时间写。但我觉得,现在再忙,挤出一点时间来把自己的想法总结归纳一下,在将来就会产生大用途。现在我的学业也特别忙,但也在时常找时间写。至于现在我养成习惯了没有,我还不清楚。不过我相信我现在比别人写了更多的blog,在将来一定会有收获的。原因很简单,因为两年前写的文章,已经让今天的我有所收获了。

Out of Blog

不知道别人是怎么样,我是基本不能在家里写blog的。这次回国,7月24日抵达的北京,在这几天内,除了这篇文章外,只有两篇文章。我的另一个英文blog上的最后一篇文章写于7月27日。英文blog放的就是每日一篇的生活流水账,停止更新的原因大概也明显──家里的生活千篇一律呗。这个中文blog的作用是把生活中值得记录的想法提取出来,生活都千篇一律了,更别提提取了。

在家中待了几天后,已经习惯了国内的环境后,觉得自己正在渐渐的变为一具行尸走肉。每天的生活基本一样,早上8、9点起床,然后要么跟着父亲、要么跟着母亲,开车出门去办一些事情。我的任务就是给他们开车,此外就是无聊的等着。回过前在计划国内生活的时候,虽然有过一丝丝的迷茫,但总体的精神还是向上的:读一些、买一些我在国外日思夜想的计算机图书。不过这几天买书的想法越来越淡弱,原因写在前面的文章当中。而我这几天也越来越少读书了。

究其原因,除了主观上的懒惰外,外因有几:令人烦躁的炎热天气;父母休假在家,家里的电视声音的影响(因为天热,无法关门);每天要跟父母出门办一些事情,回来后我也少有精力读书。要解决外因,我的感觉就是把我送到学校、或者图书馆去。我之前也写过,我在家中是无法集中精力学习的,因此我才整天的呆在学校的自习室里,否则会感觉明显的荒废。而在国内的假期中,上哪里找个图书馆、自习室啊。

对了,不想买书还有一个因素,就是没有吸引物。把我放到书店里,我在书海里翻翻,我肯定会心动掏腰包。可惜我回家后还没有去过书店一次呢。我家在我出国后就搬到了东部的高新区,离城市东部有7公里左右,而城东离市中心的书店还有5公里。因此实在少有去书店的机会。我在北京倒是去过一次王府井书店,不过不知道是因为那天太热太躁,还是书店里确实没有什么我想看的计算机书,我计算机区域转了两圈,也没有看到吸引我的书。

不愿写blog的原因,我想了几天,感觉就是“万事开头难”。我过去写文章也是,经常对着题目愣神半天,一旦把前几段写出来后,后面的就水到渠成了。对于要求不高的作文来说,开头也不需要太好。只要有开头,后面想在硬转也很容易。写blog也是这个道理,对我来说,环境太杂乱、心思不平静、思考不积极、信息获取不跟进,很难让我有开头的冲动。

我过去在学校期间,基本上是不到下午就能零散的把Google Reader上的文章看完,到了下午还一直抱怨怎么别人都不写文章了,看着空空的阅读列表就有种无聊的感觉。现在倒好,每天就没有看文章的兴趣。这几天积攒了将近500条未读了。过去看到徐宥等人的新文章,我基本上是马上消灭掉的,现在我看了稍微长一点的文章后,就赶紧换到其它的文章了。我目前的状态,就是看看月光的不需要怎么思考的文章最合适了。

英文blog

七月四日的时候,我大概是在找关于MT的资料,顺便看到了Six Apart里的一些职员竟然也在VOX上有blog。其中的很多人已经有了TypePad上的blog,但他们往往在TypePad上讨论一些正式的话题,而在VOX上面写一些生活化的东西。恰巧我看了Apple4us的一篇文章,知道了MarsEdit,想尝试一下,MarsEdit支持VOX,我于是就在VOX上面开了一个blog。

VOX很久之前就不能在大陆访问了,而且这里记录的是个人的鸡毛蒜皮的事,又是用的英文,因此地址我也懒得写了。我之前其实已经有了一个VOX帐号和blog,在上面只写过一篇的文章。但上次选的二级域名不是很好,而且又懒得自习研究如何修改,于是就干脆用新邮箱重新注册了一个。VOX不错,允许你删除帐号,能让用户选择删除帐号的系统,我的印象都比较好。于是我当天晚上就把旧帐号给删掉了。

因为考虑到用的是英文,因此也就没太考虑GFW的问题。其实如果不考虑封锁,可以选的blog服务有很多,比如blogger、wordpress.com,但这次选VOX,很明显是因为我最近对MT和6A比较痴迷罢了。而且之前flypig也推荐过,再加上他写的对6A老总的采访,我那时就对VOX有很深刻的印象了。

至于这个blog的作用,我是希望能用英文来记录一些日常的生活。这个中文的blog中,我主要写的是我的思想,生活上的琐事我觉得不值得在这里写,因此就写在那个VOX的blog上。那个blog同样遵循王建硕的原则──一天最多写一篇文章。于是在过去的几天中,我都是每天写一篇。文章也就是把当天的生活记一下,除了生活外的想法之类的,基本上不谈。也不用管文章的长短,哪怕只有几句也一样发上去,因此写的也算自在。

之前我用过一两天VOX,因为没有深入,也没什么感受。现在用了半个多月,对于VOX的一些有点缺点也有了不少认识,等有时间可以写一写。

Blog灵感的捕捉历程

大概从今年三月份开始,我又一次努力的写起了blog,还没有遇到过思维枯竭的情况。

从我的blog的月份记录上看,我在2007年的十二月到2008年的三月没有写过一篇文章。那段时间正好是我在这边读语言学校的日子。每天早上八点半到下午两点多的课千篇一律的重复,而且我那时还不会在学校自习,基本上就是早上7点多从家里出发,下午将近四点回到家中,因此那一阵子没有丝毫的内容可以写。而且那时我用当时的英文名字注册了一个域名,用Movable Type架了一个blog,用英文来写作,也相对的分散了注意力。同时我那一阵子开始用Gentoo,也让我很少有心思来写blog。

另一端blog空白时间是在2008年的九月到十二月,那整整的一个学期我都没有写,现在想起来应该是那时候太忙的原因。那个学期我开始时选了五门课,一门《编程实践》,主要是C语言;一门《科学计算》,主要涉及一些数值算法;一门《人工智能》;一门《人机交互》;一门《编程语言概念》,主要介绍几类编程语言。到了学期中间实在受不了,于是把要求我们用C#写作业的《人机交互》给注销了。那一阵子是我在这边上大学第一次感到精力不足,有种无力的感觉。那时的课余时间基本上就是在机房里写作业,没有任何精力来写blog。

那阵子我甚至有个想法,反正这个blog基本上是一个月才一篇左右的量,也没有什么人访问,Google上也没有索引,因此不如把WordPress换成静态的页面。也就是通过类似Markdown之类的工具把我写的东西转换成html文件放在服务器上,让大家访问。无奈那时连写作都没有精力,根本没有精力再做课余的项目了。

当时不想写blog还有一个小原因,就是刚才说过的Google不收录我的网站。当时令我特别苦恼。之前我在Dreamhost上的主机被攻击过,导致资料全部丢失,我当时有些怀疑是不是这个因素。后来才发现是我在每个页面的HEAD里放了noindex的meta tag,把它去掉后,就重新被Google收录了。

其实真正激发我重新开始写blog的原因,是我在今年年初的学期,修了一门《计算机伦理》课,里面讨论了一些伦理、道德等让人左右为难的话题,让我在下课后的思路很活跃,于是就写了一些文章。中间还翻译过Guido van Rossum的介绍Python语言的历史的几篇blog。现在也可以发现,今年一月到三月的文章都是那个方面的。

到了四月份,因为一次虚惊让我把blog换到了另一个Dreamhost帐户上,当时的WordPress的模板突然不好用了,于是我从那时换到了Movable Type。当时觉得既然换了一个blog应用程序,就应该弄点新气象之类的,于是就努力写。而且四月中旬那块我的一些课程陆续结束,因此有很长的时间可以写。课程结束还导致我的心情轻松,因此写起来也有心情,平常也有了闲心思来构思一些话题。其实写不出blog的一个关键问题就在于话题,有了话题后,只要有点时间,就可以写一篇了。

结果在那一阵子的总和因素影响下,我有的时候一天能写四篇blog文章,而且感觉还有东西可以写,不过本能上觉得继续写下去的话就有点过分了。于是渐渐的减少每天的文章的数量。不过整个四月份我也写了有40多篇。后来就渐渐的能保持这个习惯了。就算到了五月份,中间有写时间挺忙,我也写了19篇。到了六月份有些习惯了,又开始每天都写,结果弄了40篇。那时我开始接受王建硕说的每天最多写一篇的想法,开始缩减发布blog的频率。

现在回头来看,我觉得对于blog的观点有了很大的变化。过去我总是有点放不下的感觉,觉得blog既然是被大家浏览的,又是每篇都成文章的“严肃”形式,因此一个有存在价值的blog的文章应该是有普适意义的,也就是说对大众有意义的。而只和自己相关的文字的意义不大。现在感觉blog写的多了,对自己的价值是最主要的。现在再回头看两年多前写的文章,就能回忆起已经忘记很久的那时候的一些事情和想法,这是我现在写blog的主要目的。而能否惠及大众,则算是写blog的副产品了。

基于这一点,我感觉现在写blog的主要动力,可能就在于平时能挤出时间来吧。灵感方面主要是来自与Google Reader的信息,然后就是日常的思考。有时候看似不起眼的事情,在脑中放着,过一阵子就觉得很有写头。不过这就是存乎一心的感受,难以表述了。

Movable Type发布的一个小不足

过去在用WordPress的时候,发现WP在发布文章的时候,设定的发布时间是点发布按钮的那一刻。由于过去我写blog不是很及时,又希望让blog显示的时间就是我构思文章的那段时间,就需要在发布之前调整一下发布时间。过去觉得这样有点麻烦,但是比较自然。

Movable Type则有所不同,它的发布时间的设定是在用户点击“建立新文章”按钮的那一刻。因此,不管文章在什么时候发布,也不管中途被保存了多少次,发布后的发布时间仍然是最初的那一刻。我在之前用的时候觉得这样不错,不用再废功夫调了。

不过刚才我意识到了这样子的问题。事情是这样的:我昨天先写了《想写一个类似co.mments的东西》这篇文章,并设定为今天10点左右的时候自动发布,然后写了《关于写blog的频率》,并保存为草稿。结果今天上午我发现原先设定的延迟发布并没有生效,于是手动把文章发布了。刚才把《关于写blog的频率》这篇文章完善了一下之后发布了,但当我浏览页面的时候,发现这篇文章排在了《想写一个类似co.mments的东西》的前面,也就是说,这篇文章所设定的发布时间更早。

稍微想一下就找到了症结所在:写完《关于写blog的频率》之后我没有修改发布日期,结果这篇文章的发布日期则成为了文章第一次被创建的时刻,也就是昨天。而《想写一个类似co.mments的东西》这篇文章,因为我希望延迟发布,则把它的发布日期设成了今天,于是就出现了刚才的状况。

从这一点看来,两种发布时间的策略似乎都有一定的有点和缺点。我一般写完了文章后立即发布,因此更倾向于MT的设定。不过我估计和两者用的编程语言也有一定的关系,和state也有那么一点点边。

Find recent content on the main index or look in the archives to find all content.