SVX日記
2005-04-01(Fri) 空気をキレイにするPC
化石プロッタプリンタのUSB対応化工作の途中ではあるが、先日購入したFU-R51CH-Sという空気清浄機を眺めていたら、フト思いついてしまった。この空気清浄機はPCケースとしてピッタリなのではないか? という事実にである。
前面のカバーを外すと現れる吸気部分、つまりエアフィルタの面積が、以前に秋葉のジャンク専門ショップで購入した、\2,000のマザーボードを配置するのにピッタリのサイズなのである。この機種が使用するエアフィルタは表面が非常に硬質で、下穴を空けてタッピングをするのに十分な強度を持っている。空気清浄機として考えれば、フィルタにキズをつけるのは決してホメられた行為ではないだろうが、マザーを固定するネジの長さを考えればフィルタの厚みの中程までネジ穴を掘るだけで十分である。やっちゃえ!!
どーよ、コレッ!! 基板の左端をフィルタの左端に位置すれば、前面カバーを少し切り欠くだけでコネクタを引き出すコトができるだろう。これは都合がいい。偶然だが、空気清浄機本体とキーボード、マウスの色調のマッチングも最高である。そしてなんといっても好都合なのが、CPUファンが不要だということ。ちょっと試した限りだが、前面カバーにある縦に長いスリットを通過する風の量は、かなりの風速に達するようだ。空気清浄機を最弱のひとつ上あたりのモードに設定すれば、少し大きめのヒートシンクを装着するだけで、なんとかPenIIIの500MHz程度のCPUなら冷やせる程度の風量が確保できそうなのである。そして、なんといっても相手は最新の家電製品だ。発生する騒音には細心の注意を払って設計してあるから、そんじょそこらのPCマニアの静穏対策の2ランクは上をいっている静かさ。こりゃ最高だぞ!!
簡単に空気清浄機内部の回路を確認したトコロ、当然ながら都合よく12Vと5Vが用意されているワケもなく、マザーに供給する電源については別途追加する必要がありそうだ。しかし、NLX電源を設置する程度のスペースは、背面の空気吹き出し口の奥に確保されているのを確認済み。ラッキーなコトに、ココは大型ファンのすぐ脇だから、NLX電源本体のファンは外装ごと外しても構わないだろう。NLX電源はそれ自体が小型のため、電源本体のファンの風切り音が高めで気になるんだよね。
残る問題はボードの高さ方向に余裕がないこと。PCIボードは例えハーフハイトでも、装着不可。前面のカバーが閉まらなくなってしまうからだ。しかし、最近のマザーはオンボードでいろいろな機能が付いているし、かなりのトコロまでUSBでカバーできるので問題ないだろう。だいたいリビングに置くPCに拡張性を求めるコト自体が間違っている。一番の問題はメモリモジュールだったが、さすがにメモリ無しでは使い物にならないので、これは前面のカバーにあるスリットから少し外部にハミ出させるように工夫した。少しスリットを削るコトになったが、比較的キレイに加工できているのではないだろうか。
フロッピーやCDROMは無し。HDDは2.5インチのモノをマザーの脇部分に設置する予定だ。現在SVXに積んであるものの、あまり使っていないUSB接続の無線LANモジュール(紫色のヤツ)も、ちょうどHDDの脇に設置できそうではある。さて、久々の大工作になりそうな予感。これほどリビングに違和感なく溶け込むPCも珍しいぞぉ。うまく完成したら、秋葉のどこかのPCショップにゲテモノPCとして展示してもらえるかもしれない。明日からプロッタの工作と並列して製作作業に入る予定である。乞う、ご期待ッ!!
2005-04-02(Sat) コードを書きつつ、PICのUSART機能の翻訳(受信の巻)
えー、今日明日とカミさんがお出かけなので、丸二日ねっとりとプロッタを改造するのである。実は昨日、ウソネタをシコシコと書きつつも、めでたくPIC単体でのパラレル通信および印字には成功し「イ号作戦」を完遂していたのであった。ちなみに、一昨日の時点でハマっていた原因は「オイラSTROBEは正論理だもんね」という理由であった。実はシャープはMZ-1500の時代あたりまで神をも恐れぬ「MZ仕様」というプリンタを生産し続けていて、単純に言うとコレは「セントロニクス仕様」とSTROBEの意味が逆の通信仕様なのである。セントロでは「STROBEをH→Lと変化したらD0〜D7読んでね」という意味なのだが「MZ仕様ではL→Hと変化したらD0〜D7読んでね」なのである。このX1C用のプロッタは、MZ-700時代から生産されているプロッタの兄弟なのであるから、ちょっと考えればスグ気づきそうなものであるが、オイラはこの事実を知りつつも、接続先がX1だからという理由でしばらくタコっていたのであった。X1Cのプリンタポートは清く正しくセントロ仕様であるが、きっとプロッタの接続ポートには専用に論理反転回路が組まれていたのであろう。まーそれはともかく、PICが発するSTOROBEの論理を反転したらあっさり動いたというコトである。
で、次はシリアル通信を実装するという「ロ号作戦」に突入するのであるが、ついでにかなり前に予告しつつもすっぽかしていたPICのUSARTの機能の受信部の翻訳を進めながらコードを書くコトにするのである。オイラが先日苦心の末にあみだしたバルーンヘルプ法(訳文中の「。」にマウスカーソルを当てると原文が表示される)は翻訳中や開発中に自分が参照するぶんにも便利なので、今日は更新しながらの作業である。ひとつライブ感覚でヨロシクシェケナベィベェ。
12.2.2 USART非同期通信受信ポート_
USART受信ポートのブロックダイアグラムを図12-8に示します。RB1/RX/DTピンで受信された信号は、データ復号器にかけられます。データ復号器は実質的にはボーレートの16倍の高速シフト演算器で、実際にはメインの受信シリアルシフト演算はビットレートかFOSCで稼動します。
非同期モードの場合、受信動作を行うにはCRENビット(RCSTA<4>)をセットする必要があります。
受信ポートの主役は受信(シリアル)シフトレジスタ(RSR)です。ストップビットが検出されると、RSR内の受信データはRCREGレジスタに移動(RCREGに空きがある場合)され、移動が完了すると、RCIFビット(PIR1<5>)がセットされます。この時に割り込みを発生させるか否かは、ビットRCIE(PIE1<5>)で設定できます。なお、RCIFビットは読み出し専用ですが、RCREGレジスタが読み出されて空になると自動的にクリアされます。いうなればRCREGレジスタはダブルバッファリングされたレジスタです(深さ2のFIFOバッファと言えます)。2バイトのデータをRCREGバッファに転送、溜めておくことができ、3バイト目のデータもRSRレジスタで受信開始することができます。ただし、3バイト目のデータのストップビットを検出した時点でRCREGレジスタがデータで一杯だった場合、オーバランエラーが発生しOERRビット(RCSTA<1>)がセット、RSR内のデータは失われてしまいます。RCREGレジスタは、FIFOバッファ内の2バイトを取り出すため、連続2回読み出すことができます。
オーバランエラーのOERRビットはユーザがクリアする必要があり、これは受信回路をリセット(CRENをクリアしセット)することで実行できます。OERRビットが一旦セットされると、RSRレジスタからRCREGレジスタへの移動は停止してしまうので、OERRビットをクリアすることは重要です。
一方で、ストップビットがクリア(LOW)で検出された場合、フレーミングエラーのFERRビット(RCSTA(<2>)がセットされます。FERRビットとパリティビットは受信データと同じようにバファリングされるので、RCREGを読み出すとRX9DとFRRは次の値に更新されます。したがって、直前のRX9DとFRRの情報を失わないよう、RCREGレジスタ読み出す前に、RCSTAレジスタの内容を確認することが重要です。
非同期通信モードに設定する場合は、以下の順序で行います。
1. RB2/TX/CKピンとRB1/RX/DTピンを同期/非同期通信用の送受信ピンとして設定するため、TRISB<1>ビットをセット、TRISB<2>ビットをクリアします。
2. 望むボーレートが得られるようにSPBRGレジスタを設定します。高速ボーレートモードを利用する場合は、BRGHビットもセットします(12.1節 USARTボーレートジェネレータ(BRG)参照)。
3. SYNCビットをクリアし、SPENビットをセットすることで、非同期通信モードに設定します。
4. 割り込みを利用する場合は、RCIEビットをセットします。
5. パリティ付き9ビット送信を利用する場合、RX9ビットをセットします。
6. CRENビットをセットし受信許可の状態にします。
7. 受信が完了するとRCIFビットがセットされます。RCIEビットをセットしていたなら割り込みも発生します。
8. RCSTAビットを読んでパリティビットを取得し(有効にした場合)、受信中のエラーの有無を判定します。
9. RCREGレジスタから、8ビットの受信データを取得します。
10. 何らかのエラーが発生した場合、CRENビットをクリアしてエラーをクリアします。
……などと、マニュアルはガシガシと訳せても、コードはサッパリ動いてくれないのが世の常である。翻訳は質が低くてもある程度は役立つが、コードは動かなければまったく役に立たない。翻訳の質には上には上があるが、コードは動けばその上はあまりない。このあたり、文系と理系のソリが合わない理由なのかもしれない。
散々、悩みに悩んだのでアッサリと原因を書いてしまうのはもったいない気もするのだが、もったいぶっていても仕方ないのでアッサリ書く。ひとつの原因はメモリバンクの切り替え忘れであった。SPBRGとTXSTAにアクセスするにはバンク1に切り替える必要があるのだ。概ねPICに実装された特殊機能というのは、一度コードが書きあがってしまえば流用が利くのだが、一発目が動くまでが大変なのだ。ガッチリとマニュアルを訳し、その機能について深く知れば知るほど、うっかりタコまでの距離は離れてゆくのである……と、これくらいいーわけすれば、ダサミスをごまかせるだろ。ふぅ。
あまりにもコードでハマってたので、気分転換にハンダ付け(?)だ。先日サボッて接続してなかった、RX/TXの配線を済ませて……コテが温まったついでに、USB変換基板の抵抗なんかも付けておくか……って、ご本尊のFT232BMのみ付けないのも不自然だな……付けちゃうか!? 今度は細いコテを温めて0.8mmピッチの足をハンダ付け。作業が2度目のせいか、非常にアッサリと付いてしまった。意外とお上手じゃんオイラ。こんなにアッサリ付くなら配布中の変換基板にサービスでFT232BMのみ実装コースを設けようかしらん。
とかなんとかで、ようやくオシロレベルながら、PICのRB2/TX/CKポートからシリアル信号が出るようになりましたゼ!! で、USB変換基板経由でPCに接続し、Rubyで簡易通信スクリプト組んだら、画面に'A'がゾロゾロと出てきましたわ。FT232BMバンザイ!! USB変換基板バンザイ!!
つーわけで、なりゆきでPIC→PCへのUSB通信が成功してしまったので「ロ号作戦」を完了せずして、一気に「ハ号作戦」に差し掛かってしまったコトになるのだが、PC→PIC側の通信ができないったら、できないったら、できないったらない。目標は単なるエコーバック(PCからPICへ送ったデータを送り返す動作)なのだが、受信してるのかしてないのか、まったくの沈黙なのである。
2005-04-03(Sun) わーい、プロッタがプロッた!!
がばっ!! と、起き抜けに工作開始である。実は夢の中である事実に気づいてしまったのだ。コレはもしかすると祝氏からのお告げだったのであろうか? それは「PICのクロックの精度は大丈夫なのかいな?」というコトである。
オイラは新たにPICで開発を始める際、手始めにてきとーなポートを利用してLEDをチカチカさせるコードを動かすトコロから始める。その中でチカチカする間隔を作り出すのが、オイラがPICでプログラムを始めた頃にあみだした「秘伝の0.1秒×n-αループルーチン」だ。このルーチンは実に簡単にキリのいい時間を作り出すスグれモノなのであるが、今回nに10を指定して1秒間隔でチカチカしたにもかかわらず、微妙に速かった……いや、微妙でなく明らかに速かったのを思い出したのだ。デジタル時計の秒きざみとLEDの点滅が、ズンズンとズレていくのである。
PICにはオシレータ内蔵のタイプが多く存在し、この機能の利用を選択すると外部に水晶を取り付ける必要がなくなる。PICの種類によって選択できるクロック速度は異なるが、今回のPIC16F648Aは4MHzの内蔵オシレータ搭載だ。これを使うと、水晶が取り付けられるハズだった2つのピンはその呪縛から解き放たれ、I/Oポートとして使えるようになるのだ。特別な理由がない限り、これを利用しないテはないのである。
しかしながら問題もある。内蔵オシレータはいわゆるRC発信回路(抵抗とコンデンサで組まれた発信回路)で構成されており、果てしなく正確な時を刻む水晶に比べて精度がイマイチという特性があるのである。そして、どうやら今回用いるPIC16F648Aはかなり速めの発振を行う個体らしいのである。
「クロックが速ければ、処理が速くてええやん、ナチュラルオーバークロックやん」と思えばさにあらず。今回はPIC内蔵のシリアル通信(USART)機能を用いるのであるから、ボーレートまで速くなってしまうのは困りモノなのである。マニュアルの推奨設定値によれば「CPU動作クロック4MHzで通信速度9600bpsを望む場合、高速モード(BRGH=1)でSPBRGに25を設定すべし」とあったのだが、そもそも4MHzが正確でないならばこの値も変わってくるのである。あな恐ろしいや。そーいや昨日、PIC→PCへのUSB経由の通信が成功したと書いたものの、思い返せばデータがときどき化けて受信されていたのもコレが原因っぽい。
理由がわかったトコロで対処である。「秘伝の0.1秒×n-αループルーチン」を利用し、4MHzのCPUがキッカリと10秒間隔でLED点滅を繰り返すコードを書き込み、その時間をストップウォッチで計測、実際のCPUクロックを逆算してしまえばいいのである。
実測秒数 | サイクル数 | 理論値で20秒の実測秒数 |
---|---|---|
18.77s | x1 | 18.77s |
56.18s | x3 | 18.727s |
112.39s | x6 | 18.732s |
168.46s | x9 | 18.718s |
281.23s | x15 | 18.749s |
281.15s | x15 | 18.743s |
20.00s / 18.74s = 1.0672倍
4MHz * 1.0672倍 = 4.2688MHz
BaudRate = Fosc / (16 * (x + 1))
x = ((Fosc / BaudRate) / 16) - 1
x = 26.79 ≒ 27
というワケで、SPBRGには推奨値の25ではなく、27を利用しなければならないコトが判明した。ちなみに、PICの仕様書を見ると、電源電圧5Vで通常の温度条件下では誤差は±2%と書いてある。±2%でも上記の校正作業は行うに越したコトはないと思うが、今回の+7%って……このPIC不良なんじゃねーか!?
で、対策コードを書き込んで動かしてみるが、まだ動かん……いいかげんメゲる寸前である。オシロで出力波形をモニタしながら……って、波形が出てねーじゃん!! そーか、Rubyのputcがバファリングしてしまっているんだ。おーちゃくしないで1バイトずつ出しなさいッ!! 「serial.sync = 1」を指定してどうだッ!!
うわー、懐かしいカチャカチャ感だ。このプロッタの動きや音!! かなり面白いのでゼヒこのムービーで体感していただきたい。ちょっと画質が悪いが、その雰囲気は伝わるハズだ。というワケで、これにて「ハ号作戦」の完遂である。今回のI/Fの完成は祝氏からのお告げのおかげである(と信じて疑わない)。命日から一日遅れてしまいはしたが、このI/Fの完成を祝氏に捧げさせていただく。
さて、完成したらパッケージングである。バラしは極力避けようと思っていたが、必要に迫られて、すっかりバラすことになってしまった。例の供締め予定箇所に基板をあてがってみたトコロ、意外と余裕がないことが判明したのだ。基板の端は既存のコンデンサと干渉するため、ギジギジとニッパでカジり取ってなんとかなったが、高さ方向はUSBのBコネクタの高さギリギリであり、現在のように基板をピンヘッダで結合する方式では裏ブタが閉まりそうもない感じである。どうやらピンヘッダとPICを直ハンダしないと解決が難しそうだ。
2005-04-04(Mon) うへぇ、プロッタがバケらった……
とりあえず決定せねばならないのは、電源をどうするかである。USBバスパワーでの動作は期待薄だが、だからといってACアダプタ専用というのもつまらない。また、FT232BMの電源はバスパワーで決まりだとしても、PICの電源もバスパワーから取るのか、もしくはプリンタ側と同じくACアダプタから取るのかという問題もある。
実は以前の経験だが、PICのI/Oポートに電圧を加えただけで、電源ラインに電圧を加えなくても動作を開始してしまったコトがあった。よって、電源をどちらから取るかというのは非常に重要であり、またUSBとACアダプタどちらかが先に接続された時点で、PICが不安定ながら動作を開始してしまうことが予測されるため、今回はファーム側でウォッチドッグタイマを使用するコトも必要であると考えられる。
ゲゲッ!! なんじゃこりゃ!? それでも適当に化け文字をバラまいたあとキチンと停止したので、異常動作ではないっぽい。単に送信データが化けただけだ。こんな時のためにレスポンスコードをPCに返すように作ってあったんだよね……あかん、レスポンスコードも化けとるわ。
2005-04-05(Tue) PICのウォッチドッグタイマ機能の翻訳、実装ッ!!
まず、昨日の文字化けの原因である。結論からいうと4.3MHz近かったPICの動作クロックが本来の4MHzに戻ったために、補正してあったボーレートが再び狂ったのが原因であった。再び一昨日の「秘伝の0.1秒×n-αループルーチン」法によって動作クロックの実測を行ったところ、5:02.86、5:02.93と、4MHzより1%弱遅いという結果が得られたのだ。7%近く速かった状態から回路に施した変更といえば、0.1uFのパスコンを追加したくらいなのだが、これが思いのほか効いたようだ。USBシリアル変換基板側にはタンマリとパスコンが載ってるので、省略してもイイやと思っていたのだが、やはりコンデンサを「至近に配置」するというのは重要な要素なのだろう。パスコンの役割の大きさを痛感した次第である。ちなみにSPBRGの設定値は、補正値の27から推奨値の25に戻した。まっとーである、至極、まっとーである。PICちゃん、不良扱いしてゴメンね。
次は電源の話。気持ち的にはUSBバスパワーで動かしたいが、やっぱり電源容量が足りないのである。プリンタは公証4Wであるから、4W / 5V = 800mA、余裕をみたらUSBの2ポート分の1000mA程度の電流容量は欲しい。でもって、まさにそーゆーケーブルが実際に売られているのだ。現在の自分の環境では使えないのだが、だからといって非対応にするのはもったいない。この際であるから、両対応にするのが吉というモノであろう。
で、切り替えスイッチで対応するかといえばノンノンである。この状況に以前にハマりの教訓を生かさなくてどうする。多くのDCジャックは3極になっており、そのうち2極はジャックを抜いた状態で導通するのだ。これをうまく利用すれば、ジャックを抜いた状態ではバスパワー、挿した状態ならACアダプタという自動切換えが可能になるのである。
しかしちょっとまて、一般のACアダプタのジャックは内側がプラス、外側がマイナスである。フツーはマイナスが切り替わることを利用して、こんな具合に使うのだろうと思うが、おいらはこんな具合に使いたいのだ。困る。これじゃ、ひッじょーに困る。
結局、プラスが切り替わるように、ジャックの極性を逆に使うことで対応することにした。もちろんACアダプタ側も、既存のプラグをチョン切り、極性を逆に新しくプラグを付け直す。アダプタの表記と実際の配線が逆になるので、誤って挿すとひッじょーに危険だが、既にウチには同じプラグで電圧が違うアダプタがひしめいているので、プリンタ専用のアダプタとして割り切るコトにする。もちろん、ちゃんと表記も正しておくつもりだが。
あとは、バスパワーとACアダプタの給電順、ポートへの漏れ電流やノイズなど、どんな状態でPICが起動したにせよ、数秒後には正常動作に復帰できるように、ウォッチドッグタイマによるリセット機能を組み込むコトにした。現状、プリンタが沈黙すると、つられてPICもロックアップしてしまうという問題(手抜き)があるのだが、これも同時に解決することができる。
14.7 ウオッチドッグタイマ(WDT)_
ウオッチドッグタイマは、外付けの部品が一切不要の完全自立の内蔵RCオシレータです。このRCオシレータはCLKINピンのRCオシレータとは独立しているため、例えばSLEEP命令の実行によりOSC1とOSC2ピンのクロックが停止しても、WDTの動作は続くようになってます。PICの動作中にWDTがタイムアウトすると、リセットがかかります。PICがスリープ中の場合にWDTがタイムアウトした場合は、PICはスリープ状態から復帰します(訳注: SLEEPの次の命令から実行を開始する)。なお、WDTはコンフィグのWDTEビットをクリアに設定することで、完全に無効にできます(節14.1 Configuration Bits参照)。
14.7.1 WDTのタイムアウト_
通常、WDTのタイムアウトまでの時間は18msです(プリスケーラ不使用の場合)。タイムアウトまでの時間は温度や電源電圧などによって変動します(表17-7 DC Specifications参照)。長めのタイムアウトが必要ならば、コード内でOPTIONレジスタを自ら操作し、ポストスケーラをWDTに割り当て、その分周率を1:128まで上げることで、2.3秒程度まで伸ばすこともできます。
WDTのタイムアウトによるリセット発生を防ぐには、CLRWDTまたはSLEEP命令の実行によって、WDTとポストスケーラ(WDTに割り当てた場合)をクリアすることで行います(訳注: メインループ内で周期的にクリアするのが一般的)。
なお、WDTがタイムアウトすると、STATUSレジスタのTOビットがクリアされます(訳注: TOビットは読み出し専用で、起動時とCLRWDTまたはSLEEP命令の実行時にセットされる)。
14.7.2 WDT使用上の注意_
最悪のケース(最低電圧、最高温度、WDTプリスケーラが最大設定)では、WDTがタイムアウトするまでに5〜6秒かかる場合もあることを考慮に入れておくべきです。
訳注: ポストスケーラ、プリスケーラが(原文でも)混在しているが、減速する歯車が前に位置しようが後ろに位置しようが結局は同じように、実質は同じと考えて差し支えない。
その反対側。以前にUSBプラグの差込口用に穴を空けようとして、空ける位置を間違えた穴があるのだが、それを動作確認用のLEDの取り付け穴として流用してみた。プリンタの正面から見るとUSBプラグのちょうど裏にあたり、動作確認用として非常にセンスのない実装位置といわざるを得ないが、なにせ間違えた穴であるから仕方ない。今後は間違えるにしても、もう少し熟慮した末にうまく間違えるよう努力しよう。
何気なく基板のアップ。LEDは秋月で買った黄色を使ってみたが、フツーなら制限抵抗として470Ωあたりをハサむのが定番であるトコロを、今回はバスパワー動作を考慮して電流が1/3で済むように1.5kΩをハサんでみた。室内なら十分に光って見えるのでヨシとする。なお、点灯タイミングはパラレルポートの非BUSY確認前から、BUSY確認後まで。要するにプリンタ側の処理を待っている期間に点灯するようにした。
動かす。今度は調子よく印字が行われる。文字化けもない。と、ここでさっそくLEDが面白い反応を示した。印刷を始めて最初の一瞬だけは点灯間隔が短く、それ以降は1文字印刷ごとにLEDが比較的長く点灯するのである。どうやらこのプロッタは十数バイト程度ながら、データキュー(スプーリングエリア)を持っているようだ。たぶん、1チップマイコンである6805内のメモリで実現しているのであろう。劇的に遅いプリンタのクセに、なかなかニクい作りである。
ウォッチドッグタイマ関係のコードを入れたので、プリンタのBUSYをGNDに固定してタイムアウトリセットのテストをしてみた。プリスケーラを1:128に設定したので、印刷データを送るとLEDが点灯しっぱなしになり……2.3秒後に……2.3秒後に……おいッ!! 2.3秒経ってもリセットされんやんけ。なんでや。あいやぁ!! コンフィグのWDTEビット立てるの忘れとったわ。立てて書き込みなおして……よっしゃ!! リセットされるようになったわッ!! 完璧じゃッ!!
つーわけで、一応の完成コードである。これは別にプロッタプリンタ専用でなく、一般的なUSB→パラレル変換I/Fであるから、パラレルポートの付いていないノートPCなどに、USB経由でセントロニクス仕様のプリンタを接続する時に有用であろう。Windowsならばプリンタをシリアルポートに接続したモノとして扱えばよい。例によってGPLとする。GPLだから気をつけろッ!! エレコムッ!!
で、今後の課題はふたつ。ウォッチドッグタイマを実装してイキナリではあるが、2.3秒という短いタイムアウト時間では、一番右から一番左までペンが改行動作をするだけでギリギリだというコト。そもそもプリンタをグラフィックモードで使った場合、縦に長い線を描いたら一撃でタイムアウトするのは目に見えているからこれは問題だ。できればタイムアウトまで10秒くらいは欲しい。
もうひとつの問題は、紙が切れた場合にゴムローラにガンガンと印字してしまうコト。こーゆータイプのプリンタなのであるから、ペーパエンプティくらいは当然のように検知して、ハード的に動作を止めてほしいくらいのモノだが、ないものねだりをしても仕方ない。しかしながら、このプリンタを自宅サーバにつないで24時間稼動で各種情報を印刷するように使うとなると大問題になる。そうなのだ、実はオイラはそーゆー用途に使おうと考えていたのだ。家に誰もいない間に紙が切れ、ゴムローラにガシガシと印刷されたら大変なダメージである。やはり、なんらかの検知機構を追加する必要だ。
2005-04-06(Wed) アダプタにRFIDタグを付ける
職場でWindowsPCを使う場合は、大概ボリュームをミュートして使うコトと思う。しかし音がまったく出ないようにしてしまうと、先日のEAGLEの問題のように軽微なエラーが発生しても知ることができないという問題がある(ダイアログを出さないというEAGLEのインタフェイスに文句をつける向きもあろうが、それは置いておく)。
コンソールアプリの世界には「ビジュアルベル(ビジブルベル)」という概念がある。音が出せなかったり、ユーザが音を聴けない場合(騒音環境だったり耳が不自由だったり)に、ビープ音が鳴る代わりに、画面全体を一瞬フラッシュすることでユーザに知らせるという機能だ。Windowsでこの機能を探したところ「ユーザ補助補助のオプション−サウンド」の中にその機能を発見することができた。
ところがこれが使えねぇのなんの。マジメに補助が必要なユーザを助ける気があるのかさえ疑わしい実装状況である。点滅させる部分を「アクティブタイトルバー」に設定すると、妙に長い間アクティブウィンドウがインアクティブのような表示になって不自然極まりないし、かといって「アクティブウィンドウ」または「デスクトップ」を選択すると、点滅が一瞬過ぎるのだ。
この「点滅が一瞬過ぎる」という表示がこれまた問題で、点滅時間がディスプレイの垂直同期の時間よりも短いときた。つまり、画面全体が点滅しないのである。オイラの職場のPCだと概ね縦の長さの1/6くらいしか点滅しない。最悪なのは1/6くらいが帰線期間にかかってしまうタイミングだと、その場合は画面がまったく点滅しないのである。いったい、どーせぇちゅーねん!?
OSにフェード効果やスムーズスクロールを実装する前に、画面のリフレッシュレートくらい考慮して欲しいもんだ。ちょっと調べたらDirectXにはちゃんとVSYNCを取る機能があるらしいではないか。Windowsの場合、相手にするディスプレイのリフレッシュレートは千差万別だろうが、ゲームみたいにスピードに敏感なわけではないんだから、どんな環境だろうが正しく点滅させるように調整すべきであろう。別に点滅の速度をユーザに調整させるように実装したっていいのだし。特にこの機能は、主に身障者の方が使う機能なんだから、とりわけ慎重に実装してもよさそうなもんだ。頼むよ、もぅ。
さて、ココんトコ飛ばしすぎなので、今日はアレコレ思索しながら雑作業を行う。既存のACアダプタのプラグをチョン切り、極性を逆に新しくプラグを付け直す……が、気を抜いていたら、本能的に赤コードを中心極にハンダ付けし直していた。恐ろしいコトにテスタで測ってから気づいたのだが、元通りに付け直してどうするよ……アホかオレ。本能的に作業できるまでに成長したのは喜ぶべきだが、既に老化によるボケが始まっているのかもしれない。最近はモノ忘れもヒドいし……みなさん、この日記のネタが過去に書いたネタと断りもなくカブり始めたら、オイラに病院にいくようにメールで勧めてほしい。
というワケで、今日のオイラはボケ老人モードらしいので、今晩の工作はおとなしくコマゴマとした環境改善に留めておこう。テプラでポリポリとACアダプタの仕様を印刷し、プラグの近くにタグとして貼る。これぞRFIDタグ(露骨に分別できるIDタグ)どわッ!! こーすればコードがワシワシとカラんでいる場合でも、迷いなく目的のプラグを引きズリだすコトができるのだ。ついでに、極性を逆にしたアダプタ本体の表記も正しておこう。電源だけに、まちがえたら一発アウトだからね。
チマチマと作業をしていたら、突然イイコトを思いついた。マウスのロータリーエンコーダに使われているフォトインタラプタを、例のプリンタの紙切れ検知のために流用してしまってはどうかというコトだ。そーいや、かなり前に臓器提供したマウスがそのへんに転がっているハズな……あれ? どこ? でも、捨ててないからあるハズなんだけどな……チューわけで、また明日。
2005-04-07(Thu) 鼠たちの沈黙 〜 The Silence of the Mice
昨日の思い付きを実行に移す……のだが、フォトインタラプタのドナーとなる予定の、以前にホイールの回転検知部品を臓器提供してしまったマウスが見つからない。よく考えたら件のマウスは、とある事情で職場のPCを返す際に、オマケに付けて送ってしまっていたコトを思い出した。
んが、ウチにはマウスなんぞゴロゴロと転がっているのである。思いつくだけで7匹はいたハズだから、探せば5匹は見つかる(?)ハズだ。ガサガサと部屋を漁る……ガサガサ……その結果、もう使わないであろうマウス3匹の捕獲に成功し、その中の一匹をイケニエにするコトにした。
左から、HITACHIの液晶一体型デスクトップに付属の「FID-661-108」、SONYの省スペースデスクトップに付属の「175929011」、リビングPC用にキーボードとセットで購入したLogicoolの「M-RK45」である。順に皮を剥いで(?)、使いやすそうなフォトインタラプタをゲットしてしまうコトにしよう。
まずは「175929011」。1998年7月31日にオイラが初めて購入したIBM互換機、SONYのVAIO-COMPO-M330V5に標準添付だったマウスである。可も不可もなくというマウスで比較的長く使っていたが、1999年3月14日にワイヤレスのホイール付き高級マウス(現在も職場で活躍中)を購入してお蔵入りとなったアイテムだ。マウス裏のネジ1本を外したら簡単にバラせたが、フォトインタラプタは赤外発光部と赤外受光部が別パーツになっており、流用するには向かなそう感じ。
次に「M-RK45」。ブランドであるLogicoolのワイヤレスマウスだが、これがサッパリ使えなかった。個体差だとは思うが、同時に購入したワイヤレスキーボード共々、電波の到達距離が10cmに満たないのだ。まさにスーパードアホブラザーズといえよう。思い出し怒りしながら、マウス裏のシール下のネジ2本を外してバラす。しかしながらLogicoolだけあって、各部の造りは非常にヨイ。ホイールの構造も上記の高級マウスと同様の造りで凝っている。しかしながら、やはりフォトインタラプタは赤外発光部と赤外受光部が別パーツになっており、流用するには向かなそう感じ。
最後は「FID-661-108」。2002年10月8日にジャンクとして1万円で購入した液晶一体デスクトップ、HITACHIのFLORA-310-DL3に付いていたマウスである。購入時、こんなキッタナイマウスは要らんと言ったのに、マウスばかりかキッタナイキーボードまで一緒に持ち帰らされるコトになった記憶がある。しかしモノは悪くなく、ストレスなく使えるアイテムである。マウス裏のネジ1本を外したら簡単にバラせたが、基板もコンパクトにまとまっており、なかなか無駄のない設計ではないか。しかも、この機種のフォトインタラプタは赤外発光部と赤外受光部がケースにまとまって収まっており、流用に向いているッ!! イケニエに決定である。
2005-04-08(Fri) フォトインタラプタの特性を調査する
無事、フォトインタラプタをサルベージしたのはよいが、まだその特性がよくわかっていない。ブレッドボードを使ってあれこれと抵抗を組み合わせて、TTLレベルの信号が得られるように工夫する。データシートによるとPICのI/OポートのH/Lの入力特性はTTLと同じ0.8Vと2.0V。つまり電圧が、高くても0.8V未満になればLowと判断され、低くても2.0V以上になればHighと判断されるワケだから、0.8V〜2.0Vの範囲を超えて電圧が上下するように、フォトインタラプタにくっつける抵抗を選定してやればいい。
まずは赤外線LEDの制限抵抗を決めよう。赤外線LEDとはいっても、それほど普通のLEDと特性が異なるワケではない。いつものように470Ωをカマせ、あれこれとテスターで計測してみると……電源電圧が5.07Vで、LEDの降下電圧が1.14V、流れた電流は8.23mAであった。ホントはもう少し省エネにしたいトコロだが、とりあえずこれで進めよう。
今度はフォトトランジスタ側。フォトインタラプタ側のプルダウン抵抗には数十kΩを与えるのが一般的のようだ。手元には、2.2k、3.3k、4.7k、10k、47kあたりがあるので、順に試していく。大きい抵抗を与えたほうが紙が存在しない時の電圧が高くなり、紙切れの発見が確実になるが、紙が存在したときの電圧も高くなりがちなので、紙切れの誤判定の確率も上がってしまう。プロッタの用紙は紙の厚さが薄いので、フォトインタラプタを遮っても、しっかりと安定して電圧が下がらない感じだ。
2005-04-09(Sat) カミの切れ目がペンの切れ目
フォトインタラプタの理論的な使い方が判明したところで、今度は物理的な使い方を考える。このフォトインタラプタはもともとマウス用であるから、開口部を上に向けてプリント基板に実装するようにできている。ところが、紙の有無を検出するためには横に向けて実装しなければならない。オマケにプリンタ内部には実装できないので、給紙部付近のケースの外側に取り付ける必要がある。ユーザから見るとプリンタの裏側とはいえ外装部分であるから、あんまり見た目バッドでも困る。ちゅーわけで……
……こんな感じに仕上げてみた。赤が5V、橙が赤外LEDの戻り、黄がフォトトランジスタの戻りである。100円ショップの瞬間接着剤でリード線を止め、上から更にコテコテと塗りつけて固定する。乾いたらハンダ付け。赤いコードの被覆を少し削り取り、横から端子を割り込ませるトコロに苦労したが、思ったよりシッカリと比較的キレイに仕上がったと思うがどうだろう。
昼過ぎからは近所の公園へ。桜がキレイに咲いていてイイ感じである。しかし、いくらなんでもアチコチ桜を植えすぎだろ? 公園だけならともかく、そこいらじゅう桜だらけではないか。桜はキレイだし、色もイイし、散り際も美しく、オイラも大好きではあるが、どこに行っても桜ではちょっと醒める。杉の花粉症ではないが、あまりムチャなコトをすると、なにかしらシッペ返しを食うかもしれんぞ。今となっては沖縄にハブ退治のタメのマングースを放したコトは反省材料であるが、こんなにアホみたいに桜だらけにしているのも似たようなモンである。目先の都合に走りすぎてしまう……日本人って進歩しないねぇ。
そのまま市の図書館へ。ラッキーなコトに以前から読みたかった星新一の「白い服の男」を発見。オマケにやっぱり以前から目を付けていた「CodeReading」まで発見。これからは仕事でLinuxのカーネルを読んだりしなくてはならなくなりそうなので、なにかオイラを開眼させてくれるような内容だとイイな。
家に帰って、フォトインタラプタを取り付けるための基板側の回路をデザインする。毎度のコトながら、気が付くと基板の上は部品でギッチリになっている。ちょうどイイところにPORT-Aの4番が空いていたので助かったが、ホントは省電力のタメに赤外LEDをON/OFFできるようにしたかったんだよな。もうひとつポートが空いていれば簡単に実現できただろうから、やっぱりPORT-Bの3番をGND固定してしまったのはイタかった。STBラインや動作確認用のLEDと点灯タイミングを兼用にしてしまう手も考えたが、フォトトランジスタの反応速度が追いつくのか不安だし、そのためにオシロで確認するのもめんどーである。灯けっぱなしでいーコトにしてしまおう。
さて、組み込みが完了し、テストコードを書いて動かしてみたら、PICがちゃんと紙の有無を認識してくれない。なんでじゃ? PORT-Aの4番への入力電圧を確認するが、バラックの状態のときと同じく、紙の有無によって0.7〜2.1Vを行ったりきたりしている……が、ヒステリシス(行きと帰りでHigh/Lowの遷移電圧が違う)っぽい挙動も示している……って、あ゛〜!! PORT-AのInput TypeはSchmitt Triggerなのかよ!! TTLなのはPORT-Bの方なのね……。
Schmitt TriggerなPORT-Aの入力特性は0.2Vddと0.8Vddらしい。Vddが5Vであるから、1Vと4Vが閾値になるワケね。これは誤算だ……やべぇ、抵抗を取り替えるだけで、そんなうまく電圧が出せるようになるとは思えねぇし……
で、フォトインタラプタを取り付け予定位置に両面テープで仮止めしてみた。にゃぉ〜ん。ちゃんと用紙が切れたら印字が止まるようになったぞ。完璧じゃん!! 例によってファイル一式を置いておこう。
さて、明日からもう少しプリンタを実践的に使ってみて、ファームに不具合がないコトを確認、最終的にはPICを基板に直ハンダしてケースへ組み込み、めでたく完成とする予定である。いぇ〜い。
2005-04-10(Sun) ギザギザながら図面、出るッ!!
今日はモノスゲェひさしぶりにSVXに乗って、カミさんの実家へ。ずーっと、駐車場に放置状態だったのだが……なんか車が黄色っぽいぞ!? これはまさかスギ花粉なのか!? ウォッシャーでフロントガラスを洗浄するも、細かいプツプツがひっついていて取れない。近所のガソリンスタンドで水洗いしても取れない。結局、ウェスで一通り拭くまで取れやしなかった。昨日の桜の話ではないが、スギ植えスギだっつーの。
さて、ファームに隠れた不具合を発見するために、少しプロッタを実践的に使ってみる。とりあえず、図面を書かせてみるのである。プロッタのマニュアルには、BASICのLPRINTを使ったサンプルプログラムが載っているので、そのままRubyに落として実行する。
ところがデータを受け取っているにもかかわらず、プリンタはウンともスンとも動かない。PICからのエコーバックも返ってくるし、LEDも点灯しているのに……をわッ!! BASICのLPRINTが「暗黙の改行コード」を出力する仕様であるコトを忘れていた。いま考えるとBASICの文法って奇妙だよなぁ。どうやら、各コマンド末尾の改行コードを読み取った時点で、プリンタはコマンドを解釈し、ヘンなコマンドは無視を決め込むらしい……というわけで、全てのコマンドの末尾に改行コードを追加してリトライ……よしゃ!! 動いたゼッ!!
しかしアレだ。写真からはワカらないと思うが、曲線がかなりギザギザしている。プロッタプリンタはギザギザのないスムーズな斜線や曲線を実現するためのガジェットではなかったのか? まぁ、オイラの場合、プロッタプリンタはカチャカチャとカワイイ印字動作を楽しむためのガジェットだと思っているので、まったく問題だとは思ってないんだけども。フツーの人なら「プロッタでコレはないだろ!!」と怒り出しそうな気もするが(定価4万弱でそれを要求するのも酷だけど)。ま、なんにせよ今回のファイルを置いておこう。
で、突然だが補足。昨日「フォトトランジスタの反応速度が追いつくのか不安だ」などと書いたが、よく考えたらモトはマウスのロータリーエンコーダなんだから、反応速度が遅いワケがないというコトに気づいた。マウスをズイッと動かせば、一瞬で1000回くらいはON/OFFしなければならない部品の反応速度が遅いハズがない。赤外線LEDだってリモコンに使われているのだから、ポチっと一発で100回くらいON/OFFしているハズだ。むぅ、どうしよう。大した電力ではないが、LEDが灯けっぱなしという現在の仕様が気になりだしてしまった。トイレの電気なら迷わず消すオイラだが……一般のプリンタはフォトリフレクタをどうしているのだろうかなぁ。
夜にケーブルテレビで「ガンダムSEED」の総集編「遥かなる暁」を観る。前から少し興味があったものの、さすがに全50話を観通すほどヒマではないし、あまり話のデキがよくないというウワサも聞いていたので、敢えて避けていた。しかし職場の隣の娘がハマり始め、アレコレ話を聞いているうちにオイラもすっかりハマってしまい、再放送の40話〜最終話を観て、総集編の前編「虚空の戦場」を観て、今回の中編「遥かなる暁」まで観るハメになってしまった。
2005-04-11(Mon) TrueLegacyGraphics参上!!
ココんトコ、アレコレとEmacsをイジり回している。いやなにmicroEmacsならX68K時代から使っているし、Windows上で愛用しているエディタもEmacs風キーバインドにしているし、窓使いの憂鬱も常に常駐させていたりするので、いまさらカーソル移動で手がツッたりしているワケではない。少し自分風のカスタマイズを加えている程度……というか、逆にオイラはこれまでTeraTerm(SolarisやCygwin)上でEmacsを使うのは敢えて避けていたのだ。
というのも、職場でプログラムを作るときはSolaris上で行うことが多いので、viに指を慣らしておくコトが必要だったのだ。オイラは「viは使っても心はEmacs」という考えなので、ある程度viを使い慣れた今も、viは非常にうっとおしいエディタだという認識は変わっておらず、この4年間あまり積極的にviのコマンドを覚えてこなかった(今でも'c'さえ使わないし)。しかしながら、それでもその環境に慣れてきてしまったため、気がついたらプライベートでコードを書くときもCygwin上でviを使っていた……うわ、最悪やッ!!
しかし、今後Linuxな仕事をするならば、viを強要される環境からオサラバできるワケだ。そんなら、早いトコ自分の指に合わせた「.emacs」を作っておくべきだし、少しはEmacsLispもカジっておくべきだ。なんといっても、マルチバッファ、マルチウィンドウ、キーボードマクロ、インクリメンタルサーチは強力な味方だし、気に入らなければ自分でマクロを作ってしまえばよいのだ。ヒャッホゥ!!
(global-set-key "\C-h" 'delete-backward-char)
(global-set-key "\C-z" 'scroll-down)
(global-set-key "\M-\C-z" 'scroll-other-window-down)
(global-set-key "\M-g" 'goto-line)
(require 'wb-line-number)
(wb-line-number-toggle)
(setq truncate-partial-width-windows nil)
(require 'redo)
(global-set-key "\C-xu" 'redo)
どーしても、ワンキーでサクサクとバッファ切り替えがしたいのだが、どーやらそーゆー機能はないらしい。んじゃ、作ってしまえ!! ということで、いまさらではあるがLispデビューである。オイラの初めてのLispコードだ。インデントのつけ方さえワカっとらんが、笑うな!!
(global-set-key "\C-j" 'switch-to-last-buffer)
(defun switch-to-last-buffer (arg)
"Switch to last normal buffer"
(interactive "p")
(dolist (b (buffer-list))
(
if(string-match "*" (buffer-name b))
() (setq last-buffer b)
)
)
(switch-to-buffer last-buffer)
)
これだけでもかなり使いやすくなったのだが、emacsを起動するつもりでviを起動してしまったり、emacsって打つのが面倒だからって、emというエイリアスを作ったら、rmと間違えて2回もファイルを消してしまったり……しばらくは指も頭もトッチラかりそうである。
それはそうと、以前に作ったイニシエのグラフィック描画関数ライブラリLegacyGraphicsであるが、なんとなくTkを使ってホントのグラフィックを扱えるようにしてみた。その名もTrueLegacyGraphics。メソッドは以前のLegacyGraphicsと同様のものを用意したので、頭のrequireにTrueを追加するだけで以前のプログラムはそのまま動作する。素晴らしきかなオブジェクト指向、である。
なんとなく、以前のCurse版のLegacyGraphicsにもlineメソッドを追加してみたりしたが、やっぱりグラフィック画面のがイイ。グラフの説得力が圧倒的に違う(あたりまえか……)。思わず嬉しくなって、昔のパソコンのサンプルデモにありがちな絵を出してしまう。ウハウハ。というワケで、ファイル一式を置いておこう。
2005-04-12(Tue) 漢字名野出亜留
いきなりだが、スパムである。スパムといっても迷惑メールのコトでなく、ランチョンミートの方のスパムである。いわゆる、豚のコンビーフだ。このスパムという食べ物、個人的に非常に好みである。コンビーフも好きだが、負けず劣らず好きである。コッテリとマトワリつく油が、非常にノーグッドフォーヘルスな印象を与えるが、ウマいものはウマいんだから仕方ない。油がキモチ悪いという人もいるだろうが、油こそ旨みなのである。オイラにとっては全面に油の混じっている霜降り牛肉の方が、よほど不自然でキモチ悪く感じる。
スパムはアメリカなら比較的安く購入でき、むしろジャンクフード的な扱いを受けているが、日本で買うと非常に高価だ。ホンモノのスパムだと、小さめの缶で500円以上もする。コンビーフなどから類推しても、適正価格は200円以下であるべきだと思うが、あまり売れないからこうなっているのだろう。日本でギネスビールが高いのと同じ理由だ。ぜひスパムも日本の食卓に浸透し、普及価格になっていただきたいモノである。
このスパムは近所のスーパーの安売りで300円で買ってきたモノ。缶の上面には日本語が印刷されていたが、明らかに輸入物であろう。缶の底面には缶を開けるためのツールがハンダ付けされており、このツールを折り取って缶を開けるようになっている。日本ではあまり見ない方式だが、開けるのも楽しい。1/4ほどを、ハムエッグならぬスパムエッグにして食べた。スパムメールはうっとおしいが、食べ物のスパムは非常にウマいぞ。見かけたらゼヒ試してみていただきたい。
スパムをつまみつつ、気がついたら冷蔵庫のビールを切らしていた。オイラはアルコール無しではプログラミングがはかどらないので(佐渡酒造か!?)ちょっとアセったが、先日購入した日本酒があったのでひと安心。なんだかワカランが「花見酒」だそうだ。別に桜の香りがしたりはしなかったが、パッケージの色だけで妙にウキウキした気分になってしまう。オイラ愛用の徳利&猪口と似合うったらないしね。桜と富士は日本人の心だねぇ。廃止にしたり、はやぶさと合併にしたりしちゃイカンよな。
さて、今日のプロッタのコーナー(?)である。やはりプリンタたるモノ、現代を生き抜くためには漢字のひとつも出せねばならない。しかし、当然ながらロートルなプロッタ本体には、漢字を出す機能などあるハズもない。すると当然ながら、ここはひとつ外部から漢字フォントを供給してしまおうと考えるのがその筋の考え方というモノである。
ただ、問題はそのフォントデータだ。現在のPCにはビットマップフォントとアウトラインフォントが搭載されているが、プロッタの印字方式にはどちらの適合性も悪い。ビットマップフォントを使えばキツツキのように点描せざるを得ないし、アウトラインフォントを使えばフチドリしてしまうからインクの使用量が2倍になってしまう。うぐぐぐググ……っと、ググったら、あるじゃん!! 大多数の漢字を含んだストロークフォントデータが!! しかもスンバラシイことに、ライセンスフリーでテキストファイル形式ときた。こりゃ盆と正月が一緒に書き初め用具を持って来たくらいメデたいぞッ!!
抜く手も見せずに変換作業に入る。モトのファイル形式では扱いづらいので、簡易データベースであるGDBMに格納して検索性を向上させつつ、現在のテキストながらバイナリっぽい形式を、より冗長だが読みやすい真のテキスト形式に展開する。
変換が終わったら、ビジュアルにしてみなくてはオモシロくない。こんな時に便利この上ないのが、昨日の自作LegacyGraphicsライブラリである。手前味噌ながら、非常に気軽にビジュアル化できる優れたライブラリだといえよう。今日は気分がいいのでTrueLegacyGraphicsライブラリで表示させてみる。ストロークデータが字に変化する感動的な一瞬であるから、ストロークな「筋」を表示してみた。うむ、マコトにその筋なコトよッ!! 明日はプロッタに出力するためのライブラリを作る予定である。まさにこのプロッタ計画の大詰め、クライマックスどわッ!!
2005-04-13(Wed) 漢字が出て、Gmailが入る
……という間に出力できてしまった。事前にLegacyGraphicsライブラリでシミュレートしていたタメだが、これほど小規模な修正でサックリ動いてしまうとは、やっぱりRubyは無敵である。また、フォントも素晴らしく美しい。文句のつけようのない品質である。これがフリーだなんて、なんか申し訳ないくらいだ。
ちなみに以前にプロッタがカチャカチャと字を書くムービーを公開したが、今回、漢字を出力したみたところ、少し様子が違った。フツーに英数字を書かせた時には、まったく迷いなく機関銃のように字を書くのに、今回のように図形として漢字を書かせると、各頂点でホンの一瞬ペンが停止するような挙動を示すのである。アリテーにいうと、チト遅い。
つまり効率からいうと、漢字やひらがな等の2バイト文字は図形モード、英数字は文字モードで書くという使い分けをするような、カシコいドライバを書くコトが望ましいワケだ。ちなみに、ストロークフォントの分解能は30x32、プリンタの横方向の動作分解能は紙幅で480ステップ、通常の英数字は横40字詰めであるから 480 / 40 = 12 となり、2バイト文字は横24ステップに抑える必要がある。2/3とは、ちょっとイヤな分解能だな……ま、ボチボチ取り組むとしよう。
それはそうと今日は某所から、あの「Gmailアカウント」を入手してしまった。GmailとはGoogleが提供する無料のウェブメールサービスで、Gmailアカウントは既Gmailユーザから紹介を受けないと入手できないというシステムを採っているため、一部では法外な値段までついている垂涎のサービスだ。なんといっても「2Gバイト」という大容量が魅力だし、あの「Google」が「Mailを預かる」と宣言しているサービスであるから、そのサーバの信頼性はとてつもなく高いのであろうし、恐ろしく強力なメール検索機能があるのもうれしい。
実はオイラ、自宅サーバ内にeximというMTAを立ち上げており、それにIMAPとSquirrelMailを組み合わせるコトによって、ほとんどGmailと同じようなウェブメール環境を構築してある。構築してはあるものの、容量はともかく、信頼性と検索機能の強力さ、オマケに以後はシステムの自動バージョンアップまで期待できるとなれば、移行するコトも考慮せざるを得ない。気になるのは、Gmailのスパムフィルタが、現在bsfilterとprocmailによって実現してあるベイジアン式スパムフィルタに比べ、どれくらいの能力かというコトくらいか。
2005-04-14(Thu) Gmailにインポート!!
今日もプロッタをチョコチョコとイジる。昨日、漢字は図形モード出力、英数字は文字モード出力というハイブリッド印刷が望ましいという考えに至ったが、よく考えたら文字モードでプリンタに出力すると、いわゆるイニシエのパイカのような、比較的正方形に近い形状の英数字が印字されてしまうコトに気づいた。つまり、画面上のような「全角と半角」というイメージにはならないのだ。しかも、文字を左から順に印刷しようとすると、図形モードから文字モードへの切り替えの際にペンが毎度ホームポジションに戻ってしまうため、うまくいかない。どうやら、ドライバ側でもペンの位置を把握しつつ、比較的高度な制御を行う必要がありそうである。腹鰭幌晴。
で、次は新しいオモチャであるGmailをイジる。アカウントを取っただけでは使い勝手もナニもないので、使い勝手を試すタメにメールをザクザクと注ぎ込みたいトコロだ。しッかァーしッ!! Gmailにはメールをインポートする仕組みが備わっていないのだ。せっかくのビッグストレージだからこそ、ナンも考えなしに既存のメールを全部ブチ込みたいのに、どーゆーコトよ!! 製造してやるッ!! ……というコトで、現状、サーバ上に載っているUNIX-mbox形式内のメールすべてを、ドカドカとGmailに送りつけるRubyスクリプトをサックリと書いて、インポート作業を行ってみた。
/etc/init.d/exim stop
cp -R /home/athrun /home/kira/backup
MTAを上げる前に、メールディレクトリにある全てのmbox形式ファイルを初期状態にクリアしておく。ゆくゆくはGmailをメインのメールボックスにするつもりではあるが、当面は現サーバでもメールを受ける必要があるため、Gmailに移動してしまったメールと、それ以降に来たメールが混ざらないためのクリア処理である。
cp 99:SPAM.init 00:MAIN
cp 99:SPAM.init 01:ITLINE
:
:
cp 99:SPAM.init 64:PIC
cp 99:SPAM.init 65:SVX
cp 99:SPAM.init 90:IMPORTANT
cp 99:SPAM.init 99:SPAM
/etc/init.d/exim start
で、ここからいよいよGmailへのメールのインポートである……が、最初にインポートするメールを、あえて現在スパムメールフォルダに溜まっている500通のスパムにしてみたい。これで、Gmailのスパムフィルタの選別能力を判定しようというのである。
./import2gmail /home/kira/backup/athrun/mail/99:SPAM smtp.archangel.co.jp athrun@gmail.com athrun@zaft.com exec
最初は、末尾のexecナシでドライラン(表示だけで送信しない)をさせてみよう。ちゃんとメールが一通ずつ認識されるか、メール通数が合っているかを確認できる。OKっぽいならexecをつけて本実行だ。1秒に1通ずつポッコンポッコンとGmailにメールが転送されるぞ。実行ッ!!
おぉッ!? スゲェ!! これはまだ転送途中の状態であるが、500通のスパムのうち、スパムでないと判定されたメールはたった5通程度であった。これがGmailユーザ内でスパム情報を共有している威力なのかッ!? オイラが丹精込めて熟成させたウチのbsfilterによるベイジアン式フィルタに勝るとも劣らない破壊力である。
調子に乗って、今度はスパムでない本番メールを1000通程度(これで半分程度だ)インポートしてみた。フォルダという概念がないってのが、ちょっと使い慣れない感じだが、十分に検索能力が高ければどうということはないということか……って、ぜんぜん検索に引っかからないじゃん!? ……と、思ったが落ち着け、オレ。Googleのような検索エンジンは一度全てのメールをスキャンし、インデックスを形成してからでないと最低限レベルの検索しかできないのだ。明日までは待つべし、待つべし。
You are currently using 30 MB (1%) of your 2093 MB.
今回つくったRubyによるGmailへのインポートスクリプトを置いておく。んが、このmboxという形式、調べるとかなりいー加減な形式らしい。モトがいー加減な形式なら、スクリプトの造りもいー加減である。30行ちょっとでいー加減でないわけがないので、使うときはいー加減な気分で使ってほしい。
……って、あれ? あれれ? 既にインポートするプログラムは存在するのね。しかも、こっちはmbox以外にもいろいろな形式に対応しているではないか。どうやら、見事に車輪の再発明をしてしまったようだ。ま、再発明ほど楽しいことはないんだから、いいんだけども。
2010年6月19日追記: いまさらだがMailDir形式対応版も置いておく。
2005-04-15(Fri) Rubyで添付メール送るライブラリ発掘
今日はセッセセッセと、昨日のインポートスクリプトを利用して、過去のメールをGmailへとインポートする。Web上にもあるケド……とは思ったが、各種メーリングリストの内容も併せてインポートしてみた。検索能力の高さを考えると、いつかMLで見た情報を……って時に重宝するに違いないからだ。
You are currently using 70 MB (3%) of your 2099 MB.
いーかげん、インポートしツカレたのにもかかわらず、いまだGoogleは挑戦的なメッセージを繰り出してくる。たった3%だって……。ちなみに、Gmailの容量は、この4月1日に1Gから2Gに拡張され、それからも徐々に容量は増加しているらしい。すると、ハンパの99MBというのはそれからの増加分であり、今回転送した70MBはその増加分にも満たないというコトか!? Google恐るべし……。
ちなみに、昨日紹介した「Google GMail Loader」であるが、敵を知ろうと(?)サイトを見て回ったトコロ、Windows版のスクリーンショットでちょっと見慣れたアイコンを見てしまった。左上のアイコンはTkを使ってるシルシである。どーやら、Python/Tkで開発されたらしい。なんと、敵はPythonか……にしても、そのサイズはなんだよ。Pythonの処理系を含んでのサイズなのだろうが、3.6Mバイトって……。
一方でLinux版はバイトコンパイルされたPythonのプログラムだが、サイズは一気に縮んで1/10の360kバイト。それでも360kバイトかよ。ちなみにオイラの作ったimport2gmailは641バイト。扱えるファイルの種類やエラー処理に違いはあれど、さらにその1/500以下だ。ま、単純に比較するのはヘンだけども。
さて、それはそうと、メールのインポートが終わったので、次はバックアップストレージとして活用するためのスクリプトの開発である。とりあえず、スクリプトから添付ファイル付きのメールを飛ばす必要があるのだが、Ruby本体に添付のライブラリ集には、大したライブラリが含まれていない。
唯一あるのが、mailread.rbライブラリのMailクラスだが、これはメールを読み出すだけで、メールを送信する機能がなく、net/smtp.rbライブラリのNet.SMTPクラスはメールを送信するだけで、メールの内容を操作する機能がない。添付ファイル付きのメールを飛ばすのに必要なのは、まさにこの間をウマくつなぐクラスなのである。
ところが実はオイラ、かなり以前に職場でテストプログラム用に既にクラスを組んでるんだよね……ゴソゴソ……さんざん探し回ったトコロ、なんとか出てきた。ちょっと昔に組んだヤツだが、手前味噌ながら非常によくできたクラスだと思う。サンプルプログラムと一緒にまとめて置いておく。email.rbライブラリのEmailクラス、それを継承したEncodedEmailクラス、更にそれを継承したAttachedEmailクラスだ。
#!/usr/bin/env ruby
require 'email'
require 'kconv'
#-------------------------------------------------------------------------------
#
# send attached mail
#
mail = AttachedEmail.new
mail.smtpServer = "smtp.provider.co.jp"
mail['To'] = "hoge@gmail.com"
mail['From'] = "hoge@itline.jp"
mail['Subject'] = "■■■■■■■■ 添付メールテスト ■■■■■■■■".mime_encode
block1 = Email.new
block1['Content-Type'] = "Text/Plain; charset=ISO-2022-JP"
block1 << "This is attached mail test."
block1 << ""
block1 << "添付メールもこんなに簡単".tojis
block1 << ""
block1 << "=== Hogeta Hogeo ==="
block2 = EncodedEmail.new
#lock2['Content-Type'] = "Image/Jpeg; name=\"xxxx.jpg\"" # 画像を添付する場合
block2['Content-Type'] = "Application/Octet-Stream; name=\"#{"添付Mail.rb".mime_encode}\""
block2['Content-transfer-encoding'] = "base64"
block2 << open('attachfile.dat').read
mail << block1 << block2
mail.send
ほとんどの指定は、メールを送るのに必須の情報を渡しているダケで、コマンド的にはnewして、<<で添付して、sendで送るという3段階だけだ。また、メールを送るだけじゃなくて受けるのも簡単。クラスをnewするときにファイルハンドラを渡してやるダケ。
#!/usr/bin/env ruby
require 'email'
require 'kconv'
#-------------------------------------------------------------------------------
#
# receive attached mail
#
mail = AttachedEmail.new(STDIN)
mail.header.each {|k, v|
print "#{k}: #{v.mime_decode.toeuc}\n"
}
mail.block.each {|b|
print $/
p b.decode
}
2005-04-16(Sat) 情報処理試験の勉強す
明日は情報処理試験だよ!! イイカゲン勉強しなきゃだよ!! ……ちゅーワケで、少しは勉強することにする。今回受ける試験区分はデータベース。小論文のある試験区分を避けると、コレしか残っていないのだ。あまりデータベースには興味ないが、やってみたらオモシロさに気づくかもしれんしな。
なお、教本や問題集の対応年度が妙に旧いが大丈夫。ドッグイヤーな業界ではあるが、基本はそんなに変わるもんじゃない。アマゾンやヤフオクで購入した中古本で十分だ。問題は、試験に向かう電車の中や試験会場なんかで開くと「あのヒト何度も落ちてカワイソウ……」と思われかねないコトだ。恥ずかしいので試験には持って行かない。それより神林のハードカバー版のグッドラックを持って行こう。試験会場にジャミーズが紛れ込んでいるかもしれんしな(?)。
ちなみにオイラの午前問題の勉強方法は、1年分程度の過去問をひととおり読むだけ。午前問題の半分は試験区分にかかわらず情報処理分野での一般常識問題であり、今まで散々やってきているから勉強不要。今回はデータベースを受けるから、データベースに関連する残り半分の問題をチョロチョロと流す。
なーに、そんなに真剣にやらなくたって大丈夫。全く同じ問題がそのまま出るコトも多いのだ。特に図表が凝っている問題は再利用される可能性が高いぞ!! 「イ」とか覚えちまえ!! そーでなくても7割取ればいいんだから、午前に力点を置くのはもったいないってモンよ。
難関は午後1。スッゲェスピードが要求されるのだ。比較的難しいのに、時間が少ない。これには知能テストみたいな側面があるといえよう。オイラの午後1の勉強方法は、問題と回答を併せて見ながら、なんで答えがそうのか考える……のだが、サッパリわからん。回答見てもワカランのに、解けるわけがないではないか。基本的に知識が足りないようだ。仕方ない、ぶっつけ本番で頭をヒネることにしよう。
2005-04-17(Sun) 鳴動のデータベース受験
あんまり午前をナメていたので、データベース分野以外でかなり点を落としてしまった感じだが、予定通り午後1では時間が足りず、午後2ではずっぽりとアテずっぽりまくってしまった。こりゃダメだ……いまのオイラでは歯が立たん。とはいえ、毎度ながら問題の品質の高さに驚きつつ、突破口は見つけたッ!! 見つけたぞッ!!
SQLを勉強する必要はないのだッ!! 確かに問題にSQLは出る。しかしそんなモノをソラで書くなんぞ試験の本質ではない(その問題を選択しなければいい)。そんな出題側の意図まで読みとれる実に素晴らしい問題たちであった。出題側が求めているのは、業務を正確にモデル化するチカラ、モデル内に潜む誤りを見抜くチカラ、新たな要求をモデルに正しく埋め込むチカラである。正しくモデル化さえできれば、あとは正規化によりデータベースのスキーマは完成する。問題中にシツこいまでに正規化が出てくるのも、すべては正しいスキーマを作るタメなのである。
そういえば、基本情報には実際のプログラム言語が出てくるのに、ソフトウェア開発には出てこない。これも、情報処理の本質はプログラム言語にあらず、というコトの具現化なのであろう。おいらのようにほとんど既存のコードのコピペによってプログラミングを仕上げてしまうような人間にヤサしい試験でホント助かる。これだけ言語が氾濫している文明開化の世なのだ、個々の言語の文法なんてイチイチ覚えてられるかっつーの、である。
よく考えたらデータベースエンジニアでなくとも、事象をモデル化するチカラは非常に有用なスキルだと思う。よくいうではないか「コードが腐っているのは、データ構造が腐っているのに比べ、1000倍マシ」と。そう考えたら、興味のなかったデータベースにも興味が湧いてきたぞッ!! ……というワケで、もう少しモデル化の真髄を身に付けさえすれば、それだけで来年は勝てるッ!! ……などと前向きに試験会場を後にしつつ、秋葉原を前にするのであった。
日米通商 | |||
---|---|---|---|
ヒューズ 125V 3.15A | x10 | \105 | |
電解コンデンサ 470uF 16V | x5 | \105 | |
USB Bコネクタ メス | x6 | \210 | |
計 | \420 |
まずは日米通商。まずはプロッタ内で腐りかけているブツの交換用に容量デカ目の電解コンデンサを購入。ついでにヒューズもナニかと必要だろうと購入。ヒューズはコンセントから電源を得る際、ショートした時にブレーカが落ちるのを防止するだけだから、容量は適当だ。あとはUSBコネクタ。またまた入荷していたので買い足す。一生分のつもりで買い足す。
秋月電子通商 | |||
---|---|---|---|
ショットキー 1S4 | x10 | \250 | |
USB-Yケーブル | \200 | ||
基板取り付け用足 | x10 | \100 | |
DCプラグ | \20 | x3 | \60 |
DCジャック | \30 | x3 | \90 |
計 | \700 |
思い立ったが秋月。プロッタをバスパワーで動かすためのUSB-Yケーブル、プロッタの仕上げに使う足、プロッタで消耗したDCプラグ&ジャックも補給購入。そして、近頃どーも使いたくなるコトの多い、ショットキーバリアダイオードも購入。しかし、このPANJITという会社、どーゆー経緯で1S2〜1S10なんていう「型番の一等地」を入手したのだろうか? ……と、余計なことを考えつつ、秋月にヒトコト。足を10個単位で売るのはヤメていただきたい。フツー4ツ足なんだから、どーしたって2個余るではないか!! ゼヒ8個か12個単位で売っていただきたい。ソコんトコよろしく。
千石電商1F | |||
---|---|---|---|
ハンダ SD-33 | \270 | ||
ハンダ吸い取り線 H-37-2.5 | \200 | ||
計 | \470 |
家に帰り、以前にバラしたメビウスのACアダプタ内のヒューズの容量を確認する。あ、こっちは、250Vだ。やっぱり電圧が足りなかったか……と思ったが、これは海外の200V電源に対応してるアダプタだからか。ウチで使う分には125Vでいいのだな。
メシを食って、早速、今日の試験の答え合わせをしてみる。ココは間違いも多いが、いつもすばやく回答を公表してくれるので非常に助かっている。なぜか今回は回答を論じる掲示板がなくなっているのがサミしいが……ざっと、午前は43/55で正解率78%。午後1と午後2はよくわからん。勉強してない割には比較的デキている気がする。来年は絶対受かって報奨金でトビキリ高いスコッチを呑んでやるゼッ!!
2005-04-18(Mon) 呼吸レボリューション
今日はGmailの容量をバックアップストレージとして活用するためのスクリプトの開発に終始する。カレントディレクトリで「gmbu(GMailBackUp)」コマンドを一発カマせば、tarにまとめて、bzip2で固めて、gpgで暗号化して、メールに添付してGmailに送るトコロまで完成したのだが、インストールとか、コンフィグファイルとか、コマンドラインとか、使い勝手のワキがイマイチ甘いので、完成までもう少しの感じ。ちゅーワケで、今日は特にネタがない。なので、アホなネタを書いてゴマかすことにする。
で、花粉の飛散が収まりかけている今日この頃だが、オイラは以前から不思議に思っているコトがある。花粉の攻撃は直接的攻撃なのか、間接的攻撃なのかというコトだ。マスクをするのは鼻の粘膜に花粉が届かないようにするため、ゴーグルをするのは眼球の表面に花粉を寄せ付けないため……というなら、花粉の攻撃は直接的攻撃であるといえよう。そうでなく、花粉が体内に取り込まれるコトにより、体全体の拒否反応が鼻水や涙を生じさせる……というのであれば、これは間接的攻撃であるといえよう。
オイラの感覚では、後者の要素も多少はあるが、大半は前者であると感じている。つまり、激しい反応を示す鼻と目を覆うコトで、ほとんどの問題は解決可能であるという考えである。たぶん、事実、そうなのであろう。しかし、そうなると別の疑問がムクムクと頭をもたげてくる。一体マスクはナゼ鼻と口を一度に覆う構造になっているのか、というコトだ。口から花粉が入ってもノープロブレムなハズだろ?
つまり「鼻だけでイイんじゃないの?」というコトである。そうすれば、呼吸もラクだし、布の材料も少なくて済むし、マスク再着用の際にムワっとくるツバ臭さに不安と期待が入り混じったようなドキドキ感を味わう必要もなくなるのだ(ちぇ?)。もし、ホントは鼻だけでイイんだよ、という事実があるのにかかわらず、鼻と口を一度に覆う構造のマスクを売り続けているのだとしたら、やっぱり鼻だけを覆うのは……ねぇ、ザンシン過ぎるというか……カッコ悪いというか……なんとなく見た目に抵抗が……モゴモゴ、という理由なのだと思う。
もし鼻だけで効果があり、カッコが気になるというのであれば、耳栓のように鼻の中にツメるタイプの対策グッズがあってよいと思う。耳に黄色い栓が詰まっていても、さほどカッコ悪くないが、鼻に黄色い栓が詰まっていたら、カッコ悪いという評価基準は、誰がどう決めたのかは知らないが、ま、一般に売る場合には黒い方が望ましいだろう。鼻の穴のサイズに合わせ、S/M/Lから選べるようにしようかな(北島三郎と研ナオコは特注で対応してほしい)。
また、技術的にはかなり難しいと思われるが、この鼻栓に高いフィルタ機能を持たせ、十分な空気透過特性を両立させた場合(つまり鼻内蔵の空気清浄機だ)、事実上、鼻に関しては花粉フリーになるコトも夢ではない。これはうれしいぞ。もしナンだったら、外部から電力供給して強力なファンにより空気透過特性を補ってもよい。その場合、吸気ばかりを強化すると息が吐けなくなって窒息するので、電動アシスト自転車のように自然な呼吸による空気の流れを感知し、ファンの逆回転動作を含めたアクティブコントロールの必要があるだろうが。
しかしだ。ココで逆の発想をして強制吸気、いわゆる「ターボ」をデフォルトにしてしまうという考えもアリではないか? 鼻を「常に全開で空気を吸い込む器官」と化してしまうというコトである。吸った息を吐けなくなるが、いっそターボ化するのだから、外科手術により肺の背中側に排気用の器官を取り付けてしまえばいいのだ(ガンダム好きなら胸の左右、しかるべき位置に取り付けるのもよい)。そうすれば、鼻は空気を吸いっぱなし、背中の排気口は空気を吐きっぱなしにできる。こうなれば、鼻側の吸気ファンは不要になろう。背中側に大きな排気ファンを設ければ、小さなファンを高速で回すよりも高効率で、静穏特性も向上する。音を感知するセンサ(耳)から遠いのも静穏特性にプラスだ。これは人間として「呼吸レボリューション」といえるであろう。ナニも別に不自然な構造ではない。自動車だって基本的に吸気口(インテーク)と排気口(マフラー)は別の場所だし、魚類のエラ呼吸も一方通行だ。鼻と口という場所が吸排気兼用になっているコトがむしろ不自然ではないか。
こうなると車のターボよろしく、人間の呼吸効率は恐ろしく向上する。非常時以外、横隔膜を上下させる必要がなくなるので、カメラでスローシャッターを切るときに手ブレする確率が減るだろう。激しい運動をする場合には、ファンの速度をあげてやるコトにより、息切れする可能性も大幅に減少する。マラソンランナーには必須の機能となるだろう。オリンピック上位の選手は「レスピレーション・コーディネータ」達で占められるに違いない。
人間にファンを後付けするような行為は、いわばサイボーグ化だからドーピング扱いになるかもしれない。しかし、その場合でも走る系の競技に限っては、走り出す直前にファンを外してしまえばイイ。走っている間は鼻と口に作用する空気圧を利用できるからである。まさに「人間ラムジェット」といえよう。いわゆる呼吸は必要ないからハァハァという息づかいは不要になり、静かになるだろう。これがホントの「サイレンス・オブ・ラムズ」……あーくだらねぇ。
2005-04-19(Tue) 今、イニシエのプロッタ、ここに復活!!
今日はGmailの容量をバックアップストレージとして活用するためのスクリプトを作ると思わせつつ、プロッタプリンタの最後の仕上げをしてしまうオイラであった。プロジェクトは直列で進んでンじゃない、並列で進んでンだッ!!
この仕上げ作業までしばらく時間を置いたが、これはザックリいうと「躊躇(ちゅーちょ)」していたのであった。というのも、PICをICソケットに載せていたり、2枚の基板をピンヘッダでつないでいたりする状態ならば、自由にPICのファームウェアを修正できるのだが、先日から書いているように、その状態ではカサバリすぎてプリンタ内部の空きスペースに収まらないのである。つまり、最後にはPICも基板の接続も直ハンダせねばならなかったのだ。でもって、そーなってから不具合が発生したら修正は限りなく不可能である。そりゃ躊躇のヒトツもするわぃ。
基板のアップを撮り損ねてしまったが、コレがICソケットやらなんやらの破壊の跡である。部品を取り付けるのに比べ、部品を取り外すのはホントに大変である。最終的には基板はゴミ同然にバッチョくなってしまったが、ま、動けばよいのである。
突然だが、プロッタプリンタの基板全景である。矢印の220uF10Vの電解コンデンサの頭に妙な汚れが付着している。縁起物でもあるし、日曜日に購入してきた470uF16Vに交換してやるコトにした。取り外した電解コンデンサは古いだけに、容量抜けとかあるのかしらん……と、思いつつ容量計で確認してみたトコロ……キッカリ220uF確保されてんじゃん。なんじゃ、交換して損した。ジャンク箱に入れて再利用だな。
予定通り、既存の基板の取り付けネジに共ネジするカタチで、USBパラレル変換基板を取り付ける。上記の直ハンダによる工作により、十分に基板の高さが抑えられたのでスペースには余裕があるぞ。基板のハンダ面やコネクタ部分など配線が露出している部分を、簡単にビニールテープで覆ったら、ゴチャゴチャしたケーブルを黙ってグイグイと押し込んでフタを閉めるッ!!
唯一、ケース外に出す改造部分がペーパセンサであるフォトインタラプタだ。プロッタ背面の穴からチョロリと出して両面テープで然るべき位置にひっつける。フムン、そんなに悪くないぞ。それから足だ。日曜日に秋月で購入してきた基板用の足を4つ、ケースの底に取り付ける。おぉう!! なんだかソレっぽいじゃん!!
で、動作テスト。今回、プリンタの電源はACアダプタを接続した場合はACアダプタから、接続していない場合はUSBバスパワーから給電する方式を採用している。よって、ちょっと容量的には無謀(容量500mAから800mA取る)ではあるが、敢えてACアダプタを接続せず、USBケーブルのみでノートPCに接続してみた……が……あれ? ウンともスンとも反応しないぞ。しゃーない、ACアダプタをつなぐか……が……あれれ? COM2ポート自体が認識されてないぞ。やべぇ……ノートPCからUSBケーブルを外し、代わりにワイヤレスマウスのモジュールを挿してポートの無事を確認してみる……が……あれれれ? マウスが使えないッ!! ポートをブッ飛ばしてしまったか!? やッべェ!! このノートPC唯一のUSBポートなんだぞッ!!
アワてて、いったんノートをサスペンドし、時間を置いて復帰させたら復活した。あー、よかった。一般的なUSBポートには、過電流が流れた場合やショートした場合に備えて、しばらく放っておくと自然復活するヒューズ(ポリスイッチ)が取り付けられていると聞くが、今回はどうやらその能力を発動してしまったようだ。ほっ。
改めて、ACアダプタを接続した上で、USBケーブルでノートPCに接続する。まだ未完成ながら、一応は漢字が出力できるドライバが動いているので、漢字を印刷させてみた。……かっ、完璧じゃ!! 今までケーブルがグジャグジャしていたが、今は非常にスッキリな外観で、気分もスッキリだ。思わず漢字を出力している動画も公開してしまおう。チト遅いが、一生懸命な感じが好印象を与える、カワイイヤツだと思わない? ね? ね?
2005-04-20(Wed) Gmailバックアップスクリプト完成、しかし……
一応、Gmailの容量をバックアップストレージとして活用するためのスクリプトは完成した。今のトコロはcygwinとdebian上で動作は確認している。必要な外部プロセスは、vi, tar, bzip2, gpg。インストールは「make install」で一発。使い方は、バックアップしたいディレクトリに移動して「gmbu」一発をカマすだけだ。crontabやcvsみたいにエディタが開くので、各種動作条件を設定の上、保存終了すれば添付メールが飛ぶ……飛ぶコトには飛ぶ……飛ぶのではあるが……正直いうとちょっと問題がある。
我ながらよくできたライブラリだと思っていた先日のEmail.rbだが、実はちょっと問題があったのだ。オブジェクト指向の特性である「データと手続きの一体化」についてはとてもナイスな設計だったのだが、メールのデータをまるまるインスタンスに持たせ、かなり力任せなハンドリングをしているのがマズかった。添付ファイルのサイズが1MB程度までならよいのだが、Gmailの上限である10MBまではとてもじゃないが処理しきれないのである。10M弱のフォントデータのバックアップを実行したら、メモリを食いつぶし、自宅サーバを落ちる寸前まで追い込んでしまった。いくらRubyがデータサイズに上限を設けないからといって、そんなムチャなメモリの使い方をされては、OS側がとても持たないのである(いまどき搭載メモリが256Mってのも少ないけども)。
以前、職場の新人がイッキに1000以上のファイルを同時オープンするプログラムを書いているのを見て、思わずひっくり返ってしまったコトがあったが、こんなプログラムを書いているようでは人のコトを笑えない。一応現段階のパッケージを置いておくが、近いウチに内部的な処理方式を逐次指向に書き直すことにしよう。トホホ。
なんと!! ゲーセンの「湾岸ミッドナイト・マキシマムチューン2」にSVX登場である。こりゃ、やるしかないぜ!! 最近よくあるシステムだが、磁気カードを購入すると、徐々に自分の車をチューンできるという遊び方もできる。買うぜ!! 買うぜッ!! この画像のナンバープレートが3318という開発者の意気込みにかけて、買うぜッ!!(SVXの正確な排気量は3318cc、オイラは3300にしているが)
2005-04-21(Thu) HDDレコーダ、90%ウロウロ症候群
以前にも少し書いたが、ウチにはLinuxによる自宅サーバがある。立ち上げたのは2002年の4月頃だから、もう丸3年になるか。最初の2年はAthlon-700MのRedHat7.2、それからPenIII-1GのDebianにハードごとリプレースして現在に至る。
最初は「ADSLによるLinuxインターネットサーバー構築ガイド」という本を買ってきて、いわれるままに設定した記憶がある。ちょうどLinuxに興味があったし、職場でSolarisを使っていたので、そんなに苦もなく立ち上げることができた。しかし、立ち上げてしばらくして、疑問に思うのだ。
DNSを設定して、メールサーバを立ち上げ、ウェブサーバを立ち上げて……で? ナニ? ナンナニョ? ナニがウレピーの? ってコトだ。そんなのプロバイダの基本サービスではないか。なにも自宅で24時間電源を入れ、電気代をかけてまでしてするコトではない。そりゃ、独自ドメインでメールが受け取れたり、ウェブでCGIが自由に使えたりという利点はあるが、そんなのたいした利点でもないだろう。
で、それに対するオイラの回答は「サービスを自分で作ってしまえ!!」だ。その結果、ウチのサーバには既に使っていない機能を含めて、思いつく限りの機能が実装されている。
・メールが着信するとメロディが鳴る
・テガッキーという文字電話からの手書きメールを送ると、画像変換して一般の携帯に転送
・ヤフー天気予報を外部液晶表示器に出力
・検索キーによるテレビ欄の検索、番組情報メール機能
・CGIによるmp3ジュークボックス+FMモジュレータ(電源制御あり)
・CGIグループウェア(スケジューラ、チャット、ニュース、文書共有)
・CGIリモートブックマーク
・ラジオ英語を予約録音
・テレビ番組を予約録画(ケーブルチューナのチャンネルもサーバが替える)
・DVDからHDD、VideoCDへのリッピング機能
・ウェブサーバ、メールサーバ
しかし、なんといっても予約録画機能が一番の自慢だろうか。番組はmjpegで録画後、自動的にVideoCDに焼けるmpeg1形式に再エンコードされ、完了すると報告メールが送られるようになっている。mpeg1は1.5M程度のビットレートであるから、ノートPCでメディアプレーヤを開けば、無線LAN経由で寝っ転がりながら視聴するコトができるのもポイントが高い。画質は決してよくはないが、観る分には十分だし、CD-Rに焼けば一般のDVDプレーヤで再生するコトもできるのだ。sshでリモートアクセスすれば、外から番組録画も可能だ。個人的にはかなり満足している。
/boot | RAID-1 | 120M |
/ | RAID-1 | 1G |
/tmp | RAID-0 | 8G |
/var | RAID-1 | 1G |
/usr | RAID-1 | 3G |
/home | RAID-1 | 15G |
/video0 | 88G | |
/video1 | 88G |
2005-04-22(Fri) バッテリ、売ってくリ
あー、あー、そろそろハンダゴテでウリウリしたい。ウリウリしたいがネタがない。いや、ネタがないワケでもないのだが……あ、そうだ。以前にオヤジにもらったジャンクノートでもイジろうか。バッテリセルを新品に交換したら、それなりに使えるアイテムになるだろうし。
素人によるリチウムイオンバッテリの交換は非常にキケンらしい。オイラは以前にARMADA-M300のバッテリセルを交換し、その後も快適に使ってはいるが、キケンであるコトには違いない。キケンであるコトに違いないが、快適に使いたい。快適に使いたければ、やっちゃうのである。
裏のネジを2本外したら、簡単にバッテリブロックを取り外すコトができた。このノートPC、発売当時にしては非常に薄いコトに驚きを隠せない。バッテリセルの厚みがそのままノートの厚みになっている。スゲェ。まるで卵を大量に抱えたシシャモのようなノートPCだ。
例によってバッテリブロックは、再開封を考慮していないツメと接着剤によって封印されているが、このバッテリの守備はさほど強固ではなかった。スキマにマイナスドライバをネジ込み、指を入れてペリペリと殻割りする。おぅ!! 角型バッテリが6個か!! 型番は……フムン……お願い!! Google様!!
……久々に敗北感である。どれだけググっても、売っている店が見つからない。そりゃそーだよな、ARMADAのバッテリセルが手に入ったコトが超ラッキーだったんだよな。リチウムイオンバッテリなどというキケンなアイテムを一般に売ったりするのは、かなりハードなジャンク屋だけだし、そんなジャンク屋が各種バッテリを取り揃えているワケがないのである。とほほ……。
ハードの敗北をソフトで晴らす……というワケではないが、例のGmailバックアップスクリプトの処理方法を、オンメモリ指向からストリーム指向に修正するコトにした……って、相当苦労するモノと覚悟していたのに、至極アッサリと実現できてしまった。コレで、巨大な添付ファイルであっても、ほとんどメモリを使うことなく、ズリズリと送信することができるようになってしまったワケだ。それにしても、メイン側の処理の修正がほとんど不要であったのはともかく、ライブラリ側の修正さえそれほど大きくないコトにはオイラが一番驚いた。改めてRuby恐るべし。恐るべしったら、恐るべし。
ちゅーワケで、Gmailバックアップスクリプトを置いておく。まだ、いくつかやりたいコトが残っているので、もう少しイジる可能性はあるが、明日は明日の風が吹くであろう。では。
2005-04-23(Sat) スコッチを嗜む、広辞苑を嗜む
今日はカミさんとふたりネボスケして、昼下がりからスーパーにお買い物。最近、どーも工作のノリが悪い……ナゼだ……そーなのだ!! スコッチを切らしているのだ!! オイラはウイスキーをチビチビやりながらでないと、作業効率が落ちるのだ。ココんトコ耐えかねていたので、死蔵してあったもらいモノのカナディアンクラブなんぞを開けて呑んでいたのだが、ダメだッ!! 香りがないッ!! 鼻に抜ける香りが圧倒的にウッスいのだ。まるでラッキーストライクを吸ったあとの1mgタバコのようだ。成分を摂取するためダケならいいのだが、まるで味わうというコトができない。ぐぬぬぬ……。
で、買ってみた。定番のグレンモーレンジにしようかとも迷ったのだが、前回タリスカーを試してみてかなり気に入ったコトもあり、違うモノを試してみたい気分になって、このダルウィニー(Dalwhinnie)を選んでみた。2,919円也。オイラは10年ソコソコの若いモルトが好きなのだが、コイツは15年。いつもよりかなり歳をとっている。楽しみである。
というトコロで、広辞苑だ。以前にも書いたが、オイラは辞書を引くのが大好きなので電子辞書が手放せない。常にノートPCには20種類くらいの辞書をブチ込んでガシガシと検索している。しかし、広辞苑だけはアレだ。以前、迷った挙句にウカツにも辞書形式がオリジナル形式のシステムソフトのモノを買ってしまったのだ。そんなでは、ddwinで検索できない。ワザワザ別のアプリで検索するナンざ、ウットオしすぎて使う気もしない。だからといって買いなおすのもバカバカしいったらない。そんな場合に重宝するのがdessedである。そして、変換行程をザックリと並べて今日のネタにしてしまうオイラなのであった。なお、環境はcygwinだ。
※ツールをダウンロード、展開する
/home/user $ wget http://homepage2.nifty.com/EBTools/dessed/dessed_src-0.4.tar.gz
/home/user $ wget http://openlab.ring.gr.jp/edict/epwutil/epwutil-1.1.tar.gz
/home/user $ mkdir dessed-0.4
/home/user $ cd dessed-0.4
/home/user/dessed-0.4 $ tar xvfz ~/dessed_src-0.4.tar.gz
/home/user/dessed-0.4 $ cd unix
/home/user/dessed-0.4/unix $ make -f Makefile.cygwin
/home/user/dessed-0.4/unix $ cd
/home/user $ tar xvfz epwutil-1.1.tar.gz
/home/user $ cd epwutil-1.1
/home/user/epwutil-1.1 $ make -f makefile.unx
/home/user/epwutil-1.1 $ cd
※事前にインストールした広辞苑のKOJIEN5をホームディレクトリにコピーしておき、変換する
/home/user $ cd KOJIEN5
/home/user/KOJIEN5 $ ~/dessed-0.4/unix/dessed KOJIEN5.IDX HONMON
/home/user/KOJIEN5 $ ~/epwutil-1.1/squeeze HONMON HONMON.sqz
※ちなみにサイズはHONMONが220102656、HONMON.sqzが84721664だった
※CATALOGSファイルを生成するが、元の形式はEUCのLFでいいらしい
/home/user/KOJIEN5 $ vi kojien5.txt
[Catalog]
FileName = CATALOGS
Type = EPWING2
Books = 1
[Book]
BookType = 0002 (00:国語辞典, 02:EPWING2)
Title = "広辞苑第五版"
Directory = "KOJIEN5"
InfoBlock = 0001
ZenGaiji = "GA16FULL"
HanGaiji = "GA16HALF"
/home/user/KOJIEN5 $ ~/epwutil-1.1/catdump -u kojien5.txt CATALOGS
※Dドライブの適当なトコロにコピー
/home/user/KOJIEN5 $ mkdir -p /cygdrive/d/Dictionary/KOJIEN5/KOJIEN5/DATA
/home/user/KOJIEN5 $ mkdir -p /cygdrive/d/Dictionary/KOJIEN5/KOJIEN5/GAIJI
/home/user/KOJIEN5 $ mv CATALOGS /cygdrive/d/Dictionary/KOJIEN5
/home/user/KOJIEN5 $ mv HONMON /cygdrive/d/Dictionary/KOJIEN5/KOJIEN5/DATA
/home/user/KOJIEN5 $ mv GA16HALF GA16FULL /cygdrive/d/Dictionary/KOJIEN5/KOJIEN5/GAIJI
※ddwinを立ち上げ、dドライブを深さ2で検索させると、使用可能になるッ!!
※ホントーはこうしたいのだが……
/home/user/KOJIEN5 $ mv HONMON.sqz /cygdrive/d/Dictionary/KOJIEN5/KOJIEN5/DATA/HONMON
2005-04-24(Sun) ザウルスひとつッ!! あとはいらん……コトもない
今日は上野動物園にティラノザウルスを見物にお出かけ……って、ジュラシックパークじゃないんだから……正確には上野の国立科学博物館の「恐竜博2005」にお出かけである。残念なことに今回メインの恐竜「スー」はかなり以前にお亡くなりになっているので、生きてお目にはかかれない。
上野に着いたら、イキナリ咆哮が聞こえた……って、その咆哮はオイラの叫び声だッ!! なんだよーッ!! 1時間待ちってッ!! 恐竜ブームはとっくの昔に収まっているかと思ったのに……オメーラッ!! ニセモンの恐竜のホネなんて見に来とらんで、キッタネェマンモスのミイラでも見に行けよッ!! ……と、いっても仕方ない。かといって、コンビニでチケット買っちまってるし、見ないわけにも行かない。アトだ、アト回しだ!! 夕方になって空いてから行こう。
マルイに行って、アメ横抜けて、そのまま歩いて秋葉の秋月へ。先日来たばかりではあるが、ちょっと思うトコロがあって「秋月の電子キットの取扱説明書・回路図集」のCD-Rを買いにきたのである。秋月のキットは教育的なキットが多いから、コレ見てるダケで勉強になるしね。
上野まで戻って、昼飯を食う。以前に二千円分の食事券が当たったので「伊豆栄」といううなぎ屋でゴージャスな昼飯なのである。そして、うなぎ屋といえば「待ち時間」だ。この伊豆栄は老舗だから、待たされるぞぉ!! 待ってる間は熱燗でもやりながら……って、早いッ!! 早いよッ!! 待ち時間は15分くらいであった。まだ熱燗1合も空いてないのに……。
ま、15分ってのはフツーのファミレスからすれば、決して短くはない。しかし、覚悟して待つほどの時間でもないだろう。場所も上野の一等地というセワしい場所だし、仕方ないか……ヘンなハナシだが、早く来たコトに若干文句を付けつつ、箸を付ける……。
……ナチュラルだ。非常にタレの味がウスい。ボッテリと甘いのが鰻丼という期待を裏切る味の薄さだ。しかし、コレがまたヨイではないかッ!! 鰻の味を全く殺してしまうようなタレをかけたら、鰻を食っている意味がないだろう? そんな挑戦的なメッセージを受け取ったオイラは、そのまま全部食べた。タレは醤油とかと一緒にテーブルに用意されてはいたが、敢えてかける必要は感じなかった。さすが、宮内庁御用達だけのコトはある。うなぎ、アッパレ。アッパレ、うなぎ。
いい時間になってきたので、再び国立科学博物館へ。今度は空いている。それでも会場内は混んでいるが、こうでなくちゃイカン。あまりジックリ観る感じではなかったが、それでもティラノザウルスの骨格標本はかなりの迫力であった。しかし、オイラの目を一番惹いたのは、空飛ぶ恐竜とも言える鳥への進化の過程に存在した、手だけでなく足も翼状になっているという妙な鳥。いったい、どーやって飛ぶツモリなんだ!? なんだかツッコミどころ満載の、デビルマンに出てくるデーモンの一種のような突飛なデザインである。
デザイン!? そーなのである。まるで人間が飛行機を作る時に辿ったかのような、行き当たりばったり。そんな感じを受ける格好なのである。こーゆーのを目にすると、進化の過程は文字通り「進化」なのでなく「淘汰」であるコトを意識できる。今の鳥の洗練されたデザインに比べ、どーにも野暮ったい鳥達がなんだか新鮮なのである。始祖鳥の尻尾なんて笑ってしまうほど直線的なデザインだ。きっと、発掘されてはいないが、もっととんでもないデザインの鳥はまだたくさんいたのだろうなぁ。そんなコトを感じた恐竜博であった。
さて、帰って秋月のCDをチョロチョロとみたあと、おもむろにビデオデッキをバラす。なんだかとってもオモシロい工作テーマが見つかったのだ。このビデオ、以前にテーブル丸ノコとして既に廃品扱いにしているモノである。テープの出入りがシブいダケなのだが、ウチは自宅サーバをビデオ代わりにしているので、ビデオなんか要らんのである。
適当にバラして、メイン基板を取り外したら、半田ゴテで部品をサルベージする。おぅ!! そうだ。スコッチを呑みながらやろう。チビチビやりながら、基板の裏にコテを当てる……むぅ……どーも、香りが薄いな。ハンダのヤニのニオイに撹乱されているのか? もう少し呑んでみないとアレだが、コレは失敗したか……ファーストインパクトのないスコッチの評価が、あとから変わるコトはあまりないのだが……素直にグレンモーレンジにしておけばよかったかなぁ。
2005-04-25(Mon) HDDレコーダ、90%ウロウロ症候群、完結編
今日はなんだかマイ・アトモスフィアがスグれないので、気分を晴らすタメにスコッチをやるコトにする。例のダルウィニーだ。基本的に酔うためにスコッチを呑むというのは間違っていると思っているが、たまにはそんな日があってもいいだろう。こーゆー時は自分の精神状態を文に書き出すとイイ。叩きつけるようにガンガン書くのでなく、単語の語彙の誤差を収束させていくように、何度も文を修正する。そんなコトをしながら、呑むスコッチがウマいかといえば、決して悪いものでもない。昨日はあまりウマく感じなかったダルウィニーだが、今日はもう少し愉しむコトができた気がする。やはり気分によって感じ方も変わるのだろう。
つーわけで、今日は酔ってしまって工作どころではないので、昨日の「90%ウロウロ症候群」の続きを書いてその場をゴマかすのであった。「90%ウロウロ症候群」とは、HDD録画機器を持っているユーザが患いやすい持病で、常にディスク使用率が90%程度にキープされてしまう病気である。
何を隠そう、比較的軽症ではあるものの、オイラも患者のひとりだ。2002年10月初旬、自宅サーバで笑っていいとものテスト録画に成功して以来、HDDが一杯になるのは時間の問題であったから、かれこれ2年半の闘病生活になる。オイラの場合「番組の逃がし先がCD-Rしかない」というちょっと変わった病巣に基づく発症の仕方なので「頭文字D」の全話録画を全てCD-Rに焼くという激しい発作を経験して以来、以後は「マタヤル錠」の処方によって、イッキに全話を削除するという切除術式を覚え、ココ最近は小康状態を保っている。
最近はごく一般的ではあるが「DVD付き」といわれる病巣に基づいて発症した患者は重病に陥りやすい。私の知人で、帰宅すると毎日のようにDVDに番組を逃がしている重症患者がいる。非常にバカバカしい作業だと本人も自覚しているのだが、一度こーなってしまうと、毎日のように多量のDVDメディアを処方するしかなくなり、薬代だけでもバカにならない日々が待っている。根本治療にはカウンセリングによる地道な精神療法しかない。
先日「DVDドライブ」という、非常に病巣になりやすい器官を取り払ったタイプのHDDレコーダが発売され、話題を呼んだ。しかしこの製品は、既に「DVD付き」を持っている重症患者が一時的な症状回復を求めて手を出しやすいばかりか、新規の患者もしばらくして「DVD付き」を追加購入してしまい、重症患者と同じ症状に陥ってしまう事例も報告されている。値段も安く話題のアイテムではあるが、忙しい現代人には、非常に危険なアイテムであるといえよう。
んじゃ、どーすればいいのか。やはり患者の自己回復を促す「ウィザード機能」の搭載が有望であろう。ふとした拍子に装置のほうから「これ、観る? もう、観ないよね?」と聞くコトで番組の削除を促してくれる機能だ。聞いてくるのはリアルなCGキャラクタで、番組の録画傾向からユーザ好みの容貌と声質を備えたキャラクタに設定されるため、ユーザが思わず頷いてしまうようにできている。
CGキャラクタが提案する削除の候補は、過去の視聴傾向や、提案に対するユーザの反応速度などから、総合的に擬似人工知能により判断されるため、大半のユーザがHDD容量を50%未満に抑えるコトができるように設計されている。しかしながら、それでも削除の拒否を続けるユーザには、キャラクタが少しキツめの反応を示したり、候補を削除することによりどれだけHDD容量の緩和に効果があるか諭すなど、オドシスカシのような作戦に出るコトもある。
それでもHDD容量が逼迫してくると、対症療法に移る。CGキャラクタがDVDメディアに焼くコトを勧めるのである。毎日複数枚を焼くようなユーザには、プリンタのカットシートフィーダならぬ、ブランクディスクフィーダのオプション購入まで勧めてくる。メディアの供給パターンを擬似人工知能が把握した場合、ネット経由で勝手に注文してくれる機能もある。これにより、財力に余裕のあるユーザであれば症状を抑えることができるようになっている。
ココでDVDメディアの供給が追いつかなくなった場合、さらに上位の機能が発動する。擬似人工知能の判断により削除の候補となった番組を、ユーザの気づかないうちに圧縮率を上げて再エンコードしてしまうのである。画質は悪化するが、ディスクの使用率は90%以内に抑えられ、すべての番組が残るのでユーザの負担は非常に少ない。その際、番組の種類に応じて適切な再エンコードを行うインテリジェントリエンコーディング機能も備わっている。ドラマなら人物より背景の画質を優先的に落とし、アニメなら輪郭を残して色の階調を徐々に落とし、野球中継なら動きのない回が三球三振に変更され、xxxならモザイクの領域を拡大したり粒度を荒くすることで圧縮率が稼がれるのだ。音声もいつの間にかモノラルになっていたりする。う〜ん、インテリジェントこの上ない。
しかし、これでもいよいよどーにもならなくなり、HDD容量がニッチもハッチもジュウロクッチもいかなくなると、最後の機能が発動するッ!! 擬似人工知能が、思い切ってHDDが壊れたフリをして「ディスクが認識できません。HDDをフォーマットします。よろしいですか?[了解]」と出すのだッ!! これで一気にディスク使用率は0%に……え? なに? その機能を既に搭載しているHDDレコーダがあるぅ!? うそぉ!?
なお、上の画面は合成であり架空のモノです……一応……たぶん……しかし、面白いよねぇ、ユーザ登録の有無で見られるFAQページが違うというのは……。
2005-04-26(Tue) 映画、ノー、カットゥ版
今日もなんだかフィーリン・ソゥ・バッのまま、なにげにツタヤにDVDを借りにいく。そのうち借りようと思っていた作品は何タイトルかあった気がするのだが、いざツタヤに来てしまうとサッパリ思い出せない。目的の「ソウ」以外は……ナニかあったっけ? という状態。あぁ、そうそう「キャシャーン」も観たかった気がする。でも、もっと観たい作品があったような……まぁ、いいか。
まずは「ソウ」。部屋の対角に鎖でつながれた男ふたり、部屋の真ん中に死体……という、強烈に興味をそそるシチュエーションから始まる話。セブンやキューブ、ユージャルサスペクツを面白いと感じたオイラであるから、ものすごい期待をして観はじめた。
あまりに期待が大きかったのは理由のひとつだろうが、やっぱり最後のドンデンに完全に納得がいかないのが理由なのだと思う。映像的にも展開的にもかなりのインパクトはあったのだが、行動の理由付けが弱い気がするのである。パズルの最後の1ピースがほんの少し小さくて、ガタガタして、気持ち悪い……そんな印象を受けた。観て損した気分はないのだけれど、ちょっと残念。
一方で「キャシャーン」。酷評されているコトを知った上で観る。むぅ……途中、少し飛ばして観るなどというフザけたコトをしてしまったが、それくらいダルいんすよ展開が。時系列がゼンゼン把握できないし。映像的には非常に凝っていて、雰囲気には引き込まれるんだけどなぁ。いやホント、この映像センスには脱帽なのよ。別の映画でもう一度みてみたい。でもね、当たり前だけど、意味がわからないと楽しくないんだよ。
以前もマクロスゼロの感想に書いたけれど、どちらも、キャラクタの抱く葛藤が伝わってこないトコロがダメだと思うんだよね。「ソウ」は犯人の葛藤が理解できなかった。「キャシャーン」は主人公の要求が何なのかかわからなかった。主人公以外はみんなそれなりに思惑があったみたいだけど、それらは見事にリンクしてなかった気がする。
2005-04-27(Wed) 再び、S端子を斬るッ!!
一般的なブログには、閲覧者が日記に対してコメントできる機能がついている。この「SVX日記」はtDiaryというブログシステムによって運営されているが、やはり例に漏れず「ツッコミを入れる」という一種のコメント機能が備わっている。
そういう機能を敢えて有効にしているのは当のオイラなのであるから、誰がナニをどのようにツッコもうが自由である。今のトコロ、意図的にツッコミを削除したコトはないが、オイラが気に食わないと思ったツッコミを勝手に削除してしまうのも自由である。つまりココはオイラの庭であるから、エラそうにいえばオイラという神の下に全てが許されているという状況なワケだ。
そんな状況の中、最近、ツッコミでなく質問をカキコむヤカラがポツポツと現れてきた。他力本願な性格はその人の自由なので咎めはしないが、マトモに文章を読みもしないで質問をブツけられたら、コッチもオモシロくないのである。「『ツッコミ・コメント』があればどうぞ」と書いてあるではないか。ココはナンデモ質問箱ではないのである。むしろオイラは「たいして知識のない素人(=オイラ)でも、ウェブで情報を仕入れながら、少々七転八倒すれば、不完全ながらモノは作れるんだよ」という意図でワザワザ失敗談まで余さず書いているツモリなのだ。ハゲしく逆ナデされる気分である。そもそも、改造や工作は、完成ではなく、その過程を楽しむために行うべきモノなのである、である、である。
で、ヤリ玉は昨日のこのカキコみである。さっきも書いたように、ツッコミ機能を有効にしているのは当のオイラなのであるから、誰がナニをツッコもうが自由ではあるが、オイラにはそれをココロヨく思わない自由もあるし、それをヤリ玉にしてネタを書いてしまう自由もある。ゼヒ、カキコむ前に空気を読んでいただきたかったモノだ。
なぜなら、そんなコト質問する前にサッサと実践してみりゃイイからである。日記を読めば、S端子とコンポジット端子をチョン切って、芯線と芯線、ガワ線とガワ線を手ヒネりすれば、それダケでS端子からコンポジット端子に変換できるコトはわかるであろう。逆をやりたきゃ、やってみりゃイイのである。日記を何日分か読めば、オイラに聞いてもそーゆー回答しか返って来ないだろうコトはワカりそうなもんだ。欲をいえばサッサと実践してもらって、その結果を持ってツッコミを入れるコトで、オイラをウナらせてもらいたかったくらいである。
ホリャ。映ったぞ。よくワカラんが、コンポジット端子からS端子への変換も「概ね手ヒネリでイケる」ってコトだ。ちょっとギラギラする感じの映像になったような気もするが、たいして支障はないだろう。あくまで自己責任ではあるが、そーゆコトである。
さて、ココまで書いてきてイマサラではあるが、別に質問が絶対ダメというワケではない。何度もシツこく書くが、ツッコミ機能を有効にしているのは当のオイラなのであるから、誰がナニをツッコもうが、もしくは質問をしようがそれは自由なのである。ただし、それに反応を示すかどうかもオイラの自由であるコトを認識していただきたい。愛想だけで機械的に返事を返すことはしないのである。質問に答えて欲しいならば「最低限の挨拶くらい」はした上で「少しはオモシロいネタを提供」するよう努力して頂きたい。最低限の挨拶すらしないとか、答えてもらったのに礼もないとか、ダメ、ダメすぎ、ダメすぎである。
2005-04-28(Thu) ぼーっとして、キューブ
あぁ、なんかヤル気なし。春だからだろうか。妙に眠い。「春眠暁を覚えず」というヤツか……いや、気候のせいダケではないコトはわかっているのだが、どーにも、ぼーっとしてしまうのだ。仕事の合間に、コーヒーの粉をマグカップに入れていたコトを忘れ、再び上からコーヒーの粉をマグカップに投入、お湯を入れてヒトクチ飲んでから唐突に気づくのだ……もしかしてコレは恋……じゃねーや!! 濃いッ!!
こんな、ぼーとしてしまう時には、90%ウロウロ症候群から脱却するために、録り溜めてある番組を消化するとしよう。サクサクと「所さんの目がテン」を3週分ばかり消化する。「発光ダイオード」に「アサリ」に「ワカメ」。あぁ、面白い。なんだか味噌汁が呑みたくなってきたなぁ。
更に「トップをねらえ」の5,6話も消化する。うぅむ、前評判をもとに期待した程度には面白かったのだが、全話トオシでウラシマ効果ネタばっかりとは……ウラシマ効果クラスのハードなSF設定が全編に散りばめられていると勝手に期待していたので、ちょいと肩透かし。いや、それでも十分にオモシロかったんだけれどもさ。
しかし、当たり前とはいえ、新発見だったのは「同じ時間を過ごすコトができない≒死に別れ」ってコトだ。もひとついうと「たかが数十年の差でも同じ人間関係は築けない」というコト。10年ズレたら友達にはなりえまい。そして、恋愛感情も然りだ。実はその辺をヨボヨボと歩いているお年寄りの数十年前の姿こそ、実はチョーあなた好みの異性かもしれないのだ。ちなみに、オイラは自分が10代後半の頃から今に至るまで、20代中頃くらいの女の子が好きだ。たぶん、これからもずっとそうだと思う。そしてそれがどのようにさっきの話と関連するかといえば、特に関連しない。いやなに、単にオイラの好みを書いてみたかったダケである。エッヘン。
そして、さらにぼーとしたいので、以前に購入したプロフェッサーキューブを引っ張り出してきてカチャカチャとやり出すのである。ひょんなコトから個人的に再ブームになっているルービックキューブであるが、やっぱり素晴らしいオモチャであり、素晴らしくハイセンスなオブジェクトであると思う。基本の3x3もイイが、5x5の面倒クサさがたまらなく好きだ。より長い時間、無心にイジっていられる。
2005-04-29(Fri) RFモジュレータの仕様をアバけ!!
どーも、イカん。今までも時々あったのだが、突如として脱力感に教われ、なんにもヤル気がなくなってしまっている。ぼーっとして、メシ食って、酒呑んで、テレビ観て、寝る……って、これじゃ、なんの変哲もないオッサンやんか……。
力を振り絞って、カミさんと柏にお出かけ。特に用事はないが、最近できたビックカメラに行ってみる。以前のオイラなら、カメラ、パソコン、ゲーム、わーい……と、よろこんで駆け回るトコロであったが、電子工作野郎にクラスチェンジしてからというもの、トンとそーゆーモノに興味が薄くなってしまったので、オモシロくないったらない。気づくと中古およびジャンクコーナを探している始末だ。そんなコーナ、ビックカメラにあるかっつーの!!
なんとか興味を引いたのが、このセルフデジカメプリントの機械。別にプリントしたい写真があったワケではないのだが、1枚30円でプリントできるっつーから、手元のデジカメからSDカードを引き抜いて、2枚ほどプリントしてみた。当然のように画質補正とかトリミングとかはできない。一般人にはそんな機能は不要なのであろうが、オイラにとってはストレスが溜まってしゃーない。待つ間もなくプリントは仕上がったが、あまり期待していなかったにも係らず、それ以下の質であった。どーも、勝手に適当な画質補正を施してプリントする仕様のようだが、かなりコッテリした画質で、偽色が目立ってしょうがない。まぁ、モトがISO400相当で撮っているから仕方ないのかな……。
さて、かーなりウダウダしたのだが、突如として工作欲が復活した。なんとなく、例の先日ジャンクビデオデッキからバラしたRFモジュレータをイジりたくなってきたのだ。ラジオペンチでケースの合わせ目をカリカリしてすこーしユルめたら、カパッと外れた。裏も同様にパッカリ外れる。おぅ。エエ感じやん。
当面の目的は、左下に出ている4本のピンアサインを知ること。少なくとも、電源ラインだけはワカらないと、せっかくのパーツをイキナリ壊しかねない。テスターでアチコチ探る……グランドはすぐに判明。これはピンでなくガワで取っているようだ。しかし、それ以外がまったりとワカラン。表の電解コンデンサがパスコンであると仮定すれば、その+極が電源なのだろうと推測できるが、そういう感じでもない。むむぅ……。
どうもオイラの頭では理詰めでワカりそうもないので、ICの型番から情報戦を仕掛けるコトにした。ICの表記は……読み取りニクいが「A11560」とある。その上のマークは日立っぽい。例によってGoogle様にお伺いを立てるが……そーゆー部品の存在は確認できたモノの、仕様が追えるまでの情報には行き当たらない。頼みの綱のDatasheetArchiveも答えてくれない。日立といえば今のRunesasだが、コッチもとりつくシマがない……ダメか……まてよ……そーだッ!!
例の秋月の回路図集にヒントがあるかも!! ってコトで「VHFトランスミッタキット」の説明書を開いてみる。このキットは廃品のRFモジュレータの出力を高周波アンプで増幅しアンテナで飛ばしてしまうモノで、まさにオイラが作りたいのがコレなのである。このキットが既にディスコンなのでこんな苦労をしているのだが、もしかするとこのRFモジュレータと同じ仕様かも……ダメだ。違う石を使っている。説明書には「TOSHIBA TA8637BP」とあった……しかし、かなり回路構造も近そうなんだよな……ダメもとでDatasheetArchiveにTA8637BPで検索をかけてみたら出てきた。ダメもとで内容を確認する……。
……くっ……くっ、くっ、くぅーッ!! やったー!! これって、いわゆるピンコンパチってヤツじゃんよッ!! 手元のA11560は東芝でなく日立、DIPでなくフラットパッケージだが、各ピンに接続されている外付け部品の状況が、TA8637BPのデータシート内にある適用例に酷似しているのだ。こりゃ、間違いないっしょ!! そーなると、こーなって、上から2番目が+5V、一番下がビデオ入力に間違いない。いやホント、こーゆーのゾクゾクですわ。絶対に解けると保証されていない謎を、ネットの海に沈む情報を元に、頭をフル回転して引っ張り出す。今回の謎は幸運が重なったが、幸運も実力のウチなんじゃいッ!!
ここまでワカったら、動作確認するしかない。ACアダプタからRFモジュレータに5Vを供給、出力をテレビのアンテナ端子に送り込みつつ、テレビを2chに合わせ、ゲーム機のビデオ出力がRFモジュレータ経由でテレビに映ることを確認するのである。オーディオのピンはまだ不明だが、残りのピンは2本だ。どっちかに決まっちょる。試してガッテンすりゃエエんじゃ。
……が、しかし、映らん……ウンともスンともだ。悩む……悩む……(散々悩む)……むッ!! 4本のピンは電源、ビデオ、オーディオと……ナンだ? このRFモジュレータにはアンテナ入力がある。というコトは、入力切替ピンか? この一番ハジのピンが非常に怪しい。グランドにプルダウンすればビデオ入力になるのかもしれん、やってみよう……ダメか……んじゃ、+5Vにプルアップ……。
バッチリである。テスト用のICクリップとほっそーいコードによる結線であるが、かなりキレイに映った(画面のノイズはゲーム機の電池が消耗しているからだ)。音もバッチリ出た。というワケで、各ピンの正体は、一番上から「プルアップでビデオ入力イネーブル」「+5V入力」「オーディオ入力」「ビデオ入力」と判明したのであった。いやー、これでまた工作を次のステップに進められるってモンである。
残りの懸案は、高周波回路の工作の難しさと、高周波アンプに使う石の選定だ。ココまでくれば秋月のキットに使用されていた、MAR-1とMAR-6を使って安易に仕上げたいトコロではあるが、コレまた不運なことに今は秋月で扱っていないときている。現在、秋月で扱いのある似たような石には、MAV-3、uPC1677C、GN1021あたりがあるが、いまひとつ詳細な仕様が不明である。そんなに高くないコトもあるし、2個くらいずつ買って試行錯誤するしかないかなぁ……というあたりで、久々に興奮の一日を終えるのであった。では、おやすみである。
2005-04-30(Sat) 白い服の男を返し、ドラクエ捜索
今日も天気がよい。ポクポクと近所の図書館に本を返しに行く。気づくとナナメ読みしかしていないCodeReadingを抱えて、である。いや、悪い本ではないし、この本にしか書いてない情報は多いとは思うのだが、パラパラとみて衝撃を受けるような内容でなかったのも事実なのである。そもそも、コードの読解テクニックなんていうモノを本から得ようとするコト自体が間違っているのだと思う。どんな本であれ読むことは無駄ではない「ことはない」と思う。とくにその本が高価な場合だ。やっぱり5,000円越えはちょっと高い。高すぎるよ。
一方で、星新一の「白い服の男」はシッカリと読んだ。以前にオイラが書いたニュースこそ規制すべし、という内容のコラムと主題が近いのではないかと思い、再読したくて借りたモノだ。結果、白い服の男の主題は「軍備や武器を減らしても戦争はなくならない、その概念から抹殺する必要がある、例えその抹殺行為がいかに不正であったとしても」というモノであった。厳密にいうと、最後は「抹殺行為がいかに不正であったとしてもやるべきか?」という読者への問いかけなのかもしれないけれども。
オイラの「ニュースこそ規制すべし」にその小説を当てはめるとどうなるのだろう。残酷表現のあるゲームソフトの抹殺はもちろん、その類のニュースは如何なる報道操作をしてでも抹殺すべし、というコトになるのだろうか。むしろ、そういった抹殺行為が不正というよりは、限りなく難しいのだというコトを表現しているという見方もできる。ま、なんにせよ、情報の隠蔽というものは難しく、今後さらに難しくなっていくコトが予想される。そしてインターネットが、テレビよりも公平なメディアであるコトに間違いない。なんか、うまくまとまらないが、そーゆーコトなのである。
■ フルタニアン(管理者) [しかし、マザーボードをフィルタに固定するのは大変であった。いくら硬めだとはいえ、相手はフィルタであるから、勇気さえあ..]