又一次安装 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 主机的 ImageMagick 模块的问题

imagemagick-logo.gif我在之前的文章里说过,我在 Site5 的实验用的主机上测试 Movable Type 发布时的 CPU 负载问题时,意外的发现在 MT 的 Dashboard 里面提示我说找不到 Image::Magick 模块,并且在 Site5 的论坛上没有找到答案。

我当时说应该不影响是用,但还是觉得如果能解决了最好,于是在晚上就在 Google 上搜索,找到了一篇文章。文章里说如果 ImageMagick 模块无法使用,可以在 mt-config.cgi 里面加上一句 ImageDriver NetPBM 来使用 NetPBM 来代替 ImageMagick。我测试了之后果然可以,可以正确的处理我的头像了。我没有测试在加上这一句之前有没有在发布文章时插入图像不成功的经历,反正加上后我测试发布一篇带图像的文章是没问题,包括生成缩略图、改变大小等操作。

然后我又在 Settings 里面随便点点,却发现在 Feedback 下面还有错误提示。原来是说,因为没有 ImageMagick 模块,所以 CAPTCHA 就无法使用了。我目前的 blog 也没有使用 CAPTCHA 来过滤垃圾留言,用 Typepad AntiSpam 就能过滤绝大多数留言了,而有些人工的弄一些英文的通用留言用语的,数量就不多,我手工过滤也能过滤出来。不过我想,虽然今天不用,难保哪一天会用到?总之如果能把事情解决是最好,于是抱着这种想法,我就去了 Site5 的首页找到在线的客服 livechat

虽然我发信息过去的时候是半夜,不过 Site5 提供 24x7 的客服服务。我在输入自己的名字、邮箱地址、我的域名、以及问题之后,系统会把我的问题分配给一位客服,然后会在浏览器里出现一个对话窗口,我就在里面同他交谈。

客服首先问我我在上一步填写域名是不是指向我目前发生问题的主机,我说是,然后他进行了一些操作,估计是在后台重新安装了一下 ImageMagick,然后让我重试一下。我刷新了一下 MT,还是有问题。然后他问我是不是我需要的是个其它名字的模块,我于是提供给他这个网址,他在过了五、六分钟之后让我再试一次,如果不行的话就让我告诉他出问题的网址,他们好调查原因。我试过后问题依旧,于是就把 MT 我的帐户的名字和密码改了,告诉对方。结果对方却莫名奇妙的说需要 “submit a ticket to have this fixed for you”。我莫名其妙的想了一阵子,才觉得应该是这位客服没有权限来处理这种(或许是)涉及到客户提供的网址的问题,所以向上级提交了一个 “ticket” 来申请相关的权限。

我在等待的时候,却突然发现 chat 窗口变成了给这位客服评分的窗口,我也收到了一封措辞“冠冕堂皇”的来自 “Site5 Level 1 Support” 的感谢邮件。本来有些安心的我更加莫名其妙了。什么意思?问题就这样放着不管了吗?这样子就算解决了啊?我当下有点气愤,这算什么客服?于是我也在评分表上照实填写,服务态度、语言的语法、还有是否一直在问我相关的问题都给高分,至于是否给我提供了有用的信息和是否解决了问题嘛,低一点算了。

在提交了评分之后,我正在安慰自己没有 ImageMagick 一样用的时候,却发现我的邮箱里收到了 “Site5 Level 1 Support” 的又一封邮件,说他们已经安装了相关的 Perl 模块,让我试验一下。这时我才意识到我可能是错怪了刚才那位客服:他 “submit a ticket” 不是为了申请权限,而是直接把我的问题转移给了上一级的客服,由上一级的客服来帮助我。我于是又打开了一个 livechat,说我刚才不小心的关闭了 chat 窗口,问怎么回复问题。结果正巧碰到了同一位客服,他告诉我直接回复那封邮件就行了。我在这次评分时,全都给了高分,算是我刚才错误的补偿吧。不过 Site5 用了 “ticket” 这个莫名其妙的词来表示“问题(problem)”这个含义,并把假设询问的用户都知道这个词的含义,也算有一部分的责任吧。

