1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 1 ( 超入門編 ) Perl for Win32 利用による Web アプリケーション開 発 ( 超入門編 ) 日本ヒューレット・パッカード ( 株 ) 石堂 正樹.

Slides:



Advertisements
Similar presentations
© 2007 Autodesk1 ProjectPoint API 概要 AEC ソリューション CPM オートデスク株式会社.
Advertisements

1 情報処理基礎 2006 年 7 月 6 日. 2 本日の学習項目 HTML 文書の基礎知識を習得する。 ホームページ・ビルダーの基本的な使 い方を習得する。 ホームページの作成 自己紹介のためのホームページを作成する。
情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
目次 このドキュメントについて・・・前提条件……………………………………… 2
ASP入門 - Windows 2000 Server 活用 -.
IIS 4.0で開発をするコツ Webアプリケーション構築.
情報処理3 アプリケーション プログラミング 今井孝明.
The Perl Conference Japan ’98 朝日奈アンテナによる コンテンツ情報の取得と利用
知能機械工学科 担当:長谷川晶一 TA:新・後藤・ナンバ
第3回参考文献発表 PHP言語 岩永逸平.
Webアプリケーションの 通信メカニズム WEBアプリ研究プロジェクト 第2回.
JPAを利用した RESTful Webサービスの開発
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
Flashプレイヤーを使った動画配信 情報工学科 宮本 崇也.
名古屋大学大学院人間情報学研究科 物質生命情報学専攻 情報処理論講座 原 崇
Servlet J2EE I 第8回 /
Servlet入門(2) 入力フォームをつかったWebアプリ
伺か with なでしこ 発表者:しらたま /05/05 うかべん大阪#3.
稚内北星学園大学 情報メディア学部 助教授 安藤 友晴
第4回 個人の動画配信補足のためのWeb構築
オペレーティングシステムⅡ 第3回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/10/16.
佐賀大学 理工学部知能情報システム学科 講師 大月 美佳
Bottle/Pythonによる Webアプリ入門
Perlを用いた 学内専用アップローダの作成
ビューとコントローラ.
HTTPプロトコルとJSP (1) データベース論 第3回.
JQueryでAjax 藤田@ジャストプレイヤー ※参考しまくり文献 jQuery日本語リファレンス.
HTTPプロトコル J2EE I 第7回 /
Servlet入門(2) 入力フォームをつかったWebアプリ
サーバー立ち上げ記 2009/5/23
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
データベース設計 第9回 Webインタフェースの作成(1)
基幹理工学研究科 情報理工学専攻 後藤研究室 修士1年 魏 元
空間情報サーバ (株)パスコ.
第8章 Web技術とセキュリティ   岡本 好未.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
Javaによる Webアプリケーション入門 第6回
Microsoft BizTalk Server & SAP PP モジュール 連携検証レポート概要
制作技術ー3 双方向通信 : CGIシステムと環境変数
情報アプリケーション1 2006年 10月 19日 第四回資料 担当 重定 如彦 .
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
ファイルのアップロード HTMLファイルをWebサーバにアップロード 名商大のWebサーバ(opinion.nucba.ac.jp)
コンピュータ プレゼンテーション.
データベース設計 第7回 実用データベースの運用例 クライアント=サーバシステム(1)
JSFによるWebアプリケーション開発 第3回
基礎プログラミング演習 第12回.
情報コミュニケーション入門b 第11回 Web入門(2)
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
ファイルの読み込み #!/usr/bin/env perl #Perlスクリプトの指定 open(FILE, "food.txt");
統計ソフトウエアRの基礎.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
情報基礎演習I(プログラミング) 第8回 6月8日 水曜5限 江草由佳
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
JSPの基本 データベース論 第2回.
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
システムプログラミング 第10回 プロセス間通信3 簡易Web server(準備) Chat プログラム 担当:青木義満、篠埜 功
第2回 Webサーバ.
TCP/IP 通信テストツール TcpTestTool by PipeKatoo!
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
HTTPプロトコルの詳細 M1 峯 肇史.
Presentation transcript:

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 1 ( 超入門編 ) Perl for Win32 利用による Web アプリケーション開 発 ( 超入門編 ) 日本ヒューレット・パッカード ( 株 ) 石堂 正樹

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 2 目次 CGI はどうやって動いてるの? Perl で CGI を便利に作るには Perl で書いた CGI を動かす方法 CGI 以外に Perl で Web アプリケーションを作る

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 3 Web アプリケーション? 静的な HTML ファイルを表 示するだけではなく、外部 からの入力を使用して動的 に HTML を生成して HTTP で 送り返すアプリケーション 外部からの入力の例 – ユーザ入力 – データベース クライアント側は Web ブラ ウザさえあれば OK!

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 4 知っておかなきゃいけないこと HTML の構文 Perl のプログラミング

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 5 知っておくといいかもしれない こと HTTP プロトコル – プロトコルのコマンド – レスポンス

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 6 CGI Common Gateway Interface HTTP サーバと外部プログラムが通信を行う方法 HTTP サーバ 外部プログラム 外部プログラムの標準出力は HTTP サーバへ送られ る HTTP サーバから外部プログラムへの入力はいろいろ (後述) Print ‘ \n….’;

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 7 外部プログラムから HTTP サー バへの出力 おまじないをひと つ –Content-Type HTML を標準出力 へ出力すればよい より細かい制御を したいのであれば 、 タグを 使用するか、 HTTP ヘッダを出 力する print ‘Content-Type: text/html\n\n’; print ‘ \n’; print ‘ \n”; print ‘ 題名 \n’; print ‘ \n’; print ‘ ようこそ \n’; print ‘ \n’;

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 8 HTTP サーバからの入力 3 つの方法 –GET –POST – 拡張パス名 拡張パス名はサポートしていない HTTP サーバも あるので、 注意 ! サンプル ( ただし、 UNIX のシェルスクリプト ) –

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 9 GET METHOD が “GET” のフォーム URL でデータを指定 環境変数 QUERY_STRING にブラウザより送信さ れたデータが格納されている 短いデータの入力に適している

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 10 GET <form name=“MY_FORM” method=“GET” target=“myscript.pl”> お名前をどうぞ $ENV{'QUERY_STRING'}='NAME=ishido'

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 11 POST METHOD が “POST” のフォーム 標準入力にフォームに入力されたデータが入って くる 入ってくるデータの長さは、環境変数 CONTENT_LENGTH に設定されている

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 12 POST <form name=“MY_FORM” method=“POST” target=“myscript.pl”> お名前をどうぞ NAME=ishido という文字 列が CGI の標準入力へ送りこ まれる

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 13 入力データの処理 入ってくるデータは、エンコードされていること もあるので、その場合は元に戻してから使用する ($ENV{CONTENT_TYPE} = ‘application/x-www- form-urlencoded’) 変換されるもの – 空白文字 – 記号 (!“#$%= など ) – 2バイト文字 – 詳細は RFC2068 を参照

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 14 戻し方 (cgi-lib.pl より ) ‘+’ を空白にする –s/\+/ /g; 変換された文字は %xx (xx は 16 進数 ) という形にな っているので、それを元に戻す –s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 15 拡張パス名 CGI のパス名の後にスラッシュ “/” を続けてデータを指 定 一見、そういう名前のファイルがあるように見える 環境変数 PATH_INFO に CGI のパス名の後に追加され た拡張パス名が設定される 環境変数 PATH_TRANSLATED のパス名の後に、 Alias 処理をした後の物理パス名が設定される 使用できない HTTP サーバもあるので注意

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 16 HTTP ヘッダ HTTP サーバから送ら れてくるデータは、ヘ ッダとボディからなっ ている ヘッダ部をみて Web ブ ラウザは動作を決定し ている “Content-Type:” も、 実はヘッダの1部 ボディ(本体) 空行 ヘッダ

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 17 HTTP ヘッダ CGI から HTTP ヘッダを送りだすことが可能 例 –Content-Type –Expires –Last-Modified –Set-Cookie ボディ ( 本体 ) との間に空行をいれることを忘れず に!

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 18 CGI 作成用のライブラリ・モジュ ール フォームからの入力は “ 名前=値 ” で渡ってくる 値も URL Encode されている場合もある いちいち変換する部分を書くのは面倒 決まったことを何回もしなきゃいけない(例: HTML のヘッダ部分) CGI 作成用のライブラリやモジュールが作成され て公開されている

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 19 CGI 作成用のライブラリ・モジュ ール 例として2つ紹介 –cgi-lib.pl – –CGI.pm –

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 20 Cgi-lib.pl Perl4.x, Perl5.x 双方で使用可能 オブジェクト指向はサポートしていない &ReadParse を呼び出すと、フォームの METHOD に関わらずデータを取得できる HTTP によるファイルアップロードもサポート

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 21 Cgi-lib.pl の使用例 require 'cgi-lib.pl'; &ReadParse(*input); print &PrintHeader; print &HtmlTop(' ようこそ! '); print "$input{’name'} さん、ようこそ! \n"; print &HtmlBot; <form name=“MY_FORM” method=“POST” target=“myscript.pl”> お名前をどうぞ

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 22 CGI.pm Perl5 オブジェクト指向対応(オブジェクト指向し なくても OK) 画面上のコンポーネント (Text, TextArea, Button, Checkbox など)もスクリプトから簡単に作れる cgi-lib.pl よりも多機能なので、これからはじめる のであればこちらのほうがよいかもしれない

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 23 CGI.pm の使用例 use CGI; $q = new CGI; print $q->header(), $q->start_html(-title=>' ようこそ !'), $q->h1(' ようこそ '), ' いらっしゃいませ ',$q->param('name'),' さん ', $q->end_html(); <form name=“MY_FORM” method=“POST” target=“myscript.pl”> お名前をどうぞ

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 24 ファイルアップロード HTTP を使用してサーバへ ファイルをアップロードで きる RFC1867 Internet Explore 3.02 では、 追加コンポーネントが必要

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 25 ファイルアップロードの実現法 (CGI.pm の場合 ) 静的フォームの場合には 動的フォームの場合には –start_multipart_form() でフォームを開始するか –start_form() で3番目のパラメータに ‘multipart/form-data’ を指定してフォームを開始 – ファイル名を入力してほしいところに filefield() を挿入 送信されたファイルは、いったんテンポラリディ レクトリに保存される

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 26 ファイルアップロード用フォーム の例 ファイル名を入力してください

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 27 アップロード用フォームを CGI.pm で作る use CGI; $q = new CGI; print $q->header(), $q->start_html(), $q->start_multipart_form(), $q->filefield(-name=>’upload_file’), $q->submit(-name=>’upload’), $q->endform; print $q->end_html;

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 28 アップロードされたファイルの 処理 (CGI.pm の場合 ) フィールド名として指定したパラメータ(前の例 では $q->param(“upload_file”)) にファイル名(ス カラーコンテキストの場合) ファイルハンドルとしてアクセスすると、アップ ロードされたファイルの中身が見える $filename=$q->param(‘upload_file); while ( ) { print; }

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 29 デバッグのこつ CGI を実行する前に文法チェック! –perl -c エラーメッセージは、 HTTP サーバのログに残る 変数をファイルに出力するようにする open(DEBUG,’>>debug.txt’); print DEBUG, $a,$b,”\n”; close DEBUG;

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 30 Win32 用 Web サーバ 今回取り上げるのは次の3つ –AnHTTPd – 日本産のフリーソフト – –Apache –1.3 から Win32 版が公開されている – –Internet Information Server –

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 31 CGI の設定方法 (AnHTTPd)

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 32 CGI の設定方法 (Apache) 実行可能ディレクトリは access.conf,.htaccess ファイルで指定 –Options ExecCGI 拡張子は srm.conf ファイルで指定 スクリプトの先頭に perl インタプリタの場所を指 定 –#!c:/perl/bin/perl.exe

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 33 CGI の設定方法 (Internet Information Server 3.0) インターネットサービスマネージャを使用

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 34 CGI の設定方法 (Internet Information Server 3.0) 拡張子によって起動されるインタープリタが判別 される ActiveState 社製の Perl であれば、セットアップ時 に拡張子を指定できる 手動で指定するのであれば、レジストリを変更 –HKLM\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ ScriptMap (REG_SZ) –.pl=C:\Reskit\Perl\Bin\Perl.exe %s %s

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 35 CGI の設定方法 (Internet Information Server 4.0) インターネットサービスマネージャ (MMC のスナ ップイン)

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 36 CGI 以外の Perl による Web アプリケーション実行方法 SSI (Server Side Include) Apache –mod_perl IIS –Perl for ISAPI –Perl_Ex –ASP 上での Perl Script

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 37 Server Side Include HTML ファイルの中に、スクリプトの実行結果を 挿入できる 例 –

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 38 mod_perl(Apache) Apache 用のモジュール (DLL) Perl のスクリプトを、プロセスを生成せずに実行で きる Web アプリケーション (CGI の代り)ばかりではなく Apache の細かい制御も行うことができる CPAN より入手 –modules/by-module/Apache/JBAKER/mod_perl-1.15-bin- bindist1-i386-win32-vc5.zip

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 39 Perl for ISAPI IIS と AnHTTPd で使用可能 ISAPI Filter の機能を使い、新規にプロセスを生成 せずにスクリプトを実行 (IIS4.0 では別プロセスで も実行可能 )

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 40 Perl for ISAPI でスクリプトを実 行する際の注意 IIS と同じプロセス上のひとつのスレッドとして動 作するので、 – ワーキングディレクトリを移動することができ ない –find.pm などを使用できない – ファイルを閉じ忘れると、いつまでも開かれっ ぱなしになる

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 41 PerlEx ActiveState 社よりリリース – Perl のスクリプトをプリコンパイルしておけるの で、スクリプトを高速に実行できる

1998 年 11 月 13 日 Perl Conference Japan '98 Tutorial Session 42 Perl Script による ASP ActiveState 社製 ActivePerl を使用すると、 IIS の Active Server Pages で Perl をスクリプト言語と して使用することができる ASP ファイルの先頭に、 – ただし、 ASP で全部をしないほうがよい – プレゼンテーションの部分のみ – 実際の処理(データベースアクセス、データ処 理など)は、 COM オブジェクトに任せるべき