2000年12月の雑感

[トップページへ] [11月へ] [2001年1月へ]

12月26日(火)

ティッシュの箱を持参

風邪でぼろぼろです。ティッシュが手放せません。 今日は、ティッシュの箱をもって出社。


12月25日(月)

風邪復活

風邪から復活したのではなく、風邪が復活してしまいました。 鼻水が止らない。

『MySQL 徹底入門』

ありがとうございます。 何の関係もないのに1冊いただきました。 Ruby関連の参考URLとして私のページが紹介されています。

MySQLも使ったことないですし、 このページが、一体何の参考になるんでしょうか? 謎です。 本を読めば謎は解けるのか???

まあ、せっかくですので、遠慮なくいただきました。 しかし、こんなことで献本してたら、出版社も大変だなあと思ってしまいました。

『Ruby 雑記帳』にタイトル変えようかな。

ちなみに『Ruby 雑記帳』というタイトルの名付け親(?)は私じゃなくて 多分まつもとさんでしょう。


12月23日()

ruby-talk

一週間、ほったらかしにしていたらエラいことになってました。 大爆発です。1日100通だもんなあ。 何か対策しておこうかと考えてます。まとめ送りするとか。

Rubyのスクリプトでメールをサーバーから取り込んでいるのですが ちゃんと全部取り込んでくれました。 偉いぞ、Ruby! 偉いぞ Linux!

Windows 95 だとOSそのものが固まっていたかも知れません (過去に、もっと少ないメール数だったのですが、受信中にWindows 95が固まりました)。

年末年始は off にしておこうかな。


12月22日(金)

Service Pack 6a にやっと遭遇

結局よくわからないので、私より詳しい人に質問してみる。

winverを使えば、ちゃんと 6a と表示されるそうです。

ということでようやく 6a の文字に遭遇できた訳ですが、 どのヴァージョン情報を基準にすればいいのかますますわからなくなりました。 (Build 1381ってのが一番正確?) まあ、今回は、(動作確認テストをするのが目的なので) 本番の環境と同じ表示になったので、良しとします。


12月21日(木)

Service Pack 6a を求めて

Windows NTに Service Pack 6aをあてる。 (なんで今頃? と思われるかも知れませんが、まあいろいろ事情がある訳です。)

起動はちゃんとする模様。 が、起動時の青い画面には、

Build 1381 Service Pack 6

としか表示されないし、 Explorerから「ヘルプ」-「バージョン情報」で表示しても

Service Pack 6

としか表示しない。コマンドプロンプトからverとやっても

Windows NT Version 4.0

としか表示しない。

Service Pack 6a 

と表示しないのは、どっかで失敗したのかしらん。 NTを触り始めて結構時間は経っているのですが、延べ使用時間はかなり短いし、 用途も限定されているため、よくわからんのです。


12月17日()

風邪

まだちょっと咳が出る。

ノートパソコン

Linux と Windows の共存ですが、VMWareという手もあるなあと考えてます。

いや。まだ何をいつ買うのか決めてないんですけど。


12月16日()

風邪

午後になってだいぶ楽になる。

インスタンス変数のテスト

テストファーストプログラミングでやっていると、 インスタンス変数の中身がちゃんと意図した値になってるかどうか確認したくなることがあるんです。 インスタンス変数をテストしないとテストしづらい場合もあるんですね。 で、私の場合、どうするかというと

のどれかになります。あまり良い例ではないですが、

class Foo
  def initialize
    @bar = []
  end
  def output
    @bar.each do |b|
      puts b
    end
  end
  def insert(bar)
    @bar.push bar
  end
end

というクラスがあったとしましょう。 Foo#outputは、insertで追加した順番に@barの値を出力するという仕様です。 このとき「追加した順番に」出力することをテストしたいんだけどRubyUnitを使ってテストはできません。 (当り前ですが、RubyUnitは万能ではありません。) でも、何もテストしないよりはましなので、 インスタンス変数の内容が追加した順番になってることぐらいはテストしておこうと思うんです。

