第10回 ことおぼえ レポート課題
氏名:菅原彩花
学籍番号:c1101253
語学クラス:英語6
コース:政策マネジメントコース
1、筆記問題
pstoreはopen-endを使ったファイルへの書き込みと似ている。open-endではセキュ
リティの面で不充分な面があるが、pstoreという新たなディレクトリを作成し、
その中だけ第三者が書き込めるようにしておくことで他のディレクトリにあるファ
イルが守られる。
このpstoreを使う際にはbubyプログラムの最初にrequire'cgi'と共に
require'pstore'と書く必要がある。加えて変数名=PStore("xxx.db(
dbファイルの名前)")を書くことでxxx.dbに第三者から入力されたものが書き込
まれいく。
2、プログラム問題(K:感想を書き込んでもらうシステム)
掲載URL:
http://roy.e.koeki-u.ac.jp/~c110125/advertise2/rubycgi/r2_cgi_best.html
A、作成意図
今までに作成したWEBページやプログラムについての感想や意見などはメールで
しか作成者に伝える手段がなかった。しかしメールではメールソフトを起動した
りと手間がかかってしまうため敬遠されることが想定される。感想・意見をhtml
上で簡単に意見を言うことができればより多くの意見をもらうことができると思
い作成した。
B、作成したhtml(r2_cgi_best.html)
感想を書こう
ようこそいらっしゃいましたっ!!
*ぜひとも以下に感想を書いて下さいっ*
C、作成したrubyプログラム(nikki.rb)
#!/usr/bin/env ruby
$KCODE = 'e' #日本語を使うと宣言
require 'cgi' #cgiを使うと宣言
cgi = CGI.new('html4') #出力する際にはhtml4を使用する
print("Content-type:text/html;charset=EUC-jp\n\n")
#出力時には日本語を使用する
name = cgi["name"] #cgiからもらってきたnameという変数をnameとする
sex = cgi["sex"] #cgiからもらってきたsexという変数をsexとする
main = cgi["main"] #cgiからもらってきたmainという変数をmainとする
time = Time.now #その時の時間をtimeに入れる
#名前か本文のどちらかまたは両方が入力されていない場合
if name == "" || main == "" #もしnameかmainの中が空だったら
print("\n") #htmlのはじまり
print("\n") #htmlで表示されない部分のはじまり
print("エラー\n") #タブに表示されるタイトル
print("")
#cssは別のファイルmani3.cssを使用
print("\n") #表示されない部分の終わり
print("\n") #表示される部分のはじまり
print("ニックネームか本文がないので
もう一度やり直してください
\n")
print("\n")
print("\n") #html本体の終わり
print("\n") #htmlの終わり
#名前本文の両方が入力されている場合
else
print("\n") #htmlのはじまり
print("\n") #htmlで表示されない部分のはじまり
print("感想\n") #タブに表示されるタイトル
print("")
#cssは別のファイルmani2.cssを使用
print("\n")
print("\n")
open("nikki.txt","a") do |write| #writeは変数
#open do-endでファイルを開いて(nikki.txt","a")とすることでnikki.txtに追加的に書き込む
#以下がファイルに書き込む内容
write.printf("\n-------------------------\n%s\n 名前:%sさん %s\n本文--------------------- \n %s \n\n",time,name,sex,main)
end #open doのend
printf("%sさんが書いた感想
\n",name) #結果の表示内容
printf("
----------------------------
%s
名前:%sさん %s
本文------------------------
%s
----------------------------
\n",time,name,sex,main)
print("\n")
print("\n") #html本体の終わり
print("\n") #htmlの終わり
end
D、プログラムの実行結果
(1)名前だけが入力されていない場合
roy{c110125}% ./nikki.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
name=""
sex="男性"
main="あいうえお"
Content-type:text/html;charset=EUC-jp
エラー
ニックネームか本文がないので
もう一度やり直してください
(2)本文だけが入力されていない場合
(offline mode: enter name=value pairs on standard input)
name="さやか"
sex="女性"
main=""
Content-type:text/html;charset=EUC-jp
エラー
ニックネームか本文がないので
もう一度やり直してください
(3)名前、本文の両方が入力されていない場合
roy{c110125}% ./nikki.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
name=""
sex="男性"
main=""
Content-type:text/html;charset=EUC-jp
エラー
ニックネームか本文がないので
もう一度やり直してください
(4)どちらも入力してある場合
roy{c110125}% ./nikki.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
name="さやか"
sex="女性"
main="あいうえお"
Content-type:text/html;charset=EUC-jp
感想
さやかさんが書いた感想
----------------------------
Sat Dec 10 16:06:28 +0900 2011
名前:さやかさん 女性
本文------------------------
あいうえお
----------------------------
E、考察
Dの実行結果より(1)〜(3)までの名前と本文いずれか、または両方が入力されて
いない場合にはエラーが表示された。また両方が入力されている場合には書いた
日記が表示されたので正常に実行されている。
3、感想
CGIで興味のある作品
URL:http://roy/~c110188/advertise2/rubycgi/fork.html
理由
cgiのページのリンクの上に簡単な説明がきちんと載っていることや色の組合せ
が字が読みやすいようになっていること。
また計算プログラムではただ足算や引算などの計算をするのではなく、買い物をして
レシートを出力するなどアイディアに富んでいる構成になっているからである。
今回もifが正常に動かないというアクシデントがあったが、試行錯誤して正常に
動くようにすることができた。今回作成したプログラムは少し変更すれば日記を
書いて表示させることやその日記に対してのコメントを表示させることも可能な
のではと思った。
また.rbで出力するのではなく.htmlのかたちで出力されたかったがssiの仕組み
など分からない点が多かったのでできなかった。自分で勉強してみたい。
-------------------
東北公益文科大学
公益学部 公益学科 2年 菅原彩花
c110125@f.koeki-u.ac.jp