距上次Habari 0.6.3发布四个月后,2010年2月19日,Habari开发团队继续发布更新Habari 0.6.4,没有功能上的更新,只是一些安全修正和适应最新的PHP版本5.2.12和5.3.1。
另外,刚刚去Habari Plugin页面看了一下,终于有了改进。之前只是一个又一个的插件文件夹,都不知道这些插件是干嘛用的,现在终于有了描述,虽然还很简陋,但至少不是瞎子过河了,可喜可贺。
距上次Habari 0.6.3发布四个月后,2010年2月19日,Habari开发团队继续发布更新Habari 0.6.4,没有功能上的更新,只是一些安全修正和适应最新的PHP版本5.2.12和5.3.1。
另外,刚刚去Habari Plugin页面看了一下,终于有了改进。之前只是一个又一个的插件文件夹,都不知道这些插件是干嘛用的,现在终于有了描述,虽然还很简陋,但至少不是瞎子过河了,可喜可贺。
前几天把服务器上的PHP版本升级到了5.3.1,浏览站点都很正常,但是进不了后台,估计是插件的问题。一个一个的排除,发现问题是出在Defensio身上。Habari后台日志上显示:
Function split() is deprecated in user/plugins/defensio/defensioapi.php:69
Apache这边的错误日志是:
[notice] child pid 10179 exit signal Segmentation fault (11)
帅呆了,直接把httpd进程给搞死了。不知道这个是bug还是我这边特有的问题,总之已经在Habari Trac上报告了bug,尚无回应。
说实话,至少是目前,Habari这边的Defensio插件在拦截spam comments上不如Wordpress那边的akismet插件,很多非常明显的spam它都放过了,要让我手动来。如图,在spam爆发的日子里,短短4个小时就漏网这么多spam,简直就是在轰炸我的Gmail信箱:

当前环境,Habari svn r4017,Sqlite, Defensio 在1月17日的trunk.
当前可供选择的Habari主题不算多,但也不乏佳品,可以参看Habari官方wiki给出的主题列表,选择你喜欢的主题。如果你是属于那种拿来就用或修改文件不多的,可以略过本文。
Habari已经走过两个年头了,成长并不迅速,但上下版本之间的差别还是蛮大的。比如为当前稳定版Habari 0.6.3做的主题几乎无一例外的无法在最新的SVN版本中正常运行,这就意味着在升级博客程序的同时要升级主题。而我,拿到一个主题之后,总喜欢这里改改,那里修修,比如现在用的这个Habari主题SP,我几乎是从header.php改到了footer.php:
一旦升级,有的主题作者会发布升级后的主题,但不会完善相关文档告诉你他修改了哪个文件的多少行、增加了什么、减少了什么。这种情况下我们怎么办?
好了,下面就是我选择SP作为这个Habari博客的理由了:作者把SP作为一个Project放到了Google Code,我可以在SP Source Changes里面清楚的看到作者在A年B月对C文件D行做的哪些修改,这种对应修改可就轻松了很多。这就是传说中版本控制系统的一部分...
-全文-目前的最新稳定版Habari 0.6.3的核心插件中并没有AutoParagraph,SVN中有,也许会出现在未来的版本0.7中。简单查看后发现这并不是什么新东西,而是从Habari核心中剥离一部分出来做的插件。
之前我们在写文章的时候,一个回车相当于一个<br />,现在在不激活AutoParagraph的情况下,若干回车仅相当于一个空格。所以当你从0.6.3升级到SVN后发现所有文章的格式都变掉了,就到插件控制面板中去激活AutoParagraph吧。
目前AutoParagraph插件在全新安装的Habari上是默认激活的,影响文章和atom的输出格式,但并不涉及到评论,评论框中的回车都做<br />处理。不过我推荐关掉AutoParagraph,因为我个人觉得html代码要么全部自己写,要么就用完全的wysiwyg编辑方式,混合的文本编辑模式是难以控制的。
前一段时间我升级了服务器上的PHP版本到PHP 5.2.10,结果这边Habari就开始给我闹毛病了:
Warning: curl_setopt() [function.curl-setopt]: the provided file handle is not writable in system/classes/curlrequestprocessor.php line 75
有时候刷新一下这个错误就没有了,从社区得知这个是PHP的bug引起的,它甚至不让在PHP 5.2.10和5.3上安装Habari 0.6.2。现在好了,Habari 0.6.3发布,一切又开始变的完美起来。(PS:我现在PHP版本是5.2.11)
这个新稳定版本同时还修补了一些bug,我就不详细叙述了。如果你想开始一个Blog,Habari 0.6.3和SVN版本都是不错的选择,需要提醒的是目前有主题或者插件并不能完美的运行在SVN上,比如我现在用的这个Binadamu主题,各位量力而行吧。
当Habari Timeline里面关于0.6的active tickets缩减到个位数的时候,就估摸着新版本应该要发布了。今天得到了官方发布Habari 0.6的消息,就立刻把现在的SVN版本改成了0.6。由于我本身用的开发版就蛮新的,所以升级以后几乎没发现什么变化 -_-!。
其实改动还是非常多的,详情可以查看Releases/0.6。我又到Habariproject的Trac系统上看了看,实际0.6还有几个Tickets是Active的状态,也许开发小组认为这些Tickets不重要了吧:
顺便说说Habari主要版本的开发路线:
不难看出,尽管开发小组把1.0定义为First Release,但未来很长一段时间内将要实现的功能和个人博客关系不大,Habari 0.6对个人博客平台而言已经很够用了,当然,有更多插件和主题的话会更好 ^_^
-全文-上传一个Habari插件或者主题,我们可以上传到/system目录下的/plugins和/themes文件夹内,也可以上传到/user目录下的对应文件夹内,还可以放在/3rdparty/plugins和/3rdparty/themes,系统都会认为这些是有效的,可以在控制面板里看见并激活。这就涉及到优先级和到底放哪里比较合适的问题。
诸多的Habari插件和主题作者在readme中都会推荐你把文件放在/user目录下,其一是因为/user目录下的文件优先级最高。相同的主题同时放到/system和/user目录下,系统优先调用/user目录下的主题。根据Habari Wiki的介绍,优先级顺序从高到低按如下排列:
其次是因为/user目录下的文件在Habari SVN升级过程中不会被替换。如果你使用的是默认的K2主题,而且又想在K2的基础上做一些自定义,正确的做法是复制/system/themes/k2到/user/themes/k2,然后将修改文件上传自/user/themes/k2目录下。如果你是替换/system/themes/k2下的文件,在SVN升级的过程中你修改过的文件就有可能被还原成升级服务器上的文件。同理,我们应该将自己修改过的habari class、plugin、theme全放到/user目录下。
我曾在Habari的登录方式一文中提到了我不喜欢Habari不使用Cookie的登录方式。感谢Joel Lee的留言,让我知道了这个插件Persistence of Memory。
这个插件的名字具有超现实主义色彩(Persistence of Memory at Wiki),翻译过来叫做记忆的执着,这就就很好理解了——让Habari记住我们的Cookie。如果让我这个没有什么文学修养的人来给这个插件命名的话应该叫做CPFH(Cookie plugin for Habari)... -_-!
用法也很简单,下载、解压缩、上传到/user/plugins目录下、到Habari后台插件面板里激活,不需要什么设置,登出,然后就会看到:
打上钩,登录,我们的Cookie就会被保存一个月。如果贪心觉得一个月不够,那简单,编辑persistence.plugin.php,约莫第82行上:
$time= time() + 2592000;
多加一个零就是保存Cookie 300天,再加一个就是3000天(不知道会不会导致内存泄漏 -_-! )...
爱上Habari超级简洁的文章编辑界面:Title(标题)、Content(内容)、Tags(标签,可选)、Content Address(文章地址,可选),完成这几项就可以发布,简单够用。如果是Wordpress用户可能会怀念Excerpt(摘要)和Custom Fields(自定义字段),要Habari实现这些功能也很简单,我们需要用到插件Post Fields。
下载—解压缩—上传到/user/plugins目录下,到后台插件列表里面激活,激活后在Active Plugins(已激活插件)中找Post Fields选择Configure,点击add选择你想添加的项目。在下面的视图中,我添加的是keywords和description,准备在header.php文件中以head meta的形式出现,作用是告知搜索引擎这篇文章的关键词和简述:
这个时候在撰写文章的界面下方就会多出一条Additional Fields(附加字段),在写文章的时候填入相应的内容即可。
怎么使用我们填入的这些文字呢?就本例而言,我们需要编辑header.php,在<head>...</header>之间加入:
<meta name="keywords" content="<?php echo $post->info->keywords; ?>" />
<meta name="description" content="<?php echo $post->info->description; ?>" />
各位可以右键单击本页,选择查看源代码,就可以看到本页的html代码中已经添加好了meta keywords和description。熟悉Wordpress自定义字段的人一定可以很快上手,如果熟悉Habari主题结构的话,灵活使用可以实现多种功能。Post Fields插件的介绍到此结束,各位就慢慢研究吧。
我的电脑只有我一个人使用,浏览器是Firefox,我让Firefox记录了经常使用的帐号和密码,而且保存了所有能够保存的cookie。由于这个习惯,致使我一直不喜欢Habari的这种不使用cookie的登录方式,Habari团队对此的解释是安全,但带来的问题就是有一点点的不方便。
登录Habari后台后,如果有20分钟左右没有任何的操作,浏览器进程就会失效。如果此后再需要进行什么操作的话,就会告诉你:“Your session expired.”(进程过期),并跳转到Habari的登录界面(这点和中国移动的网上营业厅以及某些银行的网银非常类似)。对我来说,由于我让Firefox记住了帐号和密码,所以需要再点一下Login:
如果真的要在乎安全,是不应该让浏览器记录任何帐号和密码的(在网吧等公众场合上网的时候应该尤其注意),所以遇到Habari进程失效,就需要重新输入帐号和密码。对于我这种经常在后台逛来逛去的人,就很麻烦了。
如果在后台编辑了很长时间的文章,点击Save或者Publish的时候出现“session expired”怎么办?这点不用担心,Habari会把刚才在编辑的文章存为Draft,等输入帐号和密码重新登陆以后回来继续编辑。Message Log的提示为:
We saved the last form you posted. Log back in to continue its submission.
如果还不放心,可以到Habari Plugins上面去下载一个叫做autosave.zip的插件,激活后它会在你编辑文章的同时为你保存,就和Wordpress的自动保存功能一样。不过,我还是非常希望Habari能够在登录界面上用一个小选项来支持使用cookie,注明安全问题自负就好了。