トップ  

まちゅダイアリー


2012-02-18 (土)

日記の記法をGFM (Git Flavored Markdown) に変えた

時代はMarkdownらしいので、これまでWikiスタイルで書いてきたこの日記も GFM スタイルに変えることにした。GFMはMarkdownをGitHubがちょっとアレンジしたものらしい。日記を書くときとGitHubを使うときで記法が違うのも紛らわしいので、これを機にGFMで書けるようになろう。

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
本日のツッコミ(全4件) [ツッコミを入れる]

Before...

chobi_e [Redcarpetが使っているMarkdownライブラリであるSundownに以前はGithub Flavoredな..]

まちゅ [なるほど。まだベースを作った段階なのですね。 Sundown(MarkdownのC実装)のRubyインタフェースが..]

hsbt [>chobi_e さん おー、勉強になります。]


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も出てこない話だったのでした。

Tags: Life
本日のツッコミ(全1件) [ツッコミを入れる]

kenz [おなじくホームオーディオに悩んだ結果ATOMで省エネなPCを一台組むのが一番という結論に至りました]


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が使える。バージョンアップへの追従が楽になるかな。