第 10 回 ことおぼえ レポート課題 氏名: 吉住 貴則 学籍番号: C1101980 語学クラス: 英語 2 コース(系): 地域共創コース 1、筆記問題 A、pstore を使った CGI の使い方 : require 'pstore' で PStore を 利用する定義 : db = PStore.("◯◯.db") … dbに入っているものを書き込む : これは管理する人だけでなく WEB を見る方も WEB ページ上で 書けるようにするもの 2A、プログラム問題 1、課題1 : 東北公益文科大学 教職員 名簿 (kyoin.html) アドレス : http://roy.e.koeki-u.ac.jp/~c110198/advertise2/rubycgi/kyoin.html 2、考えた設定 この大学に入学して約2年。それでも、私は未だに先生方の研究室が よくわからない。友だちと話をしていても研究室がわからないと言う事が よく話題に出る。そこで、先生を選択し決定すると 研究室番号、メールアドレスが出てくるプログラムを作成した。 3、作成したプログラム、HTML、CSS #!/usr/bin/env ruby #ruby を 使うのに env コマンドを立ち上げて使う $KCODE = 'e' # 日本語 で 表示 require 'cgi' # CGI を使う cgi = CGI.new('html4') # CGI を HTML 文書に使う hito = Hash.new # hito 変数を HASH として利用 print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードの定義 kin = cgi["kyoin"] # Ruby に CGI でもらってきた kyoin を代入 open("kyoin.dat","r") do |sensei| # データ kyoin.dat を 変数 sensei に読みこむ while line = sensei.gets # 変数 sensei に データを繰り返し読ませる if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~line # /S+ : 1文字以上の空白以外 # /s+ : 1文字以上の空白 # ( ) : 正規表現 の くくり hito[$1] = $1,$2,$3,$4 # データを取り出す # $1 : 1つ目の (\S+) # $2 : 2つめの 、、 # $3 : 3つめの 、、 # $4 : 4つめの 、、 end # if の end end # while の end end # open 〜 do の end print("\n") # html の 書き始め print("\n") # head の 書き始め print("\n") # css である kyo.css を このプログラムで利用 # = の後、くくりの " の 前に 「 \ 」を必ずつけないと作動しない。 print("東北公益文科大学 教員名簿\n") # title print("\n") # head の 書き終わり print("\n") # body の 書き始め print("

教員名簿

\n") print("

教員名

\n") printf("

%s先生

\n",hito[kin][0]) # dat の書き換えをするのに # printf を利用 # hito[kin][0] : hash 変数 を 配列に見立てて cgi の kin を 代入 # その要素の 0 番目 # hito[kin][1] : 、、 1 番目 # hito[kin][2] : 、、 2 番目 # hito[kin][3] : 、、 3 番目 print("

研究室

\n") printf("

%s

\n",hito[kin][1]) # dat の書き換えをするのに # printf を利用 print("

内線電話

\n") printf("

%s

\n",hito[kin][2]) # dat の書き換えをするのに # printf を利用 print("

メールアドレス

\n") printf("

%s

\n",hito[kin][3]) # dat の書き換えをするのに # printf を利用 print("

これは個人情報なので外部へ持ち出し禁止!!

\n") # h2 文で 画面に表示 print("\n") # body の 書き終わり print("\n") # html の 書き終わり 東北公益文科大学 教職員 名簿

東北公益文科大学 教職員 名簿

    教職員一覧

body { background-color: #99ffff; } h1 { margin: 50px 30px 0px 30px; padding: 0px 0px 0px 10px; border-left: solid 10px #881111; border-bottom: solid 1px #ff0000; color: #003333; } h2{text-align: center} h3{text-align: center} p{text-align: center} body { background-image : url(daiya.png); } h1 { margin: 50px 30px 0px 30px; padding: 0px 0px 0px 10px; border-left: solid 10px #881111; border-bottom: solid 1px #ff0000; color: #003333; } h2{text-align: center} h3{text-align: center} p{text-align: center} 4、もとにしたプログラム sales.rb を 基本に作成した。 HASH の 配列をどういう風に使えば、正規表現で区切られた $1 などを 繁栄させられるかというところにとても苦労した。 そのため、 hito[$1] = $1,$2,$3,$4 というやり方を 発見し、プログラムが作動したときは本当に嬉しかった。 このようなところが1番の頑張りだ。 5、実行結果 pan{c110198}% ./kyoin.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) kyoin="西村まどか" Content-type: text/html; charset=EUC-JP 東北公益文科大学 教員名簿

教員名簿

教員名

西村まどか先生

研究室

B-4

内線電話

1258

メールアドレス

maoka.nishimura@koeki-u.ac.jp

これは個人情報なので外部へ持ち出し禁止!!

6、考察 計算を使ったプログラムを作成していないため、 ある2人の先生を選択し、その kterm と web の 実行結果で 正常か判断したい。 1) < 渡辺 暁雄 准教授 > [kterm] pan{YOSHIZUMI Takanori}% ./kyoin.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) kyoin="渡辺暁雄" Content-type: text/html; charset=EUC-JP 東北公益文科大学 教員名簿

教員名簿

教員名

渡辺暁雄先生

研究室

H-1

内線電話

1286

メールアドレス

akeo@koeki-u.ac.jp

これは個人情報なので外部へ持ち出し禁止!!

[web] 教員名簿 教員名 渡辺暁雄先生 研究室 H-1 内線電話 1286 メールアドレス akeo@koeki-u.ac.jp これは個人情報なので外部へ持ち出し禁止!! 2) < 三原 容子 教授 > [kterm] pan{c110198}% ./kyoin.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) kyoin="三原容子" Content-type: text/html; charset=EUC-JP 東北公益文科大学 教員名簿

教員名簿

教員名

三原容子先生

研究室

D-2

内線電話

1266

メールアドレス

y-mihara@koeki-u.ac.jp

これは個人情報なので外部へ持ち出し禁止!!

[web] 教員名簿 教員名 三原容子先生 研究室 D-2 内線電話 1266 メールアドレス y-mihara@koeki-u.ac.jp これは個人情報なので外部へ持ち出し禁止!! ※ これらのものが正常に動いたため、 このプログラムは成功だ。 2B、プログラム問題 1、課題2 : 演歌大辞典 (most.html) アドレス : http://roy.e.koeki-u.ac.jp/~c110198/advertise2/rubycgi/most.html 2、考えた設定 前回の、最高傑作のときに作成したものをどうしても CGI 形式で 作成したく作った。 前回よりも、歌手 30 名がすべて表示されるのではないため、 コンパクトでとても見やすくなった。 3、作成したプログラム、HTML、CSS #!/usr/bin/env ruby #ruby を 使うのに env コマンドを立ち上げて使う $KCODE = 'e' # 日本語 で 表示 require 'cgi' # CGI を使う cgi = CGI.new('html4') # CGI を HTML 文書に使う music = Hash.new # hito 変数を HASH として利用 print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードの定義 uta = cgi["kasyu"] # Ruby に CGI でもらってきた kyoin を代入 open("most.dat","r") do |enka| # データ kyoin.dat を 変数 sensei に読みこむ while line = enka.gets # 変数 sensei に データを繰り返し読ませる if /(\S+)\s+(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)/ =~line # /S+ : 1文字以上の空白以外 # /s+ : 1文字以上の空白 # ( ) : 正規表現 の くくり music[$1] = $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12 # データを取り出す # $1 : 1つ目の (\S+) # $2 : 2つめの 、、 # $3 : 3つめの 、、 # $4 : 4つめの 、、 # $5 : 5つめの 、、 # $6 : 6つめの 、、 # $7 : 7つめの 、、 # $8 : 8つめの 、、 # $9 : 9つめの 、、 # $10:10つめの 、、 # $11:11つめの 、、 # $12:12つめの 、、 end # if の end end # while の end end # open 〜 do の end print("\n") # html の 書き始め print("\n") # head の 書き始め print("\n") # css である kyo.css を このプログラムで利用 # = の後、くくりの " の 前に 「 \ 」を必ずつけないと作動しない。 print("演歌歌手 ライブラリー\n") # title print("\n") # head の 書き終わり print("\n") # body の 書き始め print("

検索一覧

\n") print("

歌手名

\n") printf("

%s

\n",music[uta][0]) # dat の書き換えをするのに # printf を利用 # music[uta][0] : hash 変数 を 配列に見立てて cgi の music を 代入 # その要素の 0 番目 # music[uta][1] : 、、 1 番目 # music[uta][2] : 、、 2 番目 # music[uta][3] : 、、 3 番目 # music[uta][4] : 、、 4 番目 # music[uta][5] : 、、 5 番目 # music[uta][6] : 、、 6 番目 # music[uta][7] : 、、 7 番目 # music[uta][8] : 、、 8 番目 # music[uta][9] : 、、 9 番目 # music[uta][10] : 、、 10 番目 # music[uta][11] : 、、 11 番目 print("

