第9回 ことえらび レポート課題 氏名:伊藤桜子 学籍番号:c1100265 語学クラス:英語6 コース:政策マネジメント 1、筆記問題 A ラジオボタンは選択肢の中から一つだけ選ぶ方法である。 例えば座席の種類として窓側、通路側、希望なしのどれかを 選ぶとき、どれかひとつだけを選択してもらう。 授業で使ったプログラムを例に取ると、

通路 希望なし

これでweb上で選択肢が表示できるようになる。 input type="radio"で""内をラジオボタンの設定にすることを示している。 name="seat"でラジオボタンの名前を"seat"として他のラジオボタンと区別する ようにしている。 value="窓側"の部分ははweb上でユーザーが選んだ選択肢の情報("窓側")がプロ グラムに送られることを意味している。この例ではrbのseat= cgi["seat"]の部 分に代入される。 つまり、""内の文字はCGI変数の値のことである。 また、希望なし のようにcheckedをいれるとweb上の画面に始めから希望なしの欄にチェック されるようになる。 B チェックボックスとはラジオボタンとは違って、一つだけではなく複数選べる 方法である。例えばサービスとして食事を選ぶとき選択肢にバイキングとつやひ めがあればどちらも選択できる。 授業で使ったプログラムを例に取ると

バイキング つやひめ

input type="checkbox"でタイプをチェックボックスにすることを示す。 name="dinner"でチェックボックスの名前を"dinner"として他のチェックボック スと区別できるようにしている。 value="夕食"はユーザーが選ぶと""内の情報がプログラムに送られることを 意味している。この例では、rbのextra =[cgi["dinner"],cgi["rice"]]の部分に 代入される。 C ◯題名 「ジョン」 ◯作ったTgifの意図 今回は私が以前実家で飼っていたペットを思い出しながら描いた。 私が飼っていたのはプレーリードッグ(リス科)で、友達に説明しても よく理解してもらえなかったのでTgifでつくり、みんなに知ってもら おうと思った。 ◯Tgifの解説(作った方法、工夫した点) 基本的に円を使った。目や、耳や、鼻や口は手書で行った。 イメージとは少し違ったが、プレーリードッグがどのような動物であるかは 大体伝わったと思う。色も実物とそっくりな色にできた。 一番大変だったのは目の部分で、少したれ目になっているのがポイントである。 また、「I am John」といれることでこの画像が「John」を示していることが わかるようにした。 2、プログラム問題 A ◯リンク http://roy/~c110026/advertise2/rubycgi/count.rb ◯考えた設定 ●題名 訪問者数表示プログラム ●設定 ホームページに何番目に訪問したのかを自動的に表示させてくれるプログラム ●意図 誰でもアクセス権を持てるプログラムの作り方を知りたかった。また、訪問した 人数も表示できるプログラムを作りたかったので作成した。 ◯プログラム #!/usr/bin/env ruby require 'cgi' # cgiを使う宣言 cgi = CGI.new("html4") print("Content-type: text/html; charset=EUC-JP\n\n") #日本語コード arv = cgi["arrive"] # Ruby に CGI でもらってきた値を代入 number = 0 # numberの初期値を0とする open("count.txt","r") do |read| # openメソッドを使ってcount.txtをファイルを # 読み込む。 while data = read.gets # whileメソッド if /(\d+)/ =~ data # 正規表現 number = $1.to_i end end end print("\n") print("\n") print("おいでやす〜♪\n") print("\n") print("\n") printf("

おめでとうございます!!あなたは %d 人目の訪問者です!!

\n", number) print("

Welcome to Sakurako's Homepage!!

\n") print("\n") print("\n") number += 1 # numberを1ずつ増やす open("count.txt","w") do |write| # count.txtの中にある番号を書き換える。 write.printf("%d\n",number) end ◯もとにしたプログラムからの変更点 授業ページのカウンタ例(counter.rb)をもとにした。 print文を変更した。 また、自分でわかりやすいようにコメント文を追加した。 ◯実行結果(kterm上) pan{c110026}% ./count.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JP おいでやす〜♪

おめでとうございます!!あなたは 6 人目の訪問者です!!

Welcome to Sakurako's Homepage!!

