2001年10月の雑感

[トップページへ] [9月] [11月] [過去の雑感へ]

10月31日(水)

思い出せない

マージェリー・アリンガムって何書いた人だっけ?


10月30日(火)

ちんぷんかんぷん

英語が母国語じゃない場合、抽象的な内容のこのメールを読むのは、大変なことに違いないけどごめんね。 (超訳)

というような、ものすごい前振りのついたメール(英語のメール)をこの間から読んでいるのだが、 確かにまだ全部を理解しきれない。 (上の超訳の「大変なこと」というのは私なりの解釈です。正確には、horrendous という単語が使われてました。)

Ksh

ちと必要にせまられて、Ksh を調査。 事情があって、Kshを使わなくてはならなくなりそうなのだ。 Kshでファイル名の補完をTabでできるようにするにはどうすればいいんだろうか。 いや、もちろん、bashやcshの代わりに使えってだけで、Rubyの代わりにKshという訳じゃないです (←懐かしいネタ [ruby-list:16614] あたり参照)。 実は、もうちょっとでそうなりかけたんだけどね。

ちと遅い反応ですが

忘れないうちに謝っておきます。 私、一度お会いしているのですが、顔を覚えてません。 会場で遭遇しても、ほとんど初対面のような対応をすると思います。 気を悪くしないでください。 ごめんなさい。


10月29日(月)

手順書

かなり丁寧に書いたつもりだったが抜けがあった。 他の人は、その手順書でちゃんとできていたので、大丈夫だと思っていたんだけどなあ。

手順書には


次に hogehoge とメッセージが出るので "y" と入力する。

と書いてあるのに、実際には fugafuga とメッセージが出たらしい。 でもって、メッセージをろくに読まないで、"y" と入力すればいいと思って "y" と入力したらしい。

確かに抜けのある手順書を作った私が悪い。 だけど、メッセージと手順書を比較しないで、操作してしまう方もいかがなものか。

ruby-talk

あれ? 一通も届いていない。

と思ったらメールをPOPサーバーから取ってくるのに失敗してただけだった。 あれこれ試したけど救うことができず、結局あきらめて削除した。 渡辺さん と同じ現象。matomeにしてたので1日分のruby-talkが飛んでしまった。

体がおもい

なんか体がおもい。肩も凝ってるし。さっさと寝よ。


10月28日()

Xpdf 0.93

freshmeatからの情報。ずっとxpdfだと思ってたのだが、正式には、Xpdfなのか。


10月27日()

RubyUnit

0.4.3をリリース。

一部のメソッドを削除したこともあって、下位互換性が消えてしまってます。 悪しからず。 あっ。でも、rubiconが実行できる程度の下位互換性は保ってます。

Natさんは、機能的な違いということではなく、内部構造(デザイン)の違いを問題にしているらしい。 RubyUnitが元にしているJUnitの内部構造(デザイン)も気に入らないということらしい。

Lapidaryとか、Kent BeckのSUnitの解説や、 Natさんのメールを読んで、 RubyUnitの方が複雑かなと思う部分はありました。 もう少し比較して、できるだけ簡単な構造にしたいと思います。 余計だと思われる機能は削ってしまうかも知れません。 その後は、walkitとも比較して更に簡単にできる部分は簡単にしたいなあと思います。 RubyUnitに無い機能を補完して取り込むのはその後です。 というか、Lapidary(or walkit)にRubyUnitが取り込まれるという形でも別に構わないと思ってます。

ruby-talk

1日で200通近く。何があったんだろう???


10月26日(金)

ruby-dev

今度はruby-devが三分割になってた。

『XP エクストリーム・プログラミング導入編』

読了。これまでのXPの本と比べて、内容はより具体的で実践的。

ちゃんと読み取れていないだけかも知れないが、どうもタスクとペアプロの関係が良くわからない。 1つのタスクを完成するまでの間もペアは交換するものなのか? 交換するんだったら、サインアップをした人がペア交換によって、 サインアップしてないタスクの仕事をするというケースもあり得るんだろうか? だとすると、サインアップは単なる儀式なのか?

XPセミナーで この辺の話が聞けるかな。 まだ時間があるからもう一度読み返してみるか。

「ペア交換」は、正確には「ペア変更」と言うべきでした。 必ずしも交換とは限らない。


10月25日(木)

Linux Japan

