Create  FrontPage  Index  Search  Changes  Login

日本Rubyの会 公式Wiki - KansaiWorkshop17 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

! 第17回 [[KansaiWorkshop]](運営:[[RubyKansai]])

{{toc}}

!! 勉強会

:日時:2007 年 7 月 14 日 (土) 13:00〜17:30

:場所:[[京都女子大 J校舎4F J420教室|http://base.alpslab.jp/?s=10000;p=34/59/17.998,135/46/55.609]]
:アクセス:http://www.cs.kyoto-wu.ac.jp/~konami/map/J/
:費用:実費(講師の交通費、配布物の印刷代等)の人数割をご負担ください。前回(同じ会場)は500円でした。
:定員:定員は設定しません。


!! プログラム

!!! 「あなたのソースコード添削します」 by okkezさん、南木さん、novさん
:セッション概要:
::事前に提出されたRubyプログラムをRubyの達人が添削します。

:プロフィール:
::okkez
::社会人三年目。仕事に飽きると、Rubyでツールを作ります。どんなツールかは機会があれば、お話ししたいと思います。Rubyリファレンスマニュアル(るりま)のお手伝いをぼちぼちやっています。また、最近は関数型言語(Erlang,Haskell)を勉強中です。

::nov
::兼業主夫一年目。主夫業以外では、RubyやRailsでコードを書いています。Javascriptをもっと詳しく知りたい、と思っているとかいないとか。

:配布資料(ソースコードのみ、orig/にあるのはこなみせんせいのオリジナル):{{attach_anchor(code-review-nov.zip)}}

!!! ==「表題未定」 by 中田さん ==
:: 台風接近により今回は中止とさせていただきます。

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

!!! 「Rails + rcairo を使った演習」 by 南木さん
:セッション概要:
::rcairo は cairo という2DグラフィックライブラリのRubyバインディングです。
::参考:るびまの紹介記事
::[[http://jp.rubyist.net/magazine/?0019-cairo|http://jp.rubyist.net/magazine/?0019-cairo]]

!!! 「Q&A セッション」 by cuzicさん
:セッション概要:
::具体的な〜〜をしたいのだけれどどうすればいいのか、といった内容の質問に答えるコーナーにしようと思っています。

!!! 「関数型言語Ruby (2)」 by 氏久さん
:セッション概要:
::Rubyは純粋な関数型言語です。今回はha-tanさん作成の関数型言語Rubyのライブラリcohiの紹介、その他関数型言語としてのRubyをサポートするライブラリとその実装・使い方を紹介します。

:プレゼン資料:{{attach_anchor(functional_ruby_presentation.pdf)}}
:配布資料 (ソースコードのみ):{{attach_anchor(functional_ruby.pdf)}}
:演習の解答:{{attach_anchor(answers.tgz)}}

:プロフィール:
::氏久
::大学院生2年目。研究に疲れると、Rubyで黒魔術します。どんな黒魔術かは機会があれば、お話ししたいと思います。Rubyリファレンスマニュアル(るりま)のお手伝いをぼちぼちやっています。また、最近は関数型言語(Erlang,Haskell, Ruby)を勉強中です。Lispに手を出さない勇気を振り絞っていたのですが、最近誘惑に負けて勉強を開始したようです。

!!! RubyからHTMLを扱うためのライブラリ、Hpricotの紹介 by yharaさん
:セッション概要:
::
::参考:rubyでする Web scrapping - Hpricot と mechanize そして scRubyt (朴 芝印)
::http://jp.rubyist.net/RubyKaigi2007/Log0609-S4-01.html

:プロフィール:
::yhara
::

!! 懇親会
:日時:2007 年 7 月 14 日 (土) 18:00〜(予定)
:場所:[[酔心 京都駅前店|http://www.suishin.co.jp/suishin/]]
:会費:およそ社会人:学生 = 2:1 の比率でご負担ください。前回は 3500 円、2000 円でした。
:締切:2007 年 7 月 13 日 (金) 17:00 まで


// !! 参加方法
// # まず [[Rubyist SNS|http://jp.rubyist.net/sns/]]に新規登録
// # 登録されたら Rubyist SNS にログイン
// # Ruby関西コミュニティに参加
// # [[Ruby勉強会@関西-17のイベント|http://jp.rubyist.net/sns/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=68]]に参加登録
// # [[Ruby勉強会@関西-17懇親会のイベントhttp://jp.rubyist.net/sns/?m=pc&a=page_c_topic_detail&target_c_commu_topic_id=67]]にも参加登録(出たい方のみ)

// '''Rubyist SNS への参加や Ruby 関西コミュニティへの参加だけではイベント登録は完了していませんのでご注意ください。'''

!! ログ
!!! オープンセッション
:「関数型言語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://...)を相対パスに書き換えて保存することができる。

!! コメント

*2008-01-10 (Thr) 15:53:34 nrytawh : JUZiwLQZA
{{comment}}

!! 反応リンク集
* http://d.hatena.ne.jp/ha-tan/20070714/1184624448
* http://animemo.seesaa.net/article/47950211.html
* http://d.hatena.ne.jp/Mazin/20070714#1184430413
* http://mono.kmc.gr.jp/~yhara/d/?date=20070714#p01

//{{trackback}}

// !! 会場設備とノートPCの持ち込みについて
// * 会場の教室には電源とLANコンセントが完備しています。無線はありません。
// * LANケーブルは、忘れず持参してください。
// * LANのDHCPは登録しないと使えません。
// ** 自分のノートPCをネット接続したい人は, konamiアットkyoto-wuドットacドットjp まで氏名,PCのMACアドレス,OSをメールで知らせてください。(前々日夜まで)
// ** 登録はその回限りですから,毎回新規に申し込んでください。
// *  勉強会の当日にはネット接続が必須というわけではありません。Ruby がインストールされたPCさえあればたいてい大丈夫です。
// * 当日,ファイルの配布をご希望の方は, USB メモリをご持参ください。

// !! 名札について
// * 初参加の方々もいらっしゃいますので、名札をお持ちの方は是非/持参してください。もちろん名前を大きく書いて。通称もあり。

// !! ロガーの募集
// * [[KansaiWorkshopRequestParticipant]]

// !! バス運行ダイヤ
// [[プリンセスライン京都駅前行(土曜日ダイヤ)|http://www.css-c.com/princessline/11_12keitou.html#2]]

// [[プリンセスライン河原町行|http://www.css-c.com/princessline/index6.html]]