第 10 回 CGI ことおぼえ レポート課題 氏名:浅沼佑香 学籍番号:C1110039 語学クラス:英語1 コース:社会福祉コース 1.PStoreについて ・%mkdir directory名 ←pstoreの専用のディレクトリーを作る ・%touch データ名.db(rb) ←相手(他人)に書き込みしてもらうや公開する場合 %chmod o+w データ名.db(rb) <プログラム上での構造> ・require 'pstore'('CGI') ←受け取ったデータ ・PStore(cgi) 変数 = PStore(CGI).new("データベース.db(.rb)") ←データベース.db(rb)に書き込む ・PStore 変数.transaction do ←データを読み込んでくれる ・t = Time.now.to_i ←時間差を表す 2.A.最高傑作のプログラムを2つ作成した。 CGI作品のページ:http://roy/~c111003/rubycgi/r2_cgi_best.html リンク先:http://roy/~c111003/adv2/ <>設定<> BMI(体脂肪率)を調べることができるプログラムと漢字や英語辞書を自分で作る ことができるプログラムを作成した。 <>工夫した点<> ラジオボタンやドロップダウンメニューなど、講義で習ったCGIの機能を使用し た。また、幅広い年代の人が使用できるプログラムにした。 <>反省点<> HTMLのほうには色をつけることができたが、rbのプログラム(結果の表示)のほう には色をつけることができなかった。 プログラムに表示させるように、何回もcssを読み込ませたが、読み込まなかっ た。読み込まなかった原因がわからないので、色をつけることができなかった。 <>HTML<> #文章始まり #タイトルやタグの情報を投入 #「best.css」で設定した色を表示 CGI作品 #タイトルを表示 #タイトルやタグの情報はここまで #本体

CGI作品〜最高傑作集〜

#文表示
#改行
  1. 体脂肪率検査
  2. #リンク先表示
    #改行
  3. 漢字・英語辞書
  4. #リンク先表示
    #改行

#改行

注意

#文表示

このプログラムは東北公益文科大学の2年生浅沼佑香が著作権を保有しています。

#文表示

何が起こっても作成者は一切の責任を負いません。

#文表示

#改行が2つ

プログラムに対してのご意見やご感想などがありましたら、

#文表示

こちらまでご連絡下さい。

#文表示
c111003@g.koeki-u.ac.jp
#アドレス表示

#改行が2つ

homepage

#ホームページへ戻る #本体の表示はここまで #文章終わり ------------------------------------------------------------------------------ 1.プログラム:http://roy/~c111003/rubycgi/bmi.html http://roy/~c111003/rubycgi/bmi.rb <>設定<> 自分の身長と体重をいれるとBMI(体脂肪率)を調べることができるプログラム。 <>プログラム<> ==1つ目:bmi.html== #文章始まり #タイトルやタグの情報を投入 #「bmi.css」で設定した色を表示 体脂肪率検査 #タイトルを表示 #タイトルやタグの情報はここまで #本体

体脂肪率を調べよう!!

#文表示
#「./bmi.rb」の結果を吐かせる #タグ内にリンクはここまで #「OK」を押すと選択したものが表示 #「reset」を押すとやり直しする
#結果の表示はここまで

#改行2つ

戻る

#リンク先に戻る #本体の表示はここまで #文章終わり ==2つ目:bmi.rb== #!/usr/bin/env ruby #rubyを動かす #coding: euc-jp #日本語表示 require 'cgi' #「CGI」を使う bmi = CGI.new(:accept_charset => "EUC-JP") #CGIの変数を日本語で受け取る print("Content-type: text/html; charset=EUC-JP\n\n") #CGIの変数を日本語で書き出す a = bmi["namae"] #aはnamaeの値と同じ b = bmi["seibetu"] #bはseibetuの値と同じ c = bmi["shinchou"] #cはshinchouの値と同じ d = bmi["taijyu"] #dはtaijyuの値と同じ print("\n") #文章の始まり print("\n") #タイトルやタグの情報を投入 print("診断結果\n") #タイトル表示 print("\n") #タイトルやタグの情報はここまで print("\n") #本体 print("

