似乎一夜之間所有的 極客們 都 有了 自己 的 Github主頁 和 Octopress 博客。就像所有人在他們的博客中指出的,靜態博客的確比傳統的WordPress方式具有更多優勢。 自從看到這些 我就一直在想着自己搭一個 Octopress 。
但是似乎 Octopress 不適合我
一上手就被 Octopress的搭建步驟 煩到了。 RVM 是什麼? rbenv 又是什麼? 看來 Ruby 社區的快節奏發展已經超過了我的想象,他們似乎需要一套發行版管理器來調和不同版本之間的 Ruby 的兼容性問題。 雖然同樣的兼容性問題在 Python 社區也有 [1] ,不過總覺得 Python 至少還沒到需要一個發行版管理器的程度 [2] 。
真正的問題是我手上還沒有一個可以讓我隨便玩的 Linux 環境(真的想要……)。 而無論是 RVM 還是 rbenv 似乎都只支持 Unix/Linux/MacOSX 。 身爲極客就註定不能用 Windows 麼?(或許是的……)。
剩下的問題就是 Ruby 和 Python 兩大陣營的對立問題了。我不熟悉 Markdown , 相對來說比較喜歡 ReST 。 似乎無論哪邊都要 依賴 Pygments 作爲代碼着色器,那麼其實 Rubyist 也至少需要安裝 Python 。 我傾向於不依賴任何 Ruby 組件,最好沒有 C 擴展 的純 Python 實現。
於是我開始在 Github 上找 Python 的靜態博客引擎。 Flask 的作者 mitsuhiko 寫的 rstblog 看起來不錯,不過似乎沒有多少人在用。 Hyde 似乎很完善,不過默認的標記語言是 MarkDown , 又依賴於幾個 Ruby 組建,而且官方網站的設計實在太前衛。 最終我看到了 Pelican 。
[1] | 比如 Python 2.x 與 3.x 之間看似難以跨越的鴻溝,以及 PyPy 、 CPython 、 Stackless 、 Cython 等各個實現之間的微妙差別。 |
[2] | 是的,我們有 easy_install ,我們有 pip , 不過這些都是包管理器,都是裝好特定的Python實現之後的事情。 Python實現本身還不需要包管理器來管理。 Python 的版本問題基本上也只需要 2to3.py 和 3to2.py 這樣的輕量級轉換器就可以了,你不需要爲了安裝多個軟件而在硬盤裏留下多個不同版本的 Python 。 如果爲了引用的穩定性,你可以用 virtualenv ,不過這又是另一回事情了。 |
那麼就 Pelican 吧
對我而言, Pelican 相比於 Octopress 有幾個好處:
不過似乎 Pelican 的關注度不如 Octopress 那麼高,現在一些部分還有細微的問題:
- pelican-import 從 WordPress 導入的時候對中文、日文的支持似乎很成問題。
- 日期格式、時區、字符集、和多語言功能的結合度還不夠。 我在嘗試改善它。
- 模板還不夠豐富。
- 插件也不夠多……
希望這麼優秀的工具能夠受到更多關注,以上這些問題都是增加關注度之後很快就能解決的問題。
我的設置 settings.py
安裝 Pelican 很容易,一句話就夠了:
$ pip install pelican
然後把文章寫成ReST的格式,放在`pages`文件夾裏面。(重新)生成只要:
$ pelican -s settings.py
上傳到 Github:
$ git commit -am "Commit message"
$ git push
就這麼簡單。附上我的配置文件:
# -*- coding: utf-8 -*-
TIMEZONE = 'Asia/Tokyo'
DATE_FORMATS = {
'en':('usa','%a, %d %b %Y'),
'zh':('chs','%Y-%m-%d, %a'),
'jp':('jpn','%Y/%m/%d (%a)'),
}
# windows locale: http://msdn.microsoft.com/en-us/library/cdax410z%28VS.71%29.aspx
LOCALE = ['usa', 'chs', 'jpn', # windows
'en_US', 'zh_CN', 'ja_JP'] # Unix/Linux
DEFAULT_LANG = 'zh'
SITENAME = 'Farseerfc Blog'
AUTHOR = 'Jiachen Yang'
DISQUS_SITENAME = 'farseerfcgithub'
GITHUB_URL = 'https://github.com/farseerfc'
SITEURL = 'http://farseerfc.github.com'
TAG_FEED = 'feeds/%s.atom.xml'
SOCIAL = (('twitter', 'http://twitter.com/farseerfc'),
('github', 'https://github.com/farseerfc'),
('facebook', 'http://www.facebook.com/farseerfc'),
('weibo', 'http://weibo.com/farseerfc'),
('renren', 'http://www.renren.com/farseer'),
)
TWITTER_USERNAME = 'farseerfc'
THEME='notmyidea'
CSS_FILE = "wide.css"
DEFAULT_CATEGORY ='Others'
OUTPUT_PATH = '.'
PATH = 'posts'
Github Issue 留言
Disqus 留言