MT 升级后搜索缓存没有了

由于 MT 的效率是一个比较严重的问题,因此人们找了各种方法来提升 MT 的性能。在 MT4 中,我用了 AnySQL 的方法来缓存了搜索结果。因为 MT 的 tag 是基于搜索动态生成的,所以这个方法在第一次访问一个 tag 的时候会在硬盘上生成缓存,在一段时间之内再次访问这个 tag 时,直接从硬盘上的缓存来输出页面,速度自然就上去了。

这个方法的效果非常明显,尤其是在资源比较枯竭的主机上。我过去的 blog 在 Dreamhost 上,MT 运行的就特别缓慢,搜索更是如此。我在过去用 WP 的时候,动态的搜索完全没有这么慢,这让我非常惊讶两者之间的性能差距。而用了上面的缓存方法后,这个问题基本上立马解决了。后来我切换到了 Site5 的主机上,这个主机的资源比 DH 的好了不是一星半点,过去需要 45 分钟多才能重建全站,现在只需要 2 分钟多一点。虽然性能上有了巨大的提升,但我还是保留了搜索的缓存,毕竟能快一点是一点嘛。

升级了 MT5 之后,我发现这个方法不能用了,使用的话搜索什么的都出问题。开来 MT5 和 MT4 在一些基础的地方还是有一些不同的。这个方法的作者 AnySQL 切换到 WP 上去了,因此他没有继续更新 for MT5 的版本,所以貌似这个方法在近期就成了“绝响”。

本来我还妄想着随便改改,看看能不能凑合用着。可惜我的 Perl 荒废的实在太久了,也没有用 Perl 来写大程序的经历,所以在 debug mode 下试了半天,到最后还是抓瞎。好在现在的主机快了,影响也不是很大,也就先这么放下了。

困扰已久的 MT5 的 bug 解决了

mt5-icon自从 Movable Type 5 的测试版本发布以来,我就一直希望可以用在自己的 blog 上。MT5 有一些新功能,不过我最喜欢的一点是它后台的编辑器不错。用 MT4 的后台编辑器来编辑中文简直侮辱了汉字的美感。当时费了很大的力气才把后台中文字体给整治的可以入眼,并写文记之

但当我把这个 blog 的所有文章从 MT4 导出再在 MT5 中导入后,重新发布站点时,MT5 会报告 “Wide character in subroutine entry” 错误。这个问题困扰了我很长时间,从 RC1RC3 版本都一直存在。本来我想这么重大的问题到了正式版应该就没了吧,于是我那几天就天天盼望着正式版的发布,结果却又一次让我失望了。这让我迟迟无法升级到 MT5,也让我对 MT5 正式版发布跳票又没有解决问题的 6A 非常不满。

我估计 6A 不会主动修正这个问题了,也许是他们根本没有意识到这个问题,我于是就在官方的论坛上发布了一个帖子。然后 6A 的 Beau Smith 和我一起测试了几种情况,但一直也没有找到产生问题的原因,到最后也就不了了之了。后来我看到网上的一些其它的中文 MT 用户都升级了,也没有发生我的问题,就推测应该是 Markdown 的问题。后来通过 debug mode 也证实了问题出自 Markdown。但 Markdown 在 MT5 和 MT4 中几乎没有差别,在 MT4 中用着好好的,到了 MT5 中就有问题,所以我觉得应该是 MT 自身有了变动,我也无计可施。

前几个月实在太忙,也没有写 blog 的心情,于是这里就荒废了 4 个月。昨天突然觉得很久没有去 MT 的官方网站上看看了,于是就看到了 MT 5.02 版本发布的消息。我一直不甘心用不上 MT5,就又安装了一次,结果问题依旧。这次我有些时间,于是就发狠手动测试了一下。因为在发布失败后,我看到系统其实是生成了一些文章的,所以我猜应该是我中间有哪一篇文章里有些非法字符导致了这个问题,就想试着把它找出来。我每格大约 20 篇文章就发布一次这个文章,结果大概找到了那个临界点。但看了半天也没有找出问题所在。

然后我想时间隔了那么久,中间不应该只有我一个人使用 Markdown 并遇到这种问题吧,于是就再次去 Google 搜索了一下。似乎现在用 MT 并同时使用 Markdown 的人真得不多了,我上次搜索一个结果都没有,这次找到了两个。我先看的一个是一篇日文文章。我看不懂日文,但根据文章中穿插的英文,我猜测估计是和我同样的问题。描述解决方案的日文不难,“冒頭部分に”、“追加”、“に書き換える”我大体能猜出什么意思。按照他的方法试了一次,果然整个站点毫无问题的发布成功了。再看我搜索到的第二条结果,竟然是在 MT 的官方论坛上的一个帖子,里面竟然引用了我之前发的那个帖子,说他遇到了同样的问题,并通过以下方法解决了。我看了一下他给的方法,竟然和那篇日文文章里的方法一模一样。可惜这个帖子的作者没有在我那个帖子里说一句,所以我一直也没有看到。这个帖子是在今年年初发布的,但似乎一直没有人关注,所以到今天 MT5 还是有这个 bug。我提交了一个 patch,也不知道能不能在下一个版本中改进。

6A 在日本开了分公司,我觉得充分说明了 MT 在日本的流行。其实不止是 MT,Perl 也是一样。我感觉中国程序员更偏爱 PHP,因此 WordPress 在中国基本上完全压过 MT。我在网上很少见到过有 Perl 开发者,似乎人们的精力更多的投入到 Python / PHP / Ruby 上了。相反在日本有很多 Perl 黑客,比如我上一篇文章里提到的给 Cocoa Emacs 23 做全屏补丁的 Daisuke Murase,我在他的 github repo 里看到了很多 Perl 的代码。另外,很多 MT 的资料都是日文的,可惜我看不懂,但 MT 在日本的流行是确定的。

最后我把这个 bug 的解决方案列在这里(假设 MT 安装在 mt5/ 目录里):

  1. mt5/plugins/Markdown/Makrdown.pl 文件的开头部分的 use 区域加上一行 “use Encode qw(encode_utf8);
  2. mt5/plugins/Markdown/Makrdown.pl 文件里找到 “my $key = md5_hex($1);” 一行(280行左右),替换成 “my $key = md5_hex(encode_utf8($1));”。

制作了一个新的样式

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

对于计算机的学习与了解,从小我一路上来,我身边的朋友,如果不是接触编程这方面的话,基本上就是制作网页了。那个时候买个盗版的 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 安装文档

Logo of Six Apart.换了虚拟空间之后,我昨天晚上重新安装了 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 抱有谨慎的态度。

调整页面 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.net/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://liuf.net/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 md5_hex(encode_utf8($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分多钟,竟然报错了:

Failure message of Movable Type 5 publish.
Publish Failure

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

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

Movable Type 5 的 Pico 主题的截图
Movable Type 5 的 Pico 主题的截图

这是首页最下面的截图:

Movable Type 5 的 Pico 主题的截图
Movable Type 5 的 Pico 主题的截图

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

Movable Type 5 后台的 Pico 主题的多种配色
Movable Type 5 后台的 Pico 主题的多种配色

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

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

用 Movable Type 5 生成我的 website
用 Movable Type 5 生成我的 website

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

最后我还是没有搞定子域名的问题。这个问题来源于我想用MT来管理我的整个网站包括首页和blog。我目前首页的网址是http://liuf.net,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

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

孤陋寡闻,白痴傻蛋

这是一篇“罪己诏”。

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

这就是结果

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

真是丢人啊。