2004年9月の技術日記


Sep.4,2004 (Sat)

CD-ROMとネットワーク無しでLinuxインストール

近所のNotePCに Vine Linux 3.0 を入れる。元のOSであるWindowsMeがウイルスにやられて壊滅的な被害が出たということと、Vine Linux の gtk が2に上がるので Eclipse が3に出来るというのが入れようとした理由なのだけれども、入れようとした先(東芝 DynaBook V2/470CRC)が手ごわかった。まず、内臓のCD-ROMが壊れているので普通にCD-ROMからはインストールできない。以下、その記録。

フロッピーブート

幸いブートできるフロッピーがあるということなので、ネットワークインストール用のブートフロッピー(pcmcianet.img)を作って試す。

まず、ここでフロッピーからブートさせる方法が分からない。いろいろ調べると、プレインストールのWindowsMeのコントロールパネルから「東芝HW セットアップ」を開いて、ここで起動順序を決めないといけないらしい。起動時のBIOSの設定画面で〜という選択肢は無いため、Windowsが無ければ細かな設定が全く出来ないらしい。これは使いにくい。ぼろぼろのWindowsMeを起動させて起動順序を変更。(*1)

なんとかフロッピーでブートさせる。しかし、この pcmcianet.img イメージには、手持ちのPCMCIAネットワークカード(2枚:BuffaloとPlanexの安いやつ)を扱えるモジュールが入っていないようだった。もしかしたら、モジュールオプションを設定すればいけたのかもしれないけども、ちょっと調べただけでは分からなかった。drvnet.img をエキスパートモードで試すも、マウントできないというエラーが出て前に進めない。

よって、フロッピー経由は断念。

外付けCD-ROM

USBでブート可能なCD-ROM(NOVAC:DVD SuperMulti Station)ドライブを近所から調達。だめだろうと思いつつ試すと、やっぱり起動できない。一応、起動時にCD-ROMのランプがついて何か行われているようだけれども、起動には至らない。かなり昔のNotePCなのでUSB経由からのブートはサポートしていない可能性が高い。

それではと、VAIO SR9M に付属していた PCMCIAカード接続のCD-ROMドライブを近所から調達。しかし、これは起動時にランプが点かなくて認識もされない。

ということで、このNotePCを使ったインストールはあきらめる。(*2)

デスクトップPCでインストール

昔のNotePCでは、ハードディスクを他のPCに繋いでインストールするという技が多用されていた。ということで、その技を応用してみる。

NotePCのハードディスクをUSB2.0なハードディスクケースに入れてデスクトップPCに繋ぐ。そしてCD-ROMでブートさせてインストール開始。USBのハードディスクは /dev/sda として認識されているので、このデバイスに向けて普通にパーティションを区切ってインストール。本体のハードディスクをうっかり消さないように気をつけてインストール完了。ブートローダーはとりあえず /dev/sda の先頭パーティションに書き込んだけども、もとのNotePCでは /dev/hda になるので起動は期待できない。

NotePCにハードディスクを戻して自力でブートをさせてみると、画面に「LI」と出て止まる。かなり前進。

Vine Linux 3.0 な別のマシンでブートフロッピーを作成。apt-get で kernel-BOOT パッケージを取ってきて、ブートフロッピーを作る。


mkbootdisk --device /dev/fd0H1440 2.4.26-0vl15BOOT

フロッピーからブートして、 /dev/hda をルートとして設定してLinuxを起動。エラーログが激しく出るものの何とか起動成功。lilo.confの /dev/sda を /dev/hda に書き換えて、liloを設定して再起動。今度は見事に自力起動に成功。

PCMCIA

起動したものの、環境の差のためかログに激しくエラーが出る。デスクトップPCでインストールしたので、PCMCIAが有効になっていないとか、グラフィックカードが違うとか、USBとかIEEE1394のドライバが違うなど。

グラフィックスカードについては、lspciで調査してXconfigureで設定。Xは起動するが、twmなどのウインドマネージャが無いのでstartxしてもあまりうれしくない。また、ネットワークがまだ開通していないのでapt-getも出来ない。

