Submit Search
Upload
GaucheでCGIプログラミング
•
8 likes
•
8,067 views
Kazuhiro Hishinuma
Follow
Lisp Meet Up presented by Shibuya.lisp #5 での発表資料 cf. http://atnd.org/events/39675
Read less
Read more
Technology
Report
Share
Report
Share
1 of 28
Download now
Download to read offline
Recommended
Implementation of Counters in ScopedBASIC
Implementation of Counters in ScopedBASIC
Kazuhiro Hishinuma
C++による数値解析の並列化手法
C++による数値解析の並列化手法
dc1394
#upcamp '12 Hack-a-thon Result
#upcamp '12 Hack-a-thon Result
Kazuhiro Hishinuma
Math works gdlc2019
Math works gdlc2019
Hirokuni Uchida
C# 7 Current Status
C# 7 Current Status
Takaaki Suzuki
4 Colors Othello’s Algorithm
4 Colors Othello’s Algorithm
Takaaki Suzuki
Mongo dbのgridfsについて
Mongo dbのgridfsについて
Masahiro Saito
Shelly
Shelly
fukamachi
Recommended
Implementation of Counters in ScopedBASIC
Implementation of Counters in ScopedBASIC
Kazuhiro Hishinuma
C++による数値解析の並列化手法
C++による数値解析の並列化手法
dc1394
#upcamp '12 Hack-a-thon Result
#upcamp '12 Hack-a-thon Result
Kazuhiro Hishinuma
Math works gdlc2019
Math works gdlc2019
Hirokuni Uchida
C# 7 Current Status
C# 7 Current Status
Takaaki Suzuki
4 Colors Othello’s Algorithm
4 Colors Othello’s Algorithm
Takaaki Suzuki
Mongo dbのgridfsについて
Mongo dbのgridfsについて
Masahiro Saito
Shelly
Shelly
fukamachi
Cactiでのcliツールについて
Cactiでのcliツールについて
Akio Shimizu
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
Ryuuta Tsunashima
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
明治大の活動2
明治大の活動2
Kazuhiro Hishinuma
Cython ことはじめ
Cython ことはじめ
gion_XY
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
ssuser3a4b8c
drecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battle
Mitsuki Kenichi
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
Java 9で進化する診断ツール
Java 9で進化する診断ツール
Yasumasa Suenaga
Python physicalcomputing
Python physicalcomputing
Noboru Irieda
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
t-sin
第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門
cocopon
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
Computational Materials Science Initiative
PCL
PCL
Masafumi Noda
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
Kiyoshi Ogawa
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部
NVIDIA Japan
qmake入門
qmake入門
hermit4 Ishida
20130315 abc firefox_os
20130315 abc firefox_os
Tomoaki Konno
Properties of a Convex Set in Linear Space
Properties of a Convex Set in Linear Space
Kazuhiro Hishinuma
大学生活概論
大学生活概論
Kazuhiro Hishinuma
More Related Content
Similar to GaucheでCGIプログラミング
Cactiでのcliツールについて
Cactiでのcliツールについて
Akio Shimizu
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
Ryuuta Tsunashima
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
Yoshifumi Kawai
明治大の活動2
明治大の活動2
Kazuhiro Hishinuma
Cython ことはじめ
Cython ことはじめ
gion_XY
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
ssuser3a4b8c
drecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battle
Mitsuki Kenichi
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
Java 9で進化する診断ツール
Java 9で進化する診断ツール
Yasumasa Suenaga
Python physicalcomputing
Python physicalcomputing
Noboru Irieda
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
t-sin
第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)
RCCSRENKEI
Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門
cocopon
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
Computational Materials Science Initiative
PCL
PCL
Masafumi Noda
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
Kiyoshi Ogawa
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部
NVIDIA Japan
qmake入門
qmake入門
hermit4 Ishida
20130315 abc firefox_os
20130315 abc firefox_os
Tomoaki Konno
Similar to GaucheでCGIプログラミング
(20)
Cactiでのcliツールについて
Cactiでのcliツールについて
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
GPU-FPGA 協調計算を記述するためのプログラミング環境に関する研究(HPC169 No.10)
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
明治大の活動2
明治大の活動2
Cython ことはじめ
Cython ことはじめ
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
drecomにおけるwinning the metrics battle
drecomにおけるwinning the metrics battle
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
Java 9で進化する診断ツール
Java 9で進化する診断ツール
Python physicalcomputing
Python physicalcomputing
SECDマシン 実装と動きとその他もろもろについて
SECDマシン 実装と動きとその他もろもろについて
第12回 配信講義 計算科学技術特論B(2022)
第12回 配信講義 計算科学技術特論B(2022)
Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
CMSI計算科学技術特論B(14) OpenACC・CUDAによるGPUコンピューティング
PCL
PCL
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
「C言語規格&MISRA-C:みんなで楽しいCプログラミング」NGK2013B名古屋合同懇親会2013忘年会昼の部
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
20190625 OpenACC 講習会 第1部
20190625 OpenACC 講習会 第1部
qmake入門
qmake入門
20130315 abc firefox_os
20130315 abc firefox_os
More from Kazuhiro Hishinuma
Properties of a Convex Set in Linear Space
Properties of a Convex Set in Linear Space
Kazuhiro Hishinuma
大学生活概論
大学生活概論
Kazuhiro Hishinuma
床下からCommon Lisp
床下からCommon Lisp
Kazuhiro Hishinuma
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
Kazuhiro Hishinuma
What Does R7RS Change Programming in Scheme?
What Does R7RS Change Programming in Scheme?
Kazuhiro Hishinuma
不動点×不動点×不動点コンビネータ
不動点×不動点×不動点コンビネータ
Kazuhiro Hishinuma
最急降下法で制約つき最適化問題を解いてみた
最急降下法で制約つき最適化問題を解いてみた
Kazuhiro Hishinuma
再帰でつくる、計算の世界
再帰でつくる、計算の世界
Kazuhiro Hishinuma
Lisper は競プロを楽しめるか?
Lisper は競プロを楽しめるか?
Kazuhiro Hishinuma
How to Implement a CPU Emulator in Scheme
How to Implement a CPU Emulator in Scheme
Kazuhiro Hishinuma
明治大の活動予告
明治大の活動予告
Kazuhiro Hishinuma
The Programming Language Scheme
The Programming Language Scheme
Kazuhiro Hishinuma
情報と職業プレゼン予告
情報と職業プレゼン予告
Kazuhiro Hishinuma
Scoped BASIC Presentation1
Scoped BASIC Presentation1
Kazuhiro Hishinuma
More from Kazuhiro Hishinuma
(14)
Properties of a Convex Set in Linear Space
Properties of a Convex Set in Linear Space
大学生活概論
大学生活概論
床下からCommon Lisp
床下からCommon Lisp
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
すべてをRacketに取り込もう! ~Racket FFI と Package システムの使い方~
What Does R7RS Change Programming in Scheme?
What Does R7RS Change Programming in Scheme?
不動点×不動点×不動点コンビネータ
不動点×不動点×不動点コンビネータ
最急降下法で制約つき最適化問題を解いてみた
最急降下法で制約つき最適化問題を解いてみた
再帰でつくる、計算の世界
再帰でつくる、計算の世界
Lisper は競プロを楽しめるか?
Lisper は競プロを楽しめるか?
How to Implement a CPU Emulator in Scheme
How to Implement a CPU Emulator in Scheme
明治大の活動予告
明治大の活動予告
The Programming Language Scheme
The Programming Language Scheme
情報と職業プレゼン予告
情報と職業プレゼン予告
Scoped BASIC Presentation1
Scoped BASIC Presentation1
Recently uploaded
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
Recently uploaded
(8)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
GaucheでCGIプログラミング
1.
GaucheでCGIプログラミング Kazuhiro Hishinuma (@kazh98) MCPC:
a Compe==ve Programming Circle. 1
2.
自己紹介 • Kazuhiro Hishinuma
(かにたん♪) – TwiDer: @kazh98 – Web: hDp://www.arnip.org/ – 「MCPC: a Compe==ve Programming Circle」代表 MCPC: a Compe==ve Programming Circle. 2
3.
自己紹介 MCPC: a Compe==ve
Programming Circle. 3
4.
(CDR …) MCPC: a
Compe==ve Programming Circle. 4
5.
よく聞かれること・・・ Schemeで なにを 書いているんですか? MCPC:
a Compe==ve Programming Circle. 5
6.
答え CGIです。 MCPC: a Compe==ve
Programming Circle. 6
7.
GaucheでCGIを書くメリット Schemeを実用できる ・・・以上。 MCPC: a
Compe==ve Programming Circle. 7
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
10.
(compare-‐aoj-‐solved) MCPC: a Compe==ve
Programming Circle. 10
11.
(CDR …) MCPC: a
Compe==ve Programming Circle. 11
12.
GaucheでCGIを書くには・・・? • text.html-‐lite ライブラリ • www.cgi
ライブラリ • gauche.parameter ライブラリ ・・・を使おう!! MCPC: a Compe==ve Programming Circle. 12
13.
CGIが作り出すものは・・・? HTML MCPC: a Compe==ve
Programming Circle. 13 XHTML
14.
XHTML <html xmlns=“hDp://www.w3.org/1999/xhtml”>
<head> <=tle>Content</=tle></head> <body> <h1>Hello, World!</h1></body></html> MCPC: a Compe==ve Programming Circle. 14
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
16.
これは・・・ S式だ MCPC: a Compe==ve
Programming Circle. 16
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
18.
CGI の動作手順 1. パラメータを受け取る
2. XHTMLを生成する 3. 結果を返す MCPC: a Compe==ve Programming Circle. 18
19.
www.cgi ライブラリ 1. パラメータを受け取る
2. XHTMLを生成する 3. 結果を返す MCPC: a Compe==ve Programming Circle. 19 赤字の部分を受け持ってくれる
20.
関数cgi-‐main (define (main args)
(cgi-‐main (lambda (p) (list (cgi-‐header) ; XHTML の生成処理 )))) MCPC: a Compe==ve Programming Circle. 20
21.
関数cgi-‐get-‐parameter • (cgi-‐get-‐parameter “名前”
p) で、パラメータの値がとれる。 • 存在しなかったら#f • cgi-‐main の中で、パラメータによる場合分け をすると読みやすい!! MCPC: a Compe==ve Programming Circle. 21
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
23.
gauche.parameter ライブラリ • 大域変数/動的スコープ的なもの
– Common Lisp だとスペシャル変数とか言うらしい • (parameterize ((x ‘hoge)) …) … で呼び出された云々は、変数x を参照可 > あんま使わない < MCPC: a Compe==ve Programming Circle. 23
24.
その他 • 認証関係はDokuWiki Authoriza=on
Library が 便利だよ!!(ステマ – hDps://github.com/kazh98/Gauche-‐www-‐ dokuauth – ユーザ管理をDokuWiki ACL に丸投げライブラリ • (気が向いたら)3ヶ月後にお話します。 MCPC: a Compe==ve Programming Circle. 24
25.
(CDR …) MCPC: a
Compe==ve Programming Circle. 25
26.
まとめ • みんな大好きS式表現でXHTML 組めるよ!
• Schemeを実用するのには良いネタだよ! • Ruby の10倍遅重・・・ CGI を書くことが目的じゃない、 Schemeを書くことが目的だ!!! MCPC: a Compe==ve Programming Circle. 26
27.
THANKS FOR YOUR
LISTENING!! MCPC: a Compe==ve Programming Circle. 27
28.
Q.Gauche のライブラリ 読み込みが遅いだけでは? •
恐らくその通りです。www.cgi ライブラリは依 存ライブラリの数が多いので、ディスクアクセ スが多くなり、特にそれが遅いサーバ上だと 速度低下が起きるようです。 • 私が実用するときは、www.cgi ライブラリ中の 必要関数だけ抜き出して、cgi スクリプト本体 に埋め込むことが多いです。 • ↑自動化できたらいいですね。 MCPC: a Compe==ve Programming Circle. 28
Download now