第10回 ことおぼえ レポート課題
1、筆記問題
A
先週の課題のホームページに来た人数をカウントするcount.rbを例にすると
もとの属性は
-rwxr-xr-x 1 c110026 st2010 2 Nov 30 17:15 count.txt*
このように表示されていた。しかし、これでは第三者が書き換えることが出来な
いので
roy{c110026}% chmod o+w count.txt [~/public_html/advertise2/rubycgi]
このようにo+wとして第三者でも書き換えられるようにする。
変更後は
-rwxr-xrwx 1 c110026 st2010 2 Nov 30 17:15 count.txt*
となった。
また、侵入者を防ぐためデータベース専用のディレクトリをつくり、
そのディレクトリ内でのみ書き込み可能にできる。
2、最高傑作
◯題名
Today's Dog(pet.rb)
◯企画意図
前回の課題ででたtgifがうまくできなかったのであえて今回
tgifを使ったプログラムを作成しようと思った。
また、今まで学んだCGIの技術も取り入れたかったのでこのような
プログラムを作ろうと思った。
◯考えた設定
ユーザーとペットの基本情報を入力してもらい、ユーザーが選んだ
ペットの状態によってペットの様子をイラストで表すプログラム
◯プログラム(rb)
#!/usr/koeki/bin/ruby
require 'cgi' # CGIを使う宣言をする
cgi = CGI.new("html4")
print("Content-type: text/html; charset=EUC-jp\n\n") #日本語コード
name1 = cgi["namae1"] # 飼い主の名前
name2 = cgi["namae2"] # ペットの名前
sei = cgi["seibetu"] # 性別
nen = cgi["nenrei"] # ペットの年齢
inu = cgi["inu"] # 選択肢を読み込む
print("\n")
print("
\n")
print("ペットを育てよう\n")
print("\n")
print("\n")
if inu == "esa" #もし選んだものが「えさをあげる」だったら
print("\n")
# spring.cssを読みこんで表示する
print("いっぱい食べて大きくなるといいね
\n")
print("
\n")
# esa.pngを表示する
elsif inu =="sanpo" #もし選んだものが「散歩に行く」だったら
print("\n")
# summer.cssを表示する
print("気分転換大切だよね
\n")
print("
\n")
# sanpo.pngを表示する
elsif inu == "hirune" # もし選んだものが「昼寝をさせる」だったら
print("\n")
# autumn.cssを表示する
print("とても気持ちよさそうです
\n")
print("
\n")
# EmergencySave.pngを表示する
elsif inu == "nadeta" # もし選んだものが「なでてあげる」だったら
print("\n")
# winter.cssを表示する
print("とても喜んでいます
\n")
print("
\n")
# nadeta.pngを表示する
end
ningen = nen.to_i * 7 # いぬの年齢に7をかける
if name1 == "" # もし飼い主の名前が無記名だったら
name1 = "桜子" # 飼い主の名前を桜子とする
end
if name2 == "" # もしペットの名前が無記名だったら
name2 = "ジョン" # ペットの名前をジョンとする
end
if sei == "オス♂" # もし性別がオスだったら
printf("%sのペット「%s」くん
",name1 ,name2) # 〜くんと表示させる
elsif sei == "メス♀" # もし性別がメスだったら
printf("%sのペット「%s」ちゃん
",name1 ,name2) # 〜ちゃんと表示させる
end
printf("%d歳(人間の年齢にすると%d歳)
\n",nen.to_i ,ningen.to_i)
print("\n")
print("\n")
◯プログラム(html)
ペットを育てよう

戻る
◯もとにしたプログラムからの変更点
前回のプログラムkisekae.rbをもとにした。cssも同じものを変更した。
tgifで作った絵をそれぞれの場合で表示できるようにした。
前回は色を読みこむだけだったが今回は飼い主の名前、ペットの名前、
性別、ペットの年齢、選択肢を読みこむように設定した。また、入力してもらっ
たペットの年齢を7倍して人間でいうと何歳なのかを表せるようにした。
ユーザーとペットの名前が入力されなかった場合、自動的に飼い主の名前を"桜
子"、ペットの名前を"ジョン"となるように設定した。
ペットの性別がオスだったら〜くん、メスだったら〜ちゃんと表示できるように
設定した。
◯実行結果
pan{ITO Sakurako}% ./pet.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
namae1="貴衣"
namae2="ミック"
seibetu="メス♀"
nenrei=6
inu="esa"
Content-type: text/html; charset=EUC-jp
ペットを育てよう
いっぱい食べて大きくなるといいね

貴衣のペット「ミック」ちゃん
6歳(人間の年齢にすると42歳)
◯考察
ktermで実行してみると飼い主の名前が正しく表示されていることがわかる。
また、「メス♀」と入力したので設定したとおりに、ペットの名前の最後に
「ミック」ちゃんとちゃんづけで表示されていることがわかる。
選択肢で「えさをあげる」を選択するとcssもがぞうファイルもコメントも
正しく表示されていることがわかる。
年齢を6歳に設定すると6歳(人間の年齢にすると42歳)
と表示された。
bc -lで計算を確かめてみると
pan{c110026}% bc -l [~/public_html/advertise2/rubycgi]
6*7
42
quit
となり、実行結果と一致していることがわかる。
これらのことから、このプログラムはhtmlを正しく読みこみ、正常に機能してい
るといえる。
また、web上でも全て正しく表示されていたのでプログラムは正しいといえる。
3、感想
◯興味を持った作品
吉住貴則君の作品「町のCDショップ」
http://roy/~c110198/advertise2/rubycgi/keisan.html
◯根拠
CGIスクリプトを使ってレシートを表す作品で、レシートの表示もシンプルで
見やすかった。日付けと時間、担当者も表示してあり、本物のようだと思った。
また、背景も町を表しており、雰囲気もよかったのでこのようなプログラムを
作ってみたいなと思った。
◯感想
今回の課題は楽しくできて良かった。絵を描くのは苦手だったが、何度も
挑戦していると楽しいと思えるようになった。ロゴも満足できるものになって
良かった。
CGIは学んだばかりの頃はなかなか理解できなかったが授業や課題を通して
だんだん理解できたと思う。
4、参考文献
◯西村先生の後期授業第10回ホームページ「CGIで使うことのできるデータベー
ス」
http://roy/~madoka/2011/r2/10/r2_10_01_theme_01_pstore.html
◯神田先生の前期授業ホームページ第10回「css」
http://roy/~naoya/ruby/css.html
◯協同学習者
齋藤陽香
畠山貴衣
東北公益文科大学
公益学部 公益学科 2年 伊藤桜子
c110026@f.koeki-u.ac.jp
◯添付リスト
・http://roy/~c109xxx/advertise2/rubycgi/r2_cgi_best.html
・pet.rb
・pet.html
・spring.css
・summer.css
・autumn.css
・winter.css
・iro.css
・dog.png
・esa.png
・esa.obj
・sanpo.png
・sanpo.obj
・EmergencySave.png
・EmergencySave.obj
・nadeta.png
・nadeta.obj