次に激しくエラーログを出すUSBとieee1394を何とかする。rmmodで関係しそうなモジュールを取り除いて、正しそうなモジュールを確認する。どうやらieee1394は簡単にはうまくいきそうに無いので /etc/murasaki/bin/auto_setup からはずす。これで激しいエラーログが止まる。所有者はieee1394を使わない雰囲気なのでこのまま放置。

最後はPCMCIA。 いろいろ試した挙句、/etc/sysconfig/pcmcia を以下のように編集。


PCMCIA=yes
PCIC=yenta_socket
PCIC_OPTS="irq_list=10,11" 

/etc/init.d/pcmcia start して、ネットワークカードをさすと認識成功のピピ音。さらに/etc/init.d/network start するとネットワークが開通。これでapt-getでやり放題。

長かった。

あとは所有者に任せる。WindowsMeからLinuxに移行したことでOSの安定性が上がったので、生産性の向上を期待してみる。

*1: 後で「F」キーを押しながら電源を入れるとフロッピーから起動することが判明した。
*2: もうちょっとがんばって、フロッピーでブートさせてUSBのCD-ROMか外付けUSBを認識させるという手もあったかもしれない。

Sep.6,2004 (Mon)

ストレス

遁走――ある日突然、姿をくらます(@IT)

一種のもうろう状態で、気が付いたら知らない土地に来ていたということが多々あります。遁走中、本人は自分の記憶を失いながらも、日常的なこと(電車の切符を買う、食事をするなど)は、傍目から見ると普通に行って見えるため、その状態を気付かれません。

そういう現象は経験がある。自分の場合は忘年会でいろいろ飲んだ後だったので、きっとストレスが原因ではないと思われる。

ただし、あんまり四六時中作業に追われてもそれほど苦に感じないらしいことと、一緒に仕事をしている人から「我々は長生きできないですね。」としみじみ言われたことから、自分の潜在的な遁走の可能性は高いのかもしれない。

個人情報流出

ついに子どもも被害者に? 個人情報流出事件についての考察(@ITMedia)

漏れたデータは

今回流出したのは、こうして模試を受験した子どものデータで、日頃から日能研に通っている子どもだけのデータではない

というもの。コラムの著者が主張するように漏れた人々のダメージは大きい。漏れリストに成績が入っていないというけども、成績が入っていないはずが無い。偏差値が付いているだけでも名簿の価値はものすごい上がることは誰でも想像できる。内部犯行で自由にデータを触れる技能と立場があれば、名簿に成績を含めることは難しくない。

ネットワーク経由でのハク対策は当たり前として、これからは内部犯行の対策ができていない企業は個人情報を扱ってはいけないと思う。最低限、暗号化ファイルシステムの利用(盗難対策)、ログなどの監査情報を残す(内部犯行抑止)があれば、大抵の個人情報漏れは防げるはず。

Sep.7,2004 (Tue)

RBManagerとICU4J

RBManagerがバージョンアップされていた。バグが多かったり操作が分かりにくいのだけど、慣れればまあまあ使える。

ちなみに、ここのICU4Jは1バイトカナ(半角カナ)やWindows-31J(MS932:WindowsのShift_JIS)の丸数字やローマ数字の小文字などで困っている人には大変便利なもの。


import com.ibm.icu.text.Normalizer;
 
public class ICU4JTest {
 
    public static void main(String[] args) {
        String in = "日本語にほんごニホンゴ(後省略)"; //詳しくは下の結果図を参照
        System.out.println(in);
        String out = Normalizer.normalize(in,Normalizer.NFKC);
        System.out.println(out);
    }
 
}

これをWindows上でコンパイルして実行すると、以下のように表示される。

困った文字を変換

丸数字が単なる数字になったり、スペースや「|〜¥」が半角になったり、ローマ数字がアルファベットに分解されたりと、非常に扱いやすい文字列に変換してくれる。ただ、拡張漢字自体はそのままなので、その辺で困っている人はどうしようもないみたい。というか、プログラムで解決できる問題でもないし。

Sep.8,2004 (Wed)

SPAM撲滅

阻止率99%のスパム対策方式の研究報告(by 浅見氏)

近所でメールサーバー構築の予定があるので、ぜひ参考にしたい。

