Skip to content
muryoimpl edited this page Dec 31, 2011 · 1 revision

第17回 Ruby/Rails勉強会@関西 (運営: Ruby関西 )

  • 日時: 2007 年 7 月 14 日 (土) 13:00~17:30
  • 場所: 京都女子大 J校舎4F J420教室
  • アクセス
  • 費用
    • 実費(講師の交通費、配布物の印刷代等)の人数割をご負担ください。前回(同じ会場)は500円でした。
  • 定員
    • 定員は設定しません。

プログラム

  • 「あなたのソースコード添削します」 by okkezさん、南木さん、novさん

    • セッション概要
      • 事前に提出されたRubyプログラムをRubyの達人が添削します。
    • プロフィール
      • okkez
        • 社会人三年目。仕事に飽きると、Rubyでツールを作ります。どんなツールかは機会があれば、お話ししたいと思います。Rubyリファレンスマニュアル(るりま)のお手伝いをぼちぼちやっています。また、最近は関数型言語(Erlang,Haskell)を勉強中です。
    • nov
      • 兼業主夫一年目。主夫業以外では、RubyやRailsでコードを書いています。Javascriptをもっと詳しく知りたい、と思っているとかいないとか。
    • 配布資料(ソースコードのみ、orig/にあるのはこなみせんせいのオリジナル)
  • **「表題未定」 by 中田さん **

    • 台風接近により今回は中止とさせていただきます。
  • 「オープンセッション」

    • セッション概要

      • 前半
        • 南木 Rails + rcairo を使った演習
        • cuzic Q&A セッション
      • 後半
        • 氏久 関数型言語Ruby (2)
        • yhara RubyからHTMLを扱うためのライブラリ、Hpricotの紹介
    • 「Rails + rcairo を使った演習」 by 南木さん

    • 「Q&A セッション」 by cuzicさん

      • セッション概要
        • 具体的な~~をしたいのだけれどどうすればいいのか、といった内容の質問に答えるコーナーにしようと思っています。
    • 「関数型言語Ruby (2)」 by 氏久さん

      • セッション概要
        • Rubyは純粋な関数型言語です。今回はha-tanさん作成の関数型言語Rubyのライブラリcohiの紹介、その他関数型言語としてのRubyをサポートするライブラリとその実装・使い方を紹介します。
      • プレゼン資料
      • 配布資料 (ソースコードのみ)
      • 演習の解答
      • プロフィール
        • 氏久
        • 大学院生2年目。研究に疲れると、Rubyで黒魔術します。どんな黒魔術かは機会があれば、お話ししたいと思います。Rubyリファレンスマニュアル(るりま)のお手伝いをぼちぼちやっています。また、最近は関数型言語(Erlang,Haskell, Ruby)を勉強中です。Lispに手を出さない勇気を振り絞っていたのですが、最近誘惑に負けて勉強を開始したようです。
    • RubyからHTMLを扱うためのライブラリ、Hpricotの紹介 by yharaさん

懇親会

  • 日時
    • 2007 年 7 月 14 日 (土) 18:00~(予定)
  • 場所
  • 会費
    • およそ社会人:学生 = 2:1 の比率でご負担ください。前回は 3500 円、2000 円でした。
  • 締切
    • 2007 年 7 月 13 日 (金) 17:00 まで

ログ

  • オープンセッション
    • 「関数型言語Ruby (2)」 by 氏久さん (ロガー: Raito)
      • 純粋関数型言語Ruby
        • オブジェクト指向スクリプト言語Ruby(OOSPL Ruby)とは区別する。
        • 関数型言語の中でも、Haskellの影響を強く受けている。
        • よって、Lisp系言語とは少し雰囲気が違い、ついて行けない参加者続出。
          • 普通は、car,cdrで勝負です。
    • lambdaはOOSPL RubyではProcオブジェクトを生成する。
    • 関数呼出の末尾に[ ]が必要。
      • お約束らしい。
      • Procクラスを拡張することで、無理矢理[ ]が無くても動作するようにしてしまう。
      • しかし、1回目(?)の関数(Procオブジェクト)の実行には、[ ]が必要。
    • Haskellのパターンマッチに似たようなことも書ける。
      • OOSPL Rubyの多重代入をパターンマッチに見せかけている。
    • cohi(こひつじ)というライブラリを紹介。
      • HaskellのPreludeモジュールを実装。
      • cohiの各関数(Procオブジェクト)は、全てcohi内で定義された関数にて記述されている。
    • 最後に演習。
      • 「Map関数を実装しよう」という試み。
      • 基本はこんな感じのことをすればよい。

 map(f, ary) #=> ary.map{|i| f(i)}
    - ポイントはfをOOSPL Rubyのメソッドではなく、関数型言語Rubyの関数として、定義しなくてはならないこと。
- cohiを使うともっと簡単に実装できるはずだが、1問目は *cohi使用禁止* という理不尽な演習だった。

- 「RubyからHTMLを扱うためのライブラリ、Hpricotの紹介」 by yharaさん (ロガー: Raito)
    - プレゼンツールと irb を交互に使ってプレゼン。
    - HpricotはHTMLを解析するためのライブラリ
    - HTMLをそのまま解析するとなると、複雑な正規表現を書きまくらないといけない。
        - Perlでmixiを解析することに特化したライブラリがあるが、mixi自体が数ヶ月毎に表示方法を変更していくため、その煽りを受けて変更が続いている。
    - Hpricotの作者は、whytheluckystiff氏
        - YAMLの作者でもある。
    - 使い方はこんな感じ。

 require 'rubygems'
 require 'hpricot'
 doc = Hpricot(filepath) ;0  #=>  0  # ;0を付けないと解析結果オブジェクトがコンソールを埋め尽くす
 doc.class     #=> Hpricot::Doc
    - Hpricotが関数として定義されてしまう、という変な実装。
        - initializeメソッドを使わない記法が流行?
    - Hpricot::Doc#%(html_class) にて、HTML内からhtml_classに該当するデータを抽出可能
        - html_class="td.main table": CSS流儀の書式
        - html_classはXPathも使用可能。
            - XPathはFirefoxのプラグインFirebugにて簡単に抽出可能。
    - (脱線) Set#divide{|i| cond} を使うと、Setオブジェクトの中でcondが一致する値同士でグルーピングする。
    - HTMLを解析し、取り出したファイル名(URL)を全てダウンロードする場合、1件ダウンロードするたびに、少し待つこと

 sleep 0.5
        - これをやり忘れると、サーバー側からはDoS攻撃とみなされるので、要注意。
    - この他にHpricotを使うと、HTMLを書き換えることも可能。
        - 例)読み込んだHTMLの中にある画像ファイルのURL([http://...][8] )を相対パスに書き換えて保存することができる。

反応リンク集

Clone this wiki locally