<< 前 ホーム 次 >>

bakaid: 20051129

あんまり強い要望ではないんですけど、StringIO、読み込みのEOFを明示的に
入力できるようだとうれしいです。StriongIOの読み込みは、もとになる文字
列を全部読み込んだら終わりになります。そうではなく、文字列を全部読み込
んだら、ブロックしてほしいんです。もちろん、こんなことが必要になるのは
ごくごく稀で、これがいつもの動作になっても困るんですけど。

どんなときにほしいか。スレッドを使ったテスト。testeeをスレッドで回して
おいて、testerからデータを送り込む。このとき、testeeが勝手に読み終わる
ようだと困るわけです。

class Testee
  def doread
    while (line = $input.gets)
      $output.puts(line)
    end
  end
end

class Tester
  def test_doread
    $input = StringIO.open('hello', 'r+')
    $output = StringIO.open('', 'w')
    Thread.start{Testee.new.doread}
    assert_equal("hello\n", $output.string)
    $input.puts('world')
    assert_equal("hello\nworld\n", $output.string)
    $input.eof = true
  end
end

みたいな感じ? 自分でもよくわかってないで書いてるんですけど。

まぁ、無茶な話ですか。

--

ああ、そうか。上のみたいな用途にはIO#pipeを使うんですね。

class Testee
  def doread
    while (line = $input.gets)
      $output.puts(line)
    end
  end
end

class Tester < Test::Unit::TestCase
  def test_doread
    $input, output = IO.pipe
    input, $output = IO.pipe
    Thread.start{Testee.new.doread}
    output.puts('hello')
    assert_equal("hello\n", input.gets)
    output.puts('world')
    assert_equal("world\n", input.gets)
    $input.close
    output.close
    input.close
    $output.close
  end
end

こうですか。ちょっとややこしいですけど。

--

個々のリファクタリングには当然明白な意図というものがあります。でも本当
は、さらにその上により大きな意図がないとダメなんです。システムの意図と
いうもの。そのシステムの意図のもとに個々のリファクタリングをこなしてい
く。

これは『大きなリファクタリングは小さなリファクタリングの積み重ね』とい
うのとはちょっと違います。システム全体をどういう方向に持っていきたいか
という視点のもとに個々のリファクタリングをこないしていくということです。

ここでいっている『システムの意図』というのは『先払い』とは違います。理
想像といった程度のものです。理想像は現実に合わせて変わります。変わるも
のなのに時間をかけて予想したり、縛られたりするのはバカな話です。

『雀鬼流 勝負牌の選び方』(桜井章一、竹書房)

  遠くを見ながら、身近なことをしっかりとやる。それが麻雀なんだ。

--

Wikiのメタファーとしてはノートが一番近い気がする。でも、それだとあんま
り実装のヒントにならない。

思い浮かんだのが寿司屋。注文を受けて、シャリを握って、ネタを乗せて出す。
お客さんがネタを持ってくるときもある。で、シャリっていうのが見た目 
(HTML) なんだけど。ちょっと直感と逆になるんだけど。でも、大事なのはテ
キストのほうだし、だからテキストがネタということになる。

まぁ、寿司屋に限らず、食い物屋はメタファーになりやすいんだけど。注文を
受けて料理を出すなんていうのは、ほとんどのアプリのメタファーになる。

そういえば『銀河ヒッチハイクガイド』だっけ? レストラン型のコンピュー
タ、あったでしょ?

でも、この寿司屋、バカなんだな。知らないネタは出せない。初めてのネタは
お客さんが持ってこなきゃいけない。で、それを作るほうはもっとバカなわけ
だ。だって、シャリにばっか凝るんだもんな。いや、シャリは基本なんだけど
さ (笑)。

本家Permlink

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails