17

Click here to load reader

Web技術勉強会 第37回

Embed Size (px)

DESCRIPTION

Web技術勉強会 第37回

Citation preview

Page 1: Web技術勉強会 第37回

Web技術勉強会 第37回2chから世相を占う

「rankforce」

Page 2: Web技術勉強会 第37回

とにかく速報がほしい

Twitterもあるけどやっぱり、

速報=2ch

Page 3: Web技術勉強会 第37回

会社にいても速報がほしい

仕事中に堂々とメールは見辛い。

携帯でネットはさすがに…。いや見るけど。

でも速報が欲しい。それを実現したい!

Page 4: Web技術勉強会 第37回

例えば…

「有名人が逮捕された」↓

キタ━━━━━━(゚∀゚)━━━━━━ !!!!!↓

社会人、祭りに参加出来ず↓

ニート大勝利

Page 5: Web技術勉強会 第37回

正直悔しい。せめて祭りを外から眺めたい!

Page 6: Web技術勉強会 第37回

駄目なパターン

・常時2ch監視→できるわけねえだろ。・定期的に2ch監視→そんな時間あるわけねえだろ

・休み時間に2chを監視→まさに後の祭り・仕事中に小窓で2ch→バレたらさすがにやべえ

・というか会社から2ch見れないぜ!

Page 7: Web技術勉強会 第37回

共通して言えること

人間が能動的に情報を取りに行く時点でだめ。なぜならいつ事件が起きるかわからない。プログラムで定期監視をしないといけない。それを人間に通知しなければ要件は達成できない。

つまり、定期的かつ受動的に速報を取得することがゴール!

Page 8: Web技術勉強会 第37回

こうすれば簡単

定期的→cron

受動的→kayac通知API(要iPhone)

Page 9: Web技術勉強会 第37回

言語選定

Rubyに決定 条件として「スクレイピング」が簡単、

「過去のロジックの使い回し」が可能

はじめにJavaと迷うも、Javaはスクレイピングが糞。例によってコード量が多くなる。却下。次にPerl。ロジックの使いまわしが効かない(新規につくらないといけないところが多かった)ので却下。あとORMが糞なので却下。その点Rubyはすべて満たした。PHPは…残念な

がら今回は用なしだった。

Page 10: Web技術勉強会 第37回

速報まとめサイトを利用

http://ranking.sitepedia.jp/

Page 11: Web技術勉強会 第37回

スクレイピングは超簡単

Hpricotでらくらく。

html = timeout(TIMEOUT) do Hpricot(open(URL).read) endres = (html.search("//table[@class='forces']/tr")).each_with_object [] do |e, r| ikioi = e.search("[@class='ikioi']").inner_text.toutf8end

Page 12: Web技術勉強会 第37回

DBにつっこむ

これもSequelでらくらく

@db = Sequel.connect(...)@db[:table] << data

Page 13: Web技術勉強会 第37回

IMを送る

普通にNet::HTTPとかでPOSTするだけ(すでに作ったものをコピペで終わり)

HOST = 'im.kayac.com'PATH = '/api/post/'data, header = {}, {}Net::HTTP.version_1_2Net::HTTP.start(HOST, 80) do |http| response = http.post(PATH, data, header)end

Page 14: Web技術勉強会 第37回

実行

rankforce.rb -b newsplus -r 10000 -i 20000 -d

Page 15: Web技術勉強会 第37回

Cronに登録

実は苦労した…。cdが必要とは。

*/5 * * * * cd /usr/local/apache2/htdocs/rankforce/; /usr/local/bin/ruby rankforce.rb -r 10000 -i 20000 -d

Page 16: Web技術勉強会 第37回

あとはiPhoneで通知をまつべし

通知してくれる!

Page 17: Web技術勉強会 第37回

まとめ

製作時間:たぶん10時間くらいPerlでも同等のものを同等の

コード量で作れるはず。今後はちょこちょこ改造予定。