第10回 ことおぼえ レポート課題 氏名 : 畠山貴衣 学籍番号 : c1101709 語学クラス : 英語6 コース(系) : 政策マネジメントコース 1.筆記問題 ---------------------------------------------------------------- pstoreは、ディレクトリ自体にアクセス権を付けた。(chmod o+w pstore) このことより、ディレクトリ内にあるプログラムやデータ等全てに第3者への アクセス権を認めている。 よって、このディレクトリ内にあるものはアクセス権を1つづつ付ける作業をす る必要が無くなる。 前回は pstore のようなディレクトリが無かったため、作成した css.html には、第3者に実行権が与えられていなかった。 (-rw-r--r-- 1 c110170 st2010 775 12月 1日 22:52 css.html) そのため、下の作業をし、css.htmlのみに実行権を与えた。 pan{c110170}% chmod o+x css.html [~/public_html/advertise2/rubycgi] -rw-r--r-x 1 c110170 st2010 775 12月 1日 22:52 css.html* これがもしpstoreディレクトリ内にあれば、上記のような作業をする必要は無かっ た。しかし、このディレクトリ内に入れるのは第3者が自由に作業して良いもの だけに限る。そうしなければ、第3者によってプログラムの書き換えなど、問題 が起こってしまい兼ねない。 2.プログラム問題 ----------------------------------------------------- 広告ページ : http://roy/~c110170/advertise2/rubycgi/r2_cgi_best.html (設定)---------------------------------------------------------------- CGIスクリプトを用いてオリジナルのプロフィールを簡単に作成出来るプログラ ムを作りました。作る人のオリジナリティを出せるようにcssとイメージキャラ クターを選択できるようにした。 (作成したプログラム)-------------------------------------------------- -kessaku.rb- #!/usr/koeki/bin/ruby $KCODE = 'e' #文字コードの設定 require 'cgi' #CGIを使う宣言 cgi = CGI.new('html4') #CGIを配列として取りこむ print("Content-type: text/html; charset-EUC-jp\n\n") # htmlから配列として取りこむ namae = cgi["name"] # 名前を取りこむ seibetu = cgi["sex"] # 性別を取りこむ mon = cgi["month"] # 誕生月を取りこむ day = cgi["day"] # 誕生日を取りこむ tosi = cgi["toshi"] # 年齢を取りこむ seiza = cgi["hosi"] # 正座を取りこむ chi = cgi["blood"] # 血液型を取りこむ basho = cgi["from"] # 出身地を取りこむ question1 = cgi["ques1"] # 自由記述1の質問を取りこむ question2 = cgi["ques2"] # 自由記述2の質問を取りこむ question3 = cgi["ques3"] # 自由記述3の質問を取りこむ answer1 = cgi["ans1"] # 自由記述1の答えを取りこむ answer2 = cgi["ans2"] # 自由記述2の答えを取りこむ answer3 = cgi["ans3"] # 自由記述3の答えを取りこむ iro = cgi["color"] logo = cgi["image"] print("\n") # htmlの開始 print("\n") print("プロフィール\n") if iro == "pink" # iroがpinkuだった場合のCSSリンク print("\n") elsif iro == "orange" # iroがorangeだった場合のcssリンク print("\n") elsif iro == "blue" # iroがblueだった場合のcssリンク print("\n") elsif iro == "black" # iroがblackだった場合のcssリンク print("\n") elsif iro == "usual" # iroがusualだった場合のcssリンク print("\n") end # if文に対するend print("\n") print("\n") print("

") # ifは全て空欄だった場合の処理。 if namae == " " || mon == " " || day == " " # namaeとmonとdayが空欄のとき print("

エラー発生!

") print("

空欄があります。
戻ってやり直して下さい。

") print("\n") print("\n") elsif tosi == "" || basho == "" # tosiとbashoが空欄の場合 print("

エラー発生!

") print("

空欄があります。
戻ってやり直して下さい。

") print("\n") print("\n") elsif question1 == "" || question2 == "" || question3 == ""#questionが空欄の場合 print("

エラー発生!

") print("

空欄があります。
戻ってやり直して下さい。

") print("\n") print("\n") elsif answer1 == "" || answer2 == "" || answer3 == "" #answerが空欄の場合 print("

エラー発生!

") print("

空欄があります。
戻ってやり直して下さい。

") print("\n") print("\n") else #空欄がなかった場合の表示方法 print("

---------プロフィール--------

\n") printf("

名前 : %s

\n",namae) printf("

%s月 %s日 生まれ %d歳 ( %s )

",mon,day,tosi,seibetu) printf("

%s . %s

\n",seiza,chi) printf("

%s 出身

",basho) printf("

%s : %s

\n",question1,answer1) printf("

%s : %s

\n",question2,answer2) printf("

%s : %s

\n",question3,answer3) print("

------------------------------

") if logo == "turii" # logoがturiiだった時のリンク print("

