論文を読んで、自分の継続CGIを改造してみた。

「短冊」

年金が正しく記録されますように

- 子ども

さすがUSO放送! 俺達に(ry

  • SISC(JVMで動くScheme)を使えば継続をmarshalingできるらしい、で、SISCに手を出そうかと思ったが、Rhino(JVMで動くJavascript)も気になる。CocoonRhinoを使っているらしいが。WebアプリでAjaxだ-JSONだーとかやるなら、結局Javascriptと付き合うのだから、Rhinoのほうがいいかも。
  • (追記)Rhinoも継続をmarshalingできるらしい。ワーオ。
  • せっかく書いた継続CGIだから、デモを置きたいけど、GaucheFastCGIを使わせてくれるサーバが見つからない。さくらの専用サーバでも借りようか。相当お金がかかるけど。

本題

これまでのような、コンソールライクなWebプログラミングだと、dispatchパターンが頻出します。こんなん。

(let ((req (cgi-get-parameter "value" (show (html:html ...)))))
  (case req
    ...

で、

に、send/suspend/dispatchという話があって、WebプログラミングはコンソールというよりはGUIなのだから、それに応じて、リンクごとに継続を仕込めるほうが便利じゃね、そうすればクエリパラメータから値を取り出してうんぬんなんて低レベルなことを意識せずにすむよ、と。
論文のほうは、それを escape continuation を使ってより軽量にやるらしいんですが、そこはちょっとわかりませんでした。なので単純に、いつも使っている継続テーブルに保存してます。

  • 使いかた
    • show でページ出力&ユーザの入力を待つ。(他では、send/suspend (論文)とか、sendPageAndWait(Cocoon)と呼ばれている)
    • action で継続を仕込む

以前のsum.fcgiはこうなります。

続きを読む