インターネット技術特論 D:SSI,PHP,eRuby 山口 実靖

Slides:



Advertisements
Similar presentations
ASP入門 - Windows 2000 Server 活用 -.
Advertisements

第3回参考文献発表 PHP言語 岩永逸平.
情報理工学部 情報システム工学科 3年 H 井奈波 和也
Fortran と有限差分法の 入門の入門の…
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
C:CGIによる動的文書生成(C言語) 山口 実靖
ネットワークプログラミング論 平成27年10月12日 森田 彦.
卒研:データベースチーム 第4回 JSP、サーブレット
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
PHP 概要 担当 岡村耕二 月曜日 2限 平成21年度 情報科学III (理系コア科目・2年生)
JavaServlet&JSP入門 01K0018 中村太一.
Webコミュニケーショングループ ~PHPの基礎~ M1 宮崎 真.
徳山 豪 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野
第4回 個人の動画配信補足のためのWeb構築
オペレーティングシステムⅡ 第3回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/10/16.
佐賀大学 理工学部知能情報システム学科 講師 大月 美佳
§3.3 プログラミング 第10回 今日の目標 高級言語のプログラムを実行するまでの過程を示せる インタープリタの仕組みを説明できる
Web App Semi 2008 #1 Web App Semi 2008 #1.
4-3.基本的なPHPスクリプト 2004年6月24日(木) 大北高広 01T6010F.
プログラミング論 II 電卓,逆ポーランド記法電卓
HTTPプロトコルとJSP (1) データベース論 第3回.
PHP 概要 担当 岡村耕二 月曜日 2限 平成20年度 情報科学III (理系コア科目・2年生)
HTTPプロトコル J2EE I 第7回 /
Javaプログラムの実行まで バイト Javaの コード 実行 ソースコード Java ファイル名 ファイル名 abc.java
ネットワークプログラミング論 平成28年10月17日 森田 彦.
スクリプト言語を用いたPHITSの連続実行
データベース設計 第9回 Webインタフェースの作成(1)
インターネット技術特論 B:コマンドライン, shell 山口 実靖
10: ファイル入出力 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
情報アプリケーション1 2006年 10月 5日 第三回資料 担当 重定 如彦 .
第8章 Web技術とセキュリティ   岡本 好未.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
§3.3 プログラミング 第10回 今日の目標 高級言語のプログラムを実行するまでの過程を示せる インタープリタの仕組みを説明できる
プログラミング論 ファイル入出力
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
制作技術ー4 アクセスカウンタ等付加機能 PHP と Javascript
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
ネットワークプログラミング論 平成28年11月7日 森田 彦.
プログラミング 4 記憶の割り付け.
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
制作技術ー3 双方向通信 : CGIシステムと環境変数
高度プログラミング演習 (02).
プログラミング論 ファイル入出力
高度プログラミング演習 (05).
PHP 概要 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
情報コミュニケーション入門b 第11回 Web入門(2)
情報工学科 3年生対象 専門科目 システムプログラミング 第4回 シェルスクリプト 情報工学科 篠埜 功.
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
C言語 はじめに 2016年 吉田研究室.
UNIX演習 情報ネットワーク特論資料.
UNIX演習 情報ネットワーク特論資料.
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
JSPの基本 J2EE I (データベース論) 第8回 /
第2回 Webサーバ.
ファイル操作について (1).
C言語プログラミング・課題 ファイルを読み込んで、その内容を表示するプログラムを作成せよ。
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
第1章 文字の表示と計算 printfと演算子をやります.
= 55 課題6-1 #define _CRT_SECURE_NO_WARNINGS
Presentation transcript:

インターネット技術特論 D:SSI,PHP,eRuby 山口 実靖 http://www.ns.kogakuin.ac.jp/~ct13140/inet

SSI (Sever Side Include) PHP,eRuby など ロジック と プレゼンテーション(デザイン) の 分離