我于是回复那封邮件说还是有问题,对方叫我清空 cache 再试一遍,我照做了之后自然还是不行。等我再次回复后过了一会,就收到了一封 Site5 自动发送的信,发信人是 “Site5 Level 2 Support”,说是因为我的情况复杂,这个 “ticket” 需要系统管理员的关注,因此被加入到 Level 2 的 queue 中了。果然 Site5 的客服是层级式的,这一级解决不了的问题就送给上一级。这个 Level 2 可能人手不多,我是在收到这封自动邮件之后大约四十分钟之后才收到进一步邮件,说是在看我的问题,等有结果后马上通知我。然后又过了将近三个半小时,我收到邮件说 ImageMagick 的 Perl 模块不支持 64 位环境,所以解决问题是一是我用一个替代品,二是把我的帐号转移到 32 位的服务器上。

到了这时我就觉得比较满意了。考虑到我对这个模块的需求状况,以及我这个帐号只是用来测试的,我就给对方回信说不用麻烦了,并客气的感谢对方。一会对方也回信说不客气之类的套话。

总之这是我在这两天之中遇到的第二次 64 位兼容性问题了。我在 07 年玩 Gentoo 的时候,其中有一个最关键的参数就是选择机器的 Arch。我当时的 CPU 好像是 T7300,好像是可以使用 x86_64 了,但我还是选择了 i386 架构,原因是从文档上看到还是 32 位上的软件多。当时我觉得自然而然,没有在意这个问题。结果两年后的今天,64 位大行其道,我却忽略了这个问题。不过这两个问题也给我上了印象深刻的两节课。

鸡冻

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 的虚拟主机了。

调整页面 CSS

日子忙啊,调整页面的 CSS 竟然成了暂时的休闲活动,真是让人苦笑不已。

今天在写完前面那篇文章之后,有把讲 CSS 中文字体设定相关的几篇文章以及一些衍生的文章又看了一下,似乎若有所悟,于是就又打起了修改页面的 CSS 的主意。

之前我对页面不满意的地方主要是页面标题粗细不均匀,看上去粗一片细一片的;还有就是某些字(比如“关”),显式明显比其它字窄一些。之前试着修改过这些问题,后来一直没试成功,最后不了了之。

现在 Firebug 越用越熟练后,也越来越感觉到它的强大。用它的可视化工具来定位哪个部分归 CSS 当中的哪几行管十分方便。然后我有简单复习了一下 id 和 class 的区别,改了改字体,就好了。之前我一直用的是英文字体设定,结果因为没有设定默认的中文字体,所以导致一些中文字显式很难看。结果显式的把黑体、雅黑、宋体等一些中文字体加入到 font-family 当中去,就比较好看了。

定位文章的标题时花了一点功夫。在尝试了几组不同的组合之后,发觉设定了 .asset-name, .archive-title 之后就起作用了。同样修改的还有 widget 的字体,这样左下角“关于我”这三个字就显式正常了。

现在多数网页的链接已经不加下划线了,找了一组比较通用的设置,把默认下划线也给去掉了。

借着打开了 Firebug,我本来想顺便修修后台写文章时标题的字体太难看的问题。地方也找到了,从 Firebug 里面测试也 OK 了,但就是加在文件里面后就不起作用。之前我傻乎乎的以为后台的 CSS 设定和页面的放在一块,所以就一直改页面的 CSS 文件。最后看了看 header 才发觉后台的 CSS 是单独设定的。不过,到了最后我也没找到调整后台 CSS 的方法,反正觉得文章区域已经显示正常了,标题就暂时不管了。

MT4 的 CSS 设定还是很方便的,我这一切做的都是在后台 Design -> Templates 下面修改了 Stylesheet 而已。修改后的内容如下:styles.css

大折腾