結果を表示します!!

\n") #文を表示 printf("

性別:%s 名前:%sさん

\n",b ,a) #b,aの値を表示 1 bm = d.to_f / c.to_f / c.to_f #BMI = 体重(小数あり)÷身長(小数あり)÷身長(小数あり) printf("

BMIは %d でした!!

\n",bm) #bmの式の答えを表示 if bm < 18.5 #もしBMIが18.5以下なら print("

あなたは低体重です。

\n") #文を表示 risou = c.to_f * c.to_f * 22 #理想体重 = 身長(小数あり)×身長(小数あり)×22(標準BMI) printf("

理想体重は %d kg です。

\n",risou) #理想体重の式の答えを表示 genjitu = risou - d.to_i #現実の体重 = 理想体重 ー 体重(小数あり) printf("

あと %d kg 太りましょう!!

\n",genjitu) #体重差を表示 elsif bm > 25 #または、BMIが25以上の場合 print("

あなたは肥満です。

\n") #文を表示 risou = c.to_f * c.to_f * 22 #理想体重 = 身長(小数あり)×身長(小数あり)×22(標準BMI) printf("

理想体重は %d kg です。

\n",risou) #理想体重の式の答えを表示 genjitu = d.to_i - risou #現在の体重 = 体重(小数あり) ー 理想体重 printf("

あと %d kg 痩せましょう!!

\n",genjitu) #体重差を表示 else #その他のBMIならば print("

あなたは標準体重です。

\n") #文表示 print("

問題ありません。

\n") #文表示 end #if文終わり print("\n") #本体の表示はここまで print("\n") #文章終わり <>プログラムの変更点<> CGIの講義で習ったことを参考に作成した。BMIは、3段階の分類に分けることが できるので「if」文を使い、対応させるようにした。 <>実行結果<> ==ホームページ上での結果== ○肥満の場合 身長:160cm 体重:69kg 診断結果

結果を表示します!!

性別:女性 名前:あいうえおさん

BMIは 26 でした!!

あなたは肥満です。

理想体重は 56 kg です。

あと 12 kg 痩せましょう!!

○標準の場合 身長:140cm 体重:40kg 診断結果

結果を表示します!!

性別:女性 名前:あいうえおさん

BMIは 20 でした!!

あなたは標準体重です。

問題ありません。

○低体重の場合 身長:157cm 体重:45kg 診断結果

結果を表示します!!

性別:女性 名前:あいうえおさん

BMIは 18 でした!!

あなたは低体重です。

理想体重は 54 kg です。

あと 9 kg 太りましょう!!

==ktrem上での結果== ○肥満の場合 roy{ASANUMA Yuka}% ./bmi.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) namae="あいうえお" seibetu="女性" shinchou="1.60" taijyu="69" /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:610: warning: regexp match /.../n against to EUC-JP string Content-type: text/html; charset=EUC-JP 診断結果

結果を表示します!!

性別:女性 名前:あいうえおさん

BMIは 26 でした!!

あなたは肥満です。

理想体重は 56 kg です。

あと 12 kg 痩せましょう!!

○標準の場合 roy{c111003}% ./bmi.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) namae="あいうえお" seibetu="女性" shinchou="1.40" taijyu="40" /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:610: warning: regexp match /.../n against to EUC-JP string Content-type: text/html; charset=EUC-JP 診断結果

結果を表示します!!

性別:女性 名前:あいうえおさん

BMIは 20 でした!!

あなたは標準体重です。

問題ありません。

○低体重の場合 roy{c111003}% ./bmi.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) namae="あいうえお" seibetu="女性" shinchou="1.57" taijyu="45" /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:610: warning: regexp match /.../n against to EUC-JP string Content-type: text/html; charset=EUC-JP 診断結果

結果を表示します!!

性別:女性 名前:あいうえおさん

BMIは 18 でした!!

あなたは低体重です。

