2002-11-01 (Fri) [長年日記]
_ RAA
comp.lang.rubyでRAAの名前が話題になっているようだ。 (内容はおってないけど)
そういえば、Ruby Application Archiveなのにライブラリとかも入ってるんだよな。
2002-11-13 (Wed) [長年日記]
_ chomp
ruby-devでString#chompの話が出ている。
chompは文字列の末尾の改行文字を(あれば)取るメソッドだが、"foo\r\n".chompは "foo\r"になってしまう。(つまり"\r\n"を改行とみなしてくれない。) これは不便なので"\r\n"も取ってくれ、という話。
結論としては、Ruby 1.7ではすでにそうなっているとのこと。
ちなみにnet/ftp.rbでは
CRLF = "\r\n" if line[-2, 2] == CRLF line = line[0 .. -3] elsif line[-1] == ?\r or line[-1] == ?\n line = line[0 .. -2] end
なんてことをしている。
なぜこんなにださいコードというと、net/ftp.rbはPythonのライブラリの パクリだから。(反省)
sub使った方が短かくて速そうですね、たぶん。
2002-11-15 (Fri) [長年日記]
_ C#のイテレータ
C#では
foreach (Object o in list) { ... }
のようにforeach文を使うと、listから外部イテレータを取り出して自動的に 繰り返し処理の制御を行ってくれる。 実は前にJavaで書いたスクリプト言語でも同じようなことをしたけど、利用者 側から見れば内部イテレータのように使える(つまり、自分で繰返しの制御をする 必要がない)ので結構便利。
さらに将来のC#では、イテレータを定義する時に
public class List { internal object[] elements; internal int count; public object foreach() { foreach(object o in elements) { yield o; } } }
のようなコードを書くと、外部イテレータクラスを自動的に生成してくれるらしい。
ruby-devでこれは外部イテレータか内部イテレータかという話があったが、ユーザ が外部イテレータクラスを意識する必要はないので、内部イテレータと言ってもいい ような気がする。
2002-11-18 (Mon) [長年日記]
_ C#のイテレータ(2)
ruby-devでも書いたけど、C#のイテレータだと一つのクラスに複数の イテレータを定義できないので不便な気がする。
public class List { internal object[] elements; internal int count; // Elementsという名前のイテレータ定義 public iterator object Elements() { foreach(object o in elements) { yield o; } } }
のように色々な名前でイテレータを定義できるようにして(実装的には Elementsという名前のメソッドで外部イテレータを返すようにする)、
foreach (object o in list.Elements()) { ... }
のようにforeach文で、コレクション(list)の代りに、イテレータ呼び 出し(外部イテレータを返すメソッドのよび出し - list.elements())を 指定するようにした方がCLU風味でよくないだろうか。
2002-11-21 (Thu) [長年日記]
_ ハック
最近、子供が障子をハックすることを覚えて困る。
_ 妄想
Rubyのcontinuationを使ってセッションを実現し、WYSIWYGで画面デザインできて、 ボタンをダブルクリックするとイベントハンドラを定義できるような、 そんなWebアプリケーションサーバをだれか作んないかな。
2002-11-22 (Fri) [長年日記]
_ t-code for skkinput3
t-code for skkinput3(<URL:http://openlab.jp/tcode/tc2/index.html#develop>) を導入。ナイスだ。
でもちょっと動きが遅いみたい。 skkinput3のlisp interpreterのせいだろうか。
2002-11-29 (Fri) [長年日記]
_ Demi
昔Javaで実装したスクリプト言語をふと思い出したが、探しても見つからない。 と思ったらなぜかまつもとさんが持っていたのでメールしてもらった。
今のJavaじゃ動かないだろうと思ったが、ちゃんと動いた。 すごいな、Java。
記念に置いときます。
_ Webrickとcontinuation
まつもとさんの話だとWebrickとcontinuationを作ったWebアプリケーションの話が Ruby Conferenceであったらしい。
Rubyのcontinuationはスレッドをまたぐことができないのでどうしてるのかなと思った ら、WebrickではThreadを使ってなさげだとのこと。 ということはWebrickは同時に一つのリクエストしか処理できない?
ほんとかなあ。