まちゅダイアリー
2012-02-18 (土)
■ 日記の記法をGFM (Git Flavored Markdown) に変えた
時代はMarkdownらしいので、これまでWikiスタイルで書いてきたこの日記も GFM スタイルに変えることにした。GFMはMarkdownをGitHubがちょっとアレンジしたものらしい。日記を書くときとGitHubを使うときで記法が違うのも紛らわしいので、これを機にGFMで書けるようになろう。
導入方法
GFMスタイルはつい先日trunkに入ったばかり。 git pull origin master で最新版のtDiaryにアップデートする。(安定志向の人は次のリリースまで待ちましょう)
使い方を読みながら作業を進める。
misc/styleの下にあるgfm_style.rbを、インストールディレクトリにあるtdiary ディレクトリにコピーし、tdiary.confに以下の設定をする。
@style = 'GFM'
スタイルをコピーた後に、tdiary.confを編集する。
$ cp misc/style/gfm/gfm_style.rb tdiary/style
$ vim tdiary.conf
@style = 'GFM'
これで日記にアクセスすると、残念ながらエラーになる。
500 Internal Server Error
cannot load such file -- redcarpet (LoadError)
なるほど、内部でredcarpetというライブラリを使っているのか。
うちはrbenv + ruby1.9.3で動かしている(参考: rbenvが使える環境)ので、普通にgemを使ってインストールする。
$ gem install redcarpet
$ rbenv rehash
Bundlerがインストールされているのであれば、gemでわざわざパッケージ名を指定せずとも、bundle installでOK。
使ってみた
最初はこれまでのWiki記法とちょっと混乱してけど、すぐに慣れそう。
ただ、日記内でtDiaryのプラグイン記法を使うと以下のようにシンタックスエラーになる。
SyntaxError
(TDiary::Plugin#eval_src):67: syntax error, unexpected ';'
; _erbout.concat((section_leav...
^
(TDiary::Plugin#eval_src):191: syntax error, unexpected $end, expecting ')'
; _erbout.force_encoding(__ENCODING__)
^
こっちはちょっと調査かな。
…原因判明。Redcarpetがシングルクオートを ' (数値文字参照)に変換しちゃってるので、erbのパースでエラーになる。さてどうしたものか。
こんなパッチにしてみた。副作用がありそうな気もするが。
diff --git a/misc/style/gfm/gfm_style.rb b/misc/style/gfm/gfm_style.rb
index b6d5d83..112537d 100644
--- a/misc/style/gfm/gfm_style.rb
+++ b/misc/style/gfm/gfm_style.rb
@@ -109,7 +109,7 @@ module TDiary
r.gsub!(/<h(\d)/) { "<h#{$1.to_i + 2}" }
r.gsub!(/<\/h(\d)/) { "</h#{$1.to_i + 2}" }
r.gsub!(/\{\{(.+?)\}\}/) {
- "<%=#{$1}%>"
+ "<%=#{CGI.unescapeHTML($1)}%>"
}
r
end
2012-02-12 (日)
■ リビングの音楽環境を充実させる … クリス・ボッテイのBlu-rayを買った
リビングの音楽環境が整ったので、次は音楽コンテンツを充実させる番。 せっかくならBlu-rayにしようと思いAmazonで検索すると、クリス・ボッティというトランペット奏者のライブが評判がいい。 正直、これまでトランペットにそれほど興味が無かったので、オシャレだけど退屈かも…と思いながらも、2,500円だったら諦めも付くと考えて購入した。
Chris Botti in Boston [Blu-ray] [Import]
結果、いい意味で裏切られたよ、これ。
まず、曲の構成が多彩。 落ち着いたオーケストラあり、ギターやドラムでのアップテンポの曲もあり、ボーカル曲も多い。 トランペットが前面に出すぎないので、初心者でも飽きずに聴ける。 さらに、ゲストが豪華。 さりげにヨーヨー・マやスティーブン・タイラーが出てくるもんなぁ。
買ってから感じたのは、映像の力は偉大だということ。 特に親しみのないジャンルのときは、演奏している姿が見えるのと見えないので、没入感が全然違う。 トランペット奏者のクリス・ボッティはイケメンなので、うちのカミさんにも好評。
スピーカーで聴いてもいいけど、7.1chなので以前買ったSONYのヘッドホン(疑似5.1ch)で聴くとさらに世界に入り込める。 夜中に聞いても近所迷惑にならないし。
再生環境はPS3 --[光デジタル]--> MDR-DS7000(音声)と、PS3 --[HDMI]--> テレビ。 …と、音楽環境を整えたのに、AppleTVもDCT-3も出てこない話だったのでした。
2012-01-23 (月)
■ CGIで動かすRubyのバージョンをrbenvで指定する
レンタルサーバ(今はさくらのVPS)でRuby+CGI/FastCGI経由でtDiaryを動かすとき、これまではOSパッケージ管理でインストールしたRuby(バージョンがちょっと古い)か、手動でコンパイルしたRuby(バージョンアップが面倒)を使っていた。 でも、時代はrvmから最近はrbenvということで、rbenv + Apache + FastCGI/CGI環境で動かせるようにした。
rbenv のインストール
これは公式サイトの説明どおり。普通に作業ユーザの$HOMEにインストールしちゃった。 ruby-buildを使ったrubyのインストールも説明省略。
FastCGIのインストール
これもrbenvを有効にして、gemでfcgiをインストールするだけ。 Ubuntuの場合は、libfcgi-devモジュールをaptitudeでインストールしておくこと。
Apacheがrbenvを実行できるようにする
公式サイトに書いてあるように、rbenvを使うには環境変数PATHにrbenvのインストール先を追加する必要がある。
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
Apacheの場合は、envvarsというファイルに環境変数を書いておくと、httpdプロセスがその環境変数を読んでくれる。 以下のように設定した。
$ sudo vim /etc/apache2/envvars export PATH=/home/machu/.rbenv/bin:$PATH $ sudo /etc/init.d/apache2 restart
shebangの書き換え
CGI/FastCGI起動時にrbenv管理のrubyを使うようにshebangを書き換える。
#!/home/machu/.rbenv/shims/ruby
これで、CGI環境でもrbenvのRubyが使える。バージョンアップへの追従が楽になるかな。

Before...
■ chobi_e [Redcarpetが使っているMarkdownライブラリであるSundownに以前はGithub Flavoredな..]
■ まちゅ [なるほど。まだベースを作った段階なのですね。 Sundown(MarkdownのC実装)のRubyインタフェースが..]
■ hsbt [>chobi_e さん おー、勉強になります。]