理想体重は 54 kg です。

あと 9 kg 太りましょう!!

<>考察<> 「bc -l」で計算を確認した。 ○肥満の場合 身長:160cm 体重:69kg roy{c111003}% bc -l [~/public_html/rubycgi] 69/1.60/1.60 26.95312500000000000000 ←BMIの計算の結果は、小数点を切り捨てれば計 算の答えが一致する。 1.60*1.60*22 56.3200 ←理想体重の結果は、小数点を切り捨てれば計算の答えが一致 する 69-56 13 ←今の体重から理想体重を引くと答えが一致しないが、理想体重の数 値を小数点以上四捨五入すると、結果が一致する。 ○標準の場合 身長:140cm 体重:40kg roy{c111003}% bc -l [~/public_html/rubycgi] 40/1.40/1.40 20.40816326530612244897 ←BMIの計算の結果は、小数点を切り捨てれば計 算の答えが一致する。 1.40*1.40*22 43.1200 ←理想体重の結果は、小数点を切り捨てれば計算の答えが一致 する ○低体重の場合 身長:157cm 体重:45kg roy{c111003}% bc -l [~/public_html/rubycgi] 45/1.57/1.57 18.25631871475516248123 ←BMIの計算の結果は、小数点を切り捨てれば計 算の答えが一致する。 1.57*1.57*22 54.2278 ←理想体重の結果は、小数点を切り捨てれば計算の答えが一致 する 54-45 9 ←今の体重から理想体重を引くと答えが一致しないが、理想体重の数 値を小数点以上四捨五入すると、結果が一致する。 <>参考文献<> 最後に記載 ------------------------------------------------------------------------------ 2.プログラム:http://roy/~c111003/rubycgi/jisho.html http://roy/~c111003/rubycgi/jisho.rb http://roy/~c111003/rubycgi/kanji.txt http://roy/~c111003/rubycgi/eigo.txt <>設定<> 覚えた漢字や単語を入力すると違うテキストに結果が書き込まれ、辞書のように 表示されるプログラム。 <>プログラム<> ==1つ目:jisho.html== #文章始まり #タイトルやタグの情報を投入 #「jisho.css」で設定した色を表示 漢字・英語辞書 #タイトルを表示 #タイトルやタグの情報はここまで #本体

漢字・英語辞書を自分で作ろう!!

#文表示
#「./jisho.rb」の結果を吐かせる #タグ内にリンクはここまで #「決定」を押すと選択したものが表示 #「キャンセル」を押すとやり直しする
#結果の表示はここまで

#改行2つ

漢字辞書の履歴

#テキストのページへ飛ぶ

英語辞書の履歴

#テキストのページへ飛ぶ

#改行2つ

戻る

#リンク先に戻る #本体の表示はここまで #文章終わり ==2つ目:jisho.rb== #!/usr/bin/env ruby #rubyを動かす #coding: euc-jp #日本語表示 require 'cgi' #「CGI」を使う jisho = CGI.new(:accept_charset => "EUC-JP") #CGIの変数を日本語で受け取る print("Content-type: text/html; charset=EUC-JP\n\n") #CGIの変数を日本語で書き出す a = jisho["menu"] #aはmenuの値と同じ b = jisho["tanngo"] #bはtanngoの値と同じ c = jisho["imi"] #cはimiの値と同じ print("\n") #文章の始まり print("\n") #タイトルやタグの情報を投入 print("辞書\n") #タイトル表示 print("\n") #タイトルやタグの情報はここまで print("\n") #本体 if /漢字/e =~a #もし漢字を選択したならば open("kanji.txt","a") do |k| #テキストに新しいデータ書き込むと同時に、すべて表示する printf("

%s辞書

\n",a) #文表示 print("

最初のページに戻って辞書を調べてみよう!!

\n") #文表示 k.printf("漢字:%s------読み:%s\n",b ,c) #書いたデータを表示 end #open文終わり else /英語/e =~a #また英語を選択したならば open("eigo.txt","a") do |e| #テキストに新しいデータ書き込むと同時に、すべて表示する printf("

