Mais conteúdo relacionado
Semelhante a GaucheでCGIプログラミング (20)
Mais de Kazuhiro Hishinuma (14)
GaucheでCGIプログラミング
- 2. 自己紹介
• Kazuhiro
Hishinuma
(かにたん♪)
– TwiDer:
@kazh98
– Web:
hDp://www.arnip.org/
– 「MCPC:
a
Compe==ve
Programming
Circle」代表
MCPC:
a
Compe==ve
Programming
Circle.
2
- 8. GaucheでCGIを書くデメリット
% cat test.scm
(use www.cgi)
% time gosh test.scm
0.176u 0.045s 0:00.22 95.4%
22+8792k 0+0io 0pf+0w
% cat test.rb
require "cgi"
% time ruby test.rb
0.011u 0.022s 0:00.22 13.6%
8+1957k 25+0io 8pf+0w
※さくらのレンタルサーバ
MCPC:
a
Compe==ve
Programming
Circle.
8
- 9. いままでにつくったもの
• AJP:
a
Judge
System
for
Programming
Contest
• An
Assembler
for
Meiji-‐MPU
• (compare-‐aoj-‐solved)
– hDp://www.arnip.org/compareaoj.cgi
– Aizu
Online
Judge
のSolved
比較
– Lisper
のため(?)
のUI
MCPC:
a
Compe==ve
Programming
Circle.
9
- 15. XHTML
→
Symbolic
Expression
(html
:xmlns
“hDp://www.w3.org/1999/xhtml”
(head
(=tle
“Content”))
(body
(h1
“Hello,
World!”)))
MCPC:
a
Compe==ve
Programming
Circle.
15
- 17. text.html-‐lite
ライブラリ
• (html:[タグ名]
引数…)
でXHTMLを生成できる
• 属性はキーワード引数で表現
– 属性名=“値”
→
:属性名
“値”
• 子要素やテキストノードは式の入れ子で表現
– <b><u><i>Hello</i></u></b>
→
(html:b
(html:u
(html:i
“Hello”)))
MCPC:
a
Compe==ve
Programming
Circle.
17
- 22. 関数cgi-‐get-‐parameter
(let
((mode
(cgi-‐get-‐parameter
"mode"
p))
(uid
(cgi-‐get-‐parameter
"uid"
p))
(cid
(cgi-‐get-‐parameter
"cid"
p)))
(list
(cgi-‐header)
(cond
((and
mode
(string=?
mode
"src"))
(gp-‐source))
((and
uid
(not
(string-‐null?
uid))
cid
(not
(string-‐null?
cid)))
(gp-‐compare
uid
cid))
(else
(gp-‐default)))))
MCPC:
a
Compe==ve
Programming
Circle.
22
- 24. その他
• 認証関係はDokuWiki
Authoriza=on
Library
が
便利だよ!!(ステマ
– hDps://github.com/kazh98/Gauche-‐www-‐
dokuauth
– ユーザ管理をDokuWiki
ACL
に丸投げライブラリ
• (気が向いたら)3ヶ月後にお話します。
MCPC:
a
Compe==ve
Programming
Circle.
24
- 26. まとめ
• みんな大好きS式表現でXHTML
組めるよ!
• Schemeを実用するのには良いネタだよ!
• Ruby
の10倍遅重・・・
CGI
を書くことが目的じゃない、
Schemeを書くことが目的だ!!!
MCPC:
a
Compe==ve
Programming
Circle.
26
- 28. Q.Gauche
のライブラリ
読み込みが遅いだけでは?
• 恐らくその通りです。www.cgi
ライブラリは依
存ライブラリの数が多いので、ディスクアクセ
スが多くなり、特にそれが遅いサーバ上だと
速度低下が起きるようです。
• 私が実用するときは、www.cgi
ライブラリ中の
必要関数だけ抜き出して、cgi
スクリプト本体
に埋め込むことが多いです。
• ↑自動化できたらいいですね。
MCPC:
a
Compe==ve
Programming
Circle.
28