大貓共和國

Meow

將Wordpress轉移到Jekyll及Disqus

最近越來越不習慣使用Wordpress寫文章。我對於寫文章的方式有下列要求:

  • 不使用WYSIWYG編輯器。大多數的WYSIWYG編輯器都有產生不必要的HTML碼、貼code格式跑掉…之類的問題。
  • 可以不用手動撰寫HTML碼(markdown)。
  • 可以使用慣用的純文字編輯器(vim),撰寫文章如同撰寫程式源碼一樣。

Jekyll是一套Ruby靜態網站產生器,支援markdown, textile等語法。包括Github Pages在內,已有許多網站使用Jekyll。由於靜態網站沒有留言的功能,可以配合Disqus或Facebook實作留言。我認為這樣的撰文方式不一定適合一般使用者,但相當適合程式設計師使用。

使用Pretty Permalink

所謂pretty permalink是指網址是這種格式:

http://blog.miaout17.net/2011/05/08/convert-wordpress-to-jekyll-and-disqus/

而非

http://blog.miaout17.net/2011/05/08/convert-wordpress-to-jekyll-and-disqus.html
http://blog.miaout17.net/?p=2241

若Wordpress與Jekyll都使用pretty permalink,轉換時網址就可以直接對應,方便許多。Wordpress需要在後台設定,而Jekyll的_config.yml中加入:

permalink: pretty

即可。

順帶一提,我的permalink全部都是英文及橫線組成。若permalink有中文或其他字元,可能會產生問題。若不想改掉,請自行修改程式小心處理。

將Wordpress資料庫轉至Jekyll

我原本的blog系統是Wordpress。要將Wordpress搬家到Jekyll、Wordpress留言搬到Disqus,都有現成的工具。但這些工具可能還需要一些workaround。

首先,Jekyll內建的Wordpress Migrator有幾個問題:

  • yaml中的utf8字串會變成binary format
  • 沒有匯出wordpress中的category和tag資訊
  • 沒有匯出時間資訊,同一天的文章順序可能會錯誤

因此,我手動修改了Jekyll Wordpress Migrator的源碼,修改後的源碼位於: https://gist.github.com/961198 。這裡有許多可以客製化的地方。我決定不匯出Category,只匯出Tags。讀者若有需要,可以自行修改。

將Wordpress留言轉至Disqus

最後是將留言匯入Disqus。我研究後,認為最方便的方法是直接將Wordpress XML備份檔匯出。其本上Jekyll匯入Wordpress備份檔時是只認網址的。依前面所述,如果Wordpress及Jekyll都使用pretty permalink,兩邊的網址規則應該是一樣的。如果你更換了網域,只要用文字編輯器將XML檔中的網址取代即可。

此外要注意的是:Disqus在匯入時,會直接以HTTP存取你的網站,抓取標題等相關資訊。所以你必需先完成Wordpress轉至Jekyll的動作,並確保網站是可以存取的,最後才能匯入Disqus。

Jekyll就像一塊白布,幾乎什麼功能都沒有提供。使用者可以自行設計HTML及CSS模版,撰寫Tag Could等功能。本站就是一個成功轉換的範例。

Blogtrans 1.0.1版更新

Blogtrans v1.0.1釋出,需要者請至SourceForge下載

  • 修正了Blogger XML匯出時,PM變AM的問題
  • 先拿掉了其實不能用的Blogger XML匯入功能

Blogtrans開發密辛:

2009/05/23: 來寫Blogger匯入功能好了,先寫個不能動的程式碼,之後再補完

一年多沒動Blogtrans後…….

2011/03/05: 疑?有一年多前寫好的code還沒發佈耶,裡面有自動化測試、對無名的XML容錯、和Blogger匯入功能耶。來合併一下發佈好了…

……..

使用者:這個MT檔有問題耶,我把他匯出Blogger格式再匯入就讀不進來了

……..

對不起,有問題的大概不是MT檔,是Blogger匯入的功能和作者的腦袋…..Orz

Blogtrans 1.0.0版更新

這幾天收到幾位網友來信,表示Blogtrans無法匯入無名備份檔的留言。此時李組長眉頭一皺,認為案情非常單純:無名修改了備份檔的規格。

Blogtrans這次的更新如下:

  • 針對無名備份檔格式變化,做了對應修正
  • 不再以日期當版本號,以後將用1.0.0這種格式的版本號

至sourceforge下載Blogtrans 1.0.0版。


碎碎唸:看著自己三年前用不熟的python寫的程式,真是有砍掉重練的衝動…不過這是經過許多測試的code,能動就繼續用吧…

Lightning Talk: RichRC & Hirb-Unicode

昨天參加Ruby Tuesday時,中場休息時間得知有個Lightning Talk的機會,於是在台下匆匆忙忙的準備投影片。很高興可以跟大家分享我做的小東西,緊張之下講話有些結巴,還請見諒。

我的投影片已上傳至SlideShare:

早上更新了一下RichRC的預設設定,如果有安裝hirb-unicode的話就會自動載入。現在只要執行

gem install richrc wirble hirb hirb-unicode

把需要的gems安裝好,再到rails app目錄下執行

richrc

就可以使用具有語法高亮、自動完成、顯示資料表格(並修正Unicode排版問題)的rails console了。


我試著將這些小工具做成使用簡單的懶人包,希望能讓大家(尤其是新手)開發Rails時能夠更順手。

關於細節及進階的客製化可參看:

P.S.進階的使用者可以考慮irb的另一個選擇:ripl。ripl內建的功能比irb少,但源碼只有270行左右,其精簡的架構保留了非常高的擴充彈性,目前也已經有語法高亮多行輸入rails整合等二十多個插件可以使用。可以參看Godfat的文章:ripl-rc (1) (ripl, an irb replacement)