* 26章 継続渡しによるWebアプリケーション
- おお、sessionベースとcontinuationベースの比較が
できるのか! 贅沢。
** 26.1 簡易HTTPサーバ
*** 26.1.1 ネットワークとソケット
- う、名前付きletが読めない。ためす。
gosh> (let fn-name ((x 1))
x)
1
gosh> (let fn-name ((x 1) (y 2))
(list x y))
(1 2)
gosh> (let fn-name ((n 4))
(if (<= n 1)
1
(+ (fn-name (- n 1)) (fn-name (- n 2)))))
5
gosh>
- 理解した。
*** 26.1.2 HTTPリクエストの解析
- うーん。Gaucheの正規表現リテラルがscheme-modeも
paredit-modeも破綻させてしまうことがある。
modeが対応していないのがわるいんだけど。。。
これらmodeが無いとまともにコードが書けない自分で
あることも事実。
- list*。仕様を忘れた。ためす。
gosh> (list*)
()
gosh> (list* 1)
1
gosh> (list* 1 2)
(1 . 2)
gosh> (list* '())
()
gosh> (list* 1 2 3)
(1 2 . 3)
gosh> (list* 1 '(2 3))
(1 2 3)
gosh>
- consの可変長引数拡張。
*** 26.1.3 HTTPレスポンスの生成
- 特になし。
*** 26.1.4 コンテンツの生成
- 特になし。
*** 26.1.5 ここまでのまとめ
- お、動いた。
** 26.2 アプリケーションの仕様
- 特になし。
** 26.3 セッションオブジェクトによる状態管理
- 特になし。
*** 26.3.1 プレーヤーの移動と表示
- さあ、ここまで書いたのが動かない。どこでタイポ
したか。。。このデバッグは結構大変かも。
- デバッグ実況してみる。
- 次のエラー。ブラウザはロード中のまま。
*** ERROR: attempt to accept from a closed socket: #<socket (closed)>
Stack Trace:
_______________________________________
0 (socket-accept server-sock)
At line 1680 of "(stdin)"
- render-contentに#?=をちょこちょこしこむ。異常は
なさげ。
- render-contentを以前のものに戻す。正常に動作す
る。やはりrender-contentのようだ。
- 新しいrender-contentのHTML構成部を"hoge"に変更
してみる。動いた。HTML構成部らしい。
- render-selector以外の部分を戻して実行。
render-selectorをmapするところはlambdaにて簡易
な処理にしておく。これはerror。
- locationまわりで異常があるのかと思い、location、
car location, cdr locationを出力させるが問題な
し。
- html:ulのところをコメントアウトして実行。これは
OK。かなり限定できてきた。render-selectorの中。
- render-selectorのhtml:aの中のcontentでおこって
いるようだ。あ! get-directionか?
- get-directionの最後のdirの入力忘れだった。orz
- まあ、Unit Testつくりながら写経しているわけじゃ
ないからしかたなし。
- 動いた。めでたし。
*** 26.3.2 Backボタン問題
- 特になし。
**** セッション管理のセキュリティ
- 特になし。
** 26.4 継続渡しスタイルによる状態管理
- おお、ばすばすhashにクロージャを入れていくのか。
呼び出し毎に新しいクロージャを生成してるよね、こ
れ。。。なんというか、ファイルのセーブが実は複製
であり全セーブ履歴を保持しているファイルシステム
みたい。継続渡しというよりクロージャ祭りの方がイ
メージにあっているかも。私の理解が間違っているのか。
*** 26.4.1 抽象化
- a/cont。見事だなぁ。
** 26.5 継続渡しスタイルの特徴
- 特になし。
** 26.6 まとめ
- 特になし。
継続渡しによるWebアプリケーションを理解できたかもしれない。だとしたら嬉しい。
結構なタイピング量だった。手首がいたい。
こつこつ。
0 件のコメント:
コメントを投稿