Web技術勉強会9回目(Slideshare用)

1,504 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,504
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Web技術勉強会9回目(Slideshare用)

  1. 1. Web技術勉強会第9回 Web技術勉強会第9 技術勉強会第 ~続・Rubyはじめました~ Rubyはじめました~ はじめました Ryuichi TANAKA Study:http://devel.de.c.dendai.ac.jp/study/ Blog:http://blog.livedoor.jp/mapserver2007/ 1
  2. 2. 前回の内容 • 配列、ハッシュ、条件分岐、正規表現 • 繰り返し系 • オブジェクト指向プログラミング • RubyのCGI • RubyGems 2
  3. 3. 前回の反省 • 知識が中途半端すぎた – 結局よくわかっていなかった… • コーディングしなかった – サンプルだけ。しかもいきなりMechanize。 正直すまんかった 3
  4. 4. 反省点を活かして • 「初めてのRuby」を読破 – オライリーのくせに分かりやすい。 – 少なくとも前回の知識よりましになった(はず) • 本格的にRubyの開発を開始 – とりあえず、過去のコードをRubyで焼きなおし 4
  5. 5. Rubyのポイント Rubyで必要となるポイントを覚えている限り紹介 • インクリメント/デクリメントがない – i++, ++i, i--, --iが使えない – ならば、for($i =0; $i < $length; $i++){} みたいなとき どうするの? →array.each do |val| puts val end – Rubyではイテレータをフル活用する 5
  6. 6. Rubyのポイント • 空文字はtrue – Perl my $str = $cgi->(“str1”) || exit; print $str; # $strはなにか表示される – # $cgi->(“str1”)が空ならfalseになるのでexitになる – Ruby str = cgi[‘str1’] || exit puts str # strは空文字(“”)を表示することがある str = (cgi[‘str1’] if cgi[‘str1’] != “”) || exit puts str # 空文字は表示されない Rubyはfalseとnil以外は全てtrueになる 6
  7. 7. Rubyのポイント • 文字コード変換が楽 – Perl use Encode; use Encode::Guess qw/euc-jp,utf8,shiftjis/; … My $str = encode(‘euc-jp’,”UTF-8文字列”); //Any->EUC – Perlのバージョンによってこのあたりの挙動が微妙に 違う(実際、研究室とTanaka家では挙動が違う= decodeが必要だったりそうでなかったり) – Perlでは本当に文字コード問題に苦しんだ 7
  8. 8. Rubyのポイント – Ruby1.8.x require ‘kconv’ … p str.toutf8 # Any->UTF8 – Ruby1.9.x p str.encode(“UTF-8”) # Any->UTF8 – あっさりできた。文字列のdecodeも必要ない。 8
  9. 9. RubyをCGIで使う • CGIで使うには – 通常のCGI • アクセスするたびにプロセスがRubyインタプリタを起動する ので遅い – mod_ruby • ApacheがRubyインタプリタを起動する。別プロセスで起動し ないため早い – FastCGI • プロセスをメモリ上に永続化するため起動と終了がカットされ、 結果として早くなる。Ruby以外でも利用可能。 9
  10. 10. Rubygems • Rubyのパッケージ管理をする – PerlのCPAN、PHPのPEARと同様 • 利用方法 require ‘rubygems’ //rubygemsを読ませる require ‘hpricot’ //rubygemsのライブラリを指定 • コンソール上での動作確認 irb > require ‘rubygems’ => true > ruby –rrubygems –rhpricot –e “” //正常ならエラーが出ない 10
  11. 11. まとめ • Rubyの基礎について説明 – for文はあまり使わない – インクリメント/デクリメントはない – true/falseが他の言語と違うところがある • RubyのCGI利用について説明 – 通常のCGIとmod_ruby、FastCGI – Rubygems 11
  12. 12. 今後について • 「続々・Ruby始めました」をやります – またしてもコーディングできていない ※原因は後述 – 実はまだ「Rubyでしかできない」ことがない • Perlでできちゃう – なにか作ったら、Ruby on Railsにも手を出したい • Railsは別途勉強が必要 • RoRは生産効率が早いが、その分内部で何をやってるか良く 分からないため 12
  13. 13. 閑話:問題発生 • コーディングできなかった原因 環境構築ができない!!!!!!! 1. Rubyインストール → 既にできていた 2. mod_ruby, FastCGI設定 → 3日ほどかかった。mod_rubyはう まくいったが、通常のCGI、FastCGIでは動かない(一瞬動いた ときもあった) 3. Rubygems設定 → 4日かかってもできない(もうむり)。パスを 設定、入れなおし、絶対パス指定、1000回くらいぐぐっても無 理。2台目のサーバで試しても無理。 13
  14. 14. 閑話:Rubygemsが動かない • 症状1: require ‘rubygems’ でLoadError発生 – CGIで失敗。irbではtrueを返す。 – 解決策:httpd.confを直しまくったら動いた • 症状2:rubygemsのライブラリでLoadError発生 – CGIで失敗。Irbではtrueを返す。-rで実行してもLoadError。 – ライブラリ箇所を絶対パスにしても無理。 – 解決策:カレントディレクトリにライブラリをコピーして読ませる → LoadErrorは消えるが、なぜか実行できない(確実に動くプログラ ムですら何も表示されない)。 – そもそも根本的に解決していない – 丸1週間かけてもだめ。さすがに凹む。 14

×