| @Mac/iPhone

Magic Trackpad、Appleの新しい黒歴史入りプロダクトかと思っていましたが、Lionで使うとなかなかいいですね。

| @雑談

昨夜、吉野家の牛丼を食べた。狂牛病騒動があってからは怖くて吉野家とか松屋の牛丼はかたくなに食べないようにしていた。しかし昨夜は暑かったしむしゃくしゃしていたし、なにより牛丼270円キャンペーン中だったので大盛つゆ抜き玉子を頼んで食べてしまった。

アルバイト先の隣の隣に吉野家があったので、15分休憩のときに一杯、30分休憩のときにまた一杯と、学生時代は吉野家の牛丼を常食していた。常食というか、愛していた。吉野家と愛し合っていた。

俺は吉野家の牛丼はつゆ抜きが一番うまいと思っている。つゆだくはご飯がべちゃべちゃになってダメだ。何も考えずに「つゆだくで」とか言ってるやつを見かけると虫唾が走る。お前、つゆだくって言いたいだけちゃうんかと。

牛丼に生卵をつけないやつも信じられない。吉野家の牛丼は関東風の塩辛い醤油をたらした生卵を牛肉の上にかけることで始めて完成する。なのにつゆだくに七味やら紅ショウガやらを盛大にぶっかけて食べている連中を見かけると反吐が出る。ただのものを全部トッピングしてやろうという貧乏人根性が丸見えだ。

吉野家での最も甘美なコマンドはアフターだ。吉野家に通い詰めていた俺も、アフターコマンドを聞いたのはこれまで一度しかない。あるとき吉野家で並つゆ抜き玉子をかき込んでいると、長髪小太りのテレビ番組制作会社社員のような男が入ってきた。牛丼を頼む際、注文の最後に「アフター並」と男は言った。アフターってなんだよ、後からキャバ嬢でも来てアフターしちゃうのか? と俺は悩んだが、アフターとは食後に牛丼を持ち帰るということであった。なんと甘美なコマンドだろうと俺は思った。今にして思えばUNIXの哲学が反映されているような気がしないでもない。男はスーパープログラマーだったのかもしれない。

とまぁ、こんな感じで、土曜の夜に博多駅で感傷に浸りながら牛丼を食べた。こんなことができるのは嫁がいない一人の夜だけだ。今の俺はなんと不自由なんだろう。一筋の涙が頬を伝った。

というわけで6月に結婚しました。金ないのに結婚してやっていけるか心配です。ご祝儀寄越せとか言わないので福岡にお立ち寄りの際はもつ鍋でもおごってください。

| @技術/プログラミング

JekyllはLiquidというRubyのテンプレートエンジンを採用してるんですが、Liquid内でLiquidの文法をエスケープする方法が分からず大変苦しんでおりました。Jekyllの公式のDocument呼んでもXML出力時とかCGI出力時にコンテンツをエスケープする方法は書いてあるのに、Liquidテンプレート自体をエスケープする方法が書いてなく、大変不満でした。しかしその方法が分かったのでお知らせいたします。元ネタはスタックオーバーフロー。

例えば {{ "{% this " %}}} と表示させたかったらこうやります。

{{ "{% this " %}}}}

ちょっとトリッキーですね。

Pygmentsと組み合わせて使うことも可能ですが、いちいち {{ "{% highlight " %}}} のなかでコメントアウト処理をしてあげないといけないません。面倒くさいですね。

| @技術/プログラミング

Jekyllを使いだしてから気がつくと一年経ってました。いろいろ便利に使えており気に入っております。

PygmentでコードをシンタックスハイライトしたりLSIで関連記事表示したりと結構手を入れてはいたんだけど、いわゆる世間の一般のブログにあるようなカテゴリ一覧表示機能と、カテゴリごとの記事アーカイブ機能がなくて、それを若干不便に思っておりました。

ググってみたところ、プログラマー向けなブログツールなだけあっていろんな方法が出てきました。以下そのまとめ。

カテゴリ一覧

JekyllのLiquid (テンプレート言語) には {{ "{{ sites.categories " }}}} みたいタグがあるんだけど、こいつが意図したとおりに動かない。普通のRuby使いの感覚からすると site.categories ってカテゴリを沢山持った配列になってそうな気がするんだけどこれが違う。

<ul>
{{ "{{ for category in sites.categories " }}}}
  <li>{{ "{{ category.name " }}}}</li>
{{ "{{ endfor " }}}}
</ul>

↑みたいな感じのコード書くと何も表示されない。 site.categoires はHashで、{ "カテゴリ名" => カテゴリ内の記事一覧 } みたいな構造になってる。LiquidでHashのキーを取りだす方法が分からず、どうにもこうにもいかなかったので他の人が作っているプラグインを利用することにした。

↑のファイルを JEKYLL_ROOT/_plugins にコピーする。(_plugins というディレクトリがなければ作る)。そんでテンプレートを変更する。↑のやつを↓みたいにする。

<ul>
{{ "{{ for category in sites.iterable.categories " }}}}
  <li>{{ "{{ category.name " }}}}</li>
{{ "{{ endfor " }}}}
</ul>

2行目のところが変更点です。これでカテゴリ一覧表示ができるようになる。

カテゴリごとの記事一覧

カテゴリごとの記事一覧を表示する方法だけど、こういうのを発見した。

ここの generate_categories.rb を使えばカテゴリ内の記事一覧を作成できる。こんな感じ。

これもさっきのと同じように、JEKYLL_ROOT/_plugins にファイルをコピーする。そんでLiquidテンプレートを書き換えるんだけど詳細はプラグイン内の記事をご確認くだしあ。

| @技術/プログラミング

Ruby 1.9.2-p290 がリリースされたので入れてみた。RVMで。

$ rvm install 1.9.2 --with-readline-dir=/usr/local #homebrewで入れたreadlineのパスを指定
$ rvm migrate ruby-1.9.2-p180 ruby-1.9.2-p290

migrate を実行したところ、警告が出ながらも次のような感じでマイグレーションは完了した。

$ rvm migrate ruby-1.9.2-p180 ruby-1.9.2-p290
Are you sure you wish to MOVE gems from ruby-1.9.2-p180 to ruby-1.9.2-p290?
This will overwrite existing gems in ruby-1.9.2-p290 and remove them from ruby-1.9.2-p180 (Y/n): Y
Moving gemsets...
Moving ruby-1.9.2-p180 to ruby-1.9.2-p290
Making gemset ruby-1.9.2-p290 pristine.
ERROR: Error running 'rvm gemset pristine' under ,
please read /usr/local/rvm/log//gemset.pristine.log
Moving ruby-1.9.2-p180@global to ruby-1.9.2-p290@global
Making gemset ruby-1.9.2-p290@global pristine.
ERROR: Error running 'rvm gemset pristine' under ,
please read /usr/local/rvm/log//gemset.pristine.log
Do you wish to move over aliases? (Y/n): Y
Do you wish to move over wrappers? (Y/n): Y
Do you also wish to completely remove ruby-1.9.2-p180 (inc. archive)? (Y/n): Y
Successfully migrated ruby-1.9.2-p180 to ruby-1.9.2-p290

一見、問題なく移行できたように思えるのだけど、この後rakeなどexecutableなgemをコマンドラインから実行すると以下のようなエラーが出る。

zsh: /usr/local/rvm/gems/ruby-1.9.2-p290/bin/rake: bad interpreter: /usr/local/rvm/rubies/ruby-1.9.2-p180/bin/ruby: no such file or directory
rake aborted!
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)
/usr/local/rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:2377:in `raw_load_rakefile'
(See full trace by running task with --trace)

shebangに書いてあるrubyのパスがmigrate時に削除した ruby-1.9.2-p180 なのが問題なわけだ。

正しい対処方法かどうかは自信がないが、Rubyでサクサクッとshebangを書き換えるやつを書いた。以下みたいなやつ。

こいつを実行してやるとshebangが正しく書き換わったexecutableなgemができる。万が一のためにbackupファイルを作るのでこれをzshで rm *_backup とかしてやるといいと思います。

と思ったけど、結局↑のRubyの入れ方はまずいみたいで、jekyllとかCライブラリに依存する系のgemが動かなくなってしまったので rvm implode してRVMをまるっと入れ替えた(20回くらいRubyをインストールしなおした)。次の記事にでも書きます…。

| @雑談

2011年7月の阿蘇

IT企業は都会に多いけど、田舎にもあればいいのに、と思う。というのは帰省していて阿蘇が大変過ごしやすかったから。福岡では僕のようなおっさんが夜寝て朝起きただけで顔や頭がアブラべっちょりになるけど、阿蘇ではそのような悲劇は起こらない。涼しいから。日中も過ごしやすく、エアコンなしで快適に積ん読や2chまとめサイト巡回がはかどる。節電とかバカみたいだった。

| @雑談

E-19PL was mine

6年前に買ったゴルフ2を手放した。

所有していたゴルフ2はE-19PLという型番で、GTIというラインだった。時の流れと重力と金のなさには抗えず、福岡に引っ越したことや経済面で維持が難しくなって、四度目の車検を前に手放した。査定はゼロ円だったので無料で買い取り業者に引き取ってもらった。

大学を出て実家に帰り、病気が治って一度目の退院をした後にばあちゃんに買ってもらったのがこのゴルフ2だった。その後病気が再発したため、G-CSF注射による骨痛や倦怠感に耐えながらゴルフを運転して通院したり、病気が治ってからは天気が良いとばあちゃんを連れて久住をドライブしたり、就職してからは毎日の通勤のほか九州各地の映画館に映画を見に行ったりと、20代の大半の時間はゴルフと一緒だった。

希少な3ドアのゴルフ2 GTIをあっけなく手放したことは後ろめたくもある。買い取り業者はスクラップにはしないと言っていたけど、こんな感じで手放すくらいなら誰か欲しい人を探して直接譲れば良かったと思う。

最後一年は洗車すら満足にしてあげられなかったが、本当に楽しかった。ありがとう。