ベスト・ヒット10

\n") printf("

1:%s

\n",music[uta][1]) # dat の書き換えをするのに # printf を利用 printf("

2:%s

\n",music[uta][2]) printf("

3:%s

\n",music[uta][3]) printf("

4:%s

\n",music[uta][4]) printf("

5:%s

\n",music[uta][5]) printf("

6:%s

\n",music[uta][6]) printf("

7:%s

\n",music[uta][7]) printf("

8:%s

\n",music[uta][8]) printf("

9:%s

\n",music[uta][9]) printf("

10:%s

\n",music[uta][10]) print("

デビュー年

\n") printf("

%s年のデビューです!

\n",music[uta][11]) # dat の書き換えをするのに # printf を利用 print("

しっかり覚えましたか? 演歌を愛して下さい!!

\n") # h2 文で 画面に表示 print("\n") # body の 書き終わり print("\n") # html の 書き終わり 演歌歌手 ベスト30

演歌大辞典 第2版

  • 演歌歌手一覧

body { background-color: #00f090; } h1 { margin: 50px 30px 0px 30px; padding: 0px 0px 0px 10px; border-left: solid 10px #881111; border-bottom: solid 1px #ff0000; color: #003333; text-align: center; } h2{text-align: center} h3{text-align: center} p{text-align: center} body { background-image: url(kasyu.png); } h1 { margin: 50px 30px 0px 30px; padding: 0px 0px 0px 10px; border-left: solid 10px #881111; border-bottom: solid 1px #ff0000; color: #003333; } h2{text-align: center} h3{text-align: center} p{text-align: center} 4、もとにしたプログラム kyoin.rb , kyoin.html を もとに作成した。 上記のプログラムを作成していて、 これを使ってより良いものに出来ないかとここまできた。 変更した点は、正規表現が少し増えたところぐらいだが 自分で愛着の持てるプログラムを完成できた。 5、実行結果 < 伍代夏子 > pan{c110198}% ./most.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) kasyu="伍代夏子" Content-type: text/html; charset=EUC-JP 演歌歌手 ライブラリー

検索一覧

歌手名

伍代夏子

ベスト・ヒット10

1:ひとり酒

2:忍ぶ雨

3:鳴門海峡

4:金木犀

5:恋挽歌

6:戻り川

7:霧笛橋

8:憂愁平野

9:港恋唄

10:九十九坂

デビュー年

1985年のデビューです!

しっかり覚えましたか? 演歌を愛して下さい!!

6、考察 こちらも、2A の 課題同様に計算が出来ないため、 ある2人の歌手を選択し、その kterm と web の 実行結果で 正常か判断したい。 1、< 美空ひばり > [ kterm ] pan{YOSHIZUMI Takanori}% ./most.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) kasyu="美空ひばり" Content-type: text/html; charset=EUC-JP 演歌歌手 ライブラリー

検索一覧

歌手名

美空ひばり

ベスト・ヒット10

1:川の流れのように

2:みだれ髪

3:愛燦燦

4:柔

5:悲しい酒

6:真赤な太陽

7:人生一路

8:港町十三番地

9:悲しき口笛

10:リンゴ追分

デビュー年

1949年のデビューです!

しっかり覚えましたか? 演歌を愛して下さい!!

[web] 検索一覧 歌手名 美空ひばり ベスト・ヒット10 1:川の流れのように 2:みだれ髪 3:愛燦燦 4:柔 5:悲しい酒 6:真赤な太陽 7:人生一路 8:港町十三番地 9:悲しき口笛 10:リンゴ追分 デビュー年 1949年のデビューです! しっかり覚えましたか? 演歌を愛して下さい!! 2、< 石原裕次郎 > [ kterm ] pan{c110198}% ./most.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) kasyu="石原裕次郎" Content-type: text/html; charset=EUC-JP 演歌歌手 ライブラリー

検索一覧

歌手名

石原裕次郎

ベスト・ヒット10

1:北の旅人

2:夜霧よ今夜も有難う

3:錆びたナイフ

4:嵐を呼ぶ男

5:恋の町札幌

6:ブランデーグラス

7:赤いハンカチ

8:王将・夫婦駒

9:狂った果実

10:わが人生に悔いなし

デビュー年

1956年のデビューです!

しっかり覚えましたか? 演歌を愛して下さい!!