wanderlust 上の spamfilter.el は、まずまずの働き。日本語のSPAMの分類が甘かったり、英語だというだけでSPAM扱いされてしまうこともあるけども、分類と実際の振り分けに1クッションあるのが非常に便利。

某サイトでのルールベースSPAMフィルターは、最近のSPAMメールの巧妙化によりすり抜けるメールが多くなった。何とか修正してしまいたいところ。

最近のSPAMに関する相談。

何かに登録してしまった:
ゲームサイトに登録をしたら山のようにやって来るようになったという相談。個人情報は気軽に入れないようにして、できるだけ「捨てアドレス」や「偽情報」を使いましょうということと、メールアドレスを変えるか、それがだめならSymantecなどから出ている対SPAMソフトを使ってみてはどうかという風に回答。ふつうの人ということで、お金で解決した方が安いかなと。
携帯にはSPAMやウイルスはforwardしたくない:
携帯にメールを飛ばしているのだけど、ウイルスやSPAMは飛ばしたくないという話。がんばれそうな人なので、cron で fetchmail + procmail を動かしてはどうかと回答。ただ、procmailの設定ファイルは変態なので、最近はそういうこと専用のLens(by 増井氏)を使うのがいいみたい。

近所に出会い系サイトで働いていた人がいて、そこの話によれば大手になると1ヶ月で数億の収入があるらしい。SPAMなんて誰も見てないんだから、そのうちSPAMに意味が無いことを自覚するのだろうと思っていたのだけど、そういう可能性は無いみたい。っていうか、出会い系サイトが想像以上に繁盛している現状にとてもがっかりした。

デジタル時代のコンテンツ

数年前、映像や音楽のデジタル化によって以下のような未来やスタイルが提案されていたように思う。

  • 携帯音楽は小型で高音質に
  • コンテンツをネットワーク経由で販売することで、流通コストが下がり低価格になる
  • 高音質・高画質のデジタル放送が始まる
  • CD、MD、DVD、HDD、半導体、ネットワークなど、スタイルに合わせて好きなメディアを選んでコンテンツを楽しめる
  • デジタルデータは再利用・加工がしやすいため、新たなコンテンツの活用方法などが期待される

しかし、現状はまったく逆になりつつある。

  • CCCDという最低の壊れたCDが出回る
  • ネットワーク経由での音楽購入は使いにくくてとても利用する気になれない ← メディアをほとんど移動できない、各社フォーマットが違う、ビットレートが低いので音が悪い、その上値段が高い
  • デジタル放送は圧縮ノイズがひどくて高画質になったとはいえない
  • コピーワンスやCCCDで、私的コピーもできなくなり、メディア間の自由な移動は絶望的
  • ましてやデジタルデータの再利用・加工は不可能
  • 技術の進歩が進むほど、著作権法がますますクリエーターや消費者にとって活動の障害になっている

以下参考資料。

CCCDといい、コピーワンスといい、「5分くらい考えました」という対処療法的な解決策でしかない。WinnyがCCCDをもたらしたと言う人もいるけども、CCCDの導入を決定したのはレコード会社であってWinnyではない。コピー禁止を「クリエーターのため」と言うのも、体のいい言い訳にしか聞こえない。本気で何十年も付き合ってもらいたいメディアやフォーマットを作りたいのなら、もっと先を見て考えてもらいたいものだと思う。

だから、そういう相談を受けたら下のように答えている。

地上波デジタルTVを買うべきか
否。アナログテレビで十分。どうせデジタル電波は来ないし、アナログ放送中止はできないか、延期される。デジタルの画質も綺麗ではあるが、現状で十分なら必要ない。後で気が変わっても、チューナーを後付すればよい。
HDDレコーダーは信頼してよいか
否。ハードディスクはもろいから、長期保存には向かない。コピーワンスなどが始まったら目も当てられない。利用期間を数年と見限って、「ざっと録画してあとで適当に見る」という使い方であれば悪くないかも。
DVDは長期保存できるか
不明。ただ、安メディアは信頼できない。フォーマットが乱立していて不安あり。

ひどい世の中になったものだと思う。

Sep.9,2004 (Thu)

仕様書の管理

要求仕様に関係する落とし穴(@IT)

