マージェリー・アリンガムって何書いた人だっけ?
英語が母国語じゃない場合、抽象的な内容のこのメールを読むのは、大変なことに違いないけどごめんね。 (超訳)
というような、ものすごい前振りのついたメール(英語のメール)をこの間から読んでいるのだが、 確かにまだ全部を理解しきれない。 (上の超訳の「大変なこと」というのは私なりの解釈です。正確には、horrendous という単語が使われてました。)
ちと必要にせまられて、Ksh を調査。 事情があって、Kshを使わなくてはならなくなりそうなのだ。 Kshでファイル名の補完をTabでできるようにするにはどうすればいいんだろうか。 いや、もちろん、bashやcshの代わりに使えってだけで、Rubyの代わりにKshという訳じゃないです (←懐かしいネタ [ruby-list:16614] あたり参照)。 実は、もうちょっとでそうなりかけたんだけどね。
忘れないうちに謝っておきます。 私、一度お会いしているのですが、顔を覚えてません。 会場で遭遇しても、ほとんど初対面のような対応をすると思います。 気を悪くしないでください。 ごめんなさい。
かなり丁寧に書いたつもりだったが抜けがあった。 他の人は、その手順書でちゃんとできていたので、大丈夫だと思っていたんだけどなあ。
手順書には
次に hogehoge とメッセージが出るので "y" と入力する。
と書いてあるのに、実際には fugafuga とメッセージが出たらしい。 でもって、メッセージをろくに読まないで、"y" と入力すればいいと思って "y" と入力したらしい。
確かに抜けのある手順書を作った私が悪い。 だけど、メッセージと手順書を比較しないで、操作してしまう方もいかがなものか。
あれ? 一通も届いていない。
と思ったらメールをPOPサーバーから取ってくるのに失敗してただけだった。 あれこれ試したけど救うことができず、結局あきらめて削除した。 渡辺さん と同じ現象。matomeにしてたので1日分のruby-talkが飛んでしまった。
なんか体がおもい。肩も凝ってるし。さっさと寝よ。
freshmeatからの情報。ずっとxpdfだと思ってたのだが、正式には、Xpdfなのか。
0.4.3をリリース。
一部のメソッドを削除したこともあって、下位互換性が消えてしまってます。 悪しからず。 あっ。でも、rubiconが実行できる程度の下位互換性は保ってます。
Natさんは、機能的な違いということではなく、内部構造(デザイン)の違いを問題にしているらしい。 RubyUnitが元にしているJUnitの内部構造(デザイン)も気に入らないということらしい。
Lapidaryとか、Kent BeckのSUnitの解説や、 Natさんのメールを読んで、 RubyUnitの方が複雑かなと思う部分はありました。 もう少し比較して、できるだけ簡単な構造にしたいと思います。 余計だと思われる機能は削ってしまうかも知れません。 その後は、walkitとも比較して更に簡単にできる部分は簡単にしたいなあと思います。 RubyUnitに無い機能を補完して取り込むのはその後です。 というか、Lapidary(or walkit)にRubyUnitが取り込まれるという形でも別に構わないと思ってます。
1日で200通近く。何があったんだろう???
今度はruby-devが三分割になってた。
読了。これまでのXPの本と比べて、内容はより具体的で実践的。
ちゃんと読み取れていないだけかも知れないが、どうもタスクとペアプロの関係が良くわからない。 1つのタスクを完成するまでの間もペアは交換するものなのか? 交換するんだったら、サインアップをした人がペア交換によって、 サインアップしてないタスクの仕事をするというケースもあり得るんだろうか? だとすると、サインアップは単なる儀式なのか?
XPセミナーで この辺の話が聞けるかな。 まだ時間があるからもう一度読み返してみるか。
「ペア交換」は、正確には「ペア変更」と言うべきでした。 必ずしも交換とは限らない。
届いた。そういえば、いつの間にか、「発送しました」通知メールが来なくなっている。
cvs update したら
can't create temporary directory No space left on device
と言われる。
emacs-w3m とかは、cvs update できるので、cvs.ruby-lang.org がおかしい?
なんていう、Shell用のTesting Frameworkは、どっかに無いだろうか。 探す努力を(作る努力も)しないで、適当なテストスクリプトを作って胡麻化すことにした。
[ruby-talk:23235] 思わず笑ってしまいました。 Bruce Eckel's MindView を先に読んでおくこと。
今やったらちゃんと cvs update できた。
爆発。1日1回の matome にしているのだけど、今回初めて、3分割で送られてきた。 今まで最大でも2分割だったのに。100通軽く越えてます。
メソッドを一部削除。 Lapidaryの内部を読み始めているが、RubyUnitとそんなに違うかどうかまだよくわからない。
昨日のテストが通らなくなった件は、 今日のruby 1.7.1 (2001-10-22) で通るようになった。 やっぱり昨日のはRuby側の欠陥だったみたい。それにしても素早い対応だ。
主に、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エクストリーム・プログラミング導入編』には、
コードの中のどんな欠陥も「バグ」という言葉を使うな
というようなことが書いてあった。
Ruby 用のエディタで、マクロ言語がRubyの RuEdit。 RubyWinにもそういう構想だけは前からあったのだが、 もたもたしている間に先を越されてしまった。
Ruby標準のTesting Frameworkはどうだろうかと Lapidary の作者 Nat さんと walkit の作者 Ken さんに投げかけていた。 NatさんとKenさんからの返事が出張中に届いていたので返事を書く。
私が不在の間にいろいろ議論が進んでいる。
いがぴょんの日記が休刊。 残念。
と思ったら、 いがぴょんの日記ウェブページv2が登場。
前回に引き続き、誰の記事かも知らずにアクセスしたら、 今回も面識のあるartonさんでした。 Win32OLEではいつもお世話になってます。
ちなみに私は、思いっきり合格狙いの受験勉強をして、 アプリケーションエンジニアの試験に臨んだことがあります。
情報処理関連の仕事に従事しているのだから、 勉強しないで受験して合格するのが一つの理想だろうと思いながら、 ずっと前に一種を受験したら見事に落ちました。
じゃあ、逆に仕事とは関係なく、思いっきり合格狙いの付け焼刃的受験勉強をしても 情報処理試験に通用するんだろうかと思って、取り組んだのがアプリケーションエンジニアの試験でした。 (合格狙いの受験勉強なので、受験生気分で結構真剣に盲目的に合格のためだけの勉強をしました。)
結果、合格狙いの付け焼刃的受験勉強は、ものの見事に通用してしまったのでした(笑)。
ちなみに、このときの合格狙いの付け焼刃的受験勉強は、 その後の私の仕事には、通用しなかった(あまり役に立たなかった)ように思います。
Swing に対応したJUnitの拡張版JFCUnit。
出張から戻ったら、こっちも寒くなってた。 昨日の東京より、もっと寒いような気がする。
職場の飲み会。
英語ができないのはつらい。 東京は寒かった。 今回は、慌しくばたばたと帰る。
11:00頃、「予定通りに来てくれ」と連絡あり。出張決定。 ということで東京へ。
今回は延期の連絡が来なかったので出張の準備。 明日午後から出張の予定。 なので、明日午前中に延期の連絡が来ないとも限らない。まだまだ油断は禁物。
は、きっと幼児向け番組で、ポケモンは小学校低学年ぐらいまでをターゲットにしていると思われるので、 ポケモンの方が、英語が難しいのは当たり前か。
ということは、私は、幼児レベルの英語なのか(いや、それ以下かも)。うーむ。
teardown で直前のテストに失敗したかどうかを知る手段があるかどうかという話。 ([ruby-talk:22477])
直前のテストに成功したときは、teardown の中で、テストで作られたファイルを削除したい。
直前のテストに失敗したときは、ファイルを削除しないで、失敗した原因の調査にそのファイルを使用したい。
ということらしい。
この話から、ふと考えてみたが、
直前のテストに失敗したときだけ実行されるteardown
直前のテストに成功したときだけ実行されるteardown
なんてものは需要あるだろうか?
来年には、5冊も、英語の本が出るらしい。 ([ruby-talk:22509])
fr.comp.lang.rubyを作ろうという話。 ([ruby-talk:22553])
たまたま、テレビつけたら、二ヶ国語放送のマークに出くわしたので、音声切り替えしたら英語になった。 子供向け番組だから、きっと英語は易しいに違いないと思って、聞いてみた。 全然理解できなかった。
ポケモンの英語のレベルがどんなものか調べてみようと思い、Googleで検索したら、 ★ぽけもんで いんぐりっしゅ★ というページを見つけた。 やはり、子供向け番組だから、英語は易しいらしい。 それすら聞き取れなかった自分ってかなり駄目だ。 セサミストリートよりは難しいと思うんだけど、実際のところどうなんだろう?
ruby-cvs に参加。
java-house-brewers を脱退。
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が使えないのも同じ理由だ。
元々休暇で病院に行ったのだが、その時は何ともなくて、病院出て、書店に寄って、 昼御飯食べた直後、急激に調子が悪くなり、家に戻って夕方まで寝た。
この前の修正をChangeLogに反映するのを忘れていたことに気付いたので、反映した。
で、例のParseErrorは気にする必要が無いことが判明。 PCL-CVSの方が悪いらしい。
某オフ会が東京で15日にあることを知った。 出張が延期にならなかったら、参加できてたかも。 残念。
どういう訳か、この出張先へは、私はなかなか行くことができない。 前の仕事のときも今回と全く同じ場所へ出張する話が何度もあったが、 その度に延期を繰り返し、一度も出張することなく仕事は終わった。 今回は、別の仕事なのだが、既に2回延期になっている。 どうも、私はこの出張先との相性が悪いとしか思えない。
いや、別に無理に行きたい訳では無いんだけど、こうも続くと 意地でも1回出張してやるという訳のわからん使命感に燃えてしまうから不思議だ。
ホテルの予約をしてはキャンセルを繰り返しているので、 人から、
「ひやかしだと思われて、ホテルのブラックリストに載ってるんじゃない?」
と言われている。
Linux Magazine
買おうかと思ったけど、結局、まつもとさんの連載を立ち読みで済ます。
『死にぞこないの青』 乙一著
これまた最初と最後の方だけ立ち読みで済ませる。
『カリフォルニア・ファイア&ライフ』ドン・ウィンズロウ著
迷ったけど今日は買わず。ニール・ケアリーシリーズの次作はそのうち翻訳が出るみたい。
『難事件鑑定人』
ちょっと気になったけど、買わず。
w3m-inu プロジェクトから w3m-0.2.1-inu-1.4.tar.gz をダウンロードして、さらに インラインでイメージを表示するパッチを ダウンロードして、w3mインライン表示可能バージョンを作る。 ちょっと使ってみたけど、前よりも、emacs-w3mとの相性は良くなっている気がする。 もっともemacs-w3mもcvs updateでバージョンアップしているので、 どれが理由で、相性が良さそうなのか不明。
ここのトップページの更新状況を確認できるHot Linksが、Linkavailable: Ruby,diaryに変更になったので それに合わせてトップページをちょっと修正。
autoconf の configure で
./configure --program-suffix=25
とすることで、autoconf25 が /usr/local/bin にインストールできた。 結果は一緒だが、rename よりはまともな方法で共存できたみたいだ。 でも、なんか、2.13より異様に遅い気がする。
手元にある CVS の最新版をコンパイルして、strip して upx してからインストール。 いろいろできるようになったらしいが、その分、重くなってたら嫌だな。
過去の経験から、Icewmで日本語を使えなくても困ることは無いので
./configure --disable-i18n --disable-nls
としてます。
assert_matchとassert_not_matchのドキュメントが間違っているとのメールをもらったので、 手元のRubyUnitのドキュメントを修正。 cvs.ruby-lang.orgにもcommit。 なんか、Parse Error とか出たけど大丈夫なんだろうか?
メールくれた方は海外の人だったのだが、 わざわざ日本語のドキュメントもチェックしてくれていて、両方間違っているよと教えてくれた。
間違いとも言い切れないのだが、紛らわしいのは確か。
某MLで私の名前が出たので、とりあえず返事を書く。 自分の名前が出るまで、自分に関係のある話題だとは思わず、 適当に読み流していたため、慌ててスレッドを最初の方から読み返してしまいました。
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 すれば
autoconf で /usr/bin/autoconf
autoconf25 で /usr/local/bin/autoconf25
が動くという軟弱で安直な方法で使い分けることができたりするんだろうか。
ついに登場。 海の向こうのConferenceで販売されるんだろうか?
なんかこの写真を見れば見るほど、合成っぽい気がするのは気のせい?
cvs.ruby-lang.org に手元にあったCVSレポジトリを まるごと入れてもらった。 src の下のrough/lib/rubyunitがそれ。
empty log message があることが、まるわかり。logを毎回ちゃんと書いとけば良かった。
cvs.ruby-lang.org のアカウントをもらった。 RubyUnit標準配布への最初の一歩。
ようやく溜まっていたメールを全部消化した。
ChangeLog の書式を変更することにした。 Ruby標準に合わせることに。
.emacs に
(setq user-mail-address "XXXXX@YYYY.ne.jp") (setq add-log-time-format 'current-time-string)
と書いておくと ChangeLogファイルを編集するときに C-x 4 a で
と入る。
一通り読んだ。
将来像という観点からの議論では、Cygwinがやや劣性。 で、現実的な選択肢としてはMswinかMingwということになるのだが、 VC++が高価だという点がMswinにマイナスに働いて、freeなMingwがややリードというところか。
そういえば、Mingw(Cygwinと一緒じゃない方の本体の方)の最新パッケージって今どうなってるんだろう?
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
だけでいいはず。
90通ぐらい溜めてしまった。
人から頼まれて2時間かけて探してやっと見つけて連絡したら 「もう必要なくなった。」 と言われることは良くあることだ。
「組み込み系にやさしいRuby」ができないと、スクリプトのリスタートは、難しい。 ということで、それは難しいとruby-talkのメールの返事を書く。
リスタートが難しいため、RubyWin上でdebug.rbは1回しか使えません。 同じ理由で、RubyUnitを使ったテストファーストプログラミングをRubyWinで実践するのは面倒です。
別プロセスでRubyを起動すればいいのはわかっているんだけど、それだと別にCopalとかでもいいし、 せっかく今まで組み込みにこだわってきた分、なんか敗けた気がするし。
ちゃんと時間を取って落ち着いて読んだ方がいいかと思い、まだ、このスレッド1つも読んでません。
書くの忘れていました(私の場合、こういうのがかなり多い。)が、 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})
ちなみにこっちは、大丈夫でした。
ペーパーブックじゃなくてペーパーバックじゃないんでしょうか。 発音はどっちが近いのか知らないけど。
私はミステリをいくつか(それも中途半端に)読んで、 著者によって英語の難易度が全然違うことを知りました。 D.L.セイヤーズは無茶苦茶難しかったです。読んだのは『Poison』(翻訳のタイトルは『毒』)。 立ち読みした範囲で易しそうだなと思ったのは、アガサ・クリスティー。 あと、エド・マクベインの87分署シリーズも比較的易しかったような。 読んだのは、『Cop Hater』(翻訳のタイトルは『警官嫌い』)だったかな。
もう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
なんてのを定義しておけば良いでしょう。