history

青木日記 RSS

<前の日 | この月 | 次の日>

2006-09-13

(16)

えーっと何をしなきゃいけないんだっけ。

とりあえずは俺以外でも作業できる環境を作らないとだめだな。 ということは、まず、

  • サンプルファイルを作る
  • 動作を確認できるツールを用意する
  • 作業マニュアルを作る
  • 割り当てリストを作る

あたりか。

簡単なところで、割り当てリストから。 Subversion のレポジトリに ASSIGN てファイルを作っておいて、 アカウント名を書き込んでチェックインしたら OK ということにしよう。 えーと、*.rd と *.off を拡張子とってリストすれば終わりと。

次。依存関係を考えると、ツールかな。 パーサはだいたいできてるから、リストするツールを書けばいいだろう。

  • bc-list (定義されているエントリをリスト)
  • bc-convert (新フォーマットに変換)

うむ。こんなとこか。 bc-list はパースして pp するだけという手抜き実装だ。 bc-convert は ReFe のコードを持ってきてでっちあげた。

それからサンプルファイル。 Object, String, Enumerable, Comparable があればよかろう。 あと組み込み定数と組み込み関数は記法が特殊なので俺が引き取るっと。 メソッドを置き換えるライブラリも一つ欲しいな。jcode にしよう。

最後に作業マニュアル。 ざっと書いてメール → 完。

(10:56)

(17)

だって「Rubyリファレンスマニュアル刷新計画」って何回も書くのめんどくさいじゃん。

(10:56)

さむー

ちょ、ちょっと待って、なんでこんな寒いの? 夜は毛布二枚かけないともう寒くて寝られないよー。

ところで、「寒すぎ」と「サムスピ」は似てる。

(11:14)

Symbol と String (1)

もう Symbol が String に統合されるのは規定事項なのだろうか……。 やっぱ別物のほうがいいなあ。 Symbol を String のように扱いたい、というのはわかるけど、 それと継承関係を作ることは別の話だと思うんだよな。 どうせ破壊的メソッドは実装できないんだし、 いくつかメソッドを追加するだけで済ますわけにはいかないのだろうか。

やはりもう一発メールを投げてみよう。

(11:18)

Symbol と String (2)

ああ、そうか、ActiveSupport の件は Hash で同一視したいって話なのか。 ますます ActiveSupport が嫌いになってきた。

(11:27)

シェルスクリプトでユニットテスト

シェルスクリプトのユニットテストを書く必要が発生した。 …… shunitってあるのかな。ありそうだな。あるらしい。

うーむ。CVS HEAD 見てみたが、イマイチ好きになれない。特に関数名が。 これ使うなら「ふつりな」のときに自分で作ったやつのほうがいいや。 こんなやつ。

#!/bin/sh
 
. ./shunit.sh
 
assert_ok() {
    assert_stdout "OK" $1
    assert_status 0 $1
}
 
assert_out() {
    assert_stdout "$1" $2
    assert_status 0 $2
}
 
assert_out "Hello, World!" ./hello
assert_out "Hello, World!" ./hello2
assert_status 77 ./add
assert_out "ret=77" ./add2
assert_out "ret=77" ./sub
assert_out "ret=56" ./imul
assert_out "ret=2000" ./idiv
assert_out "i=0; i=1" ./lvar1
assert_ok ./if
assert_ok ./while1
assert_ok ./while2
assert_out "i=3; i=3; i=2; i=1; i=0" ./while3
assert_ok ./while-break
assert_ok ./while-continue
assert_out "i=3; i=2; i=1; i=0" ./for
assert_ok ./for-break
assert_ok ./for-continue
assert_ok ./immscope
 
test_finished

(13:25)

Symbol と String (3)

ぐはー。今度は Symbol と String がキーとして 同一視されなかったがためにバグが出た。 なんだこのタイミングのよさは。

(16:38)

Symbol と String (4)

ちなみに、こんなハッシュを作って演算子をメソッド名に変換してた。

OP = {
  '+'  => 'add',
  '-'  => 'sub',
  '*'  => 'mul',
  '/'  => 'div',
  '%'  => 'mod',
  '&'  => 'bitand',
  '|'  => 'bitor',
  '^'  => 'bitxor',
  '<<' => 'lshift',
  '>>' => 'rshift',
  '==' => 'eq',
  '!=' => 'neq',
  '>'  => 'gt',
  '<'  => 'lt',
  '>=' => 'gteq',
  '<=' => 'lteq',
  '&&' => 'logicaland',
  '||' => 'logicalor'
}

ハッシュ側のキーは文字列なんだけど、 検索するときは intern してあった罠。 世の中ままならねーんですよ。

(16:39)

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS