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からトライアック内部の構造について、トランジスタの例を参考に考えれば当たり前だろうに……げしょげしょ。
すかさず結線を逆にした結果……ちゃんと動いた。なめらかに光量を調節できる。はぁ、よかった。とりあえず完成。ちゃんと説明書を読んで、プリント基板上に作っていればこんなミスはなかったのだろうが、オイラが中途半端に回路を理解したつもりになり、ナメてかかっていたので落とし穴にハマったようだ。しかし、配線が逆になっていてもそれなりの動きをするとは意外だった。理由はいまいち理解できんが、まぁいいや。
2008-03-03(Mon) フォロれんことに気づく
……という記述を発見。あわてて、データシートを引っくり返すと、確かに「+2倍または-1倍の低利得でも安定動作します」と書いてある。こんな記述、すっかり読み飛ばしておったわい。「+2倍または-1倍の低利得」というと非常に回りくどいが、要するに、非反転増幅回路では2倍以上にすれ、反転増幅回路では1倍未満にするな、ということだ。ボルテージフォロアはオペアンプ自身にはキビしい動作条件である、などという記述をどこかで読んだ気がするが、LM7171はその性能の反面、やや気難しいオペアンプらしい。
昨日、散々ハンダ付けした後に知る、驚愕の事実。でもまぁ、ピンアサインが同じで、もう少しスルーレートの低めの、フツーのオペアンプに付け替えれば捨てることはないかな。そういうオペアンプを手配しよう。どうも、LF411なんて、よさそうだ。
2012-03-03(Sat) ひさびさに映画を観る
借りた本を返しに、鶴舞の図書館へ。ついでに、大須に寄って、部品を購入。先日、HT7733Aによる昇圧回路で失敗したこともあり、インダクタ等を漁りつつも、結局、評価のために秋月のDIP化基板も購入してしまう。うーむ。
そのまま名古屋の109シネマへ。今度、職場で映画を観に行くことになったのだが、そこで上映時間の制限で観られない「ベルセルク」がどうしても観たくなってきてしまい、いまさらながら、ひとりで観に行くことに。
映画はかなりよかった。ストーリーは、既にテレビでアニメ化されたことのある「黄金時代」の前半1/3なのだが、やはり魅力的なのはこのパートということか。オイラ自身「黄金時代」までは漫画を買い揃えてまで読んだが、その後、テンションが下がって、売ってしまったような覚えがある。
長編の映画化では、よく「既に漫画を読んだ人向け」として、説明不足の傾向にマイナス評価する輩がいるが、これだけ多様化が進んだ昨今、初見の層をターゲットに置くなんてのは、むしろナンセンスだ。ざっくり切っても「おいしい」シーンが伝われば成功であることは、太古の「劇場版マクロス」で証明済みである。極端な例では「最終兵器彼女」なんて、漫画原作の時点で「説明不足」を演出の一部としているし。
漫画というメディアでは得られない体験ができれば、別に追体験で上等ではないか。コンサートは、CDを聴いてから行くものだ。むしろ「読んでから来いよ」という態度は十分に「あり」ではないか。監督がどのエピソードを重要視し、それをどのように映像として表現したか、それが楽しめればいいんじゃないか。つーか、原作ファンは、それだけを確認しに劇場に赴き、そして、大抵、裏切られて帰るんでしょ?:-)
2024-03-03(Sun) pack/unpackをどうにかする
昨日、pack/unpackって記述方法としてはどうなのよ、と書いてから、なんだか考え始めてしまった。要するに、以下の書き方が全然ピンとこないのでちっとも覚えられない、って話である。
[65, 66, 67].pack('c*')
=> ABC
'ABC'.unpack('c*')
=> [65, 66, 67]
'%c%c%c' % [65, 66, 67]
=> ABC
「%」演算子を使っているのがミソだ。「文字列化する」「引数は配列」というイメージが自然に湧く。じゃ、逆に「配列化する」演算子はなんだ? 苦し紛れだが、こんなのはどうだ。こんな文法はないので動かないが。
'%c%c%c' << 'ABC' # 動きません
=> [65, 66, 67]
:c_ << 'ABC'
=> [65, 66, 67]
class Symbol
def <<(packed)
packed.unpack(self.to_s.sub(/_$/, '*'))
end
end
:m_ << 'QUJDREU='
=> ["ABCDE"]
'%m' % ['ABCDE'] # 動きません
=> "QUJDREU=\n"
class String
alias :perc :%
def %(arg)
self =~ /^:(.+)/ ? arg.pack($1.sub(/_$/, '*')) : perc(arg)
end
end
':m_' % ['ABCDE']
=> "QUJDREU=\n"
['ABCDE'].pack('m*')
=> "QUJDREU=\n"
'QUJDREU='.unpack('m*')[0]
=> "ABCDE"