届いた。そういえば、いつの間にか、「発送しました」通知メールが来なくなっている。

cvs.ruby-lang.org

cvs update したら


can't create temporary directory

No space left on device

と言われる。

emacs-w3m とかは、cvs update できるので、cvs.ruby-lang.org がおかしい?

ShellUnit

なんていう、Shell用のTesting Frameworkは、どっかに無いだろうか。 探す努力を(作る努力も)しないで、適当なテストスクリプトを作って胡麻化すことにした。

Python vs Ruby

[ruby-talk:23235] 思わず笑ってしまいました。 Bruce Eckel's MindView を先に読んでおくこと。

cvs.ruby-lang.org

今やったらちゃんと cvs update できた。


10月24日(水)

ruby-talk

爆発。1日1回の matome にしているのだけど、今回初めて、3分割で送られてきた。 今まで最大でも2分割だったのに。100通軽く越えてます。

RubyUnit

メソッドを一部削除。 Lapidaryの内部を読み始めているが、RubyUnitとそんなに違うかどうかまだよくわからない。


10月23日(火)

RubyUnit

昨日のテストが通らなくなった件は、 今日のruby 1.7.1 (2001-10-22) で通るようになった。 やっぱり昨日のはRuby側の欠陥だったみたい。それにしても素早い対応だ。


10月22日(月)

RubyUnit

主に、Refactoring作業。 RubyUnitは確かに複雑な構造をしている。 でも、単純な構造にするにはどうすればいいんだ? Lapidaryとwalkitと比較しよう。

ruby 1.7.1 (2001-10-22) にしたら、RubyUnitのテストが通らなくなった。 もうちょっと調べてみないとわからないけど、Procの挙動が前と違っているような気がする。

もうちょっと調べてみたら、やっぱりProcが原因だった。 でも、これが仕様変更なのかバグなのか自分じゃ判断つかないところが情けない。

1.6.5 (2001-10-22) と 1.7.1 (2001-10-19) ではテストが通る。 また、仕様変更だとRubyUnitのテストを修正しなきゃならなくなる。 修正は難しくないがちょっと面倒。 以上の観点から、これはバグだと思いたい。

バグ

そういえば、今読んでいる『XPエクストリーム・プログラミング導入編』には、


コードの中のどんな欠陥も「バグ」という言葉を使うな

というようなことが書いてあった。

RuEdit

Ruby 用のエディタで、マクロ言語がRubyの RuEdit。 RubyWinにもそういう構想だけは前からあったのだが、 もたもたしている間に先を越されてしまった。


10月21日()

Standard Testing Framework for Ruby

Ruby標準のTesting Frameworkはどうだろうかと Lapidary の作者 Nat さんと walkit の作者 Ken さんに投げかけていた。 NatさんとKenさんからの返事が出張中に届いていたので返事を書く。

私が不在の間にいろいろ議論が進んでいる。


10月20日()

休刊

いがぴょんの日記が休刊。 残念。

復活

と思ったら、 いがぴょんの日記ウェブページv2が登場。

前回に引き続き...

エンジニアに資格は必要か?第2回

前回に引き続き、誰の記事かも知らずにアクセスしたら、 今回も面識のあるartonさんでした。 Win32OLEではいつもお世話になってます。

ちなみに私は、思いっきり合格狙いの受験勉強をして、 アプリケーションエンジニアの試験に臨んだことがあります。

情報処理関連の仕事に従事しているのだから、 勉強しないで受験して合格するのが一つの理想だろうと思いながら、 ずっと前に一種を受験したら見事に落ちました。

じゃあ、逆に仕事とは関係なく、思いっきり合格狙いの付け焼刃的受験勉強をしても 情報処理試験に通用するんだろうかと思って、取り組んだのがアプリケーションエンジニアの試験でした。 (合格狙いの受験勉強なので、受験生気分で結構真剣に盲目的に合格のためだけの勉強をしました。)

結果、合格狙いの付け焼刃的受験勉強は、ものの見事に通用してしまったのでした(笑)。

ちなみに、このときの合格狙いの付け焼刃的受験勉強は、 その後の私の仕事には、通用しなかった(あまり役に立たなかった)ように思います。

JFCUnit

Swing に対応したJUnitの拡張版JFCUnit


10月19日(金)

寒い

出張から戻ったら、こっちも寒くなってた。 昨日の東京より、もっと寒いような気がする。

