2G105データベースの活用

前期、毎週、木曜2コマ、10:30→木曜3コマ、13:00

授業時間中の質問と要望学内のみ
本日分へジャンプ

この授業の出席メールのアドレス( )

関連文書

  1. 授業の概要、履修上の注意、授業計画、教室、成績評価の方法、環境の整備、レポートの記入
  2. 授業関連の情報
    1. シラバス
      http://syllsrv.miyakyo-u.ac.jp/cgi-bin/SyllSearch/SyllSearch2015.cgi?id=677&mode=show
    2. ビオトープ論の「環境教育におけるICTの活用」の一部を担う
      http://syllsrv.miyakyo-u.ac.jp/cgi-bin/SyllSearch/SyllSearch2015.cgi?id=249&mode=show
      http://edb.miyakyo-u.ac.jp/ugawa/class/2A815/2A815.html
    3. 旧カリキュラムの授業
      http://edb.miyakyo-u.ac.jp/ugawa/class/1M818/
    4. 過去の同じ授業のページ
  3. 授業計画 (予定)
    1. 情報を共有することの意義と共有の方法
    2. 既存データベースの調査
      1. 内容、項目、利用者、作成者
      2. 使用されているソフトウエア、ハードウエア
    3. 複数のデータベースの作成
      1. データベースの企画、構築
        1. 与えられたテーマでデータベースを作成する
        2. 自ら計画してデータベースを作成する
      2. 構築するために必要な環境の整備
      3. データベースの入れ物の検討
      4. 素材の調査と収集
      5. データ入力、加工
        1. Perlが得意とする文字列編集を例としてデータベース作成用のスクリプト(プログラム)を作成する。
        2. Excel,AppleWorks等の表計算、データベース関連作成ソフト
    4. データベースの提供
      1. サーバでの公開、CD等、他の媒体での配付
      2. PHPとSQL
    5. データベースの更新と維持、フィードバックの受け方
      1. 掲示板の運用。フリーのPerlのCGIプログラムをインストールし、カスタマイズする。
    6. 注意等の再確認
      1. いつでも質問すること。その日もっともわからない単語について発表するつもりで。
    7. データベース概略とその作成の事例の紹介。
    8. レポートの記入。
  4. この授業に関して
    1. 履修に当たっての留意事項
    2. 質問
      1. 質問は、授業中かどうかを問わず、いつでも受け付ける方針。研究室は環境教育実践研究センター2階西側。積極的に授業に参加してほしい。
      2. 例えば、CGIって何?、わからない単語を使われたら即質問する。
    3. 評価方針
      1. 授業時間内に、学習内容、調査内容、試作状況を互いに発表させ評価する(レポート)。
      2. 期末試験の方法は未定。
      3. 出席重視。出席は当日の学習内容記した電子メールで確認する。
        1. 演習室での講義演習の場合での出席確認方法(実習をする)
          1. 出席メールの出し方は最末尾を参照。
      4. レポート
        1. レポートを課す場合は、電子メール で送信する。
          1. レポートを送ったら、出席メールと同様に自動応答メッセージを確認すること。
        2. 過去の授業で、授業を受けず・聞かずにレポートを出しているように見受けられる者がいたが、授業を聞いた場合のレポートとそうでないものの区別は容易につく。レポートの内容に自信のない者は必ず授業を受け、質問をすること。
      5. 成果物の評価
      6. 学生による逆評価
        1. 評価、点数等の記入用紙を使い、私の授業に点数をつけること(無記名方式)。http://edb.miyakyo-u.ac.jp/ugawa/class/evaluation.html
    4. その他
      1. 授業開始時に鵜川を発見できなかったときは、
        1. 正しい教室に来ているかどうか、また、休講かどうかを、友人に確かめる。
        2. もしかすると、事故などで来れていない可能性があるので、携帯にかけることで確認する。
  5. スタッフ、研究室の紹介
    1. 鵜川義弘、生物情報学、生物・環境分野のデータベースの作成と提供が専門
      1. 自己紹介のページ http://edb.miyakyo-u.ac.jp/ugawa/Ugawa.html
      2. 研究室内サーバにおけるホームページでは、現在、過去のプロジェクト、Webでみる出版物等を紹介している。http://edb.miyakyo-u.ac.jp/ugawa/
      3. 卒研生が作成したサーバへ。http://ugawalab.miyakyo-u.ac.jp/
  6. 環境整備
    1. 環境整備
      1. メールの設定の確認
        1. 宮教Gmail
          1. http://mail.google.com/
          2. http://www.ipc.miyakyo-u.ac.jp/sys2013/03GMail-migration-setting/index.htm
          3. mailtoの設定:mailto 拡張機能をインストールする
            https://chrome.google.com/webstore/detail/mailto/gppbppehiogfokmpligejhaepeopajdf
        2. MozillaThunderbirdi学内用設定マニュアル
          1. 情報処理センターhttp://www.ipc.miyakyo-u.ac.jp/online/
          2. 鵜川版http://edb.miyakyo-u.ac.jp/ugawa/Center/ThunderbirdManual/ThunderbirdManual.html
          3. 学校宛のメールの携帯への転送 
      2. ( )宛に発信してテスト
  7. 出席メールの出し方
    1. 本日の学習内容を記した電子メールで確認する。署名が入っていないなど指定形式以外の場合は、出し直すまで出席を認めない。
      1. 出席メール。授業時間内に、演習室の端末から、電子メールを、(   )宛に発信することにより確認する。宛先の小文字はどちらでもよい。
        1. Subject(表題、題名)に半角で学籍番号を書く。
        2. Body(本文)に
          1. 「鵜川先生、こんにちは。」挨拶文!を書く。
          2. 本日の授業で学んだこと。
          3. 内容に関する関する質問を書く。
          4. 本日の感想、授業への希望、学習の進捗状況などを書く(「感想などはとくにありません」とは書かないこと)。
        3. 最後に、署名として氏名をふりがな付きで入れる。例:鵜川義弘(うがわよしひろ)
      2. メールを出せない者の確認(   )からの返事が受け取れない者の確認
  8. 日程の確認
  9. データベースとは
    1. データベースとは様々な情報を(整理して?)検索できるよう格納したもの。また情報を管理・提供するための手法や、計算機システムのことを言う。
    2. 身近な例として:携帯の電話帳、年賀状用住所録、宛名印刷がある。
    3. データベースには、ノート、メモ、電子メールを集めたもの等を検索できるようにしたものも含まれる。ちなみに「情報」とは物質的な属性はないが、受け手がいて意味を持つ知識(奥が深い)by 月井氏。
    4. http://dictionary.goo.ne.jp/search.php?MT=%BE%F0%CA%F3&kind=all&mode=0&kwassist=0
    5. 具体的には:自分のノートを人が見てもわかるように整理する。検索できるようにパソコンに取りこむ。これらの作業で、メモがデータベースへ。よい情報ならWebでの公開も考えよう。
    6. #何でも公開すればいいというものではない。安全対策とプライバシーに配慮することが必要。
  10. データベース用語!?
    1. データベース用ソフトウエア
      DBMS(Database Management System、データベース管理システム)
      1. Oracle,Informix,Sybase,Ingres,PostgreSQL,MySQL ... UNIX
      2. Access,FileMaker,Excel,Appleworks ... PC
    2. データモデル(データ構造の設計方法)
      1. ネットワーク型(例:Webページ)、
      2. 階層型(例:パソコンの中に置いてあるディレクトリとファイル)、
      3. リレーショナル型(例:大抵のリレーショナルデータベース)
      4. オブジェクト指向型データベースOODB
      5. その他、排他制御、業務用のシステム
    3. リレーショナル型の具体例
      例えば受講者リストを作るとき、受講者リスト1のように作ると3の1の担任の後藤先生が途中で、瓜生先生に代わったときに、変更箇所は2つとなる(網かけ部分)。ところが、受講者リスト2とクラス担任表のリレーショナルデータベースで受講者リスト3を作成していた場合は、クラス担任表の1箇所(網かけ部分)を変更するだけですむ。他のモデルにはない効率の良さがある。

    4. データベース言語、VBA、PHP、Perl、Perl CGI
      SQL Structured Query Language
      http://www.atmarkit.co.jp/flinux/rensai/postgres03/postgres03.html
  11. 情報を共有することの意義 (本日分)
    1. シラバス情報のデータベース http://syllsrv.miyakyo-u.ac.jp/cgi-bin/SyllSearch/SyllSearch2014.cgi
    2. 教員情報のデータベース http://www.miyakyo-u.ac.jp/cgi-bin/KyouinDB/DB.php
    3. 電子休講掲示板
      1. http://gakogako95.jugem.jp/
      2. http://ugawalab.miyakyo-u.ac.jp/f9/risa/siryou/
      3. http://stportal.miyakyo-u.ac.jp/
      4. https://students.miyakyo-u.ac.jp/~ipcspdb/kyoumu/htmls/page001.html
    4. Web情報の台頭
      1. 最新雑誌はオンライン化、最新の科学雑誌、http://www.sciencemag.org/
      2. 図書検索関係
        1. 図書館蔵書検索 http://ci.nii.ac.jp/books/
        2. 本学の蔵書検索 http://www.lib.miyakyo-u.ac.jp/mylimedio/search/search-input.do?mode=comp
        3. 背表紙を表示する仮想書架http://rd.lib.kyushu-u.ac.jp/PandP/virlib.htm
        4. 環境研えるふぇの蔵書検索http://elfe.miyakyo-u.ac.jp/opac/
      3. 図書のデジタル化
        1. 古い本は著作権切れ、青空文庫 http://www.aozora.gr.jp/
        2. 1900年の本
          1. http://ameba.i.hosei.ac.jp/DIB/kahl/index.html
          2. http://ameba.i.hosei.ac.jp/DIB/Jenn04/index.html
        3. 巻物のデジタル化 http://ugawalab.local/f2/makimono/panprama/
          DATA
        4. Google Books
          1. http://books.google.co.jp/books?hl=ja
          2. ScanRobot
          3. GoogleBooksと著作権
    5. ARとの連携CampusTour
      1. 津波AR 震災遺構パノラマ 案内PDF
      2. ビオトープ論2A815
      3. 地理教育 GISARH
      4. 宮城教育大学キャンパスツアー 右QRコード
  12. データベースの昔と今
    1. 古典的データベースは、以下ついて真剣に考え、それを実現しようとしたもの。
      1. 情報が膨大、複雑になったらどのように整理するか。
      2. 情報を管理する人が複数になったらどのように入力するか。
    2. 最新のパソコンでは、ハードディスク内のデータの内容(ファイル名ではない)について、検索が可能になっている(=全文検索、後述)。形にこだわるよりも内容(コンテンツ=情報の中身)が重要。現在では、データ量に関わらず全文検索が可能で、あらゆる媒体から、自由形式での検索ができる。現代のデータベースは不定形(特にインターネット)。整理整頓はできないし、意味もない。Web検索は、広大なInternet空間の全文検索。
      1. 全文検索WAISとその日本語化の流れ
        http://www.kusastro.kyoto-u.ac.jp/~baba/wais/other-system.html
        https://web.archive.org/web/20041211045719/http://www.kusastro.kyoto-u.ac.jp/~baba/wais/other-system.html
      2. freeWAIS-sf 日本語化情報
        http://homepage2.nifty.com/baba_hajime/wais/index.html
      3. 巨大なデータベース、インターネット情報、25億のWebページの検索について
        http://edb.miyakyo-u.ac.jp/ugawa/class/docs/netsurfin.htm
      4. インターネット情報の永久保存 http://www.archive.org/
        1. 文化資産としてのネット情報「だれかが保存しなければ,次々と更新され過去のべージが消えていくB.カール」http://www.sfc.wide.ad.jp/~keiko/sciam/kahle.html
        2. インターネットアーカイブの必要性http://edb.miyakyo-u.ac.jp/ugawa/20001201/iArchive.html
        3. Wayback Machine の利用についてhttp://protist.i.hosei.ac.jp/GBIF/DB_list/About_wayback.html
    3. パソコンソフトも検索機能を備えている。電子メールも重要なデータベース。メールの検索
      1. Googleの機能でパソコン内を検索http://desktop.google.com/
      2. Googleの機能でメール検索http://mail.google.com/mail/
        メールの文字化け対策(デフォルトの文字コードを日本語に)
      3. Googleの機能で地域を検索 http://maps.google.co.jp/maps
        GoogleMapを環境教育や、学校の周りの危険地点マップに!
        http://moblog.miyakyo-u.ac.jp/miyagi/  Mobile+Blog=moblog
        仙台二中が青葉山探検。GPSのついた携帯は他社も多く出ているが、周辺技術やコンテンツを含め充実しているのはau。
      4. Googleの秘密
        1. http://bio-crawler.dna.affrc.go.jp/about.html
        2. Google Pagerank
          1. http://homepage2.nifty.com/baba_hajime/wais/pagerank.html
        3. http://www.google.co.jp/search?q=google+epic+media+history
  13. 何でもデータベースになる。技術よりもアイデア、情報の内容を重視しよう
    1. データベース管理作成のソフトウエアや、開発環境はほって置けば良いものができる。現時点でも簡単にデータベースを作成できるし、将来はもっと楽になる。
    2. 他の人ができるものはすでにインターネットにある。現在、必要十分なものがなく、しかも、自分しか作れないオリジナルデータベースを作成しよう。
    3. 知識の継承、人に役立つ情報を作れ、
      1. WikiPedia 環境教育 http://ja.wikipedia.org/wiki/%E7%92%B0%E5%A2%83%E6%95%99%E8%82%B2
      2. 鵜川の関与DB
        1. 弟子をとるよりDB残せ http://ant.edb.miyakyo-u.ac.jp/indexj.html
        2. ライフサイエンス辞書 http://lsd.pharm.kyoto-u.ac.jp/ja/index.html
        3. バイオミラーhttp://www.bio-mirror.net/
        4. 樹木検索 http://ugawalab.miyakyo-u.ac.jp/jumoku/
    4. データベースの作成と維持のメンタル面。ほんとはここが難しい。
      1. 自分でデータを持たないとき、自分では技術がないときは互いの協力で。人間関係。
      2. データベースは一度作ったら終わりではない
        1. データベースのメンテナンス
        2. フィードバックを受けること
    5. 先輩たちのDBを見てみよう
      http://edb.miyakyo-u.ac.jp/ugawa/class/1M818/1M818.html#today
      http://edb.miyakyo-u.ac.jp/ugawa/class/1M818/1M818DB2006.html
      http://edb.miyakyo-u.ac.jp/ugawa/class/1M818/1M818-2004.html#0127
      1. みやの http://students.miyakyo-u.ac.jp/~e0210/2G105/index2.html
      2. くりき http://students.miyakyo-u.ac.jp/~e0204/2G105/index2.html
      3. みなみ http://mnchoko.exblog.jp/
      4. みく http://detabes201.exblog.jp/
      5. 実習応援MAP 附属のあたりトラベラー 宮教版
        http://maps.google.co.jp/maps/ms?msid=209704883513527770332.0004a81402d25c25fbd90&msa=0
      6. 挽地 巧
        『技術科写真』
        http://students.miyakyo-u.ac.jp/~e1230/2G105/db/index.htm
      7. 石澤 早弥香
        『夏に合わせた「日焼け止め(Amazon調べ)」』
        https://docs.google.com/spreadsheet/ccc?key=0AuBz6rqDOmC-dExWa3l0THVwY2U2OVlNMVV5M29Wdnc
      8. 菅野望『宮教付近の食事スペース』
        https://sites.google.com/site/gongjiaofujinnoshishisupesu/home?pli=1
      9. 佐伯有美『CMシャンプーデータベース』
        https://docs.google.com/document/d/1N66iYVv1id4BJhgSHCM62AQ8VKPgH-YJ12gDqxBm3vM/edit
      10. 芹川郁子『NICO Toucheas the Wallsファンが選ぶNICO以外で好きなロックバンド』
        https://docs.google.com/spreadsheet/ccc?key=0AqycM0nBfgi9dGlTNTVGTTJtOTZzcFVzckRYWE9MZVE
      11. 高橋雄磨『MUEサッカー部』
        https://docs.google.com/presentation/d/1tDy6ELpwTh8RdTEcKk_gyKlu4GOuTFhIpXiVUPdqApY/edit?pli=1#slide=id.
      12. 横山貴洋『宮城教育大学硬式野球部 in 2012』
        https://docs.google.com/spreadsheet/ccc?key=0Akpypk_Y90ZQdEZNNjI0Ump3bEVwS2dDTHY2UFItOXc#gid=0
      13. 鈴木陸生
        https://docs.google.com/spreadsheets/d/18v73Ry0yHWIumzNJWndwZxWX-tDqZRuH0xIKeezSc4Q/edit
  14. Excelで頑張る
    http://staff.miyakyo-u.ac.jp/〜ugawa/1M818/cgi/uso_sjis_cr.txt
  15. FirleMakerで頑張る
  16. データベースをWebで検索できるようにする
    1. http://staff.miyakyo-u.ac.jp/〜ugawa/1M818/cgi/find_uso.cgi
    2. CGI(Common Gateway Interface) の設置
      1. 予備実験1ホームページ領域の利用
        1. Windows WinSCP,FFFTPの利用、Mac fugu,Finderでそのまま
        2. public_htmlにファイルを置く
      2. 予備実験2掲示板の導入
        CGIはCommonGatewayInterfaceの略語、内部で動作するプログラムとの仲介を行う入出力ぐち。ホームページが一旦置いたら次に変更されるまで変わらないのに対し、プログラムの助けを借りて動的に変化する掲示板、ブログなどの運営ができるようになる。
        テスト用掲示板http://students.miyakyo-u.ac.jp/%7et9919/cgi/aska.cgi
      3. 一般掲示板の設置方法
        1. CGIが動作するようにする
          1. ターミナルでやる場合、TeraTerm/Terminalを起動
            1. students.miyakyo-u.ac.jpにログイン
            2. cd public_html
            3. mkdir cgi
            4. cd cgi
            5. echo Options +ExecCGI >> .htaccess #宮教大特有の方法
          2. ファイル転送で行う場合
            1. WinSCP,FFFTPなどで、public_htmlの下にcgiのディレクトリを作る
            2. そこにテキストエディタなどで作成した、なかみが、Options +ExecCGIのファイルを転送する。
            3. ファイル名を .htaccesに変更する。
        2. プログラムをダウンロードしてくるhttp://www.google.com/search?cgi+掲示板
        3. 解凍など
        4. cgiファイルをpublic_htmlの中のcgiに転送
          1. Windows WinSCP,FFFTPの利用
          2. Mac fugu,Finderでそのまま
        5. 実行権を与える
    3. FindUSO.cgiの導入
      1. データファイルを、http://staff.miyakyo-u.ac.jp/〜ugawa/1M818/cgi/uso_sjis_cr.txt から取り出し、改行コード、文字コードを変更uso_euc_lfに変換。cgiに置く。
      2. find_uso.cgiソースプログラムfind_uso_cgi.txtをfind_uso.cgiという名前でcgiの場所に保存。このとき、拡張子を.cgiとすること(find_uso_cgiでないこと)。
      3. find_uso.cgiを変更する
    4. CGI(Common Gateway Interface)プログラムによる検索(Perl等)
      1. (ExcelのFilterやAppleWorksに相当する)検索をCGIを使って実現する。
        1. パソコンのデータは24h 電源ONでないので、共有が難しい。
        2. HTMLではファイルそのものを置いて見せることしかできない。大量だと探すのに苦労する。
        3. CGIではgrepやperl等のUNIXコマンドを使って高速に検索した結果をブラウザを通して戻すので24時間、大量のデータから特定のものを検索して提供することができる。
      2. PerlCGIプログラムの作成
        例:http://staff.miyakyo-u.ac.jp/~ugawa/1M818/cgi/find_uso.cgi
        1. ステップ1、テスト用CGI「hello.cgi」の設置
          1. CGIを実行するUNIX環境を作成するためのUNIXコマンド。()は説明。terminalでUINXにログインしUNIX コマンドを使って作業を行なう。
            1. cd  (ホームディレクトリに移動)
            2. mkdir public_html  (Web公開用ディレクトリを作成、無い場合のみ=過去の授業で作成済み)
            3. cd public_html  (Web公開用ディレクトリに移動)
            4. mkdir 2G105  (この授業用のディレクトリを作成、無い場合のみ=過去の授業で作成済み)
            5. cd 2G105  (この授業のWeb公開用ディレクトリに移動)
            6. mkdir cgi (cgiディレクトリを作成)
            7. cd cgi  (cgiディレクトリに移動)
            8. echo Options +ExecCGI > .htaccess  (cgi等を実行可能にする宣言ファイルを作成する)
          2. Mac, miでファイル>新規>標準で、テキストファイルhello.cgi を作成UNIXの改行コードLF形式でCGI領域に保存。
          3. 通常のHTMLの場合との違い helloword.html
          4. 上記ファイルが、public_htmlフォルダ→2G105フォルダ→cgiフォルダにあることを、ファインダーとターミナルで確認する。
          5. ターミナルでUNIX コマンドを使い実行権を与える。
            1. chmod 755 hello.cgi (cgi実行が可能になるように実行権を与える)
            2. ls -la(lsと -laの間には、半角スペースが1つ) (ファイルのリストをパーミッションつきで表示する)
            3. 実行権は、ファイルパーミッションの1つ。
              最初のdはディレクトリであるかどうかを示し、後は、3つのrwx毎に、アクセス権を表す。
              1. public_htmlの親、一つ上(=ホームディレクトリ)では、
                711 rwx--x--x (他の人に内容一覧を見せたくないとき)または、
                755 rwxr-xr-x (他の人に内容一覧を見せてもよいとき)
              2. public_htmlディレクトリは 
                755 drwxr-xr-x
              3. 1M818ディレクトリは 
                755 drwxr-xr-x
              4. cgiや、Perlスクリプトは、
                755 rwxr-xr-x
              5. 実行権はファイル転送用ソフトでも変更できることがある(サーバ側の設定、サーバソフトでこの変更が許されていない場合もある)。参考URL http://www.google.co.jp/search?hl=ja&newwindow=1&q=UNIX+permission
          6. 質問
            1. パーミッションの設定は4→r、2→w、1→xの和で表しているのだと思うのですが、
              例えば、6(rw-)とか4(r--)とか2(-w-)などを指定しても無意味なんでしょうか?
              特に、実行権がないのに書き込みとか読み書きはできないだろうと思ったのですが。
              → そのやり方で可能です。
          7. ブラウザで確認
            http://staff.miyakyo-u.ac.jp/~ugawa/1M818/cgi/hello.cgi
            実行権を与えていないと、以下のようなエラーが表示される。
            Forbidden
            You don't have permission to access /~uawa/2G105/cgi/hello.cgi on this server
            Apache/1.3.29 Server at students.miyakyo-u.ac.jp Port 80
          8. UNIX で実行してみる。同じコマンドがUNIXで動いていることがわかる。
          9. 質問
            1. >質問に関する事で、パーミッションという言葉が出てきたのですが、初めて聞い
              >た言葉であったし、IT用語辞典で調べてみてもよく分かりませんでした。このよ
              >うな専門的なことを知らないとデータベースをつくることは難しいでしょうか?
              >あまりパソコンには詳しくないので少し不安です。

              パソコンにはないですが、多くの人がログインする
              UNIX計算機で、危ないコマンドを実行させるかどうかや、
              他の人に見せるかどうかなどを設定するためのものです。

            2. >授業の最後でUNIXのコマンドとして・・・というのがありましたが、
              >最後に行ったのは./hello.cgiでしたが、これもコマンドとして・・・
              >という事なんでしょうか。

              はい。そうです。

            3. >著作権のことについてですが、町のお祭りや施設については、特に何も聞かない
              >で載せてもよいのでしょうか。

              道路、公園などで一般の人が入れる場所の
              スナップ写真の許可は必要ありません。

              逆に入場料をとっている場所では許可が必要です。

              また、顔写真など、クローズアップを公開する場合は
              映っている人の許可が必要です。

        2. ステップ2、Here Documentsによる印刷 print_euc.cgi http://staff.miyakyo-u.ac.jp/~ugawa/1M818/cgi/print_euc.cgi
          1. hello.cgiと同様に設置して実行、ブラウザで確認せよ。実行権を与える。
          2. CHARSETと、ファイルの保存文字コードをEUCで統一しているのがみそ。
            1. ということは保存するときは、文字コードはEUC、改行はLF(UNIX)
          3. ""が入っている文をprint で書くと、
            print "<META HTTP-EQUIV=\"Content-Type\"";
            と書かなければならず、ややこしい。Here Documentsを使うと視認性が良くなる。
            printで書いた例print_euc_hereles_cgi.txt(EUCで書いてあるので、文字化けする場合はブラウザの文字エンコードをEUCに変更する)
          4. 文字化けとCHARSET
            1. CHARSETは、Web文書がどのような文字コードで書かれているかを示す。CHARSETを指定していない、hello.cgiなどでは、どのような文字コードで入れてもブラウザが自動判別してくれので文字化けしないが、print_euc.cgi場合のように、CHARSETで指定する場合は、自動判別が行われない。
              1. CHARSETで、EUCと宣言して、EUCで保存した場合:print_euc_euc.cgi
              2. CHARSETで、EUCと宣言して、SJISで保存した場合:print_euc_sjis.cgi
              3. CHARSETで、SJISと宣言して、EUCで保存した場合:print_sjis_euc.cgi
              4. CHARSETで、SJISと宣言して、SJISで保存した場合:print_sjis_sjis.cgi
        3. ステップ3、入力用FORMの読み取り a_plus_b.cgi http://staff.miyakyo-u.ac.jp/~ugawa/1M818/cgi/a_plus_b.cgi
          1. コメント文となっている部分を#3#,#2#,#1#の順で外して実行させ(#1#の3文字を削除することで、コメントで無くなり実行できる)、それぞれが何を行なっているか検証せよ。
          2. ここまででうまく行っていない人は 、以下の状況であることが多かったので参考にしてください。
            1. terminalで、ssh d9999@students.miyakyo-u.ac.jpによるログインに成功していないのでその後のディレクトリ作成の位置がおかしい。ログインに成功すればログインにしたOS名である「SunOS」がどこかに表示される。
            2. cgiのディレクトリで、.htaccessが正しく作成されていない。(ステップ1の1の8。echo Options +ExecCGI > .htaccess)
            3. 保存したcgiのファイル名で拡張子が.cgiでない。(例えば、print_euc_cgiとなっている。ただしは、print_euc.cgi)
            4. cgiのファイルに実行権が与えられていない。(terminalで、chmod 755  〜〜〜.cgi)
            5. わからないのに質問してくれない。できていないのに、研究室を訪問していない。
          3. 質問
            1. $c=$a+$bを変更して、割り算、$c=$a / $bを試してみたがうまく行かない
              →$c=$a / $b の行が行われた段階で、devide by 0となって計算が終了するため、その後のprint文も実行されない。
              $c=$a / $bの代わりに
              if($b > 0){ $c=$a / $b;}
              とすれば、うまく行く。
              http://staff.miyakyo-u.ac.jp/%7eugawa/1M818/cgi/a_devide_b.cgi
          4. 参考:C CGI Javascript
            http://edb.miyakyo-u.ac.jp/ugawa/class/docs/CvsJavascript.html
        4. ステップ4、UNIXファイルをcgiで読んで表示する
          1. UNIX用データの用意。
            1. uso_sjis_cr.txtをブラウザで開き、ページを名前をつけて保存でuso_sjis_cr.txt。
            2. miでsjis,crであることを確認。
            3. UNIXで使える文字コードEUC,改行コードLFに変換uso_euc_lf.txtという名前で保存する。
            4. public_htmlフォルダ→1M818フォルダ→cgiフォルダにあることを確認。
            5. ブラウザでも見てみる。
              http://students.miyakyo-u.ac.jp/~d9999/2G105/cgi/uso_euc_lf.txt
              で見えるハズ。
          2. CGIでファイルを読むにはUNIX上での位置の確認が必要
            1. 読み込むファイル名
              /staff/users/mue/ugawa/public_html/2G105/cgi/uso_euc_lf.txt
            2. 「/staff/users/mue/ugawa/public_html/2G105/cgi/」の部分は、ターミナルでログインした後でpwdとすると表示される。
            3. UNIXファイル表示用プログラムソースread_file_cgi.txt。ブラウザで開き、read_file.cgiという名前でcgiの場所に保存。このとき、拡張子を.cgiとすること(read_file_cgiではない。)。
            4. terminalで実行権を与える。chmod 755 read_file.cgi または、chmod +x read_file.cgi
            5. miでソースプログラムを開き、読み込むファイル名で、/staff/users/mue/ugawa/public_html/2G105/cgi/となっている部分を自分の環境に合わせて書き換える。
            6. ブラウザで、read_file.cgiを実行してみる。(実行例read_file.cgi
              皆さんの場合は、
              http://students.miyakyo-u.ac.jp/~d9999/2G105/cgi/find_uso.cgi
            7. 10/3の質問
              1. >「cd ..」で一つ上のディレクトリにうつる説明は聞き取れたのですが、絶対パ
                スについての説明が聞き取れなかったので、もう一度説明していただけるとあり
                がたいです。

                相対パスと絶対パス指定。
                1. 相対パス指定
                  cd /staff/users/mue/ugawa/public_html/2G105/cgiの後、
                  cd ..とすると、
                  /staff/users/mue/ugawa/public_html/2G105へ移動する。
                2. 絶対パス指定は、どこに居ようが、
                  cd /staff/users/mue/ugawa/public_html/2G105と書けば、
                  /staff/users/mue/ugawa/public_html/2G105へ移動する。
              2. >データベースのデータは大体いくつくらいあった方がいいのでしょうか。

                対象とするものによって違うと思いますが、
                文献データベースなど、データベースを検索して
                そこから何か意味のあるものを抽出し
                何かを言えるようになるのは、まずは、1000件と言われています。

                皆さんの場合、サンプルデータベースというものなので、
                簡単なものなら、とりあえず50といったところでしょうか。

                取材旅行を伴うものなど、作業が大変なものなどの場合、
                もっと少なくても仕方がないと思います。

                サンプルと言えどもテーマ選びが大切ですね。

        5. ステップ5、検索用プログラムの作成
          1. 検索用CGIの用意。
            1. find_uso.cgiソースプログラムは以下だが、以下をCopy&Pasteすると動かないことがあるのでfind_uso_cgi.txtを利用すること。ブラウザで開き、find_uso.cgiという名前でcgiの場所に保存。このとき、拡張子を.cgiとすること(find_uso_cgiでないこと)。
            2. miでfind_uso.cgiを開き「読み込むファイル名」、「戻りURL」を自分の環境に合わせて適宜変更する編集する。
              1. 読み込むファイル名(pwdコマンドで)
                /staff/users/mue/ugawa/public_html/2G105/cgi/uso_euc_lf.txt
                「/staff/users/mue/ugawa/public_html/2G105/cgi/」の部分は、ターミナルでログインした後でpwdとすると表示される。
              2. 戻りURLは自分のURL
                http://students.miyakyo-u.ac.jp/~ugawa/2G105/cgi/find_uso.cgi
            3. ターミナルで実行権を与える。
          2. ブラウザで確認
            http://staff.miyakyo-u.ac.jp/~ugawa/1M818/cgi/find_uso.cgi
            みなさんの場合は、
            http://students.miyakyo-u.ac.jp/~d9999/2G105/cgi/find_uso.cgi
            のような感じになるはず。
          3. まずは検索してみよ。うまくいっているなら、uso_euc_lf.txtの一部をmiで変更し保存。データを変更した後で、変更した部分の文字がcgiで検索できるか試してみよ。変更してもそのファイルが検索できない場合は、読み込むファイル名が元のまま( /staff/users/mue/ugawa/public_html/1M818/cgi/uso_euc_lf.txt)である場合がある。
          4. できあがったCGIのURLを出席メールで報告する。
      3. Perl CGIが動作する条件のまとめ
        1. エラーメッセージが出る
          1. Forbidden
            You don't have permission to access /~t5918/1M818/cgi/hogehoge.cgi on this server.
            1. CGIが動作するディレクトリ、その親ディレクトリ、そのまた親ディレクトリ、、、と実行権が続いていること。(=逆に、読み出し権限はなくてもよい。読み出し権限がないと、リストがみえないだけ。)
            2. Perl cgiを他人(この場合はWebサーバプログラム Others )が実行できるように実行権がついていること。chmod 755 〜〜.cgi
            3. CGIが動作するディレクトリ(または上流)の.htaccessに問題がある。
              1. .htaccessがない。
              2. 名前が、.htaccessでない。ピリオドがない。
              3. 中身にOptions +ExecCGIがない。
          2. Not Found
            The requested URL /~t5918/2G105/cgi/0708.cgi was not found on this server.
            1. 正しい位置にCGIがコピーされていない。
          3. Internal Server Error
            The server encountered an internal error or misconfiguration and was unable to complete your request.
            More information about this error may be available in the server error log.
            1. Perl が実行できること。文法ミスがない。UNIX上で実行してみて確かめる。
              1. 改行コードがUNIXでない。MacあるいはDOS
              2. 1行目が#!/usr/local/bin/perlでない(Copy&Pasteで空行が入っている)
              3. 実行権がついていること。chmod 755 〜〜.cgi
            2. エラーログを見てみる。tail -f /usr/local/apache2/logs/error_log(終わるときは、Contorolキーを押しながらC)
        2. エラーは出ないが結果がオカシイ
          1. 入力したURLが間違っている。
          2. Perl cgiの拡張子、本学では 〜〜.cgi でないと動作しない。
          3. 正しい位置にCGIがコピーされていない。
          4. 直しているつもりのCGIやデータがUNIXでなくパソコン上のものを直している。
          5. 直した後、UNIXに転送していない。
          6. 直した後、保存していない。
          7. 正しい場所のデータを参照していない。
          8. データに問題がある。
            1. データが正しい場所に置かれていない。
            2. データの文字コードがEUCでない。なぜEUCでなければならないか考えよ。
            3. データの改行コードがLFでない。
            4. データに該当する文字が入っていない。
          9. データの読み出し権限がない。chmod 644 uso_euc_lf.txt
          10. Perlのプログラムに間違いがある。
            1. 検索結果がhttp://students.miyakyo-u.ac.jp/~ugawa/1M818/cgi/find_uso.cgi戻ってしまう。
      4. CGIやhtml環境に関して以下を確認し、感動しなさい。
        1. ホームページ直下にCGIを置かず、内部にディレクトリを作成したそのサブディレクトリでCGIが実行できていること。
        2. .htaccessは、サブディレクトリになくてもpublic_html(一番上)にあれば大丈夫なこと。
        3. 途中のディレクトリは実行権が必要なこと。
        4. public_html/1M818/cgi/にindex.htmlというファイルを置くと、ファイル一覧がみえなくなること。
      5. 重要な注意「CGIは注意して使わないと大変危険なものである。」
        1. 本学のPerlCGIは、設置者本人のアカウントで実行される(通常はapacheアカウントで動くことが多い)。他の人に、読み出し権限を与えていなくても、本人に見えるなら、CGIを通じて全てが見えてしまう。
        2. 通常、CGIは、そのデータを隠すため、HTMLとは別領域に置かれる。しかし本学のCGIは学習のHTMLと同じ場所に置かれている。隠すべきファイルがある場合には、public_html配下以外の自分自身の領域に置くこと。
        3. 別のディレクトリを指定した場合、本人が、読み取れる場合は、その存在が明らかになる。意図しないファイルを公開しないよう、インストール時や改変時には注意しよう。
        4. プログラムが無限ループ(いつまでたっても終わらない状態)に入ったらサーバとして動作している計算機のパフォーマンスが著しく低下する。全学学生が共通で使う計算機なので迷惑をかけないよう多用にも注意したい。
          1. 素性の明らかでないCGIの導入には注意しよう。悪意のあるCGIの場合は、一見動作しているように見えて、実は、内部情報をぬくための秘密のコマンドが入っているかも知れない。他の人が作成したスクリプトの導入時は注意しよう。大手CGI検索サイトに登録されているものや、ユーザのフィードバックを受けているものは安心である。見る目を養おう。
      6. Perlの特徴、情報、書法、参考文献、
        1. Practical Extraction and Report Language, Pathologically Electric Rubbish Lister
        2. 簡潔な表現、UNIX shell, sed, awk, cの特徴
        3. 強力な文字列編集、連想配列、様々なOSにポータブル、無償、UNIXシステムコマンドや、Webと連携cgi、ネットワーク
        4. この分野でPerlが利用されている例
          1. 樹木検索http://taxa.soken.ac.jp/JUMOKU/index.html
          2. ライフサイエンス辞書DB
            1. http://lsd-rap.pharm.kyoto-u.ac.jp/
            2. http://edb.miyakyo-u.ac.jp/ugawa/Lsd/voc_hisN/VHsample/virginia.htm
          3. 掲示板(フィードバックに)
            http://eml.edb.miyakyo-u.ac.jp/cgi-bin/takatou/ochiba-sukue.cgi
          4. ネットワークプログラミング
          5. CGIとtelnet webserver port 80
            http://edb.miyakyo-u.ac.jp/ugawa/class/docs/web.html
          6. Mail headerと同じ
      7. 参考文献
        1. ラクダ本http://www.oreilly.co.jp/index/perl/
        2. SAK Streets - CGI-Perl 開発言語資料http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sak3perl.htm
        3. Perlプログラミング講座 http://www5a.biglobe.ne.jp/~n_rieko/perl/index.htm
        4. Perl Memo http://www.din.or.jp/~ohzaki/perl.htm
        5. Perl&CGI講座! http://www.rfs.jp/sb/perl/ MacOS922IE5ではうまくみえない
        6. http://www.google.co.jp/search?num=100&hl=ja&newwindow=1&q=Perl+%8Du%8D%C0&lr=
  17. blog? http://edb.miyakyo-u.ac.jp/ugawa/20050304/
  18. Excelから、Webページを大量に自動作成する方法
    1. http://edb.miyakyo-u.ac.jp/ugawa/class/2G105/asagao/1.html
    2. http://edb.miyakyo-u.ac.jp/ugawa/class/2G105/asagao_kit.zip

--鵜川義弘 ( )