第 9 回 ことえらび レポート課題 氏名:森桂太 学籍番号:c110190 語学クラス:中国語 コース(系):社会福祉コース A. ラジオボタンのしくみを説明せよ。 ラジオボタンとは、選択肢とボタンを1まとめに表示させ 複数の選択肢から1つを選択する場合に使用し、 選択肢それぞれに input 要素 を用意する。簡単に述べると、 複数の選択肢の中から、選びたい選択肢のボタンを押すことで、 1つだけ選択できる仕組みである。 選択肢1 B.チェックボックスのしくみを説明せよ。 複数の選択肢でどれを選んだか印を付け表示させる。 また、複数の項目の中から複数選択が可能な仕組みである。 選択肢1 C.Tgif の復習として、自作による基礎プログラミングのキャラクタ画像 char_r2_ユーザ ID.png の解説と 作品の添付。また、 advertise2 に掲載する。 題名「ルビー番長」 解説 ・難しい課題と言う障害物を打ち破っていく理想の存在をキャラクターとした。 ・リンク "http://roy.e.koeki-u.ac.jp/~c110190/advertise2/rubycgi/tgif3.png" "http://roy.e.koeki-u.ac.jp/~c110190/advertise2/rubycgi/tgif4.obj" A.「カウンター」どのくらいの人数が来たのか求められる。 a.リンク http://roy/~c110190/advertise2/rubycgi/fork.html b.CGIの題名 「訪問カウント」 意図 どのくらい訪問した人がいるかを知りたいと思ったから。 c.dプログラム本体とプログラムの説明 ---count.rb--- #!/usr/bin/env ruby require 'cgi' #CGIを使えるようにする cgi = CGI.new("html4") print("Content-type: text/html; charset=EUC-JP\n\n") number = 0 open("count.txt","r") do |read| # "r" = ただ読み込む。"w" = 書き込む。 # "a"=上書き。 while data = read.gets #テキストの中身を読み終えるまで繰り返し。 if /(\d+)/ =~ data #\d+ = 数字だったら。 \S+ = 文字だったら。 #\s = スペース(空白だったら) number = $1.to_i #numberの変数に $1 = 9 のデータを代入。 # $1 = (\d+) end end end print("\n") print("\n") print("おいでませ\n") print("\n") print("\n") printf("

No. %d のお客様

\n", number) #numberに読み込んだデータを代入 print("

庄内へようこそ

\n") %dで表示させる。 print("\n") print("\n") number += 1 open("count.txt","w") do |write| # "r" = ただ読み込む #"w" = もとからあったデータを消し新たに書き込む。 # "a"=上書き。 write.printf("%d\n",number) # "w"で新たに作ったデータを %d で表示。 end ---count.html--- いらっしゃいませ

No. のお客様

#count.txt で読み込ませた値を "w" で書き換え、その値をホ ームページ上で表示する場所。 ---count.txt--- 9 #この数字が if /(\d+)/ でもし〜ならばの材料となり、 "r" や "w" で判断、処理 される。 #ちなみに、今回は9にしたが数字は何でも良い。 e.実行結果 pan{c110190}% ./count.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JP おいでませ

No. 9 のお客様

庄内へようこそ

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

No. 10 のお客様

庄内へようこそ

B.ホームページで計算できるCGI「計算機」 a.リンク http://roy/~c110190/advertise2/rubycgi/fork.html b.CGIの題名 「計算プログラム」 意図 時給を求めるプログラムの方が作りやすく課題に適していると思ったから。 c.dプログラム本体とプログラムの説明 ---keisann.rb--- #!/usr/koeki/bin/ruby require 'cgi' cgi = CGI.new("html4") print("Content-type: text/html; charset=EUC-JP\n\n") jikyuu = cgi["jikyuu"] jikann = cgi["jikann"] nisuu = cgi["nisuu"] total = jikyuu.to_i * jikann.to_i * nisuu.to_i * 4 # jikyuu * jikann * nisuu * 4 の合計は total で表す。 # jikyuu =時給金額 # jikann =時間 #nisuu =日数 #4 =4週間(1ヶ月)のこと。 print("\n") print("\n") print("計算結果です。\n") print("\n") print("\n") print("\n") print("
\n") print("
\n") print("
\n") print("
\n") print("
\n") print("
\n") print("

\n") printf("あなたの月給は%d円です\n",total) # total の値を %d に代入。 print("

\n") print("
\n") print("\n") print("\n") ---keisann.html--- 時給計算

