第 10 回 ことおぼえ レポート課題 氏名:加藤恭平 学籍番号:c1100549 語学クラス:英語2 コース(系):政策マネジメント 1.筆記問題 pstore を cgi に組み込むには、まず require 'pstore' によって'pstore' を 用い、入力されたデータを保存するよう宣言する。 次に PStore変数 = PStore.new("データベース.db") と入力し、db(データベー ス)の型式で hashとして作成する。これにより、入力されたデータは pstore の 設定に従い、データベース.db(データベースファイル)に保存されるようになる。 さらに任意のプログラムを
内に挿入し、ユーザーにデータを 入力させるスペースを確保する。 また PStore変数 = transaction do により、変数に代入されたデータを読み込んで表示させる。 2.プログラム問題 選択した問題 I.るびちゃんねる a)考えた設定 2ちゃんねるのように名前とコメントを書き込み、書き込みが行われた投稿日と 投稿時間を表示することが出来る掲示板のようなもの。 削除キーを設定して不適切な書き込みを削除することも出来る。 b)作成したプログラム #!/usr/bin/env ruby $KCODE = 'e' require 'cgi' # cgiの実行を要求 require 'pstore' # pstoreの実行を宣言 require 'date' # 日付表示のためにdataの実行を宣言 cgi = CGI.new("html4") # html4 に準拠してCGIを実行 bbs = PStore.new("rubichannel.db") # rubichannel.dbという名でデータを作り、bbsと いう変数で処理する myprog = "rubichannel.rb" # CGI変数を受け取るプログラムを変数(myprog)に 置き換える day = Date.today # 投稿日を表示する為に変数 dayを作成 now = Time.now # 投稿時間を表示する為に変数 nowを作成 print("Content-type: text/html; charset=EUC-JP\n\n") print("\n") # html文章を書き始める print("\n") # head開始 print("\n") #\n") print("tagは1行に1人分のコメントを表示する for time in bbs.roots.sort if bbs[time][0] == "管理人" # 名前が管理人だったときの実行文 printf("\n") end print("%d: %s: %s %d:%d:%d
\n",time,bbs[time][0],bbs[time][1],bbs[time][2],bbs[time][3],bbs[time][4]) printf("\n",bbs[time][5]) elsif bbs[time][5] != "" # コメントが空白ではないときの実行文 printf("%s
%d: %sさん: %s %d:%d:%d
\n",time,bbs[time][0],bbs[time][1],bbs[time][2],bbs[time][3],bbs[time][4]) printf("\n",bbs[time][5]) end end print("%s
\n") printf("
るびちゃんねる弐式 トップページ
\n") print("\n") print("\n") -------------------------------------------------------------------------------- 以下はr2_cgi_best.htmlを貼りつける管理人 加藤恭平のホームページ
# 自分のホームページへのリンク1323432573: 名無しさん: 2011-12-09 21:9:33
ビームマグナムを使う!! ※テスト
1323432727: 名無しさん: 2011-12-09 21:11:23
V2の光の翼で!!
1260519852: 管理人: 2011-12-09 21:35:0
不適切なコメントのため削除しました。
1260519915: シローさん: 2011-12-09 22:59:55
銃身が焼き付くまで撃ち続けてやる
1260520168: ギンガナムさん: 2011-12-09 23:7:46
勝利の美酒も飽きたなあッ
るびちゃんねる弐式 トップページ
名前を入力せずに書き込みを行った場合 pan{c110054}% ./rubichannel.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) question="さあ、お前の罪を数えろ!" Content-type: text/html; charset=EUC-JP1323432573: 名無しさん: 2011-12-09 21:9:33
ビームマグナムを使う!! ※テスト
1260519852: 名無しさん: 2011-12-09 21:11:23
V2の光の翼で!!
1323432727: 管理人: 2011-12-09 21:35:0
不適切なコメントのため削除しました。
1260519915: シローさん: 2011-12-09 22:59:55
銃身が焼き付くまで撃ち続けてやる
1260520168: ギンガナムさん: 2011-12-09 23:7:46
勝利の美酒も飽きたなあッ
1260520168: 名無しさん: 2011-12-11 19:58:45
さあ、お前の罪を数えろ!
るびちゃんねる弐式 トップページ
投稿ナンバー1260519852 のコメントを削除した場合 pan{c110054}% ./rubichannel.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) touko="1260519852" sakujo="0619" Content-type: text/html; charset=EUC-JP1323432573: 名無しさん: 2011-12-09 21:9:33
ビームマグナムを使う!! ※テスト
1260519852: 管理人: 2011-12-09 21:12:42
不適切なコメントのため削除しました。
1323432727: 管理人: 2011-12-09 21:35:0
不適切なコメントのため削除しました。
1260519915: シローさん: 2011-12-09 22:59:55
銃身が焼き付くまで撃ち続けてやる
1260520168: ギンガナムさん: 2011-12-09 23:7:46
勝利の美酒も飽きたなあッ
1260520168: 名無しさん: 2011-12-11 19:58:45
さあ、お前の罪を数えろ!
るびちゃんねる弐式 トップページ
e)考察 実行結果を見るとまず、名前付きでコメントした場合コメント表示覧の一番下に 書き込んだ内容と日時名前がエラー無く表示されている。 名前無しでコメントした場合は"名無しさん"となり、それ以外はエラー無く表示 されている。 コメントを削除した場合は名前が"管理人"になり、"不適切なコメントのため削 除しました"と表示されて日付、時間は削除された時のものに更新されている。 全ての機能がWeb上だけではなくktermでも機能しているので、このプログラムは 正しいと言える。 4.感想 興味を引かれた作品 吉住貴則さんのページ http://roy/~madoka/2011/r2/10/rpt/rpt.html です。 配色やリンクの配置など、ホームページとhtmlページのレイアウトが全体的に見 やすかったからです。 プログラムの作成自体は金曜日に終わらせられたのだが、htmlページの編集をし て全ての動作を確認し、レポートのためにプログラムの解説や考察をした後のrubycgiをadadvertise2の中に移動させ、課題ページに指定されていたURLにすると言う作業にかなり時間を使ってしまった 。 廣瀬先生の授業用ページや、ktermの操作を解説したページを参考に移動はさせ たのだが、今度は作成したhtmlページの掲示板への入口をクリックするとプログラム本文が表示されるようになってしまった。それだけではなく過去に作成したCGIの課題も 全て同様になっていた。リンクのURLを移動後のものに直す以外にも自分なりに原因を考えて授業用ページを振り返りながら「.htaccess」ファイルを移動した先でもう一度作成する、pstore作成の際の作業をもう一度行う等の作業を実行したのだが変わらなかった。 ディレクトリ移動前は問題なく正常に動作していたので非常に悔しいですが自分 の中では万策尽きたのでこのまま提出します。感想の項目で質問をして申しわけ ないですがよろしければ解決法を教えて下さい。 作成した課題のリンク 「http://roy/~c110054/advertise2/rubycgi/r2_cgi_best.html」 後期広告ページ 「http://roy/~c110054/advertise2/index.html」 参考文献 Unixの基本コマンド http://roy/unix/commands.html 著者 廣瀬 雄二 UNIXの部屋 http://x68000.q-e-d.net/~68user/unix/ 著者 サイト上に明記無し 基礎プログラミング II 第09回 CGI ことえらび ファイルを使ってみよう http://roy/~madoka/2011/r2/09/r2_09_08_theme_08_hashfile.html 基礎プログラミング II 第09回 CGI ことえらび テキストエリアの作り方 http://roy/~madoka/2011/r2/09/r2_09_07_theme_07_textarea.html 基礎プログラミング II 第09回 CGI ことえらび テキストフィールドの作り方 http://roy/~madoka/2011/r2/09/r2_09_06_theme_06_textfield.html 基礎プログラミング II 第09回 CGI ことえらび CGI スクリプトによる結果表示 http://roy/~madoka/2011/r2/09/r2_09_03_theme_03_result.html 基礎プログラミング II 第09回 CGI ことえらび 結果を分岐させるには http://roy/~madoka/2011/r2/09/r2_09_01_theme_01_branch.html 基礎プログラミング II 第08回 CGI ことはじめ Ruby で CGI を作る宣言 http://roy/~madoka/2011/r2/08/r2_08_09_theme_09_declare.html 基礎プログラミング II 第08回 CGI ことはじめ 動作プログラム作成 http://roy/~madoka/2011/r2/08/r2_08_08_theme_08_ruby.html 基礎プログラミング II 第08回 CGI ことはじめ CGI スクリプトの解説 http://roy/~madoka/2011/r2/08/r2_08_07_theme_07_actionprogram.html 基礎プログラミング II 第08回 CGI ことはじめ CGI を使用することを宣言しよ う http://roy/~madoka/2011/r2/08/r2_08_04_theme_04_declare.html 基礎プログラミング II 第08回 CGI ことはじめ CGI 専用作業 directory http://roy/~madoka/2011/r2/08/r2_08_02_theme_02_mkdir.html 基礎プログラミング II 第10回 CGI ことおぼえ CGI で使うことのできるデータ ベース http://roy/~madoka/2011/r2/10/r2_10_01_theme_01_pstore.html 基礎プログラミング II 第10回 CGI ことおぼえ プログラム部分について http://roy/~madoka/2011/r2/10/r2_10_02_theme_02_program.html 基礎プログラミング II 第10回 CGI ことおぼえ 時間を Key として http://roy/~madoka/2011/r2/10/r2_10_03_appendix_01_time.html 基礎プログラミング II 第10回 CGI ことおぼえ コメント受け付けプログラム http://roy/~madoka/2009/r2/10/10-04-rubichannel.html 基礎プログラミング II 第10回 CGI ことおぼえ データベースに入力 http://roy/~madoka/2009/r2/10/10-05-pstore_cgi.html 基礎プログラミング II 第10回 CGI ことおぼえ データベースからとりだして表 示 http://roy/~madoka/2009/r2/10/10-06-hash-pstore.html 以上の著者 西村まどか