daily reflection

毎日の振り返り

2012-01-15

セマフォ

セマフォについて理解が弱かったので纏めてみた。

『new Semaphore(0)』
http://d.hatena.ne.jp/hsyd/20120113/1326480032

セマフォデッドロック検知はどのように行うべきか、というテーマが残った。生成したセマフォを完全に管理すればそれぞれを監視することで検知できるだろうけど、一般的にどうやるものなんだろう。

サーバ移行

NYNOCがこれまでのVPSサービスを止めてしまう為、これを契機に日本のVPSサービスに乗り換え。

面白そうなPaaSが増えているので、本当にVPSを使うべきなのか結構迷った。拙作のツールはRuby+Rails+MySQLが使えれば移行できそうだし、デプロイするインフラを整える時間を考えると、多少環境が違ってもアジャストできるのではないか、とも考えていた。

ドメインを持っていることもあり、またPaaSに移行できないであろう過去の資産を簡単に捨てるのも良くないので、またVPSを使うという選択にした。

gccすら入ってない状態で環境を構築するのはかなり久々。嵌ったのは以下の点。愚痴ではなく備忘録です。

Ruby-1.8.7(64bit)のインストール時にコンパイルエラー

math.cに「defined」のtypoがあり、その場で修正。

Passengerのインストール時にlibopenssl-rubyが見つからない

Ubuntu(Maverick)のlibopenssl-rubyのパッケージを見つけることができず。universeにあるよ、という情報があったけど、apt-get installする際になぜかlibrubyに代わってしまう。

結局パッケージの問題ではなく、Rubyのext/openssl下をコンパイルしてインストールすることでうまくいった。

MySQL-5.5のコンパイル時のCMake

MySQLのインストールなんて本当に久しぶりと思って始めてみたら、configureがCMakeに代わっていた。指定できるオプションにあまり差異は無いものの、合わせるのが少し面倒だった。

MySQL-5.5のmy.cnf

InnoDBが標準になったはずなのに(違う?)、my.cnf内の設定はInnoDBの部分がコメントアウトされていて、起動に失敗。

MySQL-5.5のbasedirが認識できない

起動スクリプトにbasedirを書いても、スクリプト内でmy_print_defaultsの実行結果をパースしてbasedirを上書きしている。

その上、my_print_defaultsがパス上にある全てのmy.cnfを参照するらしく、basedirのエントリが複数表示されてしまい、その結果意図したbasedirが設定されない。不要なmy.cnfを削除した。

MySQLの照合順序設定

case sensitiveにしたかったのでCMake実行時に「utf8_generic_cs」を指定したら、mysql_install_db実行時(mysqldの初回起動時かも)にそんな設定がない、と。設定がバイナリに埋まってしまっていたようなので、utf8_binを指定して再コンパイル。

移行作業が一通り終わり、DNSの設定を変更後、NYNOC解約。