我在之前说到我想改变网站的目录结构,主要原因是想用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 3

之前在MT5 Release Candidate 1出来的时候也写过文章。其实这篇文章也是前几天的事了,只是那时太忙,变在周末整理出来。

我在平时会时不时的去MT的官方网站上看看有没有新产品发布,结果就看到了《Movable Type 5.0 Release Candidate 2这篇文章。本来我没想试用这个版本,因为文章下面的修复错误列表也没有我之前遇到的错误,不过总是抱有一丝侥幸的心理,说不定这次就成了呢。于是我就去ftp下载路径看了看,却发现原来里面已经有了RC3了,就下载下来看看。

我目前有两个域名,所以也不用在我当前的域名下再动什么,放心的在另一个域名目录下面胡搞就可以。MT也支持sqlite数据库,这是我最喜欢的地方之一。我挺不喜欢操纵mysql的,总感觉需要的权限更高,也更麻烦,mysqladmin也慢,而且这个dreamhost也不是我买的,我的帐号只能建数据库却看不到已经存在的,结果目前数据库让我建的有点乱,所以也不太想动。用sqlite正好,只是一个文件而已,不想要的时候删了就了事。

装上了MT后,感觉还是和原先一样。导入文章一切正常,发布的时候依然出现宽字符错误。

mt5-publish-failure.png

不过我觉得,如果把MT5当作一款新的blog发布系统,安装上不管过去的备份,从头开始写,应该是不错的。可惜我之前的文章和留言基本上是无论如何都不能丢的。

我这次又从网上搜索这个错误的提示信息,找到了一个页面,感觉有点解决的思路了。这个页面是一个论坛,一个人用Perl写的程序在调用md5-hex()函数的时候出现了同样的问题,询问解决方案。结果后来他自己发现了解决方法,就是在调用函数之前,先调用一个encode_utf8()函数:

print md5hex(encodeutf8($str)), "\n";

我于是就想,如果把MT的代码中,调用了md5-hex()地方,都加上encode_utf8(),说不定能解决问题。于是我用grep搜索全部文件,找到了几处地方。不过我在修改的时候,意识到调用这个函数可能还要引入什么库之类的,我也不知道具体是哪个库。自己写程序试验了几次,也没确定下来。后来也没有很充足的时间,又想了几个其它方法,于是就放弃了。