◯実行結果(web上) おめでとうございます!!あなたは 6 人目の訪問者です!! Welcome to Sakurako's Homepage!! ◯考察 kterm上で2回繰り返してみると pan{c110026}% ./count.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JP おいでやす〜♪

おめでとうございます!!あなたは 6 人目の訪問者です!!

Welcome to Sakurako's Homepage!!

pan{c110026}% ./count.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JP おいでやす〜♪

おめでとうございます!!あなたは 7 人目の訪問者です!!

Welcome to Sakurako's Homepage!!

となり、1人ずつ増えていることがわかるのでこのプログラムは正しいことがわ かる。 openメソッドでcount.txtを読み込み、読み込んだ数を表示させるようにした。 number += 1で数を1ずつ増やす。 2つ目のopenメソッドでcount.txtの番号を1ずつ増えた数に書き換えるようにする。 また、西村先生のサンプルでは更新すると客の数が増えていたが、私が作ったプ ログラムでは更新しても増えなかった。そこでtxtファイルの属性をls -lで調べ てみた。 もとは -rwxr-xr-x 1 c110026 st2010 2 Nov 30 17:15 count.txt* このように表示されていた。神田先生の授業ページを見ると他人でもページのア クセス権を有することができるには roy{c110026}% chmod o+w count.txt [~/public_html/advertise2/rubycgi] このようにアクセス権を変更しなければいけないことがわかった。 変更後は -rwxr-xrwx 1 c110026 st2010 2 Nov 30 17:15 count.txt* となった。 このことからwが増えたことがわかる。 そのあとに更新すると客の数が1ずつ増えることがわかった。 B ◯リンク http://roy/~c110026/advertise2/rubycgi/keisan.html ◯考えた設定 ●題名 計算プログラム ●設定 数値を入力してもらい、どの計算式を使うかもCGIで選んでもらう。 "="を押すと計算結果が表示されるプログラム ●意図 「ホームページで計算できるCGIスクリプトプログラム」ということで 電卓のように自分が入力した数字で計算してみたいと思ったので作成した。 ◯プログラム(keisan.rb) #!/usr/koeki/bin/ruby require 'cgi' # CGIを使う宣言をする cgi = CGI.new("html4") print("Content-type: text/html; charset=EUC-jp\n\n") #日本語コード sujiA = cgi["sujiA"] # 数値Aを読み込む sujiB = cgi["sujiB"] # 数値Bを読み込む kekka = cgi["kekka"] # 計算式を読み込む print("\n") print("\n") print("計算\n") print("\n") print("\n") if kekka == "tashi" # 選ばれた計算式が足算の場合は s = sujiA.to_f + sujiB.to_f # 足す elsif kekka == "hiki1" # 選ばれた計算式が引算(A-B)の場合は s = sujiA.to_f - sujiB.to_f # 引く elsif kekka == "hiki2" # 選ばれた計算式が引算(B-A)の場合は s = sujiB.to_f - sujiA.to_f # 引く elsif kekka == "kake" # 選ばれた計算式が掛け算の場合は s = sujiA.to_f * sujiB.to_f # 掛ける elsif kekka == "wari1" # 選ばれた計算式が割り算(A/B)の場合は s = sujiA.to_f / sujiB.to_f # 割る elsif kekka == "wari2" # 選ばれた計算式が割り算(B/A)の場合は s = sujiB.to_f / sujiA.to_f # 割る end print("

計算結果

\n") if kekka == "tashi" # 足算の場合は printf("

%d + %d = %d

\n",sujiA ,sujiB ,s.to_f) # 計算式の表示 elsif kekka == "hiki1" printf("

%d - %d = %d

\n",sujiA ,sujiB ,s.to_f) elsif kekka == "hiki2" printf("

%d - %d = %d

\n",sujiB ,sujiA ,s.to_f) elsif kekka == "kake" printf("

%d * %d = %d

\n",sujiA ,sujiB ,s.to_f) elsif kekka == "wari1" printf("

%d / %d = %3.3f

\n",sujiA ,sujiB ,s.to_f) elsif kekka == "wari2" printf("

%d / %d = %3.3f

\n",sujiB ,sujiA ,s.to_f) end print("\n") print("\n") ◯プログラム(keisan.html) 計算