") elsif logo == "itigo" # logoがitigoだった時のリンク print("

") elsif logo == "ribon" # logoがribonだった時のリンク print("

") end # ifに対するend print("\n") print("\n") # htmlの終わり end # ifに対するend -kessaku.html---------------------------------------------------------------- プロフィール

オリジナルプロフィール

情報を入力して下さい。



-----------------------------------------------------------

名前 :

誕生日 :

性別 :

年齢 :

星座 :

血液型 :

出身地 :


●自由記述覧●

最初に質問を次に答えを入力して下さい。

質問 : 答え

:

:

:


●プロフィールのイメージカラーを選択して下さい●

ピンク系 オレンジ系 青系 黒系 ノーマル


●プロフィールにつけるロゴを選んで下さい。●

ツリー リボン なし

(変更点)-------------------------------------------------------------- 参考にしたのは sightseeing.html のドロップダウンメニューとラジオボタン である。その他は何も見ずに作成しました。 (実行結果)------------------------------------------------------------ -Kterm上で正しく入力した場合- pan{c110170}% ./kessaku.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) name="はたけ" sex="女" month=4 day=11 toshi=20 hosi="牡羊座" blood="B型" from="秋田県" ques1="趣味" ans1="運動" ques2="好きな食べ物" ans2="チョコレート" ques3="大学" ans3="東北公益文科大学" Content-type: text/html; charset-EUC-jp プロフィール

---------プロフィール--------

名前 : はたけ

4月 11日 生まれ 20歳 ( 女 )

牡羊座 . B型

秋田県 出身

趣味 : 運動

好きな食べ物 : チョコレート

大学 : 東北公益文科大学

------------------------------

-Kterm上で入力漏れがあった場合- pan{c110170}% ./kessaku.rb [~/public_html/advertise2/rubycgi] (offline mode: enter name=value pairs on standard input) name="はたけ" sex="女" month=4 day=11 toshi=20 hosi="牡羊座" blood="B型" from="秋田県" question1="趣味" Content-type: text/html; charset-EUC-jp プロフィール

エラー発生!

空欄があります。
戻ってやり直して下さい。

(考察)---------------------------------------------------------------- htmlで実行してみると、指定されたCSSでページが表示され、選択したロゴも 表示されているため、正常に動いているといえる。 また、空欄があるときはエラーメッセージも表示されている。 ◯プログラムについて プログラムを作成する前の構想では、入力してもらったもののみ表示し、 プロフィールに載せる情報を選択できるようにしたかった。 この構想を実行するために、print文を無しにすれば良いのではないかと考え、 if文で == nil だったらと指示を与え、そのまま end で閉じた。 →結果、空欄より後が表示されなくなった。 次に、 == nil だったら、その質問をなかったことにする、redo や break などと似たメソッドはないかと考え、西村先生のプログラミングIのページや 神田先生のプログラミングIのページを参考にしたが、見つけることができなかっ た。 上記より、質問項目を選択してもらうことが私の知識では不可能だったので、 全て入力してもらい、空欄がある場合、エラー表示をするという方法に変えた。 ◯Tgifについて 前の授業で教えてもらったコピーや回転などの知識を用いて、ロゴを作成した。 前回書いたものよりも使い方になれたお陰で上手く書けた。 3.感想 ----------------------------------------------------------------- 最高傑作のプログラムは思い描いたものとは多少異なっているが、今の知識を最 大限活用して作成することができたと思う。 CGIを学んでから、インターネットのサイト等自分が作れそうなものが社会にあ ふれていることを知り、情報を学ぶのが少し面白く感じ、先生が情報系の就職に つけると言っていた意味が理解できた。 ◯興味あるCGIスクリプト◯ c1101589 照井さつきさん http://roy/~c110158/advertise2/rubycgi/fork.html ホームページのデザインをもとに、CSSのきせかえプログラムを作成しており、 統一感があるだけでなく、見やすいページになっている。 また、過去のCGI作品もプログラムだけでなく、表示方法も工夫されているとこ ろが良いと思った。加えて、表示方法が誰が見ても"可愛い"と感じる所も興味を 持った原因の1つである。 4.参考文献 ---------------------------------------------------------------- ◯西村まどか先生 第8回 ことはじめ : http://roy/~madoka/2011/r2/08/ 第9回 ことえらび : http://roy/~madoka/2011/r2/09/ 第10回 ことおわり : http://roy/~madoka/2011/r2/10/ 基礎プログラミングI : http://roy/~madoka/2011/r1/ ◯神田直弥先生 基礎プログラミングI : http://roy/~naoya/ruby/index.html CSSの基本 : http://roy/~naoya/ruby/css.html ◯共同製作者 : 伊藤桜子 齋藤陽香 ----------------------------------- 東北公益文科大学  公益学部 公益学科 2年 畠山貴衣  c110170@f.koeki-u.ac.jp