SVX日記
2005-03-03(Thu) 愚行、変更、調光、成功
1ヶ月近く前、このSVX日記にnamazuによる検索窓を装備した頃のハナシであるが、気がつくと2004年8月の日記データファイルが破損してしまっていた。200408.td2(本文ファイル)のサイズが0に、200408.tdc(ツッコミファイル)がヘッダ行だけになっていたのだ。壊れ方からしてオイラの操作ミスの可能性は低そうである。レファラスパムの対象が2004年の8月のエントリに集中していた事実があるし、もしかすると高負荷時にクラッシュしたのかもしれん。
幸運なことにサーバ側のキャッシュのおかげで、データが消失した部分の日記にもアクセスできた。しかし、日記本文の修正やツッコミをした瞬間にヘンなコトになるのは目に見えているし、現状でsqueeze.rbにより検索用HTMLを取り出す作業もできなくなっているので、いずれにせよ復旧は必要だ。とりあえず壊れたのが判明した時点で、ブラウザで消失部分の日記にアクセス、2004年8月分の日記はHTMLの状態で保存しておいた。今日はそれをモトに、td2とtdcファイルを手動で逆生成するのである。
手動といっても、全部手動でやると死ぬので、Rubyスクリプトを使って概ね整形する。必要のないHTMLタグをバシバシと切り落とし、ヘッダを逆生成し、IMGタグをtdiary形式のタグ形式に戻す。ある程度td2形式っぽくなったらsqueeze.rbでHTMLとして抽出。以前のHTMLとの間でdiffを取り、差分の手動修正、HTML抽出……を繰り返す。ハナシがややこしいが、通常はAからBとC群が生成されるとして、Aが消失したので、BをモトにAを再構築し、再構築したAから以前のC群が生成されるようにAの修正を繰り返すのである。ここでAはtd2、Bはブラウザで保存したHTML、Cはsqueeze.rbで生成したHTML群である。Ah, what a 不毛な作業 it is。
結局2時間以上かけて、ツッコミファイルのtdcを含めて復旧。改めて、全ての日付のHTMLをsqueeze.rbで生成し直し、mknmzでインデックスを付け直した。これによりsqueeze.rbの中途半端な改造により、2005年2月分の検索インデックスに本日のリンク元の内容が含まれてしまっていた問題も解決した。うーん、スッキリじゃ。
いまさら語るまでもないことだがバックアップは重要である。ウチのサーバはソフトウェアRAIDにより、ミラーリングまで施しているが、こういう時には役に立たない。こんな時にはpdumpfsというバックアップスクリプトが便利である。
このpdumpfsはnamazuの作者が作ったRubyスクリプトで、ハードリンクを利用した差分バックアップを行うという特徴を持つモノ。細かい理論はオフィシャルサイトで確認して欲しいが、早い話、フルバックアップと同じ操作性と、差分バックアップと同じサーバ負荷という利点を併せ持つ、目からウロコのバックアップシステムである。UNIX系の/etcのバックアップなんかにも最適である。
今回は作業前に~svx以下を丸ごとバックアップして復旧作業に臨んだが、作業後の2度目のバックアップの速いこと。グレートである。そのうち、あちこちのディレクトリにコレを仕掛けようと思っている。できれば、外付けUSB-HDDにバックアップするように設定し、ついでにそのUSB-HDDの電源も自動でON/OFFするようにしたら面白いかもしれない。
で、話は替わって、今度は調光器の方に取り掛かる。回路を全部見直し、ダイオードの方向や生き死にも全部チェック。AC100Vに接続し、電灯を調光させている状態で、制御側の交流電圧をテスターで計測してみたりもする。やはり、ほとんど中間電圧が出ない。抵抗器を絶妙にイジって中間電圧を出そうとすると、電灯が不安定に点滅する状態になる。むぎゅぎゅぎゅ〜。
再び、秋月の回路図とニラメっこ……よく見るとトライアックって、ダイアックにナナメに線を付加した回路図記号だよなぁ……もう一本、線が増えたらテトリアック? なんちて……ナナメ……ハッ?! まさか、トライアックって、極性があるのかッ?!
確かにトライアックにはT1, T2, Gと書いてあるけど、T1, T2に極性があるなんて考えてもみなかった。Gに与えるトリガにより開閉する扉のイメージだったけど、厳密に言うと「弁」のイメージだったのか。むむ〜ん。いままであちこちでトライアックについて見聞きしてきたつもりだったけど、まったく気づかなかったな。確かにNとPからトライアック内部の構造について、トランジスタの例を参考に考えれば当たり前だろうに……げしょげしょ。
すかさず結線を逆にした結果……ちゃんと動いた。なめらかに光量を調節できる。はぁ、よかった。とりあえず完成。ちゃんと説明書を読んで、プリント基板上に作っていればこんなミスはなかったのだろうが、オイラが中途半端に回路を理解したつもりになり、ナメてかかっていたので落とし穴にハマったようだ。しかし、配線が逆になっていてもそれなりの動きをするとは意外だった。理由はいまいち理解できんが、まぁいいや。