図書系職員のための アプリケーション開発講習会

Slides:



Advertisements
Similar presentations
コンピュータ基礎実習 ( 上級 ) 第七回 CGI の利用 清水淳紀. はじめに  本講義のテーマ  ホームページで良く利用される CGI ( シージーアイ ) について学びます。  CGI とは何か  CGI の基礎知識  CGI をサーバーにインストールする  CGI を実行してみる.
Advertisements

位置情報と私 木村岳文 / 位置情報と私 / はじめに GPS 付き携帯、ハンディ GPS などを使っ て、お手軽に自分が地球上のどこにいる かを調べられるようになってきました。 このデータをつかって何かおもしろいこ とができそうな予感。 具体的にどうしたらおもしろいかはよく.
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
OWL-Sを用いたWebアプリケーションの検査と生成
図書系のための アプリケーション開発講習会 2008年7月31日
実習1:コマンドシェルの使い方.
情報処理3 アプリケーション プログラミング 今井孝明.
DB(データベース)のおはなし 作成者:小野正広 DBと言っても、  ドラゴンボール ではないですぞ! 3/1/2017.
Webアプリケーション開発の 基本的なポイント
第3回参考文献発表 PHP言語 岩永逸平.
情報理工学部 情報システム工学科 3年 H 井奈波 和也
プログラムを「StiLL」で作成します。
PHPエディタによる 情報システム演習 01.
応用情報処理V(2002) もっとプログラミングをしたい人のために
JavaによるCAI学習ソフトウェアの開発
伺か with なでしこ 発表者:しらたま /05/05 うかべん大阪#3.
コンパイラ演習番外編 (その1): min-rt 改 コンテスト
プログラミング基礎I(再) 山元進.
第4回 個人の動画配信補足のためのWeb構築
Webサイト運営 09fi118 橋倉伶奈 09fi131 本間昂 09fi137 三上早紀.
コンピュータ基礎実習上級 #11画像ファイルと文字のフォーマット
佐賀大学 理工学部知能情報システム学科 講師 大月 美佳
タグライブラリとJSP J2EE I 第10回 /
Z39.50プロトコルを用いた 検索クライアントの開発
情報科学1(G1) 2016年度.
平成19年5月19日 第3版 東京大学理学部生物化学図書室 前田 朗
平成19年11月16日 図書系職員のためのアプリケーション開発講習会
SWAT I18N 概要 付け足した機能(実行時に言語の切り替え-i18nの範囲で) 問題点(細かい技術的問題、根本的問題) 今後
図書館ツール発想日記 ~「東京大学内のサイトから関連学術用語のデータを得る」(仮称)システムへの寄り道思考経路~
HTTPプロトコルとJSP (1) データベース論 第3回.
タグライブラリとJSP J2EE II 第2回 2004年10月7日 (木).
最終課題 Webアプリケーション 〜ページのしおり機能〜
HTTPプロトコル J2EE I 第7回 /
第8章 データベースシステムの発展 8.1 オブジェクトリレーショナルデータベース 8.2 分散データベース 8.3 インターネットとデータベース.
実習1:コマンドシェルの使い方.
情報学部 プログラミング体験教室 (初級編)
「OPACに買い物カゴを」 ~東京大学OPACバスケット~
CiNIIほかに関連語提示機能を ~つっこみの第二回~
基幹理工学研究科 情報理工学専攻 後藤研究室 修士1年 魏 元
Javaによる Webアプリケーション入門 第5回
平成22年6月15日 図書系職員のための アプリケーション開発講習会
第8章 Web技術とセキュリティ   岡本 好未.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
図書館職員のための アプリケーション開発講習会
Javaによる Webアプリケーション入門 第6回
文字の表現.
環境リスクマネジメントに関する 検索システム
平成19年10月19日 図書系のための アプリケーション開発講習会
JAVAについて 高橋 雅哉.
文字エンコーディング 2010年7月.
音声認識・翻訳 Android アプリケーション制作
プロジェクト演習Ⅱ インタラクティブゲーム制作
データベース設計 第7回 実用データベースの運用例 クライアント=サーバシステム(1)
応用情報処理V(2001) もっとプログラミングをしたい人のために
情報コミュニケーション入門b 第11回 Web入門(2)
手書き文字の自動認識アプリケーション 15K1013 坂本 倖輝
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
プログラミング入門 電卓を作ろう・パートI!!.
図書系職員のための アプリケーション開発講習会
Z39.50プロトコルによる日本語書誌データ情報検索システム
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
第2回 Webサーバ.
オペレーティングシステム 作成 T21R003 荏原 寛太.
情報スキル入門 第2週  タッチタイピング.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
Presentation transcript:

