Pelicanを試してみた

一日の間に全ての ギーク たち 自分の 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 は多く使われているけれと、ホームページにブログの感じがみえないです。最後に Pelican を見かけました。

[1]例えば Python 2.x と 3.x の間にあまりにも巨大なる差、それと PyPyCPythonStacklessCython など各実現間に微妙な違いがあります。
[2]はい、こっちに easy_install とか pip があります、ですがそれらはパッケージ管理、特定なPython環境を入れた後の話です。Python自身はまだ管理する必要がないです。 Python のバージョン問題も 2to3.py とか 3to2.py のようなツールで変換すればいいです、違うソフトを実行するためたくさんの Python バージョンを残る必要はないです。もしバージョンの違いが気にするなら virtualenv を使うのも構わないが、それも別のことです。

それでは Pelican にしよう

私自身にとって、 PelicanOctopress よりいいところ:

  1. 純粋な Python で実現した。ですから CPython のほかべつの実現を使うのも心配がない。例えばわたしは PyPy を使ています。
  2. 多言語。Pelican の原作者はフランス人らしいです。ほとんどの人はこれの必要がないと思うが……できるだけ、わたしは三つの言語で書く。
  3. ReST 。それなら Leo
    
    @auto-rst
    を使って直接 ReST をかけます。

でも PelicanOctopress のほど注目されていないから、一部問題があります。

  1. pelican-import は WordPress から導入する時、日本語や中国語は問題となります。
  2. 多言語の機能と日付、タイムゾーンなどにバグがある。 私は改善しています。
  3. テンプレートは少ない。
  4. プラグインも少ない……

こんなに優れたツールにもっと注目されてほしい。

配置

Pelican を入れるのは簡単:

$ pip install pelican

文章を ReST で書いて、


posts
フォルダーに置きます。ページを生成する:

$ 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'

This is part 1 of the "pelican" series:

Leave a comment from this post's issue page using your Github account.
comments powered by Disqus