yamada
yamad****@tir*****
2004年 9月 2日 (木) 22:50:23 JST
お久しぶりです、山田です。 実は、自分も個人的用途兼練習として、 セッション操作モジュールを作ってみたりしていたので、 その時に考えた事などを書かせてもらいます。 > (1) www.cgi-sessionから、CGIのクッキーにアクセスする方法 クッキーの値を読み込むのは簡単なので省略します。 書き込む場合ですが、cgi-mainと分離するとして、 cgi-mainはHTTPヘッダ部分を含むtext.treeなリストを受け取るので、 parametarizeを使って、以下のようにすればいいと思います。 (define (main args) (parameterize ((wrote-cookie #f)) (cgi-main (lambda (params) (with-session ; ←wrote-cookieが#f以外なら、返り値のリストの先頭に ; クッキーヘッダをconsする session-obj (lambda () ;; ここで普通にCGI動作をして、返り値としてHTTPヘッダ部分を含む ;; text.treeなリストを返す(cgi-mainに返す値と同じ) ;; クッキーを書き込む場合はwrote-cookieに保存(する関数を用意) )))))) (で、この動作をする関数をcgi-main/sessionみたいな名前で提供とかする) > (2) データのシリアライズについて > > PerlのCGI::Sessionでは、シリアライザを追加できるように > なっています。Gaucheでは、一番基本的なシリアライズ方法は > どのようになるでしょうか? 多分、一番基本的なシリアライズはwriteとreadだと思います。 で、それを使った保存と復帰をするのが、既にdbmとして提供されているので、 それを使うのが一番簡単だと思います。 writeとreadは、基本的な値やリストは保存できるようですし、 オブジェクトに関しても、write-objectメソッドをちゃんと用意している オブジェクトなら、保存復帰が出来るようです。 と、そこまで考える*前*に自分が作ったモジュールがココにあります。 (出来の方は不問で…‥あと、修正中なのでちゃんと動かないところとか あるかもしれないです) http://cvs.tir.jp/viewcvs.cgi/gs/lib/n/cgi-session.scm http://cvs.tir.jp/viewcvs.cgi/gs/lib/n/bad-session.scm あと、WiLiKiのGauche:Packagesにコレがあります。 http://www.physics.unlv.edu/~john/scheme/session.scm では、どうかよろしくお願い致します。