history

青木日記 RSS

<前の日 | この月 | 次の日>

2004-04-26

BitChannel / 実装:webrick/cgi に移行

WEBrick の Request/Response を cgi.rb のインターフェイスに合わせるのが 激しく無駄に思えてきたので、webrick/cgi をベースに再構成することにした。 面倒だろうと思っていたが意外と簡単であった。

もっとも変更差分はかなり大きいので、 cvs up するときは用心してください。 また、webrick/cgi.rb は Ruby 1.8.1 以降にしか入ってないので、 Ruby 1.8.0 で動かしている場合はどっかから webrick/cgi を調達してください。 それでもだめなら webrick をまるごと 1.8.1 ので上書き。

ちなみに、特に先端追従をモットーにしてるというわけではありません。 ありませんが、開発初期 (ver 0.x のあいだ?) に限っては先端指向でやる予定です。

いつ 1.0 になるかってのも二転三転してますが、 日本語ページ名と細かいエラー処理は解決しておきたいところです。 でも時間かかりそうなら適当に切り上げて 1.0 にしちゃうかもー。

(00:44)

Ripper

http://www.rubyforge.net/projects/ripper/

勢いだけで Ripper を CVS HEAD に追従させる。 ようやく標準添付ライブラリが全部通るようになった。

ただ、今度は 1.8.1 で使うと落ちると思う。 ID がらみで、動いてる Ruby の parse.y と トークンが全く同じでないとまずいからだ。 今は CVS HEAD に合わせているので、 トークンが一つ足りない 1.8 では落ちるはずだ。

で、次は自分のプログラムでもパースしてみるかーと思ったらいきなり問題発生。 改行が CR LF のファイルだと "\\\r\n" が 次のトークンと同じイベントで出てきてしまうという、謎のバグだ。 行をまたぐときに内部で汚いことをやっていたのが原因だった。

しかしこのバグは内部構造の関係上、非常に直しづらい。 とりあえず落ちないようにはなってるので、そのうち考えよう。

つーか、実を言うと、 今の Ripper っていつどこからイベントが発生してるのか 自分でもよくつかめてなかったりする。 イベントの発生タイミングを完全に把握するには 即ち Ruby のパーサの動作を完全に (先読みまで含めて) 把握してないといけないわけで、 それはなんとうんざりすることであろうか、いとおかし。

(02:52)

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS