serendipity

网志程序:WordPress还是Serendipity?

最近两年网志(Blog)在互联网上成为一种热潮,最耳熟能详的就是微软提供的MSN空间了。不过我等好事者则喜欢自己动手搭建网志平台。这时候面临一个问题:选择什么样的网志程序?

在“2005岁末BLOG程序大评点”这篇文章中,作者列出了几十种网志程序以供选择,光PHP的可能就近30种(包括商业软件)。但就像季洪亮所说的,“太多的选择机会等于没有机会”,一般来讲我们只需要从中挑选一个最好的程序或比较好的程序来用,但谁没事会把这近30种程序一一测试、比较然后再挑选呢?我相信上述文章的作者自己都没有具体测试过文中所列的大多数程序。因此,这样的文章看起来好像提供了很多咨讯,但对很多人而言,其实这样的文章就像鸡肋一样:食之无味,弃之可惜。

我泛泛地浏览了这30来个PHP程序,权衡比较后挑出2个网志程序供选择1WordPressSerendipity。这两个都是现在很有名的网志程序,功能强大。WordPress的用户群很多,Serendipity据称是由几个PHP高手联手开发的,那么,二者到底孰优孰劣呢?

我用Serendipity已经搭建了2到3个Blog网站了(包括这个),而WordPress只是曾经短暂地测试了一下,就我的使用感受和综合网上的观点而言,我(强烈)推荐Serendipity。理由如下:

  1. 首先看看功能。在这个网址提供了一份详细的不同Blog系统/程序的比较,从中可以看出,WordPress和Serendipity都包含了网志所需的各项基本功能,各有千秋,综合来讲,WordPress功能略强一点点。

  2. 其次看看代码质量。在“XPress (WordPress For XOOPS) 升级到 2.0”这篇文章中,XPress的技术人员提到“看得出wordpress的代码在优化,开始考虑规模化的问题。给我的初步感觉像是打补丁,基础结构设计不好,将来要改进,太难了点”,这是很不好的一种情况。而如果去看看Senrendipity的代码(尤其是插件开发部分,后面会提到),是一种很舒服的感觉。就这一点而言,两套系统的水平高下已经可以初步被判定了。

  3. 再来看看插件开发的难易程度。开发人员都知道开发插件的时候首先要阅读相关文档、浏览代码,这些都比较繁琐,因此我很懒得去考虑开发插件、改插件这类事情,但Serendipity的插件设计却非常灵巧、规范、易懂。我没有看过Serendipity的开发文档,只是根据需要下载了几个插件安装、使用,并在此过程中看了几个插件的源代码,就已经理解了它的插件设计方法。2不夸张地讲,我现在直接动手写Senrendipity的插件都没问题,我也看过好些别的系统的代码,却没见过能够把插件开发方式规范得如此简单、直白易懂的的。WordPress的插件开发方式我没有看过,但我想它达不到Serendipity的设计境界。

  4. 再来看看插件数量。这点我估计WordPress的插件可能比Serendipity的多,毕竟WordPress的名气太大,而Serendipity的认知度还有限。不过不管数量多少,Serendipity的插件也还算够用就是了。

  5. Serendipity在多语言支持方面非常出色,用户完全不用担心它是否能够很好地支持中文。3

  6. 来看看页面模版。Serendipity目前提供大概10多个页面模版,不算太丰富,比如我就不得不采用默认的模版,因为用其他模版显示中文的话看起来不是太爽。好在近期Serendipity开发组搞了个“页面模版创作大赛”,相信会有更多的模版奉献出来。

    Serendipity具有外嵌功能(嵌入到别的网页界面中),我没有详细地测试这个功能,只是泛泛地看了一下相关开发文档,觉得好像不是很简洁、易用,所以大家看到,现在我的blog就没有嵌入到我以前网站的黄颜色页面里。

  7. 二者都具有较强劲的文章内容导入、导出功能。

总而言之,虽然Serendipity有着各种各样的小瑕疵,但是在我看来,它依然是最出色的PHP写的Blog程序。

最后顺带一句,一个月前,WordPress推出了最新版WordPress 2;10天后,Serendipity预计也将推出Serendipity 1,有兴趣的可以下载后试试。

[注1] 此处挑选不考虑、不选择商业软件。

[注2] 这也需要经验积累。

[注3] 当然,话虽这么说,Senrenditipy v0.8.x到v1.0 beta的几个语言支持方面的小瑕疵(有的不一定是Senrendipity的原因)我还是要提一下的。首先是trackback(引用)的JavaScript弹出框编码转换有问题(这是一个很小的bug,也很容易解决,一般用户根本觉察不到);其次是文章搜索功能对中文关键字搜索的支持比较差(可以不算是Serendipity的问题);再次就是部分中文界面翻译文档欠缺,只有自己手动翻译翻译了(这也可以不算是Serendipity的问题);最后就是,如果你的服务器没有装iconv这样的函数库的话,自然在极个别的地方会出现语言转码方面的小瑕疵(这也可以不算是Serendipity的问题)。

