• Save
とっとるびー(2回目)発表資料
Upcoming SlideShare
Loading in...5
×
 

とっとるびー(2回目)発表資料

on

  • 1,954 views

眠い目をこすりつけながら、作った微妙な資料(苦笑

眠い目をこすりつけながら、作った微妙な資料(苦笑
RWC2010を聴きに行ったこととか、Ruby1.9の入り口手前でつまずいたこととか。

Statistics

Views

Total Views
1,954
Views on SlideShare
1,954
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    とっとるびー(2回目)発表資料 とっとるびー(2回目)発表資料 Presentation Transcript

    • Ruby 1.9 初歩の初歩の初歩の初歩 ~RWC2010に行ってきたよ~ Takenaka Hiroyuki
    • とっとるびー 早くも第 2 回 過去 2 回、何してたっけ?
    • とっとるびー 振り返り 第 0 回
    • とっとるびー 振り返り 今後とか、進め方とか、主に 雑談
    • とっとるびー 振り返り 第 1 回
    • とっとるびー 振り返り nari3 を呼んで主に 雑談
    • とっとるびー 振り返り 2回を通じて 雑談 以外の記憶がない
    • とっとるびー そういえば、先日、Ruby World Conference 2010行ってきました。
    • RubyWorldConference2010 Ruby1.9.2出たぜ! Rails3出たぜ! 東京ガスがRuby1.9.1とRailsで作ってるらしい! 東京の平和は Ruby が守ってる! 海外では、遠隔地の鉄道システムを制御するのにもRubyが入ってきている!! 一年前はそうでもなかったのに、気がつけばRubyが クリティカルな部分にも進出 してる!
    • RubyWorldConference2010 とりあえず 東京ガス はすごすぎたらしい。 見逃したけど。 http://twitter.com/yhara/status/23131274999 「 東京ガスでも使われているんですよ。 」コレ流行るらしい。 主に上を 説得 する場面で。 http://twitter.com/yhara/status/23130838154 animotoがcoolだった。 ミッキー社長のRakutenWorldConference2010も面白かった。
    • RubyWorldConference2010 あとは、ARCやYAGNIやKISSなんて単語も流行っているらしい。 Chefあたりも気になるな! (Puppet のような、システム管理ツール。デプロイとか設定とか ) そういえば、Ruby1.9.2の話題も出てました。 Agile, Ruby/Rails, Cloud You Aren't Going to Need It Keep It Simple and Stupid
    • Ruby1.9.2 Encodingに 携帯 向けの対応が入りました。 Timeクラスの2038年問題が解決しました。 RubySpecの99%以上を通しました。 dlはfiddleにsychはpsychに MATHモジュール周りは matz が興味ない から今後もカオスだけど誰も興味ないだろ? 1.9.2は1.9.1よりも 速い !!! そもそも、Rails3はRuby1.8.7でも一応動くけど、 基本的にはRuby1.9用
    • そろそろ、僕らもRuby1.9.2へ行こう。
    • Hello World hello.rb puts “ はろーわーるど” (^q^?? hello.rb:1: invalid multibyte char (US-ASCII) 実行結果
    • Hello World Ruby1.9では、内部と外部の2種類のエンコーディングを持つ コード中(コメントや文字列)に日本語を持つ場合、内部用にマジックコメントが 必須 である マジックコメント coding: XXXX という記述であればなんでも良い 例: # -*- mode: ruby; coding: utf-8 -*-
    • Hello World hello.rb #aaaa en coding:utf-8 aaaaa puts “ はろーわーるど” hiroyuki@ubuntu:~/workspace$ ruby hello.rb はろーわーるど 実行
    • Encoding Ruby1.9から導入されたEncoding。 例えば、文字列の結合や、正規表現の比較時に、それぞれが異なるEncodingである場合、エラーになってしまうのでご注意を。 (ただし、共にASCII文字のみの場合は、異なるEncodingでもOK)
    • 他に気になったところ
      • カレントディレクトリが$LOAD_PATHから消えた
      • ブロックパラメータの挙動
      • 正規表現ライブラリが「鬼車」ベース
    • $LOAD_PATHからカレントが消えた 同一のディレクトリに2ファイルを置いておく
      • sample1.rb
      • sample2.rb
      require “sample2.rb” hoge def hoge puts “sample2” end
    • $LOAD_PATHからカレントが消えた 実行 hiroyuki@ubuntu:~/workspace$ ruby sample1.rb <internal:lib/rubygems/custom_require>:29:in `require': no such file to load – sample2.rb (LoadError) require File.expand_path(“sample2.rb”,File.dirname(__FILE__)) hoge sample1.rb を以下に修正すれば OK
    • $LOAD_PATHからカレントが消えた File.expand_path(“sample2.rb”, File.dirname(__FILE__)) File.expand_path(path[, default_dir]) path を絶対パスに展開した文字列を返します。 path が相対パスであれば default_dir を基準にします。 default_dir が nil かまたは与えられなかった時にはカレントディレクトリが使われます。 http://www.ruby-lang.org/ja/man/html/File.html __FILE__ : 実行中のファイル名 $0 : 実行する時に指定したプログラムファイル名ではない
    • $LOAD_PATHからカレントが消えた File.expand_path(“sample2.rb”, File.dirname(__FILE__)) 1.9.2 のみ require_relative “sample2.rb”
    • ブロックパラメータの挙動 Ruby1.8.6 x = 0 [1, 2, 3].each{|x| p x} print “ ここで x は何になっているでしょう? #{x} ”
    • ブロックパラメータの挙動 Ruby1.8.6 x = 0 [1, 2, 3].each{|x| p x} print “ ここで x は何になっているでしょう? #{x} ” #=>3
    • ブロックパラメータの挙動 Ruby1.9 x = 0 [1, 2, 3].each{|x| p x} print “ ここで x は何になっているでしょう? #{x} ” #=>0
    • 正規表現 Ruby1.9 /(?<firstname>w+)s+(?<familyname>w+) =~ “ Hiroyuki Takenaka” firstname #=>”Hiroyuki” familyname #=>”Takenaka” $1, $2 ではなくて、名前をつけることが出来る! ローカル変数が勝手に設定されます。
    • はい。 と、色々と便利になったり変わったりしているようです。 正直追いきれません^q^
    • 目新しい情報のない発表で、申し訳ないです。 次回以降、何かまともなものを考えておきます。 とりあえず、 Ruby1.9 や Rails3 は「速い速い」と言われているので ベンチマーク は取ってみようかな~と思っているところです。 取ったら、適当にブログにでも、上げようかなと思ってます。
    • ご清聴 ありがとう ございます。
    • この次の ページからは 時間が 余った時 用
    • おまけ
    • 気分転換に 次のコードの怪しい点を探してください。
    • #!/usr/bin/ruby # coding:utf-8 def read_file(path) open(path, &quot;r:utf-8&quot;).read.each_line{|line| puts line } rescue Errno::ENOENT puts &quot; 存在しないファイルです &quot; end def get_path print &quot;please input path > &quot; until (input = STDIN.gets.strip) do print &quot;pleasee input path > &quot; end puts &quot;input -> #{input}&quot; input end
    • open(path, &quot;r:utf-8&quot;) 解答の一つ hiroyuki@ubuntu:~/workspace$ ./sample3.rb please input path > |ls input -> |ls davical のインストール sample1.rb sample2.rb sample3.rb
    • File.open(path, &quot;r:utf-8&quot;) 解答の一つ 外部からの入力を渡す時は、疑いましょうっていうアレでした。
    • もう一つおまけ? 皆様の英知で、次のコードをもっと面白くしてください! Hello World を難読化させたい。 http://d.hatena.ne.jp/ionis/20100404/1270397037 c = &quot;0100100001100101011011000110110001101111001000000101011101101111011100100110110001100100&quot; c.unpack(&quot;a8&quot; * (c.size / 8)).each{|i| print '%c'.send('%', ('0b' + i).oct)}
    • おまけ(終) その他何か面白 ネタ とか、 これやってみてという ネタ がありましたら、 ゆるゆるとチャレンジしていきますので、 お知らせくださいませ。 よろしくお願いします。