第 9 回 CGI ことえらび レポート課題 氏名:井上 宏美 学籍番号:c1110223 語学クラス:英語3 コース:政策マネジメント 1.筆記問題 A.ラジオボタンとは、複数の項目の中から1つだけ選択する仕組みのことである。 プログラムとして表すと、 選択肢a 選択肢b となる。 type ="radio"は、ラジオボタンを設定することを宣言する。 name ="ラジオボタン名"は、プログラムに使用される値。使用者には見えないよ うになっている。ここで使うラジオボタンを区別することが出来る。 それに対して選択肢は、使用者が見ることができる文字である。 value ="変数"は、選択肢を選びそのデータが送られると、変数がプログラムに 送られるようになっている。 例えば、今回の授業で作成したプログラム内の一部を抜粋すると tour= c["station"] この場合、htmlで選択した項目がstationに代入されることを表している。 B.チェックボックスとは、複数の項目の中から複数の選択が出来る仕組みのこと である。 プログラムとして表すと、 選択肢a 選択肢b となる。 type ="checkbox"は、チェックボックスを設定することを宣言する。 name ="チェックボックス名は、プログラムに使用される値。 項目を選択して、そのデータが送信されるとその変数が、CGIに送信されるよう になっている。 アンケートなどの「複数解答可」はこの方式が使われていると考える。 C.基礎プログラミングのキャラクタ画像 char_r2_c111022.png の解説 画像のリンク先は http://roy/~c111022/adv2/char_r2_c111022.png 解説:以前のプログラムを作成する時に出てきた謎の宇宙人のイメージ画像を作 成した。宇宙人といっても近寄りづらい冷たいイメージではなく、愛らしい笑顔 のキャラクターをイメージした。そのため、明るい黄色を使用して口の大きさを 強調するようにした。しかしもう少し、可愛らしく出来れば良かったと思った。 2.プログラム問題 各プログラムを載せたURL http://roy/~c111022/rubycgi/fork.html A.i)リンクのアドレス http://roy/~c111022/rubycgi/counter.html ii)CGIの題名とその意図 題名:カウンタ 意図:自分のwebのサイトに法文した人数を数えるプログラムを考えた。 iii)各部分の解説と送信結果の表示する部分 (counter.rb) #!/usr/bin/env ruby require 'cgi' # CGI の使用を宣言する cgi = CGI.new(:accept_charset => "EUC-JP") # CGI に変数代入 print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードの定義する arv = cgi["arrive"] number = 0 #初期値を 0 と設定する open("number.txt","r") do |read| # openで "number.txt" を開き "r" でデータを読みこむ while data = read.gets # 読みこんだデータを "read" にしまう if /(\d+)/ =~ data # data 変数に number.txt からデータを持ってくる number = $1.to_i end # ifに対する終わり end # whileに対する終わり end # open doに対する終わり print("\n") # htmlで表示される print("\n") print("カウンタ\n") # タイトルが表示される print("\n") # counter.css のスタイルシートを使用する print("\n") # print("\n") # ここから本文は始まる print("

ようこそ!!

\n") printf("

あなたは %d 人目 のお客様になります。

\n", number) #人数を表示する print("\n") print("\n") number += 1 # numberに 1 足す open("counter.txt","w") do |write| # counter.txtに書きこむ。 write.printf("%d\n",number) # 書きこむ内容は number に代入。 end # open do 終わり -----入力部分------(counter.html) カウンタ

ここに訪れた人の人数が知ることが出来ます。

iv.実行結果 Ktermで実行すると、 pan{c111022}% ./counter.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) Content-type: text/html; charset=EUC-JP カウンタ

ようこそ!!

あなたは 5 人目 のお客様になります。

v.考察 vの実行結果から、実行の回数を増やすと人数も増えることが分かった。 なので、カウンタのプログラムは正しく起動しているといえる。 カウンタが動く理は、counter.rb でテキストファイルを指定し counter.rbの実行する時に 1 を加えて書き換えられているからだと考える。 Kterm上で chmod o+w number.txt と入力し -rw-r--rw-と変更することで、 カウンタが動くことが可能となる。 B. i)リンクのアドレス http://roy/~c111022/rubycgi/suuji.html ii)CGIの題名とその意図 題名:計算プログラム 意図:四則計算が出来るプログラムを作成した。 iii)各部分の解説と送信結果の表示する部分 (suuji.rb) #!/usr/bin/env ruby $KCODE = 'e' # 日本語の使用宣言する require 'cgi' # CGIを使用をする cgi = CGI.new(:accept_charset => "EUC-JP") # CGI の Hash をつくる # htmlで入力されたものが CGI に代入 # html 文書で使用する print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードに sh1 = cgi["atai0"] # sh1 に CGI の 値 atai0 を代入 sh2 = cgi["atai1"] # sh2 に CGI の 値 atai1 を代入 s = cgi["shisoku"] # s に CGI の 値 shisoku を代入 print("\n") #以下 html で表示される部分 print("\n") print("計算結果は\n") print("\n") # keisan という css を使う print("\n") print("\n") if s == "plas" # s が "plas" ならば a = sh1.to_i + sh2.to_i # sh1 + sh2 に elsif s == "mainasu" # s が "mainasu" ならば a = sh1.to_i - sh2.to_i # sh1 - sh2 に elsif s == "kake" # s が "kake" ならば a = sh1.to_i * sh2.to_i # sh1 * sh2 に else # s が 上記以外 ならば a = sh1.to_f / sh2.to_f # sh1 / sh2 に end print("

計算結果は

\n") # 以下、計算結果の表示 if s == "plas" # s が "plas" ならば printf("

%d + %d = %d

\n",sh1 ,sh2 ,a) #上で計算した結果を表示 elsif s == "mainasu" # s が "mainasu" ならば printf("

%d - %d = %d

\n",sh1 ,sh2 ,a) #上で計算した結果を表示 elsif s == "kake" # s が "kake" ならば printf("

%d * %d = %d

\n",sh1 ,sh2 ,a) #上で計算した結果を表示 else # s が 上記以外 ならば printf("

%d / %d = %11.2f

\n",sh1,sh2,a.to_f) #上で計算した結果を表示 end print("\n") print("\n") 入力部分(suuji.html) 計算 #タイトルを入力

四則計算計算プログラム

#web上で表示されるタイトル