[补充说明1] 关于Serendipity的缺点:我感觉目前Serendipity的缺点之一在于静态页面生成方面的功能不够强大、完善。当前访客从URL中看到的静态页面URL (类似于“x.html”)实际上是通过URL重写(url_rewrite)等技术实现的,并非真的静态URL。但网志就像日记一样,写完后再更新的概率很低,因此颇适合使用静态页面以提高系统性能。Serendipity虽然使用了Smarty等模版引擎,但似乎在静态页面生成方面没有做多少明显的努力。 2006-02-07 04:16:03

[补充说明2] 如欲浏览更多关于Serendipity的使用、维护信息,请参考《网志程序Serendipity中文维护个人文集》一文。2007-07-15 14:23:19

类别:

网站变更记录 v2.0.0

对于Serendipity这套系统的喜爱之情犹如当初对FireFox软件的喜爱之情。

昨天,Serendipity开发组发布了Serendipity v1.0-beta1。因此,今天将本站网志所使用的程序(Serendipity)从v0.9.1升级到v1.0-beta1。

翻译、整理了数个Serendipity插件的中文语言包文件,并寄给Serendipity开发组。

标签:

类别:

网站变更记录 v1.9.7

从导航栏中关闭原先的“我的照片”的链接,使用新的基于Gallery系统的“我的照片”。这套系统Simonkey等在他们的个人网站上使用过。

由此,从表面上看,deminy.net在最近的一周内被deminy糟蹋得体无完肤。deminy.net先后融入了三种不同的系统:基于WebCalendar日程安排系统、基于Serendipity网志(Blog)系统和基于Gallery照片系统。整个网站一改过去统一的风格,变成了乱糟糟的大杂烩……

好在这只是一个个人网站而已,平时的维护也就是有时间的时候过来修补一下,想到哪做到哪,不会一次到位。今天暂时的表面上的乱糟糟是为了以后网站的长期稳定而考虑的。

选择这三套系统,也是依据自己的一些标准来挑选的。首先,中选的系统应该在相应的领域中是最好的之一;其次,中选的系统应该具有良好的数据交换能力(这将为以后系统移植的时候提供很多便利),例如WebCalendar和Serendipity都具有较强的数据导入、导出功能,只有Gallery在这方面稍微逊色一点点;另外,中选的系统应该尽量采用模块化/插件式的设计方式,易于开发、添加、删除相对独立的功能;最后,中选的系统最好具有一套比较通用的用户管理系统,以便以后有可能将几个系统的用户管理机制统一起来(其实这点很难)……

最后,比较高兴地告诉大家,如果对本站的某些文字和图片看着不顺眼的话,现在都可以直接跟在后面(匿名)开骂了,再也不用像以前那样子一股脑全贴在了留言本上了(本站的这个留言本很有可能在未来两周内也要被替换掉)~~~~

PS: 以前为了照顾网速慢的访客,因此本站采用了几乎纯文字的页面;几年过后,现在决定以网站的易管理性、易移植性和互动性等为核心,不再多考虑访客访问速度这样的问题了。

类别:

网站变更记录 v1.9.6

使用Serendipity这个软件重新构建本站Blog和“更新记录”栏目,并据此重新设置本站RSS。

停止指向本站英文版的链接。

本站仍在不断变更中。

标签:

类别:

Serendipity中文乱码解决方案 (2)

(接上篇“Serendipity的RSS中文乱码解决方案 (1)”)

前言

上篇谈到了如何使用UTF-8编码解决Serendipity的RSS中文乱码问题。但是很多时候,我们用中文网页的时候不喜欢网页编码是UTF-8,而希望直接用GB2312编码。在这种情况下,如何解决RSS乱码的问题呢?

进一步的原因分析

风传Serendipity是几位PHP业界高手联手开发的杰作,因此我们有理由相信这是一套可以作为程序开发范例的系统。因此,在语言国际化方面,不大应该出现编码方面的瑕疵。基于上述考虑,我们有理由相信Serendipity既能支持“Simplified Chinese (UTF-8)”编码,也能支持“Simplified Chinese (GB2312)”编码。实际上,“雪人阁”网站使用的Serendipity就采用的是“Simplified Chinese (GB2312)”编码,而且没有出现乱码问题。

由此,把所有语言选项设置为“Simplified Chinese (GB2312)”编码后,对程序管理界面、数据库等做进一步测试,未发现任何不妥之处。再对出现问题的RSS程序做进一步分析,终于发现问题所在:

默认Serendipity的所有feeds(指RSS、Atom等)都是统一采用UTF-8编码的。因此,当Serendipity系统本身采用其它编码的时候,需要将其它编码的字符串转换成UTF-8编码,再输出到相应的页面中。这个编码转换的工作,是由include/functions.inc.php文件中的一个函数serendipity_utf8_encode()实现的。该函数需要使用iconv函数库,否则将采用utf8_encode()进行编码转换。

因此,如果服务器的PHP嵌入了iconv库的话,那么,就不会有乱码的问题了;但是如果没有嵌入iconv库的话,Serendipity系统将调用utf8_encode()函数,但因为某种原因(不详)调用utf8_encode()后得到的字符串在页面上是乱码的效果。

解决方案(2种):

1. 在服务器上安装iconv库。有关PHP中iconv库的相关信息,参见这里

2. 如果想用GB2312编码,但没有iconv库,则可以将Serendipity系统从多语言/多编码支持转换为单语言支持。具体来讲,就是把rss.php文件中的“2个upf-8”字符串修改为“gb2312”,把include/functions.inc.php文件中的函数serendipity_utf8_encode()改写,让它直接返回输入字符串。其它可能出现乱码的地方用同样的方式处理。目前,qingqing.us就是采用这个做法。

(完)

[补充说明1] 本文原名为《Serendipity的RSS中文乱码解决方案 (2)》,现更名为《Serendipity中文乱码解决方案 (2)》,以便和后续类似文章的命名统一起来。另,本文比较古老,所述内容(以后)可能过时。2006-06-22 20:06:21

[补充说明2] 如欲浏览更多关于Serendipity的使用、维护信息,请参考《网志程序Serendipity中文维护个人文集》一文。2007-07-15 14:23:19

类别:

Serendipity中文乱码解决方案 (1)

简介

Serendipity是一个用PHP+MySQL开发的非常出色的Blog程序*,拥有众多的特性和功能:界面简单、功能强大的编辑界面、用户评论、多级分类、反垃圾功能、多插件、Trackback and Pingback、国际化语言支持、超强兼容性(兼容XHTML、CSS、RSS、ATOM等)等。

在当前最新版的Serendipity (v0.8.4)中,支持如下两种中文简体编码:“Simplified Chinese (GB2312)”和“Simplified Chinese (UTF-8)”。

在当前最新版的Serendipity (v0.8.4)中,有2处编码选项设定:一是在“Administration->管理设定->一般设定->语系”(此为全局编码设定),一是在“Administration->管理作者->作者/编辑->语系”(此为用户编码设定)。以下所有关于编码编辑/修改的地方,均指需要同时修改这2处的编码选择。(注意,因为翻译的原因,此处“语系”和“编码”是同一个意思)

问题/现象

如果界面编码选择“Simplified Chinese (GB2312)”,用户会发现Blog主界面等中文显示都很正常,但所有聚合页面(RSS等)都是乱码。

解决方案(2种):

1. 如果是新安装的话,界面编码选择“Simplified Chinese (UTF-8)”,则一切正常了。

2. 如果用户设定的界面编码是“Simplified Chinese (GB2312)”,并且在此状态下发表了多篇文字,那么,首先要把MySQL数据库内的内容编码进行一次转换操作(从GB2312转换到UTF-8),然后把Serendipity的界面编码选择为“Simplified Chinese (UTF-8)”,则一切正常了。

如何进行MySQL数据库内容编码的转换?参见文章“关于GB2312/Big5中文WordPress站点向UTF-8的转换”。其实操作非常简单,就是在phpMyAdmin数据转换时,“导出时用gb2312/big5 (zh/zh-tw),导入时用 zh-utf-8/zh-tw-utf-8。

[补充说明*] 在建立qingqing.us网站的Blog的时候,Deminy曾对网上流行的几套基于PHP的Blog程序(国产程序除外)作过简单的评测,初步认定Serendipity是这几套程序当中最棒的。

(接下篇“Serendipity的RSS中文乱码解决方案 (2)”)

[补充说明1] 本文原名为《Serendipity的RSS中文乱码解决方案 (1)》,现更名为《Serendipity中文乱码解决方案 (1)》,以便和后续类似文章的命名统一起来。另,本文比较古老,所述内容(以后)可能过时。2006-06-22 20:06:21

[补充说明2] 如欲浏览更多关于Serendipity的使用、维护信息,请参考《网志程序Serendipity中文维护个人文集》一文。2007-07-15 14:23:19

类别:

页面