前田です。

On Sat, 22 Mar 97 22:56:52 JST,
matz / caelum.co.jp (Yukihiro Matsumoto) wrote:

| |今、rubyでSKKサーバーを書いてるのですが、ちょっとわからないところが
| |ありますので、よろしくお願いします。
| 
| おお,できたらぜひ公開してくださいね.

すぐできてしまいました:-)(200行足らず)
もっとてこずるかと思ったのですが、rubyのおかげで楽にできました。
# まだ例外処理をぜんぜんしてないのですが。
起動が遅い以外はちゃんと動いているみたいです。
今もruby版SKKサーバーを使ってメールを書いています。

http://www.pic-internet.or.jp/user/kojin/ender/ruby/rskkserv.tar.gz

にputしました。

辞書をDBM化しようと思っていたのですが、とんでもない大きさになってしまったの
で、結局起動時に一気に読み込んでバイナリサーチするという泥臭い方法にしてし
まいました。
起動さえしてしまえば、そんなにskkservに遜色ないです。
マルチスレッドで100のクライアントから要求を出して簡単なベンチマークを取って
みたのですが、

ruby version

moonwalk[~/ruby]$ time ruby test.rb
All request is processed.
8.24user 1.67system 0:14.89elapsed 66%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (160major+842minor)pagefaults 0swaps

C version

moonwalk[~/ruby]$ time ruby test.rb
All request is processed.
6.79user 1.90system 0:17.92elapsed 48%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (153major+796minor)pagefaults 0swaps

と結構善戦してます。
取りこぼしも全然ありませんでした。
rubyの性能に改めて驚きました。

じつは Mule for Win32 で使いたいと思って作ったのですが、今、実家でLinuxしか
使えないので試してません。
そういえば、サーバーが稼働しているマシンのホスト名がわからなかったので

hostname = %x/hostname/.strip

なんてしてしまったのですが、ほんとはどうやればよいのでしょう?
ENV["HOST"]も試してみたのですが、どうもうちのLibrettoではHOSTは空みたいで、
nilが返ってきて、gethostaddrでエラーになってしまいました。

| これらのクラスに関してはそういう使い方をしてください.全クラ
| ス(Fixnumは除く)にインスタンス変数を持てるようにしても良いの
| ですが,各オブジェクトサイズが4バイト大きくなるのでちょっと
| 抵抗があります.

なるほどそういう理由があったんですね。
IO関係をサブクラス化して、@kanji-codeとか持たせたらちょっと便利かなとか思っ
たりもしたのですが。

あとSKKサーバーを作ってて思ったのですが、文字を扱うクラスがほしい気がしま
した。
現状だと文字はFixNumですよね。
ASCIIの範囲ならあまり問題ないのですが、2バイト文字を扱うと面倒です。
漢字コードを得るのに

w_code = ((kana[0] & 0xff) << 8) | (kana[1] & 0xff)

とかしたのですが、できればrubyではビット操作はしたくないような気がします。
# というか僕はビット操作自体が苦手なのですが:-)
でも実装するほうは大変ですよね。
わがまま言ってすみません。

ところでEUCやSJISの1バイト目の判別ってどうやればいいんでしょう?
わかんなかったので無理矢理2バイトにして、かなの範囲に収まるか調べて
しまいました。

| aliasはメソッドのその時点の定義を保存するためのものですから,
| barを再定義してfooも変わっては困ります.そういう使い方には
| 
|   def foo(*args)
|     bar(*args)
|   end
| 
| のような方が良いでしょう.

なるほど、そうすることにします。
あと$で始まる一連のperl風組み込み変数にわかりやすい別名がほしいのですが。
perlを使ったことがないのでどうもなじめないんです。
# じつは最初aliasが使えるのかと思ってました。

| ここで話題になっているオブジェクト指向スクリプト言語の名前は
| ruby(小文字)です.大文字で始まるrubyは行頭か,編集ミスです.

たまにRubyとか書いてました。すみません。

| rubyの処理系は私がメンテしているものしかなく,他に作られる可
| 能性もなさそうなので当面のところ言語と処理系は区別していません.

たしかに今のところ Visual ruby とかが出る心配はなさそうですね:-)
ただ、拡張言語にrubyを採用したエディタはとっても欲しいです。

| 語源は perl->pearl(6月の誕生石)->ruby(7月の誕生石) というこ
| とになっています.

誕生石とは気づきませんでした。
とするとC->C++とかのノリですね。

前田 修吾