我想的其它方法,其实也是碰运气。比如说我先装一个MT4,导入备份后可以发布,然后我从MT4升级到MT5,说不定就行了,结果在MT5发布的时候失败。还有就是装了MT4后,在MT4中导入备份,然后升级到MT5,再导出。然后全新安装一个MT5,把新的备份文件导入,后来也失败了。然后我就想,查看生成的路径,在出错之前已经有了2009以及下面的从11到05几个目录,说明错误是从生成04目录的时候发生的,也就是引起错误的文章在4月份。通过把4月份的文章的状态分别从“发布”改成“草稿”,不久可以确定是那篇文章导致的问题了吗?找到后好好改改文章中的潜在语法问题,说不定就能解决。结果我把全部4月份的文章的状态改了后(MT竟然不能整月选取文章,远程更改好慢啊),再发布的时候确实多生成了几个目录,但又出现了同样的问题。看来有问题的地方不是一处啊,“阴谋”宣告破产。:( 只有等官方改掉这个问题了。

经过几次试用我也对MT5的website之类的概念有了一些了解了。我一直想用MT来帮我生成首页的,所以也加剧了我想升级MT5的念头。现在用的wiki虽然也不错,但不支持纯HTML代码是最大的问题。对于wiki来说支持纯HTML有安全隐患,但对我来说就很麻烦,不能加贴纸,也不能加统计代码了。所以升级是必要的。但如果升级后统一管理,就不能用子域名了,这是一个相当大的损失,也让我一直犹豫。我现在在尝试把子域名的目录建在主域名目录下面,看看能不能同时访问,不过还要等几个小时才能有结果。

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的想法,但又没找到一些相关的案例,对执行效率有点担心,也没有什么时间。等过一阵子再看看吧。

考虑用Movable Type做首页

这个问题我想了挺长时间了,但一是没有时间实践;二是之前实践得来的结果,我总是不满意,到现在也没有想出比较好的方案。

所谓用Movable Type做首页,就是把不是blog的部分的homepage,也用MT来处理。当初刚买了域名和空间后,我觉得作为一个“计算机科学界”的人,是应该有一个静态的首页的,这算是一个人的真正门户,然后下面再有其它的资源和blog。当然,如果没有计划走CS老路线的同志,把blog放在域名的根目录下,也有越来越多的趋势,当然对普通人来说这也是正常的做法。

于是我就在我的域名根目录下放上了手写的index.html,在其它目录上放上了我写的论文等其它资源,并在首页上做了链接。我把我的blog放在了根目录下面的blog/目录下面,并把blog子域名指向这个目录。当时我对域名和虚拟主机的设定一窍不通,为了弄这个子域名还费了很大劲,现在想想,如果没有子域名的话,我目前的计划可能更容易实现一点。

为什么想把首页交给MT来做呢,原因就是自己手写每个页面很麻烦,如果是用模板生成的话,就可以方便的做到统一设置。比如说在页面下面加上一些javascript代码来做统计。我曾一度傻傻的不明白,为什么我的Google Analytics里我的主页分类里面只有index.html这个文件有访问量,难道访问者就不从上面点点看别的资源?后来才恍然大悟,原来我只把Google Analytics的统计代码加到了index.html下面,别的页面都没有这段代码,当然就没有相应的统计记录了。如果我是用模板生成的这些页面,就没有这方面的问题了。

我用MT的时候,以为MT就是做blog用的,因此在建立了一个blog之后,就没有兴趣去挖掘别的功能了。直到有一天我试用MT Pro时,在别的域名下面尝试建立各种各样用MT可以建立的页面,结果发现MT的Professional Website就是我想要的东西。在根域名上建立一个homepage,然后有不同的分类,而blog也只是其中的一个分类而已。这样,我的一个域名下面的所有页面都用同一套Google Analytics代码,完全可以统一统计。

我最近试用的一些MT4版本,似乎还没有试验出一种最好的方法。而且把首页和blog组合起来,可能就要对模板进行一些改动,这是我还没有时间去做的。另外就是那个子域名,一个域名下指向一个分类的链接是一个子域名,而不是一个目录,看上去有点奇怪,并且我也不知道如何让MT来管理在子域名下的东西。可写了将近三年的blog突然该域名应该也是大忌。只有先这样拖着一阵子了。

时间金钱

我们的Zapp老师经常在课堂上讲写可笑的话,让人感觉他的心比较年轻,但有时也会说出一些有这里的话。

有一次他在给我们解释为什么“Linux is evil”时,又顺便捧他用的Mac,以及损他一贯鄙视的Windows。然后不知道怎么就谈到他问什么不用Linux了,因为同是有UNIX血统的东西,还便宜。他说,Linux其实不错,但要让它用着顺手就要花费很多时间,还不如花钱买一台Mac,直接就可以用。然后还说,他的假定是你的这些时间值一台Mac的钱。

我当时听了以后,深以为然。虽然我更喜欢Linux,虽然理由是比Mac更容易折腾。但我也不得不承认,在花费相同的功夫下,Mac远比Linux更容易工作。

我在07年10月到08年3月,一直用着Linux。早期用的是Ubuntu,到12月份开始用Gentoo。虽然花了很多时间来维护系统,但也深得其乐。但从时间角度来说,如果我能用来挣钱的话,确实是不如用Mac来的核算。

很多事情都有这方面的价格与时间博弈的问题。比如说blog软件。你可以在自己的主机上安装免费开源的Movable Type,也可以花钱买Six Apart的TypePad。我没用过TypePad,但它的首页上有视频介绍,我看过后果然比Movable Type更方便。比如Twitter通知,TypePad直接就有这个功能,而MT用户却需要用其它手段来做到。两者最终能达到同样的目的,但究竟是选择花钱还是选择花时间,则由个人来选择了。

不过现在还很少从钱的角度去思考问题。不知道是东西方文化的差异,还是年龄之间看待问题的差距。

孤陋寡闻,白痴傻蛋

这是一篇“罪己诏”。

今天我刚写了一篇文章,说MT4之前的版本多么多么难找,结果晚上似乎就遭到了报应。我正在电脑前,边看Google Reader边喝一杯冰卡布奇诺,想起了中午的文章,突发奇想,觉得在Google里用英文搜索一下“old version of movable type”会是什么结果呢?

这就是结果

第一个链接,进去后那篇文章里给出了一个链接,进去后就看到了从版本1到版本4的下载,包括我安装的MT2.661。上一级目录里还有更多内容。

真是丢人啊。

装了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这两个版本,等有时间把它们整理一下放上去。

找到了Jedi的blog

最早知道Jedi的blog是在2007年左右。当时我无法忍受国内BSP的质量和国外BSP的不稳定性,决定自己独立建blog。当时我用WordPress建了自己的第一个独立blog后,从网上到处寻找相关文章,于是就找到了Jedi那篇著名的《築一個部落格的夢》,对于其它的一些著名blog程序有了了解。

我那时对Jedi的blog上的文章看的不多,其中一个原因是Jedi是用Movable Type来建站的。我那时对独立主机这块属于菜鸟,看了一些MT的相关资料后,就没敢继续染指,于是就渐渐疏远了这个blog。但我对于那个blog的印象却非常深刻,除了黑色的底色外,文章内容的丰富性也让我记住了这个网站。

之后就是在去年上课的时候学了HCI,好像又从这个blog上找到了些关于Devork的信息。当时有门课特别简单无聊,我印象深刻的是由此在上课的时候就在看这个blog,给我带来了很大的乐趣。

我在今年开始使用Movable Type后,开始到处寻找MT相关的网页和blog,但这时多数人都开始使用WordPress,MT的blog变少了。因为想看同样用MT做的blog的样式取经,而且因为我是从MT4开始用的,一直想见识一下版本3和版本2的样子。当时想起了Jedi维护的MTBook,于是又开始找起来。后来竟然发现jedi的网页竟然已经没了,只能用Web Archive来看一看过去的存档,不免有点伤心。

昨天我不知是什么原因,又想起了他的blog,想再看看那些文章回忆一下。不过由于长时间没有再看了,我想不起网址了,只记得一篇文章的标题好像是“构筑一个部落格的梦”。于是就去Google搜索,但结果里也没看到我想要的网站。结果一直到了今天,从别的blog上的友情链接看到了我要找的页面。

从页面上看到,Jedi最后的一篇文章竟然是在今年的9月30日。我本来以为他已经停止更新了呢。这不禁让我喜出望外,赶紧在Google Reader里面订阅了。而且,从他的首页上看到了不少好东西,比如这两个幻灯片([1|2]),就非常不错。语言生动简约,让我非常想看一下现场实际演讲的情况,可惜这种演讲基本上不大可能会有录像存档了吧。不过倒是下载了MT的2.661版本,是按照Windows环境来打包成exe格式的。我用wine解包后还没有研究出如何安装在我的dreamhost主机上,但已经相当不错了,这是我目前能得到的最低版本的MT了。:)

