memo.xight.org

日々のメモ

バグとの付き合い方

Summary

・バグは無くならない
・バグを生んだ他人を責めない
・バグを生んでも,見つけてすぐに直せばいい
・バグを見つけやすいように色々な方策を講じよう

  ほとんどのバグはAPIの仕様の理解不足から生じる.
  (ココでのAPIとは「自分以外の人が作ったモノ全て」)

APIの例

・OSのシステムコール
・低レベルなライブラリ(libcなど)
・X Window Systemライブラリ(Xlib, Xt)
・GNOMEライブラリ(glib, GDK, GTK+, gnome-lib, etc.)
・Win32 API,(Windows)COM
・libapr, libapr-util


回避策

・マニュアルを良く読む
・馴染みが薄いAPIの場合,そのAPIの動作だけを確認する小さなコードを書く
・自分の書くコードでは,assert(3)で条件を明示する
・自分の書くコードでは,外部に見せる関数(モジュール境界)に極度に気を使う
  ・公開ヘッダにきちんとコメントをつける
  ・公開ヘッダは保守的にする(仕様はあまり変えず,公開部分も最小限にする)


抜本的な解決策

・言語仕様から見直す (ポインタの無い言語にする,など)
・他人の作ったAPIは使わない
・枯れて良く知っている環境に安住して,そこから離れない(POSIXの環境から離れない,など)


具体的な例

・そのネットワークAPIはブロックするのかしないのか?
・そのAPIはスレッドセーフか否か?
・APIが返すメモリの所有者は?
・APIに渡すメモリの所有者は?
・(設計に問題があるにせよ)現実的には,呼び出し順序が意味を持つAPI群は多いので,そのコンテキスト依存性は?


Reference

  Ariel Networks - バグとの付き合い方
  http://dev.ariel-networks.com/blog/?itemid=347
  Ariel Networks - 失敗を恐れない文化 - 産み落とした多くのバグへの鎮魂歌 -
  http://dev.ariel-networks.com/blog/?itemid=50

HDDが壊れやすいのは10月説

Summary

  原因は埃と静電気.


  3〜4月,一番パソコンが売れる時期に購入されたHDDに埃が入り,
  その埃がヘッダにたどり着きHDDを壊すまでに半年かかる.それが10月.

静電気

  静電気が最も発生する月は,湿った空気と乾燥した空気が急激に入れ替わる10月.

Reference

  もなみ9歳 - 2003-10-15
  http://www.tokyo-nazo.net/%7etester/kako/best.html#20031015

「どの辺が未踏ですか?」に対する大人の反応

(既存のモノは) 遅いので新しいモノを作ります,という論理

  - 代表的な戦略
    作られた時代背景や環境の前提が異なるので,新しい前提の元に設計し直せば速くなる
    既存のものは一般的過ぎるので,アプリケーションのドメインを限定することで速くなる
    既存のものは古い実装や互換性に引きずられていて遅いので,ゼロから実装するだけで速くなる
  - 成功する要因
    時代背景の違い(昔の失敗したソフトは,時代を先取りしすぎた)
    ドメインの明確化(昔の失敗したソフトは何に使えばいいか分からなかった.機能を追加するより機能を削ることでドメインが明確化することは多い)
    実装の違い(昔の失敗したソフトは作りが悪かった)

(既存のモノは)複雑すぎるのでシンプルな新しいモノを作ります,という論理

  - 根拠として弱い
    シンプルであり続けられるとは限らない.
    いずれ複雑化して遅くなっていくのが定め.
  - 予想される指摘
    「シンプルにしてもできることが少なくなるだけでは?」
    「複雑であることにはそれなりに理由があるのでは?」

(既存のモノと違って)XMLを使って拡張可能にします,という論理

  - 難易度高!
    拡張可能性のみに未踏性を求めることは難しい.
  - 成功のコツ
    マニアックな言語を選択する (VBよりPython.XMLよりS式)
    ツールの重要性に言及して,ノンプログラマーや子供にも使えるようにする(ことを目指す)
    (どうすればいいか分かりませんが)セキュリティに着目する

(既存のモノでは)できないので新しいモノを作ります,という論理

  - 問題先にありき
    問題に対し,新しいソフトで解決策を示すことは,最も正しい戦略.
  - 反論を受けやすい
    「Aというソフトを使えば解決できます」と指摘されると終わる.
  - 特殊な領域に強い (マイナー戦略)
    一般的な領域であれば,既存ソフトでできない事,使いにくい点を複数用意する.

(既存のモノは使いにくいので)ユーザビリティで差別化します,という論理

  - たいした未踏性が無い場合に,逃げ込みやすい論理
    UIはソフトの中で最も自由度が高いので未踏部位を見つけることが比較的容易.
    実世界インタフェースなどを組み合わせると,誰も試したことがないことを見つける幅が広がる.
    「なぜ新しく作ると使いやすくなるのか」を示すことが重要.
    芸術系のバックグラウンドがある場合は,下記「格好悪いので…」の戦略と組み合わせ可能.
    ユーザビリティには様々な研究成果があるので,理論武装が肝.

(既存のモノは)恰好悪いので新しいモノを作ります,という論理

  - かなり開き直り系だが,ある意味反論不能なので強力な戦略
    芸術系や認知心理学系の知識が乏しいと難しい.
    「定量的に評価不可能では?」と反論されても「格好悪いから」と反論できれば○.

Reference

  Ariel Networks - 「どの辺が未踏ですか?」に対する大人の反応
  http://dev.ariel-networks.com/blog/?itemid=283

