第42回 Ruby/Rails勉強会@関西

第42回 Ruby/Rails勉強会@関西

京都女子大学にて開催。
土曜日だというのに女子大生が大勢いて女子大感満載。

勉強会にもたくさんの女子大生が参加してくれた。

実践スクレイピング by ふるかわだいすけさん

モバイラーズオアシスというサイトを作るためにスクレイピングで色んなチェーン店の情報を集めたらしい。

  • スクレイピングは根性。
  • 酷い例多数
    • 無意味な flash
    • 各店舗の URL が推測不能
    • html が間違っている。
    • 今時まさかの table layout.

Ruby で描く折り紙展開図 by 志村さん

RubyIllustrator を操作して展開図を描かせ、Ruby の折り紙を作る。

[あとでかく]

IO クラスについて by cuzic さん

  • IOクラスのマニアックなメソッドの使い方。
  • 実際の動作、使い道を詳しく解説。

[あとでかく]

RubyWebCam非実在なこと by にしたかおさん

  • AR (ActiveRecord ではない)
  • WebCam の画像にティーポットを重ねて表示。
    • お茶を注いだりした。
  • 車輪男
  • 回帰分析は自分で書くな。
    • 数値演算は落とし穴がいっぱい。
  • 論文便利
    • 結果だけもらえばいい。

Ruby 初級者向けレッスン by okkez さん

演習問題: 数値をローマ数字に変換。

  • 省略なしの Integer#to_old_roman
    • 4.to_old_roman # => "IIII"
  • 省略ありの Integer#to_roman
    • 4.to_old_roman # => "IV"

やってみた。

class Integer
  ARABIC2OLDROMAN = {
    1000 => 'M',
    500 => 'D',
    100 => 'C',
    50 => 'L',
    10 => 'X',
    5 => 'V',
    1 => 'I',
  }
  ARABIC2ROMAN = {
    1000 => 'M',
    900 => 'CM',
    500 => 'D',
    400 => 'CD',
    100 => 'C',
    90 => 'XC',
    50 => 'L',
    40 => 'XL',
    10 => 'X',
    9 => 'IX',
    5 => 'V',
    4 => 'IV',
    1 => 'I',
  }

  def to_old_roman
    to_roman(ARABIC2OLDROMAN)
  end

  def to_roman(symbols = ARABIC2ROMAN)
    roman = ''
    src = self
    symbols.each do |a, r|
      n, src = src.divmod(a)
      roman += r * n
    end
    roman
  end
end

[0, 1, 2, 3, 4, 5, 6,
 9, 10, 11,
 14, 15, 16,
 19, 20, 21,
 24, 25, 26,
 40, 49, 50, 51,
 54, 55, 56, 60,
 99, 100, 101,
 200, 400, 500, 600, 900, 999, 1000,
 1969, 2000, 2004, 2010].each do |i|
  puts "%8d: %s\t%s" % [i, i.to_roman, i.to_old_roman]
end

# >>        0: 		
# >>        1: I		I
# >>        2: II		II
# >>        3: III		III
# >>        4: IV		IIII
# >>        5: V		V
# >>        6: VI		VI
# >>        9: IX		VIIII
# >>       10: X		X
# >>       11: XI		XI
# >>       14: XIV		XIIII
# >>       15: XV		XV
# >>       16: XVI		XVI
# >>       19: XIX		XVIIII
# >>       20: XX		XX
# >>       21: XXI		XXI
# >>       24: XXIV		XXIIII
# >>       25: XXV		XXV
# >>       26: XXVI		XXVI
# >>       40: XL		XXXX
# >>       49: XLIX		XXXXVIIII
# >>       50: L		L
# >>       51: LI		LI
# >>       54: LIV		LIIII
# >>       55: LV		LV
# >>       56: LVI		LVI
# >>       60: LX		LX
# >>       99: XCIX		LXXXXVIIII
# >>      100: C		C
# >>      101: CI		CI
# >>      200: CC		CC
# >>      400: CD		CCCC
# >>      500: D		D
# >>      600: DC		DC
# >>      900: CM		DCCCC
# >>      999: CMXCIX		DCCCCLXXXXVIIII
# >>     1000: M		M
# >>     1969: MCMLXIX	MDCCCCLXVIIII
# >>     2000: MM		MM
# >>     2004: MMIV		MMIIII
# >>     2010: MMX		MMX