#"POST" は送る、届ける。 action "keisann.rb"で送った先で、起動するプログラムを指定。そこでデータの判断表示。




時給計算

あなたの時給を計算します。時給、働く時間、一週間に働く日数を入力して下さ い

# submit で選択したoption を出力先プログ ラムに送信。 # reset は選択したoption を取り消し。

e.実行結果 pan{c110190}% ./keisann.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) jikyuu="100" jikann ="3" nisuu ="2" Content-type: text/html; charset=EUC-JP 計算結果です。





あなたの月給は0円です

D.きせかえができる CSS を自動生成するプログラム。 a.リンク http://roy/~c110190/advertise2/rubycgi/fork.html b.CGIの題名 「着せ変えプログラム」 意図 色を自由に変えられるプログラムがあれば便利だから。 c.dプログラム本体とプログラムの説明 ---color.rb--- require 'cgi' # cgi が使えるようにする。 cgi = CGI.new("html4") # cgi という名前で CGI をつくる 宣言。 print("Content-type: text/html; charset=EUC-jp\n\n") # 受け取ったデータを使う宣言をする color = cgi["color"] # 受け取ったデータをsikiに代入 # html の"color"情報 print("\n") # html の始め。 print("\n") # タイトル、文章へ情報を記述する。 print("色彩変更プログラム\n") # ホームページのタイトル if color == "red" # もしsikiがredだったら print("\n") # siki1のcssを使う elsif color == "blue" # もしsikiがblueだったら print("\n") # siki2のcssを使う elsif color == "orange" # もしsikiがorangeだったら print("\n") # siki3のcssを使う else # それ以外だったら print("\n") # siki4のcssを使う end # ifのend print("\n") # headの終わり print("\n") # bodyの始め print("

色彩変更プログラム

\n") # ホームページの見出し print("
\n") # 改行 print("

色彩変更されました

\n") # ホームページの見出し print("\n") # body の終わり print("\n") # html の終わり ---color.html--- 色彩変更プログラム<title> <link rel="stylesheet" type="text/css" href="color.css"> <head> <body> <h2>色彩変更プログラム</h2> <br> <h3>色彩変更されました</h3> <form method="POST" action="./color.rb"> #"POST" は送る、届ける。 action "keisann.rb"で送った先で、起動するプログラムを指定。そこでデータの判断表示。 <ul> <p> <input type="radio" name="color" value="red"> 赤 <input type="radio" name="color" value="blue"> 青 <input type="radio" name="color" value="orange"> オレンジ <input type="radio" name="color" value="purple"> 紫 #input type="radio" でラジオボタンを使うと指定。 </p> <p> <input type="submit" value="決定"> <input type="reset" value="やり直す"> </p> </form> </body> </html> 1.考察 A のプログラムは txt のデータを読み取り、ホームページで実行、ktermでの実行したと ころ、双方アクセスした分だけ 1 ずつ増えていたのでプログラムは正常だったことが わかった。 B のプログラムでは起動したものの、結果が違っていた。また、select では細かい金額 が聞けなくなる、変則的な日数に対応ができない、結果が違うなど課題が出てきた。 D のプログラムは起動できたが、変換がされなかった。理由として txt にあるデータが 間違っている、抜けている所があるなど考えられる。 2.今後の課題 ・ラジオボタンやテキストエリアなどを状況に合わせて使えるようにする。 ・結果表示の仕方を確認し直す。 ・txt にあるデータの受取、起動をできるようにする。 3.感想 今回非常に難しく、友人、先輩に助言をしてもらった。また今回は細かく説明を入れるようにし、どこまで出来ていて、どこが出来ないのかを明らかにし課題を見つけるようにしたところが苦戦しました。また、説明を自分なりに解釈し噛み砕いて書いてみました。ご指摘よろしくお願いします。 4.参考文献 先輩ページ http://roy/~madoka/2010/r2/09/rpt/c109067.txt http://roy/~c107072/ http://roy/~madoka/2010/r2/09/rpt/c108203.txt http://roy/~madoka/2010/r2/09/rpt/c109046.txt 西村先生講義ページ http://roy/~madoka/2011/r2/09/r2_09_01_theme_01_branch.html http://roy/~madoka/2011/r2/09/r2_09_04_theme_04_radio.html http://roy/~madoka/2011/r2/09/r2_09_05_theme_05_checkbox.html http://roy/~madoka/2011/r2/09/r2_09_06_theme_06_textfield.html 神田先生講義ページ http://roy/~naoya/cgi-bin/9.html