Movable Type升級到4.32

今天看到了Movable Type发布了4.32版本的消息。看了发行注记后,知道了新版本集成Zemanta插件。去Zemanta的网站上看了一下它的演示,觉得还挺有意思的,就下载下来升级了。

经过我的试用,发现Zemanta插件在写文章的地方的右边加上了一个框,据说可以分析你目前文章的语义,然后找出最合适的文章插图来,方便丰富文章内容。另外,通过分析文章,Zemanta也帮你找到适合你文章的tag,这样就可以直接用鼠标点击给文章添加tag了。但对于我们这种中文blogger来说用处不大。网上关于Zemanta的中文介绍不多,这里找到一篇,可以参考。

我的blog是放在Dreamhost上的。Dreamhost的好处是提供了ssh登录,这样升级MT这种事就可以方便的在shell中完成了。但由于长期不用,我竟然忘了把一个文件夹覆盖的ls参数。本来想偷懒,用FileZilla来拖动过去了事,结果发现没有什么变化。后来去David Yin的页面上找到了,把它记下来备用:

cd MT-4.32-en
cp -r -f . ../blog/MT/

平时对于MT的升级操作做的少,因此升级一次就心理感觉惴惴。升级前我export了文章,得到了一个1.3MB的txt文件。又在phpMyAdmin那里备份了数据库的SQL,得到了一个1.2MB的压缩文件。这让我有点吃惊,没想到我的blog备份文件也这么大了。真不知道导入的时候这么大的文件有没有问题。我在自己做开发的时候基本不用MySQL,因为嫌麻烦。SQLite更适合我的胃口。Movable Type支持SQLite3,我在做实验的时候用的就是这个,但不知道用在正式场合的效率怎么样,因此就还是用了MySQL来做blog的数据库。

