[村川猛彦]

情報ネットワーク演習(村川担当分)

お知らせ:自動回収の最終回を1月31日(金) 19:30とします.その後のファイル修正は,採点の対象外となります.課題4-3の動作確認を希望する学生は,メールで連絡をください.

諸注意
  • 村川担当の演習実施日は以下の予定です.いずれも木曜日の13:10〜16:20です.部屋は,6階演習室(A601)です.
    • 2013年10月: 3, 10, 17, 24, 31日
    • 2013年11月: 7, 14, 28日
    • 11月28日は塚田先生が不在のため村川が演習室にいました.
  • 課題1~4を通じて,「通信プログラム」「オープンソースソフトウェア」「HTTP」「Webアプリケーション」について学びます.
  • Linuxを使用します.授業開始時に,Vine Linuxを起動させ,ログインしておいてください.
  • 成績は,前半(村川担当),後半(塚田先生担当)それぞれ50点満点でつけます.
    • 前半の成績は,自動回収のファイルをもとに採点します.答案のコピーには厳正に対処します.
  • 課題を通じて作成してもらうプログラムやファイルは,所定のディレクトリ名・ファイル名にしてください.毎週木曜日の19:30すぎに収集します.また不定期に収集する際は,事前にお知らせします.ディレクトリ名・ファイル名のほかパーミッションが間違っていると,回収・採点できないので,各課題の要領を守ってください.
    • 回収対象の通常ファイルのパーミッションは604 (ls -lを実行したとき「-rw----r--」と表示),ディレクトリと実行可能なファイルのパーミッションは705 (同「drwx---r-x」)としてください.パーミッションを変更するには,chmodコマンドを使用してください.
  • 演習時間中に作業記録をつけてもらいます(用紙は配付します).筆記用具を用意しておいてください.演習実施回の15:50に提出してもらいます(16:20までに返却します.次回授業で渡すことも可能です).前半の全課題終了時にも,提出してもらいます.最終提出なしについては減点の対象となりますので,なくさないようにしてください.
    • A4のクリアファイルに入れておき,演習時には取り出して随時,参照したり書き込んだりしていくことを推奨します.
  • 各課題に対する面談は実施しません.スタッフ(教員およびTA)は室内を巡回しますので,気軽に質問してください.スタッフの側から,質問をすることもあります.
  • ファイル回収状況のページを設置しました.指示通りにファイルを作ったのに,学生番号や○印のない人は,ディレクトリ名・ファイル名とパーミッションを見直してください.それでも問題ないという人は,連絡ください.
  • メールで質問したい人,授業時間外の相談などを希望する人は,takehiko@sys.wakayama-u.ac.jp まで.