飲み会

職場の飲み会。


10月18日(木)

出張終了

英語ができないのはつらい。 東京は寒かった。 今回は、慌しくばたばたと帰る。


10月17日(水)

決定

11:00頃、「予定通りに来てくれ」と連絡あり。出張決定。 ということで東京へ。


10月16日(火)

出張の準備

今回は延期の連絡が来なかったので出張の準備。 明日午後から出張の予定。 なので、明日午前中に延期の連絡が来ないとも限らない。まだまだ油断は禁物。


10月15日(月)

セサミストリート

は、きっと幼児向け番組で、ポケモンは小学校低学年ぐらいまでをターゲットにしていると思われるので、 ポケモンの方が、英語が難しいのは当たり前か。

ということは、私は、幼児レベルの英語なのか(いや、それ以下かも)。うーむ。

teardown (RubyUnit)

teardown で直前のテストに失敗したかどうかを知る手段があるかどうかという話。 ([ruby-talk:22477])

ということらしい。

この話から、ふと考えてみたが、

なんてものは需要あるだろうか?

Ruby book

来年には、5冊も、英語の本が出るらしい。 ([ruby-talk:22509])

英語の次は仏語

fr.comp.lang.rubyを作ろうという話。 ([ruby-talk:22553])


10月14日()

ポケモン

たまたま、テレビつけたら、二ヶ国語放送のマークに出くわしたので、音声切り替えしたら英語になった。 子供向け番組だから、きっと英語は易しいに違いないと思って、聞いてみた。 全然理解できなかった。

ポケモンの英語のレベルがどんなものか調べてみようと思い、Googleで検索したら、 ★ぽけもんで いんぐりっしゅ★ というページを見つけた。 やはり、子供向け番組だから、英語は易しいらしい。 それすら聞き取れなかった自分ってかなり駄目だ。 セサミストリートよりは難しいと思うんだけど、実際のところどうなんだろう?


10月13日()

ML

Lapidary 0.2.1

TestRunnerに、GTKの他にFoxもサポートするようになったらしい。

そういえば、Tkが無いな。

ちなみにRubyUnit が GUIなTestRunnerを提供していない。

テストに一度でも失敗すると、TestRunner自身を再起動せずに テストをパスする手段を見つけることができなかったから。

例えば


require 'foo'



class TestFoo

  def test_foo

    aFoo = Foo.new

    assert(aFoo.foo)

  end

end

で、1回テストに失敗すると、 いくらfoo.rbを修正しても2回目以降は、require 'foo' で、修正した foo がロードされないので、 テストに失敗し続ける。

結局、TestRunnerを再起動しない限りテストにはパスしない。 毎回、GUIなTestRunnerを起動するのでは、あんまり嬉しくないし、 GUIのメリットも半減するんじゃないかと思ってサポートしていない。

RubyWinでRubyUnitが使えないのも同じ理由だ。


10月12日(金)

体調不良

元々休暇で病院に行ったのだが、その時は何ともなくて、病院出て、書店に寄って、 昼御飯食べた直後、急激に調子が悪くなり、家に戻って夕方まで寝た。

RubyUnit(ChangeLog)

この前の修正をChangeLogに反映するのを忘れていたことに気付いたので、反映した。

で、例のParseErrorは気にする必要が無いことが判明。 PCL-CVSの方が悪いらしい。

オフ会

某オフ会が東京で15日にあることを知った。 出張が延期にならなかったら、参加できてたかも。 残念。

相性

どういう訳か、この出張先へは、私はなかなか行くことができない。 前の仕事のときも今回と全く同じ場所へ出張する話が何度もあったが、 その度に延期を繰り返し、一度も出張することなく仕事は終わった。 今回は、別の仕事なのだが、既に2回延期になっている。 どうも、私はこの出張先との相性が悪いとしか思えない。

いや、別に無理に行きたい訳では無いんだけど、こうも続くと 意地でも1回出張してやるという訳のわからん使命感に燃えてしまうから不思議だ。

ホテルの予約をしてはキャンセルを繰り返しているので、 人から、

「ひやかしだと思われて、ホテルのブラックリストに載ってるんじゃない?」

と言われている。

書籍購入...せず


10月11日(木)

まるごと全部

書いた返事は、そのまま 反映された。

w3m (Vine Linux 2.1)