MT5发布了Beta版

今天上MovableType.org的时候,看到了MT5的beta测试版发布的消息,就下载下来试验了一下。我一直觉得MT相对WP的一点优势就是对多种格式数据库的支持,特别是sqlite,可以方便的随便安装一个独立的MT网站;不像WordPress,只支持MySQL,弄起来那么麻烦。这是题外话了。

MT5给我的第一个印象就是安装界面有了一定的美化。特别是按钮,在Mac OS X下的Firefox 3.5版本中,显示为圆角,这在之前似乎是没有的。登录时我注意到了另一点不同,就是输入用户名和密码的框变大了,和WordPress的登录框差不多了,而不是像MT4那样的扁扁一条。

登录进去的新界面让我有点茫然,似乎有了不少变动。而且根据MT的页面上说的,默认生成的页面就是Website,而不是过去的Blog。要写Blog,需要在Website下面再建立一个Blog。这一点在介绍MT5的blog文章上有写,里面有示意图,可以过去看看。

在后台进入了特定的blog设定界面后,让我还是有种眼前一亮的感觉。整个色系有了很大的变化,让我有一种见到了MT3的感觉,与MT4的黑色风格非常不同。MT4里在标题下方的一些下拉菜单,被移动到了页面左侧。菜单没有自动弹出,点一下菜单标题右边的箭头,下级菜单会显式在下面。

写一篇文章试试看,发现标题栏的字体变得比MT4好了很多,不再是那种难看的粗粗的了。正文的地方的字体还是很难看,看来需要调整一番。输入框不是MT4的那种凹凸风格,而是整个的平滑风格,比较漂亮。Basename的地方的编辑框消失了,要点一下Edit才会显示出来,Warning是一样存在的。MT还是没有解决其它国家语言标题导致的basename异常的问题。另外,Preview按钮到了右上角,Save按钮变成了位于分类设定上方的Publish和Draft两个按钮,同样也是圆角风格的。

我试着导入我这个blog的备份,结果看到了出错的提示。文章没有被全部导入,只是导入了20篇左右。然后试着发布,则提示有宽字符导致的错误。相信这些bug会在正式版中得到解决。

MT介绍MT5的文章中提到,MT5是MT在日本的分部负责开发的。虽然我知道MT的日本分部,但这个事实还是让我感到非常惊讶。我的印象里这种创意性的东西一般很少由日本的公司开发的。但事实就是事实,相比与在中国blog的没落,这也是一件无可奈何的事情。

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的信息,然后就是日常的思考。有时候看似不起眼的事情,在脑中放着,过一阵子就觉得很有写头。不过这就是存乎一心的感受,难以表述了。

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