図書系職員のための アプリケーション開発講習会 図書館情報システムの ありがちな寓話 図書系職員のための アプリケーション開発講習会

もくじ 第1話 第2話 第3話 動的なHPはどうやってつくられるの? 試行錯誤を楽しみたいな… CGIでありがちな寓話 本当は怖くない「コンピュータ英語」 CGIのバグとり大作戦 第3話 CGIでありがちな寓話 どうしてモジュールを使うの? URIエンコードと文字コード フォームの値を残すには

第1話 動的なHPはどうやってつくられるの? (1) CGI(古典的な仕組み)の場合 HTML 常駐してアクセス待ち Webサーバ HTML 呼び出し サーバマシン Webブラウザ HTMLを生成するプログラムを毎回起動 (「起動」に時間がかかり応答性は不利) HTMLを出力できればプログラム言語はなんでもOK CGIプログラム 必要に応じて プログラム起動

ひといきコラム [最速を目指した(?)システム屋たち] たとえば、Webブラウザを起動するのに、少し時間がかかりますよね。プログラムの起動は案外と時間がかかるものです。CGIはこのプログラムの起動を画面表示のたびに行うため応答速度が不利といわれています。 そこで、でてきたのが、動的なHPを生成するプログラムを常時起動(常駐)しておく方法です。いわば、たとえば、Webブラウザを最初から起動しておけば、あとは検索キーワードを入力するだけですみますよね? これには、Webサーバ(最初から常駐している)と一体化させる方法、Webサーバと別プログラム(プロセス)で起動する方法の2種類があります。

第1話 動的なHPはどうやってつくられるの?(2) Webサーバとプログラムの一体化の場合 (mod_perl, mod_php, mod_ruby, Tomcat, Jetty など) HTML 常駐してアクセス待ち Webサーバ サーバマシン Webブラウザ 常駐しているWebサーバプログラムの中に プログラムも含めてしまう。 → 常にアクセス待ち状態でプログラムが待機しているため、動作は速い Webサーバで連携設定 もしくは専用 Webサーバ プログラム

第1話 動的なHPはどうやってつくられるの? (3) Webサーバと別にプログラムを常時起動する場合 (FastCGI, Tomcat, Jetty など) 常駐してアクセス待ち HTML Webサーバ 常駐してアクセス待ち HTML 呼び出し サーバマシン Webブラウザ Webサーバとは別に、CGIプログラムを常駐させておく。動作は速い。 CGIプログラム

ふたいきめコラム [簡易検索エンジン最速を目指した、某M氏の昔話] 「簡易検索エンジン(CGI)で最速を目指す」という、若気の至り(いわゆる“認めたくはないもの”)をしてしまった某M氏の昔話(実話)です。 Perlのプログラムは組みようによっては、2倍、3倍の高速化もできてしまいます。細かいところのチューニングもいろいろと考えられるのですが、ボトルネック(最大の問題箇所)潰し以外は、通常たいして効果ないので、あまり「はまらない」ようにしましょう。 サーバマシンが年々高速化すると、PerlによるCGIとはいえ、ほぼ瞬時に処理が終わるので、いままでの苦労がなんだったか、すごーく考えることになります。ほどほどが大事です。

第1話 動的なHPはどうやってつくられるの? (4) Licsu-Web業務システムでも使っているTomcat(Java)では以下の方式を選択できますが、基本はいままでの話と同じです。 Apacheではなく、専用のWebサーバを使う Apacheと連携して動かす(2種あり) mod_perlと同じ方式(Webサーバと同プロセス) FastCGIと同じ方式(Webサーバと別プロセス)

本当は怖くない「コンピュータ英語」(寓話編) 第2話 試行錯誤を楽しみたいな… (1) 本当は怖くない「コンピュータ英語」(寓話編)  太郎くんは、英語が大の苦手です。コンピュータの ドキュメントを見ようとしたら、英語で書かれていて あきらめモード。  でも、英語が赤点のあきらくん(ここは微妙に実話)は、 なぜか外国製のソフトウエアを扱うことができます。  太郎くんは、ちょっと不思議に思いました。

本当は怖くない「コンピュータ英語」(寓意編) 第2話 試行錯誤を楽しみたいな… (1) 本当は怖くない「コンピュータ英語」(寓意編) まず、日本語の関連文献を読もう カタカナの専門用語とその意味だけでも事前にわかっていると、文中の単語を拾うだけで意味がとれることがあります プログラムの例だけでも参照しよう プログラムのコード自体は、英語も日本語も関係ないので、読んだり試したりすれば意味がとれます わからなくなったら、あたりをつけて試してみよう 英文読解と違って、理解しているかどうかは、実地に試すことができます。わからないくなったら、あたりをつけて試してしまいましょう。

第2話 試行錯誤を楽しみたいな… (2) CGIのバグとり大作戦(寓意編) コマンドラインからテストする 文法エラーであれば、単に実行するだけで気付きます print文を随所にセットして、システムの状態を確認する テスト用のダミーデータをセットする(1) あらかじめ、コマンドラインからパラメータを渡せるようにCGIを直しておき。 $query = new CGI(\*STDIN); その上で、パラメータ込みでコマンドラインから実行する perl xxx.cgi title=test テスト用のダミーデータをセットする(2) ポイントとなる箇所の変数に、あらかじめダミーのデータを代入しておく。

第2話 試行錯誤を楽しみたいな… (2) CGIのバグとり大作戦(寓意編) 実際にWebから動かして確認する print文を随所にセットして、システムの状態を確認する print文を最初に実行する箇所より先に、MIMEヘッダを出力する(以降のprint文の出力が、HTMLと認識される) print $QUERY->header( -type => 'text/html; charset=utf-8' ); テスト用のダミーデータをセットする ポイントとなる箇所の変数に、あらかじめダミーのデータを代入しておく。

どうしてCGIではモジュールを使うの? CGIの処理では、CGIモジュールを、他のWebサーバとのやりとりでは、LWPモジュールを使うのが定番です。 もともと、PerlにはWeb関係の機能が含まれておらず、当初はTCP/IPによるネットワーク接続の部分から自作をする必要がありました。いつも、自作では大変ですよね。 そこで、誰もが使える形でPerlプログラムをまとめたものが「モジュール」です。このモジュールを使うことで他の人がプログラムを自作しなくてもすみますし、多くの人が使う(チェックする)ため信頼性も確保できます。 前田も「TermExtarct」(専門用語自動抽出)、 「Lingua::LanguageGuesser」(言語自動判定)の 2つのPerlモジュールをネットで配布しています。

URIエンコードと文字コード 計算機上での「文字」 文字コード=ビットの並び=数値 文字コードは、文字一文字ごとに規定した計算機管理用のユニークID 番号表の規格=文字コード規格

文字コード変換 Shift-JISの テキスト EUC-JPの テキスト UTF-8の テキスト 計算や対象表をつかい、 文字コード変換する

URIエンコード/デコード(1) Webでの通信で使われるエンコード方式 処理としては(意味合いは全然ことなるが)、暗号化のようなもの エンコード → 暗号化 デコード → 暗号解読 表示形式を変更するだけで、文字コード番号を変更するわけではない(文字コード変換とは別)

「%e3%81%82」とエンコードされたことが確認できる URIエンコード/デコード(2) 「あ」一文字で Google検索 「%e3%81%82」とエンコードされたことが確認できる 16進数で 1バイトめ---- e3 2バイトめ--- 81 3バイトめ---- 82 つまり、UTF-8の 「あ」を意味する

URIエンコード/デコード(3) Shift-JISの Shift-JISの Webブラウザ CGIプログラム URIエンコード ASCIIコードのみ 保障された世界(たぶん)を通過! Webブラウザ CGIプログラム URIエンコードされたテキスト Shift-JISの テキスト Shift-JISの テキスト URIエンコード URIデコード

フォームの入力データを残す方法 HTML::FillInForm を使う Ajaxを使う 定番の方法 定番かどうかは不明(「ことわけWeb」でも使用) フォーム入力画面を値とともに、そのまま残すことが可能 難易度はHTML::FillInFormより高め?

HTML::FillInForm (Perlモジュール) フォームを 含む HTML CGIパラメータ CGIプログラム-1 確認画面 (CGIパラメータ埋め込み) CGIパラメータを Hiddenタグで隠しておく CGIプログラム-2 HTML::FillInForm フォーム (値込)を 含む HTML 確認完了 画面

Ajax (JavaScriptライブラリ”Protptye.JS”を利用すると簡単) G I プ ロ グ ラ ム 1 HTMLのフォーム部分 CGIパラメータ 実行ボタン 確認データを 含んだHTML 入力確認部分 C G I プ ロ グ ラ ム 2 確認ボタン CGIパラメータを Hiddenタグで隠しておく