CGI は print文 地獄 デザイン と ロジック が,分離されていない ページの見た目(左のHTML)を変更したくなったら, 出力 出力のために必要なプログラム <html> <head> <title> Sane's Page </title> </head> <body> Welcome to My Web Page <br> hoge<br> fuga<br> piyo<br> You are the 1234th visitor. </body> </html> printf("<html>\n"); printf(" <head>\n"); printf(" <title>\n"); printf(" Sane's Page\n"); printf(" </title>\n"); printf(" </head>\n"); printf(" <body>\n"); printf(" Welcome to My Web Page\n"); printf(" <br>\n"); printf(" hoge<br>\n"); printf(" fuga<br>\n"); printf(" piyo<br>\n"); printf(" You are the \n"); printf(" %dth visitor. \n", cnt); printf(" </body>\n"); printf("</html>\n"); ページの見た目(左のHTML)を変更したくなったら, 右のプログラムのソースコードを変更しなくてはならない. しかし, デザイナーにプログラムの変更は難しすぎる. 技術者にデザインの変更は難しすぎる. デザイン と ロジック が,分離されていない 多くの場合,もっと汚い!

SSI (Server Side Include) サーバで通常のHTMLファイルに,テキストを埋め込んでからブラウザに渡すことが可能

SSI (#include file) This is <b>000.shtml</b> <!--#include file="copyright.txt" --> copyright.txt <hr> Powered by <I>Saneyasu Yamaguchi</I> ブラウザで"000.shtml"に対して 読み込みをかけると ポイント サーバ側でINCLUDE処理 されてから, ブラウザに渡される ブラウザに渡される内容 This is <b>000.shtml</b> <hr> Powered by <I>Saneyasu Yamaguchi</I>

余談 (dateコマンド) Un*x系OSには date というコマンドがある. date → 現在時刻を表示する. date +%Y/%m/%d_%H:%M:%S → 現在時刻を"2010/10/19_16:20:01"の形式で表示する. date 010203042003 → 現在時刻を2003年01月02日03時04分に 設定する.ただし,管理者権限が必要.

SSI (#exec cmd) This is <b>001.shtml</b> <hr> Now : <!--#exec cmd="/bin/date" --> ブラウザで"001.shtml"に対して 読み込みをかけると ポイント サーバ側でcmdを実行して, その結果(出力)が 挿入されてから渡される. ブラウザに渡される内容 This is <b>001.shtml</b> <hr> Now : Mon Oct 19 14:40:01 JST 2020

SSI利用方法 (工学院大学) SSIに関するルール: 利用方法はWebサーバの設定による. 上記は,工学院大学のルール. SSIを用いる場合,ファイル名を"*.shtml"にする 利用方法はWebサーバの設定による. 上記は,工学院大学のルール. 設定ファイル"/etc/httpd/conf/httpd.conf" AddType text/html .shtml AddOutputFilter INCLUDES .shtml

SSI式カウンタを含むページ 0/2 #include <stdio.h> #include <stdlib.h> void main(void) { int cnt; FILE *fp; fp = fopen("cnt.txt", "rt"); if( fp == NULL ){ cnt == 0; printf("file read NG.<br>\n"); } else { char buf[1024]; fread( buf, 1, 1023, fp); buf[1023] = '\0'; cnt = atoi(buf); fclose(fp); } printf("%d", cnt); cnt ++; fp = fopen("cnt.txt","wt"); printf("file write NG.<br>\n"); fprintf(fp, "%d", cnt); cnt.c 「カウンタの数字」だけを 表示するプログラムを用意しておく. ct13140@green[101]:cc cnt.c -o cnt ct13140@green[102]:cat cnt.txt 22 ct13140@green[103]:./cnt ct13140@green[104]:cat cnt.txt 23

SSI式カウンタを含むページ 1/2 This is <b>002.shtml</b> <hr> You are the <!--#exec cmd="./cnt" -->th visitor. 002.shtml <!--#exec cmd="./cnt" --> 以外の部分は,普通にHTMLを記述すればよい. ロジック と デザイン が分離された.

PHP 動的Webページ(Webアプリケーション)の作成に特化したプログラミング言語,その処理系 HTMLの中にスクリプトを埋め込むことが可能 SSIの様に サーバサイドスクリプト言語 つまり,処理(実行)はサーバにて行われる. かつては,PHP=Personal Home Page 今は,「PHP: Hypertext Preprocessor」

PHP の例 <html> <head> <title>PHP Test</title> <body> <ol> <li>(^o^)</li> <li> <?php echo 'Hello, Wordl!'; ?> </li> </ol> </html> 000.php <html> <head> <title>PHP Test</title> </head> <body> <ol> <li>(^o^)</li> <li> Hello, Wordl! </li> </ol> </html> 000.php変換後 特徴 HTMLを(ほぼ)そのまま書いていけばよい. 実行(処理)はサーバで行われる. スクリプト言語(インタープリタ型)でコンパイルは不要 サーバに左のファイル(000.php)を置いておく.   |   |ブラウザから000.phpに対して読み込み要求があると,   ↓ 「サーバ上で」スクリプト部が処理(実行)され,右の内容(000.php変換後)に変換される. 変換後の内容(000.php変換後)が,サーバからブラウザに渡される. 注意:工学院大学のサーバでは,この方法ではPHPは使用できません.

PHP の例 <?php echo date('y/m/d'), ' '; echo strftime('%H:%M:%S',time()), '<br>'; system('/usr/bin/hostname'); ?> 001.php ←これを 001.php として,Webサーバに 置いておく 20/10/19 14:40:01<br>sweb01 ←サーバ上でこの様に変換されてから   ブラウザに転送される. 注意:工学院大学のサーバでは,この方法ではPHPは使用できません.

PHP利用方法 (工学院大学) 本講義では,基本的にPHPは扱わない. PHPは sweb01 (www.ns.kogakuin.ac.jp) にインストールされている.

PHP利用方法 (工学院大学) #!/usr/bin/php Content-type: text/html <html> <head> <title>PHP Test</title> </head> <body> <ol> <li>(^o^)</li> <li> <?php echo 'Hello, Wordl!'; ?> </li> </ol> </html> 000.cgi 注意点 (1)最初の3行目に, #!/usr/local/bin/php Content-type: text/html と記述する. (2)ファイル名を"*.cgi"にする. (3)実行権限を付与する. 例えば, chmod 755 000.cgi 工学院大学以外の多くのサーバの設定では, ・(1)の3行は不要であり, ・ファイル名は"*.php"であり, ・実行権限は不要.

PHP利用方法 (工学院大学) > hostname sweb01 > ls -l 000.cgi -rwxr-xr-x 000.cgi > ./000.cgi Content-type: text/html <html> <head> <title>PHP Test</title> </head> <body> <ol> <li>(^o^)</li> <li> Hello, Wordl! </li> </ol> </html> sweb01 (www.ns.kogauin.ac.jp)上にて 実行し, 変換後の内容を確認することができる. green.ns.kogauin.ac.jpではなく, www.ns.kogauin.ac.jpにloginする.

eRuby eRuby (embedded Ruby) HTMLの中にRubyスクリプトを埋め込むことが可能.

eRuby <% ~~ %> ~~のスクリプトを実行 <%= ~~ %> ~~を評価し,表示.

eRuby <html> <head><title> eRuby 000.rhtml 000.rhtml変換後 <html> <head><title> eRuby </title></head> <body> <% a = "Hello," b = "World!" %> <h1><%= a %></h1> <h2><%= b %></h2> </body> </html> <html> <head><title> eRuby </title></head> <body> <h1>Hello,</h1> <h2>World!</h2> </body> </html> 変換してからブラウザに渡される <% ~~ %> ~~のスクリプトを実行 <%= ~~ %> ~~を評価し,表示.

eRuby使用方法 (工学院大学) #!/usr/bin/erb --> <% print "Content-type: text/html\n\n<!--\n" %> <html> <head><title>eRuby</title></head> <body> <b>hello</b> </body> </html> 000.cgi やや強引な使用方法. erbをcgiとして呼び出す. (1)ファイル名を“*.cgi”にする. (2)ファイルに実行権限を与える. (3)ファイルの先頭に上記の赤色部を記述する.

eRuby使用方法 (工学院大学) #!/usr/bin/erb --> <% print "Content-type: text/html\n\n<!--\n" %> <html> <head><title>eRuby</title></head> <body> <b>hello</b> </body> </html> 000.cgi 変換前 <!-- #!/usr/bin/erb --> <html> <head><title>eRuby</title></head> <body> <b>hello</b> </body> </html> 000.cgi 変換後

eRuby使用方法 (工学院大学) サーバ上で,実行(変換)結果を確認する ./000.cgi

eRuby の例 <html> <html> <head><title>eRuby</title></head> <body> <h1>eRuby</h1> <ul> <li> 0 <br></li> <li> 1 <br></li> <li> 2 <br></li> <li> 3 <br></li> <li> 4 <br></li> </ul> </body> </html> <html> <head><title>eRuby</title></head> <body> <h1>eRuby</h1> <ul> <% 5.times do | i | %> <li> <%= i %> <br></li> <%end%> </ul> </body> </html> 002.cgi 変換前 002.cgi 変換後