def test_bar
  foo = Foo.new
  foo.insert(1)
  foo.insert(2)
  foo.insert(3)
  assert_equal([1, 2, 3], foo.bar)
end

としたくなるんです。もっとも、こんなことすると、後で、リファクタリングするときに泣く可能性もあります。

こういう場合は、テストしやすいようにクラス構造から見直した方がいいのかも知れません。

(だからこそ、テストしづらいクラスを作ってしまう前に、 「テストファーストでテストを書くべき」というのが、最近の私の考えです。)


12月15日(金)

風邪

やっぱり、ボロボロなのでもう1日休み。 (昨日、休んどけば良かったかも。)


12月14日(木)

風邪

ちょっとましになったので出社するも、 「顔が赤いし、目がぼーっとしてる」 と言われる。


12月13日(水)

風邪

ボロボロなので、もう1日休み。


12月12日(火)

風邪

ボロボロなので、1日休み。


12月10日()

ノートパソコン

B5サイズ(1.5Kg前後)ってのとA4サイズ(3Kg前後)ってのがあるらしい。 1.5kgをちょっと越えるぐらいのB5の大き目サイズ? でいいかな。画面も12.1型液晶ってのがあるし。

スペック見てたら、Pentium III 600MHz とか、メモリー 64MB とか、HDD 20GB とか... はあ。世の中ってどんどん進んでるんですね。 デスクトップのスペックかと思ってしまいましたですよ。

で、後は、どこのメーカーにしようかなあと悩んでいるのが楽しくて、それで終ってしまう訳ですな。

Linux初心者の夜

Windows用にもLinux用にも割り当てないで遊ばせていたHDDの一部をLinuxに割り当てることに。

fdisk /dev/hda

とやってfdiskで残り領域を /dev/hda9 に設定。とりあえずmountしないと使えないので

mount /dev/hda9 /disk9

としてみたら、エラー。 man mount で調べて、ファイルシステムのタイプを指定しなきゃいけなかったのだと理解して

mount -t ext2 /dev/hda9 /disk9

やっぱりエラー。 Windows でいう format みたいなことをしないといけなかったかと思い

man format

したら、Tcl の format が出てきてしまった。

仕方が無いので、『Running Linux』で調べてみたら mke2fs すればいいようだと判明。 『Running Linux』の内容は、結構古い(と思う)ので、 念のため man mke2fs でコマンドの使い方を確認してから

mke2fs /dev/hda9 2401686

と実行。(第2引数の数字は、fdisk /dev/hda"p" と入力して調べた。) 今度はちゃんとmountできました。 でもって、/etc/fstab

/dev/hda9     /disk9     ext2  defaults     1 2

と追加。再起動してちゃんとmountされることも確認。


12月8日(金)

『プログラミング作法』

書店で、ちょこっと立ち読みしたら、良さそうな内容だったのでレジに直行。 私としては、珍しく衝動買いに近いです。

あっ。『達人プログラマー』探すの忘れた。

ノートパソコン

ちょっとノートパソコンが欲しいなあと思い始めた今日この頃。

てなことを考えつつも、 全くノートパソコンの知識が無い(ほとんど使ったことが無い)ので、ちょっと調査。 (もっとも、最近のデスクトップのパソコンに関する知識もありません。)


12月6日(水)

続・短いファイル名と長いファイル名

SHGetFileInfoを使う方法もあるみたい。

続々・短いファイル名と長いファイル名

GetLongPathNameは、Windows 2000 あたりだと使えるみたい。

RubyUnitがインスタンス変数に対して何もしない訳

例えば、

class Foo
  def bar
    if @bar < 0
       return 0
    end
    @bar
  end
end

なんてクラスがあったとします。 @barのテストがしたくなったとしましょう。 RubyUnit側で、@barへのアクセッサをダイナミックに定義する場合、そのメソッドの名前を何にすればいいかわからないんです。 barという名前で定義するとまずいですよね。 テストのときのクラスとアプリケーションで使う場合のクラスの挙動が違ってきますから。

そういう理由で今のところ何もしてません。

