How to shutdown GServer gracefully?

Ruby の標準添付ライブラリに gserver というのがあって、これを用いれば頗る簡単に TCP サーバを書くことが出来、こりゃいいね、って思いながら使ってみたのですけれども、サーバの停止の手続きについてちょっと悩むことがありました。

いざサーバの停止を行おうとするとき、まだ接続中のクライアントが居たらば、その終了を待ってから、サーバは停止してほしいのは誰しも考える所です(「優雅なシャットダウン」 “Graceful shutdown” )。GServer クラスのインタフェースとしては #shutdown メソッドが、それらしいことを行うはずなのですが、実際はそう上手くは問屋が卸しませんでした。

The Carton bundles a carton

先日書きました Carton そのもののインストールについて、それ自身が依存するモジュールが多すぎて大変、という内容の記事でしたが、そのつぶやきを Carton 作者の @miyagawa 氏が拾って下さり、じぶんの不明を正して下さいました。

carton bundle を実行してバンドルされた(モジュールのソースが集められた) vendor ディレクトリの中には、 carton コマンド(スクリプト)が同梱されます! vendor/bin ディレクトリを覗いてみて下さい。

Install Carton without Carton?

ちょっと前に Carton もバージョン 1.0 がリリースとなり、 plenv や cpanm らを組み合わせた Perl の環境構築は、ひと昔前のそれと比べてずいぶん簡単になりました。

昔話をするつもりはないのですが、大量のモジュールを使ったプロダクトをデプロイするときなど、 perl Makefile.PL; make; make install の定型文をそれはもう腱鞘炎になるほどタイプし続けては、それだけで半日つぶす事もままあったりもしました。このコマンド・セットをタイプする大会があったなら、じぶんはおそらく上位に入賞する事でしょう。

I hope that there is an alternative

Carton を使った Perl モジュールのインストール時に、困ったことがまたあったので、記しておきたいと思います。概要を先に述べますと、 Makefile.PL 実行時にオプションを渡したいのだけれども、現在の Carton では渡せないので、代替手段があればそれを使う、なければ… 残念。ということです。

バッド・ノウハウという言い方は好ましく思わないのですが、時間的・発生場所いずれにも局所的な問題をワークアラウンド(その場凌ぎ的)に回避するアイデアをひとくちにバッド・ノウハウと言うのならば、ほかにいい言い方も無いので観念するとして、またひとつ、バッド・ノウハウを披露することになるかと思います。

build AtomicParsley on CentOS 5

AtomicParsley は MPEG-4 メディア・ファイルのメタ情報を編集するためのツール。一般的認知度を気にして誤解を恐れず大雑把に言えば、 mp3 ファイルにアーティスト情報やタイトルなどを記す ID3 タグにあたるそれを、 MPEG-4 ファイルに対して編集できるというもの。別な言い方をすると、 iTunes で取り込んだ AAC フォーマットのオーディオ・ファイルに、「アーティスト」とか「タイトル」とか、 iTunes 上で編集できる項目を編集するツールです(ちなみに mp4 ビデオ・ファイルでも編集できます)。

そして、それは iTunes 上からは編集できない項目も、編集できます。じぶんは「リリース日」を編集したくて、──たぶんそれはニッチな要求なのでしょう、それを実現するためには AtomicParsley 以外のツールを見つけることができませんでした。

これをちょっと古い OS である CentOS 5 の上でビルドする、そのときのメモを記そうと思います。 Mac OS X 用にならば、バイナリがダウンロードできるので、そちらを持って来て任意の場所にコピーすればおわりです。

Hello Octopress - Build Ruby 2.0 on Mac OS X 10.8

Github 上に公開しているじぶんのプロジェクトについてのメモやノートをブログにして書いていこうと思い立ち、流行の Octpress に手を出すことにしました。その際、ちょっとつまづいたところがあったので、記録しておくことにします。