第9回 基礎プログラミング II レポート課題 氏名: 金田麻美 学籍番号: C1090466 語学クラス: 英語3 コース(系): 政策マネジメント 1-A. ラジオボタンは選択肢とボタンを1まとめに表示させ、選びたい選択肢の ボタンを押すことによって、1つだけ選択できる仕組みである。 プログラムとしては、 選択肢1 選択肢2 . . . といった形式で作成できる。 1-B. チェックボタンはラジオボタンのように選択肢とチェックできるボックスが 1まとめに表示される方法だが、ラジオボタンと違い、 複数の選択肢を選択することができる。 アンケートによく見られる、「複数解答可」に利用できる。 プログラムとしては、 選択肢1 選択肢2 . . . といった形式で作成できる。 参考文献 基礎プログラミング II 第9回 CGIことえらび 「ラジオボタンの作り方」 http://roy/~madoka/2010/r2/09/09_04_theme_02_radio.html 基礎プログラミング II 第9回 CGIことえらび 「チェックボックスの作り方」 http://roy/~madoka/2010/r2/09/09_05_theme_03_checkbox.html どちらも作者は西村まどか ------------------------------------------------------------------------ 2. 各プログラムのリンクを載せたURL http://roy/~c109046/advertise2/rubycgi/fork.html 問題はCの途中まで作成した。 2-A. A カウンタープログラムのURL http://roy/~c109046/advertise2/rubycgi/counter.rb 2-A. B プログラム名は「counter.rb」 カウンタープログラムである。 設問に「ホームページにのせること」と記されていることと、 実際に作成した方が動作の仕組みについて理解できそうだったので、 課題ページにある counter.rb を基にこのプログラムを作成してWEBページで公開した。 2-A. CとD プログラムと解説 #!/usr/bin/env ruby require 'cgi' # CGIを使用する宣言 cgi = CGI.new("html4") # html文書にCGIを使用する定義付け print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードを使用する arv = cgi["arrive"] # arv に name="arrive"の optionが入る number = 0 # 初期値は0 open("dat/number.txt","r") do |read| # open-end文で、number.txtを開き、"r"で読み込んでいる。 # read には一時的にファイルの中身が入る。これを実行して以下の動作を行なう。 while data = read.gets # 変数data に、gets でデータを入れる。dataに dat/number.txt の中身が入る。 if /(\d+)/ =~ data # もし dat/number.txtの構成が1ケタ以上の数字だったら。 number = $1.to_i # 変数 number はその1ケタ以上の数字に置き換わる。 end # open の end end # while の end end # if の end # 以下はWEBページで出力される部分。 print("\n") print("\n") print("ようこそ\n") print("\n") print("\n") printf("

あなたは %d 番目のお客様です。

\n", number) print("

ようこそいらっしゃいました。

\n") print("\n") print("\n") number += 1 # WEBページで出力される度に、すなわちページが開かれる度に number は 1増える。 open("dat/number.txt","w") do |write| # open-end文で、number.txtを開き、"w"で書き込みを行なう。 # write にはファイルの中身が入る。 # これを実行して以下の動作を行なう。 write.printf("%d\n",number) # write に number を代入。すなわち訪問者数が書き込まれる。 end # open の end 2-A. E royで2度実行し、本当に実行するごとに number が増えるか確かめた。 roy{c109046}% ./counter.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JP ようこそ

あなたは 4 番目のお客様です。

ようこそいらっしゃいました。

roy{c109046}% ./counter.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JP ようこそ

あなたは 5 番目のお客様です。

ようこそいらっしゃいました。

4番目、5番目と、1ずつ増えているのでこのプログラムは正常に動作している。 2-A. 考察 私がこのプログラムでカウンタが回るように設定した箇所は、 出力する(ページが開かれる)ごとに変数に1が足されるようにした部分、 1足された変数がテキストファイルに書き込まれるようにした部分である。 しかし、ただプログラム文書の中でそう設定しても、 テキストファイルの属性がログイン者だけしか書き込めないものだと、 WEB上でページが開かれてプログラムが実行されても、テキストファイルに 書き込まれないので、Kterm上で chmod o+w number.txt と実行し、 テキストファイルの属性を -rw-r--rw- に変更させた。 これでログイン者も第三者もテキストファイルに書き込みが出来るように なったので、カウンタが回るようになった。 以上がプログラムを作成してみて気づいたカウンタが回る仕組みである。 参考文献 基礎プログラミング II 第9回 CGIことえらび 「ファイルを使ってみよう」 http://roy/~madoka/2010/r2/09/09_08_theme_06_hashfile.html 作者: 西村まどか ---------------------------------------------------------------------- 2-B. A 計算プログラムのURL http://roy/~c109046/advertise2/rubycgi/amazake.html 2-B. B プログラム名: 甘酒をつくろう! 今回作るプログラムは冬にちなんだもので統一したかった。 計算プログラムということで、冬にまつわるもので計算が成り立つような 題材を見つけるのに手間取ったが、甘酒が酒粕に対して5倍の水を使って 作られることを思い出し、単純ではあるが、酒粕の量を選んでどのくらいの 甘酒が出来るかを計算できるプログラム amazake.rb と 送信ページ amazake.html を作成した。 2-B. CとD プログラムと解説 送信ページ 〜 amazake.html 〜 甘酒をつくろう!(計算プログラム)
# 結果の出力先のプログラムを指定