第 9 回 ことえらび レポート課題 氏名:菊地瑞紀 学籍番号:c1100673 語学クラス:英語6 コース(系):地域共創コース 1-A ラジオボタンとは複数の選択肢から一つだけ選択するもの。 (htmlの例) うさぎ かめ type="radio" でラジオボタンをつかう宣言をする。 name="animal" で使うラジオボタンの区別をする。複数の選択肢でもanimalの 部分は全て同じにする。 value="うさぎ" で選択した値をプログラムに送る また、inputタグにcheckedを入れると最初から選択されているように設定でき る。 (プログラム例) animal = cgi["animal"] で選択された項目をanimalに代入する 1-B チェックボックスは複数の選択肢から、一つだけでなく複数個選択できるもの。 (htmlの例) うさぎ かめ いぬ type="checkbox" でチェックボックスを使う宣言をする。 name="cute" で使うチェックボックスの区別をする。複数の選択肢の時は"" でくくられた部分の名前を全て異るものにする value="かわいい" で選択した値をプログラムに送る ラジオボタンと同様に、inputタグにcheckedを入れると最初から選択されているように設定でき る。 (プログラムの例) anm[0] = cgi["cute"] anm[1] = cgi["iyashi"] anm[2] = cgi["cool"] name="cute" で決まった変数を値を配列に代入する 1-C [タイトル] RUBY's sheep [解説、方法] トップページで羊が出てきたときに、かわいい羊の画像で課題で疲れた心を少し でも癒せればと思い、これを作った。 羊毛の部分は最初直線だったのが、友達にアドバイスにより曲線にした。 主に、直線と曲線を使用している。 また、吹き出しを作り、文字を入れた。 [工夫したところ] RUBYは楽しいものなので、色をたくさん使って楽しい感じにした。 塗りつぶしをボーダーやドットを使い、可愛くした。 広告ページに掲載しました http://roy/~c110067/advertise2/ 2 A B D を作成しました。 作成したプログラムの公開ページ http://roy/~c110067/advertise2/rubycgi/fork.html 2-A a、[カウンタのページリンク] http://roy/~c110067/advertise2/rubycgi/counter.rb b、 [タイトル] カウンタ [作成意図] 自分のHPに何人アクセスしているのかを調べたかった。また、ブログなど で良く見かけるカウンターの機能がどのようになっているのか理解しようと思っ たから。 c、d、 [入力部分] 入力部分は、アクセスした時点で入力される。 カウンター (http://roy/~c110067/advertise2/rubycgi/fork.html ソースより抜粋) この、カウンターのリンクを押した時点で入力される。 [表示部分(プログラム本体)] counter.rb #!/usr/bin/env ruby require 'cgi' # CGIを使う cgi = CGI.new("html4") # CGIをHTML文書に使う宣言 print("Content-type: text/html; charset=EUC-JP\n\n") # HTMLに書き込む、文字は日本語に arv = cgi["arrive"] # Ruby に CGI でもらってきた値を代入 # "arrive" を arv として取りこむ number = 0 # カウンタ初期値は 0 から始まる open("number.txt","r") do |read| # number.txt を読み込む while data = read.gets # 読み込むデータが無くなるまで繰り返す if /(\d+)/ =~ data # データが一桁以上の数字だったら number = $1.to_i # number にその数字を整数として取りこむ end # if の end end # while の end end # open do の end print("\n") # htmlの始まり print("
\n") # html の上部を表すタグ print("ゆっくりしていってね!
\n") # メッセージ print("課題のページへ[戻る]") # 戻れるようにするリンクタグ print("\n") # body を閉じる print("\n") # html を閉じる number += 1 # number に1を足していく open("number.txt","w") do |write| # number.txt に書き込む write.printf("%d\n",number) # 訪問者を書き込む end # open do の end e、[実行結果] カウンターのページより、 カウンター あなたは 32 人目のお客様です* ゆっくりしていってね! 課題のページへ[戻る] と表示された。 [考察] pan{c110067}% ./counter.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JPゆっくりしていってね!
課題のページへ[戻る] pan{c110067}% ./counter.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JPゆっくりしていってね!
課題のページへ[戻る] 2回実行したところ、37、38人と値が増えていることが分かり、またHPでも正し く表示された。したがって、このプログラムは正しいようである。 また、テキストファイル number.txt を chmod o+w とすることで -rw-r--rw- となっ た。そうすることで、number に 1 ずつ加算される。また、この number.txt は data ディレクトリのしたにファイルを作成した。 2-B a、 [計算プログラムのページリンク] http://roy/~c110067/advertise2/rubycgi/keisan.html b、 [タイトル] BMI・標準体重計算 [作成意図] 計算のプログラムで思いついたのが BMI の計算だった。前期もこのネタでプログ ラムを作っていたので、CGIで作ったら面白そうだと思った。 c、d、 [入力部分] keisan.html好きな季節を選んで下さい
[表示部分(プログラム本体)] #!/usr/bin/env ruby require 'cgi' # CGIを使う cgi = CGI.new("html4") # CGIをHTML文書に使う宣言 print("Content-type: text/html; charset=EUC-JP\n\n") # HTMLに書き込む、文字は日本語に color = cgi["color"] print("\n") # htmlの始まり print("\n") # html の上部を表すタグ print("好みの色はみつかりましたか?
\n") # メッセージ print("課題のページへ[戻る]\n") # 戻れるようにするリンクタグ print("\n") # body を閉じる print("\n") # html を閉じる e、[実行結果] spring -- 春 pan{c110067}% ./change.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) color="spring" Content-type: text/html; charset=EUC-JP好みの色はみつかりましたか?
課題のページへ[戻る] summer -- 夏 pan{c110067}% ./change.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) color="summer" Content-type: text/html; charset=EUC-JP好みの色はみつかりましたか?
課題のページへ[戻る] autum -- 秋 pan{c110067}% ./change.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) color="autum" Content-type: text/html; charset=EUC-JP好みの色はみつかりましたか?
課題のページへ[戻る] winter -- 冬 pan{c110067}% ./change.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) color="winter" Content-type: text/html; charset=EUC-JP好みの色はみつかりましたか?
課題のページへ[戻る] [考察] 春、夏、秋、冬ともしっかり場合分けがされているので、このプログラムは正し く作動しているようだ。 感想 今回は、A のカウンタのプログラムで-rw-r--rw- にするということに気が付 かずすごく苦戦した。しかし、気付けたときの嬉しさはとても大きなものだっ た。Bの計算のプログラムもうまくいかず、エラーが出てしまうことがなんども あったがなんとか形にすることができた。 D のプログラムは if-end での場合 分けだけだったので、比較的簡単だった。 参考文献 著者 : 西村まどか 基礎プログラミング II 第 9 回 (ことえらび) 「テキストフィールドの作り方」 http://roy/~madoka/2011/r2/09/r2_09_06_theme_06_textfield.html 基礎プログラミング II 第 9 回 (ことえらび) 「ファイルを使ってみよう」 http://roy/~madoka/2011/r2/09/r2_09_08_theme_08_hashfile.html ------------------------------ attachments ------------------------------ Multipart/Mixed 50/ 1 Text/Plain(guess) *Cover.txt B 2 Image/Png char_r2_c.. 3 Text/Plain(guess) char_r2_c.. 4 Text/Plain(guess) counter.rb 5 Text/Plain(guess) keisan.rb 6 Text/Plain(guess) change.rb 7 . --------0-1-2-3-4-5-6-7-8-9---------------------------------------------- ----------------------- 東北公益文化大学 公益学部 公益学科 2年 菊地瑞紀 c110067@f.koeki-u.ac.jp -----------------------