%s辞書

\n",a) #文表示 print("

最初のページに戻って辞書を調べてみよう!!

\n") #文表示 e.printf("単語:%s------意味:%s\n",b ,c) #書いたデータを表示 end #open文終わり end #if文終わり print("\n") #本体の表示はここまで print("\n") #文章終わり <>プログラムの変更点<> 今までの講義で習ったことを参考に作成した。また、書き込んだデータをすべて 表示させられるように、open文で「a」のモードにした。 <>実行結果<> ==ktrem上での結果== ○漢字の場合 roy{c111003}% ./jisho.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) menu="漢字" tanngo="酒田" imi="さかた" /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:610: warning: regexp match /.../n against to EUC-JP string Content-type: text/html; charset=EUC-JP 辞書

漢字辞書

最初のページに戻って辞書を調べてみよう!!

○英語の場合 roy{c111003}% ./jisho.rb [~/public_html/rubycgi] (offline mode: enter name=value pairs on standard input) menu="英語" tanngo="English" imi="英語" /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:602: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:592: warning: regexp match /.../n against to EUC-JP string /usr/local/ruby/1.9/lib/ruby/1.9.1/cgi/core.rb:610: warning: regexp match /.../n against to EUC-JP string Content-type: text/html; charset=EUC-JP 辞書

英語辞書

最初のページに戻って辞書を調べてみよう!!

==web上の場合== ○漢字の場合 辞書

漢字辞書

最初のページに戻って辞書を調べてみよう!!

○英語の場合 辞書

英語辞書

最初のページに戻って辞書を調べてみよう!!

<>考察<> ○漢字の場合:kanji.txt 漢字:酒田------読み:さかた 漢字:山形------読み:やまがた ○英語の場合:eigo.txt 単語:English------意味:英語 単語:love------意味:愛 結果テキストに書き込まれたので、このプログラムは正しいと言える。 <>参考文献<> 最後に記載 B.ホームページ:http://roy/~c111003/adv2/ バーナー:logo_r2_c111003.png <工夫した点> ロゴは「基礎プログラミングII」の文字で、カラフルにした。 署名を見やすい位置にした。 <反省点> 操作を忘れていたため、ロゴ作成には時間がかかってしまい、ホームページ上 で確認しながら、何回も作り直した。操作を間違えないように、操作で分から ないところを今後のためにまとめた。 ・日本語入力をする場合は、「addfont」をktrem上で打つ。 ・署名をいれる際は、「t」のボタンをクリックしてから、表示したいところ にカーソルを持って行く。 ・プレビュー名に表示したい署名を打つ。 ・十字のアイコンが出てくると、文字の移動が可能。 3.高田美咲さんの作品 <アドレス> http://roy/~c111090/rubycgi/order_input_c111090.html <根拠> ホームページも見やすいし、名前や注文するものを選択して実行すると、広告 のように分かりやすく表示されたからである。また、ドロップダウンメニュー やCGIスプリクトなど複数のCGI機能を使用しており、参考にしたいプログラム だと感じた。 4.参考文献 ○基礎プログラミングI 「第11回 自由課題準備 / ロゴ作成」 西村 まどか ・ロゴの作成 http://roy/~madoka/2012/r1/11/r1_11_02_theme_02_logo.html ・ロゴに署名を入れるには http://roy/~madoka/2012/r1/11/r1_11_04_theme_03_signature.html ○基礎プログラミングII 「第10回 CGI ことおぼえ」 西村 まどか ・CGI で使うことのできるデータベース http://roy/~madoka/2012/r2/10/r2_10_01_theme_01_pstore.html ・プログラム部分について http://roy/~madoka/2012/r2/10/r2_10_02_theme_02_program.html ・時間を key として http://roy/~madoka/2012/r2/10/r2_10_03_theme_03_time.html <共同学習者> 伊藤 詩野 / 佐藤 祐子 / 田中井 晶帆 / 村上 茉奈美