w3m-inu プロジェクトから w3m-0.2.1-inu-1.4.tar.gz をダウンロードして、さらに インラインでイメージを表示するパッチを ダウンロードして、w3mインライン表示可能バージョンを作る。 ちょっと使ってみたけど、前よりも、emacs-w3mとの相性は良くなっている気がする。 もっともemacs-w3mもcvs updateでバージョンアップしているので、 どれが理由で、相性が良さそうなのか不明。


10月10日(水)

Linkavailable: Ruby,diary

ここのトップページの更新状況を確認できるHot Linksが、Linkavailable: Ruby,diaryに変更になったので それに合わせてトップページをちょっと修正。

autoconf 2.52 (Vine Linux)

autoconf の configure で


./configure --program-suffix=25

とすることで、autoconf25 が /usr/local/bin にインストールできた。 結果は一緒だが、rename よりはまともな方法で共存できたみたいだ。 でも、なんか、2.13より異様に遅い気がする。

Icewm 1.09

手元にある CVS の最新版をコンパイルして、strip して upx してからインストール。 いろいろできるようになったらしいが、その分、重くなってたら嫌だな。

過去の経験から、Icewmで日本語を使えなくても困ることは無いので


./configure --disable-i18n --disable-nls

としてます。

初めてのcommit

assert_matchとassert_not_matchのドキュメントが間違っているとのメールをもらったので、 手元のRubyUnitのドキュメントを修正。 cvs.ruby-lang.orgにもcommit。 なんか、Parse Error とか出たけど大丈夫なんだろうか?

メールくれた方は海外の人だったのだが、 わざわざ日本語のドキュメントもチェックしてくれていて、両方間違っているよと教えてくれた。

間違いとも言い切れないのだが、紛らわしいのは確か。

ご指名

某MLで私の名前が出たので、とりあえず返事を書く。 自分の名前が出るまで、自分に関係のある話題だとは思わず、 適当に読み流していたため、慌ててスレッドを最初の方から読み返してしまいました。


10月9日(火)

Icewm 1.09 & autoconf (Linux)

Tons of new features were added.

ということらしい。そんなにいっぱい何ができるようになったのだろう?

cvs updateで取ってきてるIcewmは、autoconf 2.5 が必要になっているので、 手元ではコンパイルできなくなっている。

autoconf 2.5 をインストールすれば済むのだが、そうすると今度は、 何だったか忘れたけど、別のソフトがautoconf 2.5 に対応してなくて失敗したりする。 で、別のソフトの方を優先させて、autoconf2.5をあきらめることにしたと思う (←Icewmより優先させたソフトなのに、それが何か忘れているとはどういうことだ?(← Rubyはどっちでも大丈夫だったような気がする))。

そういえば、共存させる方法が、わたなべさんの日記にあったような気がする。

/usr/local/bin に 2.5 をインストールして、autoconf を autconf25 に rename すれば

が動くという軟弱で安直な方法で使い分けることができたりするんだろうか。

Ruby T-shirt

ついに登場。 海の向こうのConferenceで販売されるんだろうか?

なんかこの写真を見れば見るほど、合成っぽい気がするのは気のせい?


10月8日(月)

RubyUnit

cvs.ruby-lang.org に手元にあったCVSレポジトリを まるごと入れてもらった。 src の下のrough/lib/rubyunitがそれ。

empty log message があることが、まるわかり。logを毎回ちゃんと書いとけば良かった。


10月7日()

CVS account

cvs.ruby-lang.org のアカウントをもらった。 RubyUnit標準配布への最初の一歩。

消化

ようやく溜まっていたメールを全部消化した。

RubyUnit

ChangeLog の書式を変更することにした。 Ruby標準に合わせることに。

ChangeLog(emacs add-log.el)

.emacs に


(setq user-mail-address "XXXXX@YYYY.ne.jp")

