Ruby勉強会@関西14

メモ晒し.

Ruby実行環境を取り巻く世界 西本さん

仮想機械

省略

中間コードを機械語に変換しながら実行.実行時最適化が行える!

  • AOT型

中間コードを実行形式にコンパイル.最適化に十分な時間が使える.

実行環境
  • C Ruby
    • 本家
  • YARV(Yet Another RubyVM:ヤルヴ)
    • C Rubyに準じる
    • 実行時最適化も行える
    • 次期実行環境
    • かなり速い!
    • configureでガッと入る
  • JRuby
  • xruby
  • Rubinius
    • 自分で弄れるシンプルな実行環境が欲しいから作っちゃおう
  • RubyCLR
    • 実行環境ではない
    • Win32OLEみたいなもんで,.NET環境を呼び出せる

Plagger meets Ruby yharaさん

Rubyで書きたいよね

るりま okkezさん

  • 冬休みの宿題
  • 成績…100% done
  • 第3段階間もなく開始予定
  • かなり大変で,メソッド数が数えきれない
  • これまでオープンソースソフトウェアにあまり関わってきてない人に参加して欲しい
  • 参加は,「るりま」でググってるりまwiki

letmesee+royal-fpw かずひこさん

  • 電子辞書みたいな
  • フラ語って活用の多さが大変よね
  • http://www.youtube.com/watch?v=ObhL5EKSlFE
  • RubyEB…EPWINGってフォーマットに対応した辞書を引くよ
    • EPWING,なんでUnicodeに対応させなかったのかが疑問
  • 「やりたいこと」実現のためには,あらゆる手を尽くそう
  • 最初は知らなくても,いろいろやっているうちに知識は増える
  • 合わせ技が決まるとカ・イ・カ・ン
  • Happy hacking!

初級者レッスン okkezさん,サカイさん

  • irb --helpを見てみよう
  • irbrcを書こう
>> 10.times{irb}
じゃんけんプログラム

キタネェwww

class Janken
  G = 1 #"グー"
  C = 2 #"チョキ"
  P = 3 #"パー"
  
  J = ["グー", "チョキ", "パー"]
  
  def run
    loop do
      command = listen
      if command == 9
        break
      end
      win_or_lose(cpu, command)
    end
    quit
  end
  
  def initialize
    @win, @lose, @draw = 0, 0, 0
  end
  
  private
  
  def listen
    puts <<HOGE
グー => 1
チョキ => 2
パー => 3
やめる => 9
何を出しますか?
HOGE
    loop do
      print "> "
      if (command = gets.chomp) =~ /^([1-39])$/
        puts "#{J[command.to_i - 1]}ですね"
        return command.to_i
      end
    end
  end
  
  def cpu
    cpu = rand(3) + 1
    
    puts "CPUは,#{J[cpu - 1]}を出しました"
    return cpu
  end
  
  def win_or_lose(cpu, you)
    if cpu == you
      draw
    else 
      if cpu == G
        case you
        when C
          lose
        when P
          win
        end
      elsif cpu == C
        case you
        when P
          lose
        when G
          win
        end
     elsif cpu == P
        case you
        when G
          lose
        when C
          win
        end
      end
    end
  end
    
  def draw
    puts "あいこです"
    @draw += 1
  end
  
  def win
    puts "あなたの勝ちです"
    @win += 1
  end
  
  def lose
    puts "あなたの負けです"
    @lose += 1
  end
  
  def quit
    if @win > 0 || @lose > 0 || @draw > 0
      grade = ((@win.to_f / (@win + @lose + @draw).to_f) * 100).to_i
      puts <<RESULT
お疲れさまです
あなたは
#{@win}#{@lose}#{@draw}分け
で,勝率は#{grade}%でした
RESULT
      if grade > 70
        puts <<YARU
    やるじゃん        
  /\___/\
/ ⌒   ⌒  \
|(●), 、(●)、|
|  ,ノ(、_,)ヽ、|
|  ト‐=‐ァ'  |
\ `ニニ´  /
/`ー‐‐‐―´´\
YARU
      elsif grade > 30
        puts <<FUTSU
  /\___/\
 /'''  '''\
|(●), 、(●)、| ・・・
|   ,ノ(、 _,)ヽ、,|
|  `-=ニ=- ' |
 \  `ニニ´   /
/`ー‐---‐―´\
FUTSU
      else
        puts <<DON
   ドンマイ・・・
  /\___/\
/ /    ヽ \
|(●), 、(●)、|
|   ,ノ(、 _,)ヽ、,|
|  ,;‐=‐ヽ  |
\  `ニニ´  /
/`ー-----―´´\
DON
      end
    end
  end
end

j = Janken.new
j.run

懇親会はいきませんでした

なんか,Ruby勉強会の日って雨が多いですね.雨男(女?)がおるな.