確かに仕様書も管理しなければならない。SubversionのWebDAVフォルダにしてしまえば、見る人にとってはバージョン管理を意識しなくて使えそう。

近所では仕様書はExcelで書かれることが多い。立派な表紙をつくったり、がんばって手動で目次を書いているものもある。Excelを使う利点として思い当たることは多分以下のよう。

  • SEやPGと呼ばれる人は、ほぼ必ずExcelを持っている
  • 仕様には表が多々出てくる
  • 丸、矢印、クリップアートを利用して即座に絵が描ける
  • セルを利用してGUIレイアウトを書ける
  • VBAでDBスキームなどを自動生成できる

しかし、仕様書を見る方としてはあまりうれしくない。以下、自分のうれしくない理由。

ほぼ間違いなく構造化されていない
文書の構造や規模が分からず、文書をどう読んだらいいのか分からない。 → つまり、全部読まないと分からない。
各シートの大きさが分からない
いちいちスクロールしてどこまでがシートの範囲か調べないといけない。 → 見落としが発生して仕様に抜けが出る。
マウスを使うのが面倒
情報を見るだけなのにマウスを多用しないといけないというところが面倒くさい。特に、Excelだと上下のスクロールに加えて左右やシートの移動など、マウスが無いと不便なナビゲーションが多い。
そもそも Excel を持ち歩いていない
OpenOffice で代用しているが、たまに絵がずれる。一応 MS Office は持っているけども、危険なので VMWare の WindowsXP の中に封印してある。その XP も、ここ半年以上起動していない。

ではなんだったら良いかというと、個人的な嗜好で言えばHTMLかPDF。これらはほとんど閲覧専用フォーマットで、ブラウザも閲覧に特化しているので使いやすい。特にマウスをほとんど使わずに見れるのが良い。生成にSmartDocやTeXやWikiを使えば、構造化文書を簡単に作れて目次や文書内リンクもできる。ただ、図を描くインタフェースが統合されていないので、文書と別に図を描いて追加という手順を踏む必要がある。

一方、Wordであれば構造化もしやすいし、書かれたものもExcelよりは見やすい。表もかけるし絵も描ける。印刷にも便利。

ちなみに、自分が担当のプロジェクトでは、仕様書・設計書は手書きのメモ的なものが多い。それを汚いままコピーして関係者に配る。製品以前の研究的なものが多いとはいえ、よそから見たらExcel以上にダメかもしれない。

Sep.10,2004 (Fri)

未踏〜認定証とネットエリートの会

久しぶりに、上林PMの未踏の人たちに会う。各地でセミナーにひっぱりだこな人から、資本が2億を超えた人など。みんな活躍している。

認定式でのPM代表の挨拶にて「未踏は未踏でやったことが重要なのではない。未踏は人材発掘の機会であって、さらにブランドである」と。自分にブランド維持ができるだろうか。

その後、arai氏に連れられて「ネットエリート(arai氏による呼称)」の会へ。「ここは日記やWikiに興味がある人々の会です」と紹介された時、その場の人々は「それは違う」と嫌がってはいたけども否定できなくて悔しそうだった。以下印象的だった話題。

  • 飛び込みSE:現場に突然現れて、「Linuxのインストールは要りませんか?」「Apacheの設定はいかが?」などと売り込む営業方法。
  • SE交換:不要のSEと某国技術者をもれなく交換するサービス。かなり需要が多いらしい。
  • デリバリーなんとか:〜(人形)をデリバリーするサービス。通常の〜ではありえない顧客同士のコミュニケーションがあるらしい。
  • 人狼BBS:有名なカードゲームをBBSにして進めるシステム。最近はまりすぎて出られなくなる人多数らしい。

途中参加なのであんまり話題についていけなかったのが残念。やっぱり東京はネット会の人々にとっても中心であることを実感した。

Sep.13,2004 (Mon)

Linuxの暗号化ファイルシステム

