[Gauche-devel-jp] Re: www.cgi-session

Back to archive index

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


では、どうかよろしくお願い致します。




Gauche-devel-jp メーリングリストの案内
Back to archive index