Cashflow 101の遊び方

CGIプログラミング基礎
佐賀大学
理工学部知能情報システム学科
講師 大月 美佳
今回の趣旨
CGIプログラミングをする上で必要な
基礎的な事項を学習する
質問は随時ご自由に
2003年1月28日
CGIプログラミング基礎
2
Webの機構
Webクライアント
Webサーバ
ページくれ
どこかな?
コンピュータ
(ケータイなども)
インターネット
HTML文書
など
ページだよ
静的もしくは
通信プロトコル:HTTP
動的なページ
2003年1月28日
CGIプログラミング基礎
3
Webの規格
 標準化組織:W3C
http://www.w3c.org/
 W3Cの仕様書等の文書の日本語訳集
http://www.w3.org/Consortium/Translation/Japan
ese
→参考資料①
 HTTP,
2003年1月28日
HTML(XHTML), XML, etc.
CGIプログラミング基礎
4
通信プロトコル:HTTP
 HTTP(HyperText
Transfer Protocol)
 Webクライアント・サーバ間の言語
リクエストごとにコネクションを確立し
 1回のデータ交換を終了するたびに接続を解除
 GET, POST, HEAD, PUT, …

 拡張HTTP,
HTTP-KeepAlive
 データ通信が平文→暗号化が必要

HTTPS, SHTTP
2003年1月28日
CGIプログラミング基礎
5
記述言語:HTML(XHTML)
 HTML(HyperText
Markup Language)
 WWWでもっとも一般的な記述言語
 HTMLで書かれた文書をHTML文書という
 構造化文書記述言語SGMLの一種
 構造情報、レイアウト情報が混在
 XML対応→XHTML
 構造情報とレイアウト情報を分離
 現在移行期間
2003年1月28日
CGIプログラミング基礎
6
XML
 XML
 構造化文書記述言語
任意の文字データの記述に使用可能→DB
 参考URL:
http://www.xml.org/
 SGMLの後継
より柔軟により簡単に
関連記述能力の強化
2003年1月28日
CGIプログラミング基礎
7
対話型ページの実現
 動的コンテンツ
 プログラムにより動的に生成されるもの
 クライアント側で実行
 JavaScript,
Applet, 他プラグイン
 サーバ側で実行
 SSIとCGIのどちらかで実現
 ユーザとの対話→CGI
2003年1月28日
CGIプログラミング基礎
8
動的コンテンツ作成手法:SSI
 Server
Side Include(SSI)
 部分的な動的コンテンツの生成用
システム時刻やファイル更新日の取得など
 ユーザからの入力は不可能

 例:
<!--#config timefmt="%y/%m/%d %H:%M" -->
<!--#flastmod file="index.html" -->
 Apache設定
Options Includes または IncludesNOEXEC
AddType text/html .shtml
AddHandler server-parsed .sthml
2003年1月28日
CGIプログラミング基礎
9
動的コンテンツ作成手法:CGI

Common Gateway Interface(CGI)
WebサーバーとWebアプリケーションとの間の通信の共
通インターフェイス
 ユーザからの入力
→フォームとの連携
<form action=“aaa.cgi" method="post“>
<input type=“text” name=“Name” value=“Please input your
name”>
<input type=“submit” name=“SUBMIT” value=“SUBMIT”>
</form>

Apache設定
Options ExecCGI
AddType application/x-httpd-cgi .cgi
AddHandler cgi-script .cgi
2003年1月28日
CGIプログラミング基礎
10
CGIの機構
Webサーバ
Webクライアント
ページくれ
呼び出し
CGI
HTTP
出来たよ
プログラム
2003年1月28日
ページだよ
CGIプログラミング基礎
11
CGIを介したデータ授受
GET
POST
環境変数
GET /test.cgi?n1=v2&…
または
POST /test.cgi …
標準入力
標準出力 +ヘッダ情報
プログラム
2003年1月28日
Content-type: …
<空行>
データ
CGIプログラミング基礎
12
CGI設置に関する注意事項
 「セキュアなWebサーバーの構築と運用」
http://www.ipa.go.jp/security/awareness/admi
nistrator/secure-web/
→参考資料②
2003年1月28日
CGIプログラミング基礎
13
CGIの連携言語
 プログラミング言語なら何でも
 スクリプト言語
書きやすい、文字処理が得意
 Perl, PHP, Ruby, Python, Tcl, …

 上級言語
学習は難しい、実行速度は速い
 C/C++(C#), Java, Pascal(Delphi), …

2003年1月28日
CGIプログラミング基礎
14
Perl
 参考URL:
 特徴:
 優れた正規表現記述能力
 文字処理に特化
 膨大なライブラリの蓄積→CPAN
 Apache設定
 通常のCGI設定
 mod_perl関連
2003年1月28日
CGIプログラミング基礎
15
PHP

参考URL:

日本PHPユーザ会
http://www.php.gr.jp/

特徴:



HTMLに直接埋めこみが可能
CGIとの親和性が高い
Apache設定


mod_php関連
AddType application/x-httpd-php .php など
2003年1月28日
CGIプログラミング基礎
16
データの保存手段
 プレーンテキスト
 小規模、プロトタイプなら十分
 任意,
CSV, XML, …
 データベース
 大規模なものには
 簡易(db),
RDB(SQLDB), OODB, XMLDB,
…
2003年1月28日
CGIプログラミング基礎
17
XMLデータとの連携
HTML・XML文書のためのAPI


参考:http://www.atmarkit.co.jp/fxml/index.html
柔軟な操作→DOM


XML文書の汎用モデル(オブジェクト指向)
参考:
http://www.doraneko.org/misc/dom1/introduction.html

単純大規模な処理→SAX


簡単な構文解析ツール
本家:
http://www.saxproject.org/
2003年1月28日
CGIプログラミング基礎
18
SQLDBとの連携
 フリーのSQLDB
海外で優勢
 PostgreSQL: 日本語の文献が多い
 mySQL:
 言語との連携
 Perl:
DBI.pm(汎用)、Pg.pmなど
 PHP: PHPLIB、各DB用インターフェース
 Java: JDBC(汎用)、ODBC(OO汎用)
2003年1月28日
CGIプログラミング基礎
19
Apache httpdの起動
 /etc/apache/httpd.confの設定
 SSI,
CGIの設定
 mod_php, mod_perlまわり
 他色々→参考資料③
 viの使用法→参考資料④
 /etc/init.d/apache
2003年1月28日
start
CGIプログラミング基礎
20
PHPプログラムサンプル
<html>
<head><title>Test PHP</title></html>
<body><h1>Test PHP</h1>
<form method="POST" action="test.php">
<input type="TEXT" name="name" size="20" />
<input type="SUBMIT" name="TEST" value="TEST" />
</form>
<hr>
<p>Input: <?php print $name; ?></p>
</body></html>
2003年1月28日
CGIプログラミング基礎
21