氏名:木内雄
学籍番号:c1090561
語学クラス:中国語
コース(系):政策
1.
require 'pstore'でデータを貯める宣言をし、データベースを作成すること
でopen - end を使わずともファイルを出力することが出来る。
formタグの間でデータを入力させることができる。
前回の授業で作ったcomment.rbだと、
db = PStore.new("comment.db")でbbs.dbにデータをいれることにしている。
2.
http://roy/~c109056/advertise2/rubycgi/r2_cgi_best.html
に今回の最高傑作を公開している。
このCGIは今流行のtwitterを模して作っている。
みんなで呟けるのもを作った。
ホームページ本体
r2_cgi_best.html
呟きの間
注意事項
このプログラムは、東北公益大学2009年度2年木内雄が著作権を保有しています。
このプログラムの入手・改変・再配布はいずれも無料で行なうことができます。
ただし、それらの際に生じたいかなる結果に対しても著作権者が責任を負うことはありませんので、ご了承ください。
連絡先
ご意見、ご感想等がありましたら、下記の連絡先へ連絡ください。
c109056@e.koeki-u.ac.jp
back to my HP top
//ホームページの説明//
テキストフィールドで氏名
ラジオボタンで、今考えていること
チェックボタンで、今日の気分
ドロップダウンメニューで今日の日付
テキストエリアで呟き
その結果を出力するプログラムとして、r2_cgi_best.rbも作成している。
訪問者の数を記録しておくためのr2_cgibest.txt
書き込まれた感想とその氏名を記録しておくためのr2_cgi_best2.txtも作成している。
プログラム本体
r2_cgi_best.rb
#!/usr/koeki/bin/ruby
$KOCDE = 'e' #日本語コードでEUCを出力する。
require 'cgi' #CGIを使う。
require 'date'
cgi = CGI.new("html4") #CGIをhtml文書に使う。
print("Content-type: text/html; charset=EUC-JP\n\n")
namae = cgi["simei"]
tuki = cgi["month"]
hiniti = cgi["day"]
kimoti = cgi["think"]
why = Array.new
why[0] = cgi["saikou"]
why[1] = cgi["itumo"]
why[2] = cgi["hukai"]
why[3] = cgi["dead"]
hitokoto = cgi["how"]
number = 0 #何人目かを数える変数は number とした。
open("r2_cgi_best.txt", "r") do |yomi|
while data = yomi.gets
if /(\d+)/ =~ data
number = $1.to_i
end #ifのエンド
end #whileのエンド
end #openのエンド
comento = Array.new
open("r2_cgi_best2.txt", "a") do |log|
log.printf("%s\t%s\n",cgi["simei"],cgi["how"])
end
open("r2_cgi_best2.txt", "r") do |yomikomi|
while line = yomikomi.gets
comento << line.chomp
end
end
print("\n")
print("\n")
print("呟き広場・書きこみ結果 \n")
print("\t \n")
print("\n")
print("\n")
printf("%d人目の訪問者・%sさんの呟き \n",number,namae)
print("\n")
print("\t\n")
printf("\t日付 %s %s \n",tuki,hiniti) #tukiと hinitiの代入。
print("\t \n")
print("\t\n")
printf("考え %s \n",kimoti)
print("\t \n")
print("\t\n")
print("気持ち ")
print(" ")
for tyekku in why
printf("%s \n",tyekku)
end
print(" ")
print("\t \n")
print("\t\n")
printf("呟き %s \n",hitokoto)
print("\t \n")
print("\t
\n")
print(" \n")
print("みんなの呟き \n")
print("\n")
print("\t\n")
print("\t ")
for come,simei in comento
printf("%s\t%s
\n",simei,come)
print(" ")
end
print("呟きの間へ
\n")
print(" \n")
print("\t \n")
print("\t
\n")
print("\n")
print("\n")
number += 1 #numberを一つずつ増やして行く。
open("r2_cgi_best.txt", "w") do |kaki|
kaki.printf("%d\n",number)
end
//プログラムの説明//
htmlから、rbにデータを書き込ませるために
で指定のrbに入力させ
で結果を送信させる
実行結果
pan{c109056}% ./r2_cgi_best.rb [~/public_html/advertise2/rubycgi]
(offline mode: enter name=value pairs on standard input)
simei="木内"
month="12月"
day="10日"
thint="無心"
saikou="最高"
itumo="いつもどうり"
hukai="不快"
dead="死にたい"
how="プログラミング"
Content-type: text/html; charset=EUC-JP
呟き広場・書きこみ結果
70人目の訪問者・木内さんの呟き
日付 12月 10日
考え
気持ち 最高
いつもどうり
不快
死にたい
呟き プログラミング
みんなの呟き
木内 遠藤と絹人に囲まれてる
遠藤 けんとうざい
みらいのえんどう 今日もけんとはうざい
でも車に引かれたのでうれしい
永井 腹減った
↑こっちみんな
kdsjf
kdsjf
kdsjf
kdsjf
kdsjf
kdsjf
ちんむー きぬとをいじめないでー
ちんむー きぬとをいじめないでー
kinai
木内 プログラミング
呟きの間へ
//考察//
実行してみたところ正しく書き込まれた。
カウンターも一つずつ増えていった。
ホームページ上でも全て正しく表示されいた。
なおかつ正常に書き込まれていった。
3.感想
今回のレポートは最高傑作を作れというものだったので、CGIを使ってtwitterの
ようなものを作ってみようと思った。過去作品を参考にしつつ自分なりに作れた。
興味のあった作品は工藤智也さんのオンライン携帯ショップだった。多くのCGI
を使ってあり、それによって結果が変わるプログラムに感心した。更に、携帯の絵がと
ても上手かったからである。
//参考文献//
http://roy/~madoka/2009/r2/10/10-02-pstore.html
「基礎プログラミングII 第10回 CGIことおぼえ プログラム部分について」
http://roy/~madoka/2009/r2/08/08-06-actionprogram.html
「基礎プログラミングII 第08回 CGIことはじめ CGIスクリプトの解説」
http://roy/~madoka/2009/r2/02/02-07-for-hash.html
「基礎プログラミングII 第02回 なになにといえばこれこれ
Hashの対を表示するには」
http://roy/~madoka/2009/r2/09/09-04-radio.html
「基礎プログラミングII 第09回 CGIことえらび ラジオボタンの作り方」
http://roy/~madoka/2009/r2/09/09-05-chkbox.html
「基礎プログラミングII 第09回 CGIことえらび チェックボックスの作り方」
http://roy/~madoka/2009/r2/09/09-06-textfield.html
「基礎プログラミングII 第09回 CGIことえらび テキストフィールドの作り方」
http://roy/~madoka/2009/r2/09/09-07-textarea.html
「基礎プログラミングII 第09回 CGIことえらび テキストエリアの作り方」
共同学習者
遠藤裕貴、横山ひろき