[web] 検索一覧 歌手名 石原裕次郎 ベスト・ヒット10 1:北の旅人 2:夜霧よ今夜も有難う 3:錆びたナイフ 4:嵐を呼ぶ男 5:恋の町札幌 6:ブランデーグラス 7:赤いハンカチ 8:王将・夫婦駒 9:狂った果実 10:わが人生に悔いなし デビュー年 1956年のデビューです! しっかり覚えましたか? 演歌を愛して下さい!! ※ これらのものが正常に動いたため、 このプログラムは成功だ。 2C、プログラム問題 1、課題3 : 買い物プログラム (kaimono.html) アドレス : http://roy.e.koeki-u.ac.jp/~c110198/advertise2/rubycgi/kaimono.html 2、考えた設定 前回に CD ショップの 計算問題を作成していたので 簡単だと思い作ったのですが、 全然上手く行きませんでした。 そこで、プログラムの部分だけ掲載させてもらい 少し分析してみたいと思う。 3、作成したプログラム #!/usr/bin/env ruby #ruby を 使うのに env コマンドを立ち上げて使う $KCODE = 'e' # 日本語 で 表示 require 'cgi' # CGI を使う cgi = CGI.new("html4") # CGI を HTML 文書に使う pay = Hash.new # pay を HASH 関数にする print("Content-type: text/html; charset=EUC-JP\n\n") # 日本語コードの定義 nm = cgi["name"].to_s gd = cgi["goods"] open("goods.dat","r") do |mono| # データ ticket.dat を 変数 kippu に読みこむ while line = mono.gets # 変数 kippu に データを繰り返し読ませる if /(\S+)\s+(\S+)/ =~line # /S+ : 1文字以上の空白以外 # /s+ : 1文字以上の空白 # ( ) : 正規表現 の くくり pay[$1] = $2.to_i # データを取り出す # $1 : 1つ目の (\S+) # $2 : 2つめの 、、 end # if の end end # while の end end # open 〜 do の end pay[gd] = print("\n") # html の 書き始め print("\n") # head の 書き始め print("ニコニコマートへようこそ!!\n") # title print("\n") # head の 書き終わり print("\n") # body の 書き始め print("

ニコニコマート

\n") print("

領収書

\n") printf("

%s様

\n",nm) printf("

%s:%d円

\n",mn,kane) # dat の書き換えをするのに # printf を利用 print("

ご利用いただきましてありがとうございました。

\n") # p 文で 画面に表示 print("\n") # body の 書き終わり print("\n") # html の 書き終わり open("sales.dat","w") do |write| # 書き込み専用 OPEN メソッド write.printf("%d\n",nm) # 1つずつ増やした数を書込みなさい end # open の end open("reciept.dat","w") do |write| # 書き込み専用 OPEN メソッド write.printf("%s様:%s・%d円\n",nu,gd,price) # 1つずつ増やした数を書込みなさい end # open の end 4、分析 最初、野菜やお肉をすべて選択式にして、 値段を dat に 入力して、それをチェックボックスで 選択しただけ、HTML で表示させようと思ったのが、 全く動かなかった。 そこで、for 文を使ったり、いろいろ試したが わからなかった。 もっと研究して再提出したい。 3、感想 鈴木 椎菜さん (http://roy.e.koeki-u.ac.jp/~c110127/advertise2/rubycgi/c7_nyukai.html) レターリング や ロゴ なども暖かみがあるプログラ厶で、 中味もとても興味のそそるものだったので選びました。 今回は、本当に時間が掛かった。 そして、とても頭を使いつかれた。 それでも、まだまだ課題がたくさんわかったので、 今後も一日一歩 三日で三歩 三歩進んで 二歩下がるの うたのように頑張りたい。 :参考文献 (三百六十五歩のマーチ : 水前寺清子) 今回の課題 WEB ページ (http://roy.e.koeki-u.ac.jp/~c110198/advertise2/rubycgi/r2_cgi_best.html) 4、参考文献 WEBサイト :西村まどか先生 <後期> 第 3 回 「第3回 情報の構造を分析しよう」 (http://roy/~madoka/2011/r2/03/) 第 8 回 「第8回 CGIことはじめ 」 (http://roy/~madoka/2011/r2/08/) 第 9 回 「第9回 CGIことえらび 」 (http://roy/~madoka/2011/r2/09/) ノート :自分で作成した sales.rb 、sightseeing.rb 、fork.html 共同研究者 鈴木 椎菜 5、添付