Monthly Archive for February, 2006

pollen season

ひらたく言うと花粉の季節。

どうも最近眼がかゆくて、あぁこれは昨年発症した花粉症だなと。 今住んでるあたりは実にひどくて、これまで花粉症と縁もゆかりもなかった僕をこの憂鬱な世界に引き摺り込んだのでした。

しかしほんとに辛い。今年は発症する前に病院行かなくちゃ!と去年固く誓ったのに忘れていたなんて。

あと何科に行くのがよいのか分からない。耳鼻科かな?でも、眼がかゆいのだから眼科かしら。いやいやアレルギー関係かな? 分からない。

アレルギーについて 花粉症科はないか、アレルギー科ですべて解決できないか

花粉症はどこの科にかかればいいか・・・アレルギー性鼻炎や、花粉症は全身的な対応が必要 です

そんなに医学って一人が全部の科を見れるなんて甘いものじゃないんです。

ううむ。まずは総合病院かな?

The Sound of Music

近所の映画館で上映していたので観に行った。 手に汗握る美しさ。

たくさんの大事なことが詰まっていた。

  • The Sound of Music
  • My Favorite Thing

を何度も口ずさんでしまう。

最後の追われるシーンがすごくどきどきして、手に汗を握ってしまった。

Wikipediaで調べてみたら、なんと実話をベースにしてるのだと。

山々の美しさと、メロディーの美しさがずっと余韻をひいている。長いんだけど、また何度も観たい。


サウンド・オブ・ミュージック
20世紀フォックス・ホーム・エンターテイメント・ジャパン (2004/03/19)
売り上げランキング: 619
おすすめ度の平均: 4.68
5 よかったです
5 名作だと思います。
5 老若男女向け

光きたっ

開通しますよと言われ続けてはや半年が過ぎ、とうとう我が家にも光が届きました。

さっそくためしにストリーミング動画とか流してみる。驚くべきすいすい感に酔いしれる。

あとは、この高速回線をどう活かすかです。

Google Book Searchが実現しなくても

Google Book Searchや、Amazon なか見検索は、出版社の抵抗が強いらしくなかなか全開バリバリというわけにはいかないらしい。

そこで考えてみた。

たくさんのひとが、blogである本について書くとしよう。一般的なblogでは、気になったところを引用しつつ、そこについての自分の考えを書くというのスタイルになる。

ならば、その引用部分だけを抽出してつないでいくことができれば、一冊の本が自動的に再構築できるのではないか?

方法

  1. 本のタイトル(A)、著者名(B)、書き出し(C)をキーワードにして検索
  2. それらしいものが見つからなければ(C)をひとつ先の文章にして1. に戻る
  3. <blockquote>...</blockquote>の部分を抜き出す
  4. 抜き出した文章の最後の文節でキーワード(C)を置換
  5. 1.に戻る

ためしに、読み終わったばかりのウェブ進化論 本当の大変化はこれから始まるでできるかやってみた。

書き出し(C)は

情報技術(IT)が社会に及ぼす…

なので、

  1. Google:ウェブ進化論 + 梅田望夫 + 情報技術(IT)が社会に及ぼす
  2. 見つからないので1. に戻る
  3. しばらくやってるうちにweb kikakuがみつかる。ここには、ほぼ本文そのままがある。
  4. 3.で見つかったページの一番最後の文章である いずれ振り返ることになるだろう を(C)にして1. に戻る

なんてことをやってみたけれど、やはりそう簡単にはいかない。序章すら再構築できなかった。

まとめ

とはいえ、この本はいくらベストセラーといってもごく最近出たものなので、まだあまりwebに引用が載っていないということを差し引かないといけないだろう。 多くの人が引用するような興味深い古典だと、実現可能かもしれない。


typo調子悪し

最近よくふつうのページや管理画面がApplication Error(rails)になってしまって、プロセスを再起動しないといけなくなる。 原因がよく分からないのが痛いところ。

Mac miniサーバだとやはり貧弱なのか。ちゃんとプロファイルとってみるかな。