課題1
実施内容と意図 ペアとなって動作する通信プログラムのデバッグおよび改善を行います.
この課題を通じて,クライアント/サーバモデルに基づく通信の実現方法を学びます.
使用可能なファイル ~takehiko/network-enshu2013/1/server0.c:サーバプログラム
~takehiko/network-enshu2013/1/client0.c:クライアントプログラム(バグあり)
~takehiko/network-enshu2013/1/server.c:サーバプログラム(不完全)
~takehiko/network-enshu2013/1/client.c:クライアントプログラム(不完全)
課題1-1server0.c および client0.c がペアとなって動作するよう,client0.c を修正しなさい.
課題1-2server.c および client.c に関数を定義し,それぞれ server0.c および(課題1-1で修正した) client0.c と同じ動作になるようにしなさい.
課題1-3client0.c にあるforループについて,その処理内容を詳しく説明したファイル client0.txt を作成しなさい.自習キーワードをできるだけ多く使用すること.
回収対象ファイル ~/network-enshu2013/1/client0.c
~/network-enshu2013/1/server.c
~/network-enshu2013/1/client.c
~/network-enshu2013/1/client0.txt
自習キーワード低水準入出力,システムコール,ホスト名,IPアドレス,ポート番号,クライアントサーバモデル,ディスクリプタ,DNS,線形リスト,一対多
課題2
実施内容と意図 Apache HTTP Serverのビルドを行います.
この課題を通じて,HTTPサーバの構成要素と,オープンソースソフトウェアの活用方法を学びます.
使用可能なファイル ~takehiko/network-enshu2013/2/httpd-2.2.25.tar.bz2:Apacheのソースファイル
~takehiko/network-enshu2013/2/welcome.cgi:CGIプログラム
課題2-1~/network-enshu2013/2/httpd 以下の適切なディレクトリに実行プログラムなどが配置されるよう,ビルドしなさい.
課題2-2シェルスクリプトファイル build.sh を作成し,このコマンドを実行すれば,課題2-1の内容(ビルドなど)を行うようにしなさい.
課題2-3welcome.cgiをCGIプログラムとして,課題2-1または課題2-2でビルドしたサーバ上で動かしなさい.またこのファイルの中身を自由に変更し,適切に動作することを確認しなさい.
回収対象ファイル ~/network-enshu2013/2/build.sh
自習キーワードHTTP,オープンソースソフトウェア,Apache,ビルド,tar.bz2,configure,make,シェルスクリプト,設定ファイル,管理者(root),特権ポート,CGI (Common Gateway Interface)
課題3
実施内容と意図 HTTPサーバへの問い合わせを通じて,様々な応答を調査します.
この課題を通じて,HTTPの動作と,人間可読および機械可読な文書の作成法を学びます.
使用可能なファイル ~takehiko/network-enshu2013/3/status.txt:ステータスコード・動作手順などを記したテキストファイル
~takehiko/network-enshu2013/3/checker.rb:status.txtの検査プログラム
課題3-1課題2-1または課題2-2でビルドしたサーバと通信し,10種類以上のHTTPステータスコードを確認しなさい.ステータスコード,英語による説明,動作の手順,確認方法を,ステータスコードごとに記述しなさい.
課題3-2checker.rbを実行して,課題3-1で作成したファイルに対し,エラーや警告が出ないようにしなさい.
回収対象ファイル ~/network-enshu2013/3/status.txt
自習キーワードステータスコード,リクエスト,レスポンス,アクセスログ,エラーログ,人間可読,機械可読,バリデータ
課題4
実施内容と意図 検索プログラムのデバッグおよび機能拡張を行います.
この課題を通じて,HTML,XML,JavaScript,CGIを連携させたWebアプリケーションの開発手法を学びます.
使用可能なファイル ~takehiko/network-enshu2013/4/index.html:検索プログラムのHTMLファイル
~takehiko/network-enshu2013/4/search.js:検索プログラムのJavaScriptファイル
~takehiko/network-enshu2013/4/jkl-parsexml.js:XML解析ライブラリ
~takehiko/network-enshu2013/4/words_r.xml.gz:r~zから始まる英単語リスト
~takehiko/network-enshu2013/4/words.xml.gz:英単語リスト
課題4-1この検索プログラムは動作に時間がかかりすぎる.円滑に動作するよう,search.jsを修正しなさい.
課題4-2他のファイル名またはURLの(同じ形式の)XML文書からでも検索できるよう,index.html および search.js を修正しなさい.
課題4-3この検索プログラムは,最初にすべての英単語データを読み出しているため,効率が悪い.それを解決するには,必要なデータだけ(「r」と入力すれば,rから始まる先頭10語と該当件数)を取得すればよい.課題2でビルドしたHTTPサーバを介して動作するCGIプログラムを作成しなさい.
回収対象ファイル ~/network-enshu2013/4/index.html
~/network-enshu2013/4/search.js
~/network-enshu2013/4/word.cgi
キーワード(自習すること)JavaScript,XML,DOM (Document Object Model),先頭一致検索,インクリメンタルサーチ
リンク

takehiko@sys.wakayama-u.ac.jp
Last modified: Thu Jan 23 12:15:58 JST 2014