`(Hello ,world)

ツッコミ、添削大歓迎です。いろいろ教えてください。

2009-01-22

GaucheでCGI

Gauche - A Scheme ImplementationからWindowsバイナリを落として、xamppからcgiとして呼び出す。Cygwin版だとapacheから呼び出したときにcygwin.dllが見つからないとかでうまく動かなかった記憶。

一番単純なサンプル
#!/usr/local/bin/gosh

(display "Content-type: text/html\n\n")
(display "<html>")
(display "<head></head>")
(display "<body>hello, <font color=red>world</font>!</body>")
(display  "</html>")

Windows版なので改行コードが\n\rになってるけど大丈夫っぽい。

www.cgiを使ったサンプル

no title

出力結果:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
       "http://www.w3.org/TR/html4/strict.dtd">
<html><body><p>Hello, Gauche!</p
></body
></html
>

閉じタグの'>'の前に改行が入るのはなんの流儀なんだろう…?

httpから取得

httpから取得 - mokeheheのScheme日記 - sicp 自分やってて完全に忘れてるぜ…

#!/usr/local/bin/gosh

(use rfc.http)
(use rfc.uri)

; uri-parse が分解してしまったpathとqueryとfragmentをつなげる
(define (uri-path path query fragment)
  (string-append path
                 (if query
                     (string-append "?" query)
                   "")
                 (if fragment
                     (string-append "#" fragment)
                   "")))

; uri を http-get して本文を返す
(define (get-http-text uri)
  (receive (scheme auth host port path query fragment)
           (uri-parse uri)
           (receive (status header body)
                    (http-get host (uri-path path query fragment))
                    body)))

(display (get-http-text "http://example.com/"))
トラックバック - http://cadr.g.hatena.ne.jp/mokehehe/20090122