今月の頭にお客さんに収めたサーバ機のハードディスクが1週間で壊れたので、急遽ディスクのリプレースに行ってきました。今回のシステムは Linux の Software RAID で 2 本のディスクを使用して RAID1 を組んでいたのでデータ自体は無事だったのですが、手を離れたと思った瞬間のトラブルは心臓に悪いですね。
めったに行わない作業なので、自分用にメモ。
今月の頭にお客さんに収めたサーバ機のハードディスクが1週間で壊れたので、急遽ディスクのリプレースに行ってきました。今回のシステムは Linux の Software RAID で 2 本のディスクを使用して RAID1 を組んでいたのでデータ自体は無事だったのですが、手を離れたと思った瞬間のトラブルは心臓に悪いですね。
めったに行わない作業なので、自分用にメモ。
2006年頃に Rails 1.2 で作成したアプリケーションを Rails 2.3 にアップグレードしています。
プログラムの移行自体は1週間ほどで完了したのですが、テストをしていてタイムゾーン関連の問題に遭遇しました。
データベースに有効期限を表すフィールドがあるのですが、1時間前から1時間後まで有効なレコードを作成して、現在が有効期間内かどうかを調べるテストが失敗したので問題に気がつきました。
Rails 2.x ではタイムゾーンが導入されたのは知っていたので、下のように設定を行っていました。
config.time_zone = 'Tokyo' config.active_record.default_timezone = 'Tokyo'
しかし、ログを見ていると JST と UTC とタイムゾーンが混ざっているようだったので、単純なアプリを作成して調べてみました。すると、以下のような結果に
c = Sample.find(:first) >> c[:created_at] => Mon, 24 Aug 2009 17:09:49 +0000 >> c.created_at => Tue, 25 Aug 2009 02:09:49 JST +09:00 >> c[:created_at].class => DateTime >> c.created_at.class => ActiveSupport::TimeWithZone
同じフィールドでも [] メソッドでデータを取得するのと、フィールド名を指定して取得するので、クラスもタイムゾーンも異なるんですね。ちょっとビックリしました。
どこかにタイムゾーンを意識しないコードがあって、この2つを混同してしまってるんだろうな。
調べるのはメンドクサイな。
JNSAの主催するPKI day 2009に参加してきました。
「政府機関及び金融機関のSSLサーバ暗号設定に関する調査結果について」という講演で興味深い調査結果が発表されていました。
https でサービスを提供している政府系や金融系のWebサーバーに関して、「サポートしている暗号アルゴリズム」と「実際に使用される暗号アルゴリズム」を調査したとの事ですが、ちょっと驚く結果になっていました。
曰く、調査したWebサーバのうち7割以上が新しいアルゴリズムである AES256-SHA をサポートしていますが、XP 上の IE7 では9割弱のサーバに対して比較的古くて問題の見つかっている RC4-MD5 で接続してしまうそうです。Firefox では AES256-SHA が最も多く、Vista の IE7 では AES128-SHA が最も多い結果となっていました。(Vistaでの結果も謎で AES256 が有効でも AES128 を優先して使う。)
前に書いたWordPressでXCacheを有効にするについて、「記事の通りにやったのに動かない!」と HiGash.Netの中の人に怒られたので、書きもれていた管理ページの表示方法について簡単にまとめます。
「動かない」と言われた時は「後で書いておくよ」と軽い気持ちで答えてしまっていましたが、よく考えると XCache の管理ページなんてインストールした時に表示させただけで、その後はすぐに munin での監視を始めてしまったので、あまり記憶に残っていません。nginx 側で BASIC 認証を設定していたのが原因だったかで、うまく動かなくて苦労した記憶はあるのですが。(munin の設定については後述)
前に書いた記事で php.ini の設定を載せましたが、管理者の設定が抜けていました。
[xcache.admin] xcache.admin.auth = On xcache.admin.user = "admin" ; xcache.admin.pass = md5($your_password) xcache.admin.pass = "d41d8cd98f00b204e9800998ecf8427e"
パスワードは MD5 でハッシュを計算しておく必要があります。
コードとしては下のような簡単なものですが、このURLでハッシュを計算するものを作ってみました。
<!-- http://blog.bluegold.me/pass.php?password=XXXX XXX の部分にパスワードを入力します --> xcache.admin.pass = "<?php echo md5($REQUEST["password"]); ?>"