via

  cubic9.com - 2004-09-15
  http://cubic9.com/Blog/2004-09-15.html#i1ca10137

Amus

Summary

  感染したコンピュータから音声で話し掛けるWarm
  音声合成エンジンを利用してメッセージを読み上げる.

読み上げるメッセージ

How are you. I am back. My name is mister hamsi. I am seeing you. Haaaaaaaa.
You must come to turkiye. I am cleaning your computer. 5. 4. 3. 2. 1. 0. Gule. Gule.

- 音声データ
  http://www.f-secure.com/weblog/archives/amus.wav

Reference

  日本F-Sevure株式会社 - ウィルス情報 Amus.A
  http://www.f-secure.co.jp/v-descs/v-descs3/amus_a.htm
  Symantec Security Response - W32.Amus.A@mm
  http://www.symantec.com/region/jp/avcenter/venc/data/jp-w32.amus.a@mm.html
  マイクロソフト サポート技術情報 - 306902 - [HOW TO] Windows XP での音声合成の構成および使用方法
  http://support.microsoft.com/default.aspx?scid=kb;ja;306902
  Hotwired Japan - 2004-09-14
  http://hotwired.goo.ne.jp/news/news/technology/story/20040914302.html

via

  エルエル - 2004-09-15
  http://10e.org/mt/archives/200409/150305.php

Postini Map

Summary

  spamメールの送信元を世界地図にマッピング
  Postiniは,24時間毎にスパム調査レポート「Email Stat Track」を公表している

Reference

  Postini - Email Stats
  http://www.postini.com/stats/
  Postini - Postini Map
  http://www.postini.com/stats/map_window_spam.html

via

  エルエル - 2004-09-20
  http://10e.org/mt/archives/200409/202140.php

自作ラーメンを失敗しないで作る方法

コツ

・家にある一番大きい鍋で茹でる.
・コンロは火力の強いほうで,火加減は最強火!
・投入前に生麺をほぐすこと!
・お湯の温度低下を最小限に抑えるため,投入直後30秒ほどは蓋をキッチリ閉める.
・洗濯機のようにグルグル麺を泳がせてあげて下さい.

- Reference
  麺道 - 2004-06-04
  http://www.mendo.jp/blog/archives/000201.html

鉛筆の謎

鉛筆の材料

芯 (墨芯) 黒鉛と粘土
芯 (色芯) 顔料・タルク・ロウ・のり
インセンスシダー
- 芯の硬さ
  粘土と黒鉛の割合で決まる.
  HBの場合,黒鉛 : 粘土 = 7 : 3
  粘土の割合が多いほど,芯が硬く,色が薄くなる.

H,B,Fの意味

  H = Hard (硬い)
  B = Black (黒い)
  F = Firm (しっかりした)

鉛筆の硬度の種類

  9H〜6Bまでの17種類
  9H,8H,7H,6H,5H,4H,3H,2H,H,F,HB,B,2B,3B,4B,5B,6B

シャープペンシルの芯

  粘土の代わりにプラスチックを使用.
  鉛筆の芯よりもよく練りあわされている.
  これにより高強度な芯となる.

Reference

  三菱鉛筆株式会社 - 鉛筆の謎を解く
  http://www.mpuni.co.jp/museum/qa/mistery.html

via

  できそこないβ版 - 2004-09-21
  http://www.doblog.com/weblog/myblog/13465?YEAR=2004&MONTH=9&DAY=21

スターウォーズネタ

Summary

  「スターウォーズ・トリロジー」の特典で数々のスターウォーズ誕生秘話が収められている.
  ジェダイマスターのモデルはアルバート・アインシュタインだということが判明.
Amazon - DVD: スター・ウォーズ トリロジー

Reference

DVD: スター・ウォーズ トリロジー

via

  ABCdane.net - 2004-09-17
  http://abcdane.net/archives/001273.html

住み良さランキング

Best 10

 1 成田 (千葉)
 2 福井 (福井)
 3 栗東 (滋賀)
 4 長浜 (滋賀)
 5 富山 (富山)
 6 立川 (東京)
 7 敦賀 (福井)
 8 浦安 (千葉)
 9 砺波 (富山)
10 高山 (岐阜)

- Reference
  東洋経済web - 都市データパック
  http://www.toyokeizai.co.jp/data/toshidata/2004rank.html

via

  TricksteR - 2004-09-21
  http://the-trickster.com/archives/200409211612.php

電波な校歌

Summary

  宗 左近 という人が作詞した校歌の様子がおかしい.
  市川賛歌
  福島県立清陵情報高等学校校歌「宇宙の奥の宇宙まで」
  習志野台第二小学校校歌「青空」
  東京電機大学中学高等学校旧校歌「風よ光よ」

Reference

  In & out of my life - 2004-09-19
  http://in-out.upper.jp/archives/2004/09/post_74.php

via

  TricksteR - 2004-09-21
  http://the-trickster.com/archives/200409211612.php

「世界標準時」を刻む時計は「グリニッジ」にない

Summary

現在の「世界標準時」は、フランスのパリで刻まれていた。
「日本標準時」は東経135度に位置する「明石天文台」ではなく、
東京の小金井市にある「通信総合研究所」で刻まれている。

- Reference
  ガラクタ屋(仮) - 世界標準時を刻む時計はグリニッジにない
  http://www.geocities.jp/juni19jp/tisiki/back03/t0088.htm

via

  雅版雑記(仮) - 2004-09-21
  http://blog.livedoor.jp/gaban/archives/7044710.html
  TricksteR - 2004-09-21
  http://the-trickster.com/archives/200409211612.php