(setq add-log-time-format 'current-time-string)

と書いておくと ChangeLogファイルを編集するときに C-x 4 a で



と入る。


10月6日()

Let's work on Windows support

一通り読んだ。

将来像という観点からの議論では、Cygwinがやや劣性。 で、現実的な選択肢としてはMswinかMingwということになるのだが、 VC++が高価だという点がMswinにマイナスに働いて、freeなMingwがややリードというところか。

そういえば、Mingw(Cygwinと一緒じゃない方の本体の方)の最新パッケージって今どうなってるんだろう?

Mingw32版Rubyのコンパイル

Cygwinの最新版を使ってないので、最新版だとどうなっているか知りませんが。

Cygwinと一緒に配布されているMingwを使ってMingw32版Rubyを作る場合には


env CC="gcc -mno-cygwin" 

を設定する必要があります。

なので、configureするときに


env CC="gcc -mno-cygwin" ./configure --enable-shared i386-mingw32

とします。

Mingw全部を別にインストールして、そっちのgccが動くようになっている場合には、


./configure --enable-shared i386-mingw32

だけでいいはず。


10月5日(金)

Let's work on Windows support

90通ぐらい溜めてしまった。


10月3日(水)

探し物

人から頼まれて2時間かけて探してやっと見つけて連絡したら 「もう必要なくなった。」 と言われることは良くあることだ。

RubyWin

「組み込み系にやさしいRuby」ができないと、スクリプトのリスタートは、難しい。 ということで、それは難しいとruby-talkのメールの返事を書く。

リスタートが難しいため、RubyWin上でdebug.rbは1回しか使えません。 同じ理由で、RubyUnitを使ったテストファーストプログラミングをRubyWinで実践するのは面倒です。

別プロセスでRubyを起動すればいいのはわかっているんだけど、それだと別にCopalとかでもいいし、 せっかく今まで組み込みにこだわってきた分、なんか敗けた気がするし。

Let's work on Windows support

ちゃんと時間を取って落ち着いて読んだ方がいいかと思い、まだ、このスレッド1つも読んでません。


10月2日(火)

Win32OLE

書くの忘れていました(私の場合、こういうのがかなり多い。)が、 mswin32版でのみ発生する現象 は、解決してます。

testWIN32OLE.rb実行したら、最後まで実行するけど終了しなかった(Excelのプロセスが動き続ける)というのが その現象です。

テストを細かく分割して、メソッド引数がHush1つのときだけまずいということが判明しました。 例えばこんなの。


book = excel.workbooks.add

sheets = book.worksheets

sheet = book.worksheets(1)

book.sheets.add({'count' => 2, 'after'=>sheet})

VariantClear忘れという、もう何度も何度も何度もあちらこちらで繰り返しているバグだったのでした。


book = @excel.workbooks.add

sheets = book.worksheets

sheet = book.worksheets(1)

sheets.add(sheet, {'count' => 2})

ちなみにこっちは、大丈夫でした。


10月1日(月)

paperback

ペーパーブックじゃなくてペーパーバックじゃないんでしょうか。 発音はどっちが近いのか知らないけど。

私はミステリをいくつか(それも中途半端に)読んで、 著者によって英語の難易度が全然違うことを知りました。 D.L.セイヤーズは無茶苦茶難しかったです。読んだのは『Poison』(翻訳のタイトルは『毒』)。 立ち読みした範囲で易しそうだなと思ったのは、アガサ・クリスティー。 あと、エド・マクベインの87分署シリーズも比較的易しかったような。 読んだのは、『Cop Hater』(翻訳のタイトルは『警官嫌い』)だったかな。

walkit

もう1つのTesting Framework。テストの実行に関して細かい制御ができるのが売りのようです。 RubyUnitで定義しているassert系メソッドもそのまま利用できます。 例えば、


def test_foo

  vet {

    assert(false) # (1)

  }

  assert(true)    # (2)

  assert(false)   # (3)

  assert(true)    # (4)

end

とすると (1)で失敗しても、(2) が実行され、(3) も実行されます。 vet{}で囲まれた部分のテストで失敗しても次のステップへ進む訳です。

RubyUnitで似たようなことをしようと思えば、一応こんな感じでできます。


def test_foo

  RUNIT::Assert.skip_failure = true

  assert(false)

  assert(true)

  RUNIT::Assert.skip_failure = false

  assert(false)

  assert(true)

end

ただしRubyUnitでスキップできるのは、assertによる失敗だけでRubyの例外はスキップしません。 例えば、ZeroDivisionError はスキップしません。

RubyUnitでvet(もどき)を実現したければ、


def vet

  RUNIT::Assert.skip_failure = true

  yield

  RUNIT::Assert.skip_failure = false

end

なんてのを定義しておけば良いでしょう。


[トップページへ] [9月] [11月] [過去の雑感へ]