なひです.

> From: Tomoyuki Kosimizu [mailto:greentea / fa2.so-net.ne.jp]
> Sent: Thursday, April 22, 1999 11:53 AM

> まず、Threadなのですけど、下のコードを実行して、
> Ctrl-Dを入力しても、puts "die"が実行されないのですが、
> 何がおかしいのでしょうか?
> 
> class MyThread
>   def doit
>     @live = true
>     Thread.start {
>       while @live
>         puts "live!"
>         sleep(1)
>       end
>       puts "die"   # not executed
>     }
>     while (line = $stdin.gets)
>     end
>     @live = false

この辺りで,生成したThreadが終了するのを待ってあげるのが
いいと思います.sleepするとか,Thread.joinを使うとか.

>   end
> end
> 
> MyThread.new.doit

	/	/	/

> 次はMarshalなのですけど、下の2つのプログラムをシェルで
> `ruby dump.rb | ruby load.rb'とパイプで結んで
> 実行したのですが、コンソールで文字化けを起こします。
> 他に何かやっておくことがあるのでしょうか?
> 
> # dump.rb
> class Foo
>   def to_s
>     'foo'
>   end
> end
> Marshal.dump(Foo.new, $stdout)

if $0 == __FILE__
  Marshal.dump(Foo.new, $stdout)
end

としておくと,load.rbからのrequire時にdumpされなくなって,
Marshalingされた内容が表示されずに済みます.

# という話ではないかもしれません.^^;