Nov
23
聊过 WordPress 、 ExpressionEngine 与 SaBlog-X 的优缺点后(见 闲谈 WordPress ExpressionEngine SaBlog-X ),接下来我说一下数据转换的问题。如果你喜欢 ExpressionEngine 或 SaBlog-X ,但却无法将 WordPress 的数据导入到新的系统中,那不是很郁闷吗。
ExpressionEngine 自带的导入脚本很有限,只有一个 Movable Type Import Utility 。所以 WordPress 到 ExpressionEngine 要经过一个中间步骤,那就是将数据导出为 Movable Type Import / Export Format ,然后再倒入 ExpressionEngine 。最近, WordPress 版本更新很频繁,导致以前的的几个导出脚本都失效了,我在 Instructions on how to run the export script 找到的脚本还能使用,适用于 WordPress 2.3.x-2.7 。为了方便,我已经打包在下面的附件里了。
导出数据以后,就简单了,按着 Movable Type Import Utility 提示做就可以了。只是无法将 WordPress 的 Permalink (或者叫做 post slug) 导入到 ExpressionEngine ,希望以后有达人能修改一下导入导出脚本,那就好了。
WordPress 到 SaBlog-X 1.6 的数据转换在 SaBlog-X交流论坛 就有相应的脚本,不过 SaBlog-X 需要在数据库中保存日志的段落符、换行符等,而WP没有,所以导入WP的数据后,Sablog-X 的段落都是挤在一起的,我对它做了一点修改,利用WordPress 的 wpautop() 函数,在数据导入之前,先将日志格式化。这样,转移数据后就不用手动一篇篇的更改日志了,日志多的时候那可是一项体力活。
SaBlog-X 2.0 到 WordPress 的数据转移可以参考 Utombox 的 SaBlog export WordPress eXtended RSS ,ExpressionEngine 到 WordPress 的迁移目前还没发现简单的方法。
附件:WordPress 到 ExpressionEngine 及 SaBlog-X 1.6 的数据转移脚本 。
Jul
15

WordPress 2.6发布了,说实话我并不是很喜欢这个版本。虽然WordPress 2.6增加了一些新的功能,对安全性方面也有了一定的提升,例如对SSL支持等,但是它对数据库的整洁来说,还是一团糟。
新版中增加的一个重要功能是Post Revisions(文章的版本控制),作者可以对比查看文章的不同版本,并恢复到以前的状态。但是,文章的不同版本,数据库中该放在哪里呢?答案是wp_posts。默认状态下,所有的实质内容都记录在这个数据表中,包括文章、图片视频音频等信息。而wp_posts的PRIMARY KEY为ID,于是一篇文章常常要占用3个不同的ID,它们记录了文章的3不同状态Current Revision、Autosave、Revision,也就是当前版本、自动保存的版本还有以前的版本,如果修改过多次,就会出现revision-2,revision-3… 于是乎,文章的Id不再连续了,特别是Permalink结构为archives/123形式的博客,上一篇为archives/100,当前这一篇可能就是archives/105了,看起来是相当的乱啊。
WordPress真的很吝啬,这么多版本过来了,数据表的数量仍然是10个,我想只要增加几个数据表,WP的数据就不会显得那么凌乱。本人并不提倡像ExpressionEngine这样,数据表多达68个,但20个以内并不过分吧。
个人建议增加的数据表有:
- wp_temp:存储临时文件,如wp_options中的rss内容、wp_postmeta中的edit_lock和edit_last
- wp_plugin:存储插件的配置信息,这样就不至于因为安装太多插件而把wp_options弄得一团糟
- wp_revision:用来记录文章的旧版本及自动保存的内容
这样,只要做一下简单的清理,数据库就显得有条有理了。
WordPress的其它问题还有:
1. 数据表wp_options中category_children、rewrite_rules的option_id总是不断改变
2. 如果你编辑过WordPress目录下的.htaccess,只要进入Settings – Permalinks,即使没有点击”Save Changes”,.htaccess也会追加以下内容:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
这极易导致服务器500错误。建议安装后WordPress后,将.htaccess文件的属性改为只读。
WordPress的功能是越来越强大了,伴随而来的是文件体积的增长,现在的wordpress-2.6.zip都已经1.44MB了。有时候我在想,我只不过想要一个简单的blog程序而已,有必要用一个庞然大物吗。有点期待Sablog 2.0的到来,只是小A迟迟不发布,难道要等到传说中的奥运?
Update:经williamlong的提醒,原来Post Revisions是可以禁用的,只要在wp-config.php文件中增加一行define(‘WP_POST_REVISIONS’, false);就可以了,williamlong说得对,应该在设置中增加启用/禁用选项,毕竟类似Wiki那种文章历史版本控制对一般的Blogger来说没多大意义。
Jun
21
喜欢 Gtalk 的简洁,令人兴奋的是在 Gmail 里就可以使用,将 http://talkgadget.google.com/talkgadget/client 添加到Firefox侧栏(将这个链接添加到书签,在书签里找到它,右键点击属性,在属性中将 “在侧栏中载入此书签” 选中即可)也是不错的选择,但是那毕竟是基于浏览器的,使用起来不是很方便。
我的朋友中,大部分都是用QQ的,MSN的也不少,还有最近的校内通似乎也挺火热的。如果一个IM开一个软件,单单找到正确的好友都是一种考验,于是我找到了 Miranda IM。
Miranda IM 是国外一种老牌的聚合聊天软件,通过安装丰富的插件可以令Miranda IM 支持例如QQ、ICQ、AIM、MSN、Jabber (Gtalk、校内网IM等使用的协议) 、Yahoo、Gadu-Gadu、IRC以及其他一些聊天协议。
下面简单介绍一下Mirandan IM的帐号配置。
MSN:最简单了,只要在“选项-网络-MSN”中填入E-mail和密码就可以了。
Gtalk:具体方法见 How do I configure Miranda for Google Talk?
要注意的是Gtalk需要使用SSL,我们可以安装Win32 OpenSSL,其实安装后只要提取ssleay32.dll,libeay32.dll,libssl32.dll(一般位于C:\WINDOWS\system32)与miranda32.exe放在同一目录下,就完全可以把Win32 OpenSSL卸载了。
校内IM的配置方法类似,协议选Jabber,用户名为你的校内ID,如223158817,注意不是用户名也不是登录用的E-mail帐号,登录服务填talk.xiaonei.com。
全部配置好后,如果没有登录,可以先退出Miranda,然后重新打开。现在你的MSN、Gtalk、校内等IM一起上线了吧。
下载:Miranda IM 0.8.0 Test Build 16 简体中文绿色便携版
PS:虽然Miranda也可以登录QQ,但是由于腾讯公司经常修改QQ协议,所以Miranda对QQ的支持不是很完善,特别是好友分组,所以不推荐使用。
Jan
11
本文所述的一切基于 Windows XP + WampServer 2.0 + Project Babel 0.6 进行测试。
Project Babel下载地址:http://code.google.com/p/project-babel/
WampServer下载地址: http://www.wampserver.com/
STEP 1.
下载WampServer 2.0、Project Babel v0.6、Project Babel v0.5(我们需要它其中的一些文件,下面会说到)。
STEP 2.
用记事本或其它文本编辑器打开C:\WINDOWS\system32\drivers\etc\目录下的hosts文件,找到
127.0.0.1 localhost
在其下一行添加
127.0.0.1 sk23.com
其中的 sk23.com 可以更改为任何你喜欢的域名,但是设置以后,会影响本机对此域名的解析。比如你将无法访问sk23.com,因为你访问的地址是本地的127.0.0.1,所以调试结束后建议马上将其注释。方法:在行首加#,例如,
#127.0.0.1 sk23.com
Continue Reading »
Oct
23
众所周知,WordPress的URL自定义功能(WordPress称之为Customize Permalink Structure)十分强大,但是,它对URL格式的处理却不怎么理想。假设WordPress安装在blog目录下,我举几个典型的例子说明一下。
当Permalinks格式设置为/%postname%/时,
各链接格式分别如下:
文章链接:/blog/post-name/
分类链接:/blog/category/category-name/
存档链接:/blog/yyyy/mm/,如/blog/2007/10/
不可否认,这样的链接格式相当不错,简练工整,对搜索引擎也十分友好。
当Permalinks为/entry/%postname%/格式时,
各链接格式如下:
文章链接:/blog/entry/post-name/
分类链接:/blog/entry/category/category-name/
存档链接:/blog/entry/yyyy/mm/,如/blog/entry/2007/10/
显然,分类链接和存档链接中的”entry”并不是我们希望出现的。
再换一种Permalinks,/%post_id%.html。许多人认为加上”.html”,网页看起来更像静态页面,有利于搜索引擎的收录。本人也比较喜欢这种格式。
请看各链接格式:
文章链接:/blog/post_id.html,如/blog/123.html
分类链接:/blog/category/category-name
存档链接:/blog/date/yyyy/mm,如/blog/date/2007/10
大家注意到了吗,分类链接的最后少了一根斜杠”/”,这对SEO来说并不是很好。/blog/category/category-name,浏览器请求的是category目录下的category-name文件,而/blog/category/category-name/浏览器请求的是 category-name目录下的索引文件,两者之间的区别是非常大的。存档(Archives)链接也存在着同样的问题。
还有,存档链接中”date”关键字的加入,虽然可以用来区分”post_id”与”yyyy”,以防止请求混乱,但我个人觉得去除”date”链接形式更统一,更工整,只是不清楚这样做是否存在一定的技术难度。
对WordPress Permalinks的建议总结如下:
将分类链接固定为/blog/category/category-name/的形式,绝不能因Permalinks设置(如加入”entry”,”archives”等)的改变而变化,并且链接最后的斜杠”/”不能缺少,存档链接的斜杠同样不能少。
希望WordPress的开发人员也发现了这个问题,让WP越来越完善。
Sep
26
相比以前,RSS Reader对Feed地址重定向的支持已经日趋完善了,但是我在这里还是想说几点。
RSS Reader无非是通过HTTP Header Status来判断Feed的状态的。
1.当HTTP 301时,表明Feed地址已永久转移,自动更改Feed地址为新的地址。另外要考虑用户服务器超出限制流量后自动跳转到指定页面的情况,万一是301重定向,那么Feed地址更改后就永远报废了,所以要加入是否是Feed的判断。
2.当服务器返回HTTP 302时,则从新地址抓取Feed,但不更新Feed地址本身的信息。
3.在线RSS Reader还应该提供一个RSS认领页面,可以一次认领多个Feed,用户对经过验证后的Feed拥有控制权。我建议每个Feed拥有独立的设置选项,内容包括Feed合并,Feed地址替换等。
4.还有一点就是,未经Feed所有者同意,RSS Reader不擅自合并任何Feed地址。
就说到这里吧,希望RSS Reader在用户体验方面越做越好。