バレンタイン!

バレンタインのプレゼンツ

妻からたくさんの暖かいプレゼントをもらった。 ありがとうっ。

mixi 2回め

やっと心あるおともだちから、お友達だよねっのメッセージをもらえた。

昔やっていたHMバンドの名前でコミュニティを検索すると、15件もヒットしてしまって憂鬱になった。

mixiはじめ

妻に招待してもらって、遅まきながらやっとmixiに参加できた。

いったいどんなとこなのかとうろちょろしてみた。Orkutを思い出す。あれの日本ローカル版なのかな。

友達をさがしてみる。一人もヒットしない。友達が少ないのか、みんな本名で登録していないのか。

そして、まだmixiのおもしろさが分からないでいる自分がいる。

桜乃

桜乃 自転車が進まないほどの強風の中、桜乃という珈琲屋さんに行ってきた。 店長さんが気さくな人で、一人で行ってもくつろげそうなお店。

たくさんのカップの中から好きなのを選んで、コーヒーを注いでもらえる。食器がきれいで良い。

More Effective C++::Item 5. Be wary of use-defined conversion functions

暗黙的な型変換に注意しようという話。

暗黙的な型変換には、3とおりの方法がある。

  1. 引数を一つだけ取るコンストラクタ、あるいは 引数に対してデフォルトの値を設定しているコンストラクタ
  2. operator sometype() const みたいな型変換演算子

しかし、暗黙的な型変換は予期せぬ振る舞いに発展する可能性があるので、できれば避けたほうがよい。あなたの意図したものと、コンパイラが解釈した結果は異なる場合があるからだ。

型変換演算子

たとえば、ペットショップの犬を表すクラスを考える。 それぞれの犬にはIDが振られている。

class Dog {
   public:
      void bark();
      operator int() const { return id_; }
   private:
      int id_;
      char *name_;
};

いま、犬の名前を表示しようとして、うっかりDogクラスには operator char*()がないことを忘れているとすると、

Dog pochi;
std::cout << pochi << std::endl;

なんてやってしまう。結果は、pochiのIDが表示されるというもの。

経験を積んだC++プログラマは、たいてい型変換演算子を避ける。 たとえば、std::stringにはoperator char*()の代わりに c_str()が存在する。

引数を一つだけ取るコンストラクタ

こいつはよりたちがわるい。

ふつうにクラスを設計していても、こうしたコンストラクタを記述することはままある。そして、こうしたコンストラクタも、暗黙的な型変換に一役買ってしまうことがあり得る。

class Array {
   public:
      Array(int n); // n個の要素で初期化するコンストラクタ
};


Array a(10);
Array b(10);

for (int i=0; i<10; i++) {
   if (a == b[i]) {        // ここでミスしている !
      ...
   }
}

なんて風に、a[i] == b[i]と書くべきだったところを書き間違えても、コンパイラは文脈から if (a == static_cast(b[i])) といったように解釈してしまう。意図が正確に反映されていないばかりか、見つけにくいバグになってしまっている。

対策

explicitキーワードをコンストラクタにつける。このキーワードがついたコンストラクタは、暗黙的な型変換には使えなくなる。

もう一つ方法はあるけど、それはトリッキーになるので略 (ヒント: proxy class (see Item 30))。


所感

暗黙的な型変換は、こちらがコーディングをミスったときに、コンパイラがプログラムをコンパイルできるように、都合良く解釈してしまうため、どこで間違いを犯したか分かりづらいことが問題。

既存の大規模プログラムに手を入れたり、バグを発見するような場合を考えると、こうした言語仕様は厄介だ。

自分の意図と異なる振る舞いをプログラムが見せることほど腹立たしいものはない。コードの字面の下で何が行われているかを、正確に把握していないと正しいコードが書けないような言語は人に優しくない。これで大規模なプロジェクトをまともに作ろうという方が無理だと思う。

自分の意図を自然に表現でき、そして書いたとおりのことがストレートにコンピュータに伝わり、実行されることが重要だろうと思う。