インスタンス変数のテストもしたいという気持ちもわかります。 (多分自分ではそこまでしないでしょうけど。) RubyUnitでどう支援すればいいのかわからないので用意していないだけです。

ということで提案大歓迎。


12月5日(火)

短いファイル名と長いファイル名

Windows で短いファイル名から長いファイル名に変換するにはどうすればいいんでしょう? 長いファイル名から短いファイル名に変換するGetShortPathNameというAPIがあります。 この逆は? GetLongPathNameというのは無いみたい。

MFCのソースの中をさまようことしばし。FindFirstFileが使える模様。 でもって、適当にでっちあげたC++の関数がこちら(Windows 95 + mingw32で確認)。

static string getlongfname(
    const string & fname,
    const string & dir
    ) {
    string fpath = dir + '\\' + fname;
    string longname = dir;
    WIN32_FIND_DATA data;
    HANDLE h = FindFirstFile(fpath.c_str(), &data);
    if (h != INVALID_HANDLE_VALUE) {
        FindClose(h);
        longname = dir + '\\' +  data.cFileName;
    }
    return longname;
}

string getlongpath(
    const string & path
    ) {
    string longpath = path.substr(0, 2);
    string p;
    string::size_type lpos = path.find_first_of('\\', 3);
    string::size_type fpos = 3;
    while (lpos != string::npos) {
        p = path.substr(fpos, lpos-fpos);
        longpath = getlongfname(p, longpath);
        fpos = lpos + 1;
        lpos = path.find_first_of('\\', fpos);
    }
    p = path.substr(fpos);
    longpath = getlongfname(p, longpath);
    return longpath;
}

目茶苦茶面倒だし、かなり格好悪い。 もっとスマートなやり方をご存知の方は教えてください。 (リファクタリングしてやってください。)


12月4日(月)

RubyWin

WM_LBUTTONDBLCLKを使う方法は結局駄目でした。 やっぱり、Scintilla側で何とかしないと駄目みたいな感じがする。


12月3日()

RubyWin

RubyWinにはエラーのある行でマウスでダブルクリックするとその該当行を表示する機能が昔はありました。 今は、それが動かなくなってます。フォーカスが変わらないんです。 RichEditからScintillaに切り替えてからそうなりました。(←そこまでわかっていて何もしてない。)

そこで、2時間ほど試行錯誤しながら、調べてみました。が、結局わかりませんでした。

Scintillaそのものに手を加えないと駄目かも知れません。

今まで使っていたサブクラス化の方法はやめて、 WM_NOTIFYSCI_DOUBLECLICKを使う方法を試したのですがやっぱり駄目。 Scintillaのソース調べてみたらWM_LBUTTONDBLCLKを使う方法もありそうです。 次回試してみよう。(←次回っていつ?) でも駄目な気がするなあ。

Perl/Ruby Conference 反省点

講演の最後に今後の展望みたいなものを話しましたが、あれは失敗でした。 「あると役に立つかも知れない機能」が、あの項目の中に含まれていて、 私も「あるといいかも知れない」とか喋ったと思います。 でもXPでは、本当に必要としている機能以外は作らないというルールがあります。

誰にも突っ込まれなかったけど、自己矛盾してることに今日になって気づきました(笑)。


12月1日(金)

Perl/Ruby Conference 第3日目

まつもとさんの講演を聴く。 講演が終った後で、インタプリタオブジェクトの件をまつもとさんにお願いする。

やっと、『Programming Ruby』にサインをしてもらう。 これで、Dave, Andy, Matz 3人のサインが揃った貴重な1冊になった。

うーん。相方の本も預かっといてサインしてもらえば良かったなあ。

その後、Ruby関係の人が数人集まってRubyに関する雑談をしているところに加わる。 ごとけんさんとRubyUnitの仕様の件でちょっと話したり。 咳さん、Toshさんらとインストーラとかテストとかいろんな話で盛り上がる。 (実は、これが一番楽しかった。)

Larry Wallの講演を聴いて3日間が終り。 楽しい3日間でした。


[トップページへ] [11月へ] [2001年1月へ]