「意外にLinuxには使える暗号化ファイルシステムが無いんだ」といううわさを聞いたのでちょっと調査。

  • CFS : NFSをローカルに向けて使う形の実装。かなり古いみたい。しかもかなり情報が少ない。 ※参考:Cryptographic File System(@気が向いたら書きます by 谷津氏)
  • TCFS : CFSと同様NFSを使う実装。カーネルで動くのでパフォーマンスがいいらしい。クライアント側が復号するのでNFSで共有する場合にはかなりいいみたい。 ※参考:TCFS FAQ(翻訳 臼井氏)
  • EncFS : Fuseのユーザ空間マウントの仕組みを利用して、ディレクトリ単位で暗号化する。手軽そう。 ※参考:暗号ファイルシステム EncFSの導入(by 小河氏)
  • VP Disk Pro : OmniSecure社の暗号化ファイルシステムの製品。128万円らしい。Turbolinux Server で採用されている。Solarisもサポートしている。実装がどうなっているのか良く分からない。
  • Kernel 2.6 には暗号化ファイルシステムの仕組みがあるらしい。情報は少ない。

ざっと検索してみた限りでは、製品は1件、その他はどれも実験みたいな感じなので、「使える暗号化ファイルシステムが無い」という感想は納得できる。製品としては VP Disk、個人利用ではEncFSが有力っぽいけども、どちらもいろいろ試してみないと分からない。現状はLinuxに取られて困る情報を置くなということか?

暗号化ファイルシステムについてUNIX USER の2004年9月号に何か書いてあるらしい。

Sep.15,2004 (Wed)

風邪をひく。PLを飲んで、かなりふらふら。

Sep.17,2004 (Fri)

風邪が大体治る。

「しろうとさん」

「著作権を保護する法律や社会的な体制自体が問題だ」という議論は、逮捕直後にかなり尽くされて、むしろこれ以上外野が反法律を掲げて騒ぐのはアレなので別の手段を考えようという風に収束したように記憶している。実際これらの記事も、その議論から大して進んでいないように思う。その前に、逮捕の根拠になった法律のダメ出しを裁判で行えというのは素人が考えても無理っぽい。

こういう話を見ると、FreeKanekoの会で弁護士の方々のお話を聞いていたときのことを思い出す。「しろうとさん」という言葉で表現される一般人と本業の考える法律の谷は、想像以上に深いらしい。

Sep.25,2004 (Sat)

Linuxの暗号化ファイルシステム2

奥村氏の「いろいろ」で別の暗号化ファイルシステムが紹介されていた。

また出たNTTのPC盗難(by 奥村氏)

ここに書いてある方法(Encrypting Disks)はループバックデバイスを利用して暗号化ファイルシステムを作成してマウントするもの。手順としては、カーネルに暗号化モジュールとループバックデバイスサポートを付けてコンパイル、マウントツールにパッチを当ててコンパイル、その後ファイルシステムを作成してマウント。一般ユーザーのマウントは難しいみたい。

また、この文書のリファレンス先を見てみたけども、StegFS以外はほとんどリンク切れで、Googleで探しても行方が不明だった。StegFSはメンテナンスされているのか良く分からない。

商用の方は今でもメンテナンスされていて、BestCrypt for Linux(@Jetrico)は2.2/2.4/2.6のカーネルに対応しているらしい。かなりドキュメントも公開されていて、30日の評価も出来る。1ライセンス1年間アップデートとサポートで$89.95なので、OmniSecureのものよりかなり安い。

Sep.26,2004 (Sun)

今月の携帯写真

Dish@Bivi

Bivi福岡天神Dishに知り合いが就職したというので抜き打ち突入。怪しげなオーラの漂う男3人(流浪教師、漁師、物理師)は以下の3品を注文。

チキン南蛮オムライス
チキン南蛮オムライス。「なかなかうまい。隣の〜カツよりも良い。」

トンカツオムライス
トンカツオムライス。「なかなかこゆくて食べ応えがあった。」

半生マグロ和風オムライス
半生マグロ和風オムライス。「非常に新鮮で、店員のおすすめ通りうまい。」

スズキショウコ

天神をスズキショウコのファンが2名歩いていると、スズキショウコの公開ライブに遭遇。あの声が目の前で聞けたことに激しく感動。

スズキショウコ

Sep.27,2004 (Mon)

よりよいログを考える

某所で作ったシステムのログがかなり不評だったので、関係者が集まってどういうログを残すべきか考えた。

現状のログ出力は、プログラムを担当した自分が、途中の経過やデータを出力してデバッグを容易にする目的でログ出力をちりばめた。特に、エラー時には必ずスタックトレースを出力して、周辺の必要なデータも出力していた。自分には想像もつかないようなデータがやって来ていたので、迅速な問題解決のためには情報は多い方が良いと思った。もともと、ログの仕様があいまいだったので、自分がかっこいいと思うようなログを出力していた。

その結果、オペレーション担当の人と言わず、自分以外の人には意味不明となった。毎回問題が起きると、原因調査のために毎回自分のところにログが添付されてきた。ほとんどの場合が毎回新たな問題であったので、自分が見てプログラムを修正していかなければならなかった。結局プログラマが確認しなければならないとはいえ、オペレーション担当にとって、何が起きているのかも分からなかったことが良くなかったらしい。

オペレーション的には、大まかな処理の過程やトランザクションがコミットされたかロールバックされたか、またエラーになった原因が簡単に知りたい。スタックトレースはプログラマ以外には必要ない。また、細かな途中経過や処理途中のデータも必要ない。問題があるときだけ、必要な出力を分かりやすく出す必要がある。そうでなければ問題が発生したかどうか、ログをずっと眺めなければいけない。

一番難しいのは、予期しないエラーの扱い。プログラムが予期しないエラーを発生したときに、的確な原因を表示することは不可能に近い。一度経験した問題や、問題が予想の範囲であればエラーの原因を示すことは出来る。しかし、そのような場合は「予期しないエラー」を発生しない。本来ならば「予期しない」という言葉はテストが足りないという意味になるのだけども、今回の状況は〜なので、現地で動かしながら予期しないエラーを一つ一つ潰していかなければならない。

以上のようなことを関係者でいろいろ話し合った結果、ログの仕様が固まった。

  • 処理毎に、正常終了したか、異常終了したかを端的に出力する
  • 予期しないエラーの場合はエラー専用のログに、処理過程とトランザクションの結果、スタックトレースと可能な限り読みやすいエラーの原因を出力する。
  • エラー専用ログには詳細なデバッグ出力を入れても良いが、プログラマでない人が読み飛ばせるような分かりやすいフォーマットにする。
  • エラーのログと処理毎ログが1対1で対応するようなIDを振る

あとはこれを実装すれば、プログラマにとってもオペレーション担当にとっても満足なログ出力が出来ると思われる。

ログはシステムにとって重要で、しかも真剣に考えるとかなり深い領域であるように思う。しかし、Googleで探して出てくるのは、どうやってログを出力するかばかりで、いつ・どのようにログを出力するかについては情報が少ない。よりよいログ出力について、もう少し勉強する必要があるみたい。

Sep.29,2004 (Wed)

なぜか月末は忙しくなってしまう。

S2DaoでNullPointerException

先日の某システムで仕様追加が発生したため、〜Beanに追加仕様用のカラムの変数と入出力(getter, setter)メソッドを追加。すると、実行時に NullPointerException が発生するようになった。追加したメソッドをコメントアウトすると発生しなくなるが、ちょっと見たところ該当箇所には問題は見当たらない。

使用中のS2Daoのバージョンは 1.0.6、S2 は 2.0.16。最新は S2Dao 1.0.10, S2 2.0.20 なので、安易にバージョンアップを試みる。そうすると、さらに別の箇所で NullPointerException が発生。 NullPointerException では何が悪いのか良く分からないので、仕方なくS2とS2Daoのソースを追う。すると、最新バージョンでは j2ee.dicom や dao.dicon に新しくコンポーネントを追加しなければいけないことが判明。バージョンが進んでいくにしたがって、内部の実装クラスをどんどんダイコンに任せていく様子が分かって面白い。

そして、S2Daoのソースと実行時のデータの流れを眺めていて原因を特定。結局、〜Beanの入出力メソッドのつづりが間違っていた。どうやら、「COLUMN アノテーションが書いてあるが対応するメソッドが存在しない」時に、メソッドのメタオブジェクトを取得できずに NullPointerException が発生してしまうらしい。



[最新にもどる]
桜井雅史: E-mail : m.sakurai@cmt.phys.kyushu-u.ac.jp
Web page : http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/