2001-03-01 (Thu) [長年日記]
_ Ruby VM
木山君はthreaded codeを試しているらしい、ということは各命令は 独立した関数になってるってことかな。よくわかんないけど。 (これはthreaded codeという用語に関する思い違いだったらしい。 <URL:http://www-sor.inria.fr/~piumarta/pldi98/paper.ps>みると QSchemeってdirect threaded codeってやつだったのか。 とか言ってまた思い違いかも。やっぱり思い違いだったっぽい、 direct threaded codeの方はテーブルがなくて、コードの部分にジャンプ先が 直接入ってるんだな。 QSchemeのコードを実行前にdirect threaded codeに変換したらもっと 速くなるんだろうか。と思ってよく見たらQSchemeもやってるっぽいね。 うう、今日は早く寝よう。もしかして、まつもとさんの言ってた3倍って いうのはthreaded codeの差なのかしら。)
まつもとさんはQSchemeみたいにgccの拡張機能で、ラベルを first class objectにしてgotoしまくるという方法を試しているようだ。 QSchemeのコードを見たけど、バイトコード(というかバイトじゃなくて ポインタのサイズみたいだけど)を実行する関数のstatic変数にラベルの テーブルを用意しておいて、そのテーブルを見ながらgotoするみたい。 ということは、rb_eval()みたいな長い関数はどうもバイトコード化 されても健在っぽいですね。
ちなみにQSchemeの方がまだ3倍くらい早いそうです。 まつもとさん、木山君、がんばって。
2001-03-02 (Fri) [長年日記]
_ Cマガジン
Cマガジンの期末試験をやってみた。 結果は79点。 pとputsを間違えて"を付けわすれたり、逆に余分に付けてしまったりとか、 学生時代と変わってないことを再確認。
実戦では間違えたらデバッグすればいいのさっ。(とうそぶく)
_ QScheme
QSchemeが速いのはマクロ展開する分だったらしい。 QSchemeでマクロ展開を抑制したらRuby VMが勝ったそうです。 ぱちぱちぱち。
direct threaded codeにするのはあまり速くならなかったそうで、それより まとめてmalloc()するようにしたことなどの方が大きかったらしい。
らしい、とか、そう、ばっかりだな。
2001-03-03 (Sat) [長年日記]
_ Ruby VM (2)
あ、まつもとさんのVMもまだ完成はしてなくて、基本的な部分を実装しただけ だそうです。 > 木山君
今のRubyと同レベルの機能が提供できるようになるには数年かかるんじゃない だろうか、とのこと。 (まつもとさんのことだから、とか言いつつ数か月でやっちゃったりして。)
ちなみにコンパイルする部分はまだ作ってなくて、ハンドアセンブルしてテスト してるらしい。
ところで、移植性については、マクロとか使って、 gccだったらdirect threaded codeにする、とかじゃだめなんでしょうか。 (あ、gccじゃない環境でも速くしたいってことか。)
_ apropos
Emacsで欲しい関数や変数を調べたい時はM-x aproposが便利。 ちなみに僕はつい最近までapropos(1)を知らなかった。
2001-03-05 (Mon) [長年日記]
_ 英語
modruby.netの英語版で、変な英語があったらおしえてね、 と書いているので、たまにレポートしてくれる人がいるんだけど、 そのメールも英語で書いてあるので理解するのに苦労したりして。 自動翻訳の性能向上に期待。
_ fj.comp.lang.c
fj.comp.lang.cのfree-on-exitのスレッドまだ続いてたのか…。
それはさておき、
void test_sub(n) int n ; ← これをグローバル変数と勘違いされたように思われます。 { ... } この int n は、引数の型を表すもので、非常に古い時代の書き方なんです。
というのは笑いましたね。「非常に古い時代の書き方」だって。
まつもとさんは、
<URL:http://namazu.org/~satoru/misc/ggap.html>
の分類では旧世代に属するらしい。僕は…ないしょ。
2001-03-06 (Tue) [長年日記]
_ カレー
昨日はカレーだったので今日もカレー。 なんとなくにんにくを入れてみたら結構おいしかった。
作り方は、
- オリーブオイルににんにくのスライスととうがらしを入れて 弱火にかける。
- にんにくがこんがりとしあがったら、火を強くして肉と野菜を 入れていためる。
- 水を入れて煮込む。あとはふつーと同じ。
最近はルウは「こくまろ」を使うことが多い。 味の違いはよくわかんないけど、二回に分けて使えるのでお得な気がする。 (けど、ちゃんと計算はしてないので実は損してるかも。)
2001-03-07 (Wed) [長年日記]
_ ローカル変数
Rubyのローカル変数のスコープのルールは時々思わぬバグを生み出す。
ここで問題。
1.times do id = 0 end p id
上記のコードを実行するとどうなるでしょう。
- 0と出力される。
- 予想もしなかった値が出力される。
- エラーになる。
正解はまた明日。
_ comp.lang.ruby
英語の勉強のために、ひさびさにcomp.lang.rubyに投稿。 日本語で考えて英語で書こうとするとだめですね。 英語で考える能力を身につけねば。
2001-03-13 (Tue) [長年日記]
_ ベータ
ベータのビデオデッキってまだ売ってるんだ。
<URL:http://www.sony.co.jp/sd/ProductsPark/Models/cat011.html>
「*お手持ちのベータテープ*を、美しく多彩に再生」ってのが泣かせる。
2001-03-26 (Mon) [長年日記]
_ 引数の括弧
何回か考えたのだけど、個人的にはRubyの引数の括弧は省略できない方が よかったんじゃないかという気がする。
理由は、メソッド名とローカル変数名の名前の衝突の問題がなくなって、 <URL:http://www.shugo.net/jit/index.rbx?date=20010308> みたいな状況を回避できることや、文法がわかりやすくなる({}とdo endの使い分け もいらなくなるかな)こと。 あと、obj.fooでbound methodの取り出しで、obj.foo()はメソッド呼出し、 なんてこともできるし。
でも今さら変えるわけには行かないだろうな、と思ってだまってます。 (って言いつつ書いてるけど。)
_ postfix
ruby-lang.orgのMTAはpostfixなのだが、配送先でつながらないとこが多いせいか 配送がどうも遅い。色々チューニングしてみたけど、結局、/etc/sysctl.confで、
fs.file-max = 16384 fs.inode-max = 65536
としてあつかえるファイルの数を増やしといて、/etc/postfix/main.confで、
default_process_limit = 300
としてプロセス数の上限を増やしてみた。 (もっと増やしても大丈夫かもしれないけど、とりあえずこれくらいで様子見。)
他にも配送の並行度を制御したりするパラメータとか色々あるのだが、defaultで MLの配送向きになっているみたいなのでそのまま。
2001-03-27 (Tue) [長年日記]
_ postfixふたたび
/etc/postfix/main.cfで、配送先ホストが見つからない時や、 配送先ホストに接続できない場合に、 バックアップのマシンに転送するように設定。
fallback_relay = backup.foo.org
これでキューにずっとたまっているメールを追い出すことが できるはず。
_ ノート復活
キーボードを修理してたVAIO(PCG-505RS)が帰って来た。 英語キーボードが日本語キーボードになってたらどうしよう とか思ったけど無事。
ユニット毎交換で17200円なり。見積りの時にパームレストの塗装が はげてる(というかこれはもうパームレストがけずれてるって感じ)のも 直すか聞かれたけど、一万円はもったいないのでやめ。
いつかこれに買い替えるのだ。 (うう、ノートだとsonyのflashが遅い。)
<URL:http://www.sony.co.jp/sd/ProductsPark/Consumer/PCOM/PCG-SR9G/>
DSC-P1欲しいなあ。(DSC-P50もいいかも。)
2001-03-28 (Wed) [長年日記]
_ Cappuccino開発者に聞く!
yendot.orgで、
<URL:http://pcweb.mycom.co.jp/news/2001/03/26/07.html>
が紹介されてるのを見て、suzukiの人かな、とか思ったらぜんぜん違った。 そりゃ、そうですよね。
2001-03-29 (Thu) [長年日記]
_ Stackless Python
IRCnetの%Rubyでちょっと話題になったけどStackless Pythonというものが あるらしい。 ふつーのPythonと違うのはCスタックを使わない(代わりにソフトウェアスタックを 使う)こと。
<URL:http://www-6.ibm.com/jp/developerworks/linux/010209/j_l-pyth7.html>
これでcontinuationが簡単に実装できるので、それを使ってスレッドを実装したり するそうです。
_ good-bye, sendmail
sendmailのサーバでトラブルがあったのでpostfixに変えてしまった。 あとqmailのやつをpostfixに移行できたらラクになるけど、postfixでvirtual domain は面倒そうだなあ。 (postfixが、というかpopdを用意するのが。)
2001-03-31 (Sat) [長年日記]
_ net/imap
rubyのcvsに新しいnet/imapをcommitした。
ruby /path/to/net/imap.rb
とかすると面白いかも。 (もとはやまださんのアイデア)
あとドキュメントもちゃんとしてみたり。 ちなみにruby_1_6ブランチにはcommitしてない。