Submit Search
20090704rubyist九州
Download as ODP, PDF
2 likes
1,186 views
koki_h
Rubyist九州7月定例会発表した初心者向けネタのスライドです。
Technology
Read more
1 of 24
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
More Related Content
PDF
Haikara
jewel12
PPT
web server
soestudio
PDF
Puppet on AWS
Sugawara Genki
KEY
Itcamp長崎2012 capistrano
kumachang_LL
PPTX
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
PDF
ChefとPuppetの比較
Sugawara Genki
PPTX
Puppetのススメ
Gosuke Miyashita
PDF
Pycon2014 django performance
hirokiky
Haikara
jewel12
web server
soestudio
Puppet on AWS
Sugawara Genki
Itcamp長崎2012 capistrano
kumachang_LL
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
ChefとPuppetの比較
Sugawara Genki
Puppetのススメ
Gosuke Miyashita
Pycon2014 django performance
hirokiky
What's hot
(20)
PDF
らくちん Go言語
株式会社YEBIS.XYZ
PDF
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
Naotoshi Seo
PDF
明日から使えるコーディングツール
Tomokazu Kiyohara
PDF
Ansible 入門 #01 (初心者向け)
Taro Hirose
KEY
ゆるかわPhp
Ryota Mochizuki
PDF
Mina 20130417
Naotoshi Seo
PDF
The master plan ofscaling a web application
Yusuke Wada
PDF
Ansible roleとinventoryの書き方
Kamimura Taichi
PDF
Chef+serverspec+werckerでインフラCIする話
Masayuki Morita
PDF
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
Yasutaka Hamada
PDF
Chefを利用した運用省力化とDevOpsの取り組みについて
Yuuki Namikawa
PDF
Ansible入門
Akira Otsuka
PDF
RubyもApache Arrowでデータ処理言語の仲間入り
Kouhei Sutou
PPTX
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
CLARA, Inc.
PDF
Chef SoloからItamaeに完全移行した話+
Tsuyoshi Torii
PDF
Ansible入門...?
shirou wakayama
PPTX
明日から始める Chef 入門 #bpstudy
Takeshi Komiya
PDF
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
Yasutaka Hamada
PDF
Word pressのテーマは firephpでハックすれば 良かったのか
Hisateru Tanaka
PPTX
Ansible ではじめるインフラのコード化入門
Sho A
らくちん Go言語
株式会社YEBIS.XYZ
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
Naotoshi Seo
明日から使えるコーディングツール
Tomokazu Kiyohara
Ansible 入門 #01 (初心者向け)
Taro Hirose
ゆるかわPhp
Ryota Mochizuki
Mina 20130417
Naotoshi Seo
The master plan ofscaling a web application
Yusuke Wada
Ansible roleとinventoryの書き方
Kamimura Taichi
Chef+serverspec+werckerでインフラCIする話
Masayuki Morita
2014/11/04 第2回 一撃サーバー構築シェルスクリプト勉強会(さっぽろ!) 発表資料
Yasutaka Hamada
Chefを利用した運用省力化とDevOpsの取り組みについて
Yuuki Namikawa
Ansible入門
Akira Otsuka
RubyもApache Arrowでデータ処理言語の仲間入り
Kouhei Sutou
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
CLARA, Inc.
Chef SoloからItamaeに完全移行した話+
Tsuyoshi Torii
Ansible入門...?
shirou wakayama
明日から始める Chef 入門 #bpstudy
Takeshi Komiya
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
Yasutaka Hamada
Word pressのテーマは firephpでハックすれば 良かったのか
Hisateru Tanaka
Ansible ではじめるインフラのコード化入門
Sho A
Ad
Viewers also liked
(11)
PDF
Welcome pepper~facebookで振り返る片想い?が実るまでの軌跡~
守 村山
PDF
20160529 Pepper SDK for Android Studio
Kenichi Ohwada
PDF
Pepper x IoT x Web 勉強会やってみた話と失敗談
dsuke Takaoka
PDF
Pepper DAYS ☆ -Pepperのいる世界-
tomomi_pepper
PPTX
NAO Workshop #1
Takuji Kawata
PPTX
ニンニンPepperアプリ概要と技術説明
chong song
PDF
Pepperって実際何モノ?
tomomi_pepper
PDF
Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要
thinkjam.Inc.
PDF
IBM Blluemix を Pepper とつないでみよう
Takuji Kawata
PPTX
Pepper アプリデベロッパーのための NAO アプリ開発講座1
Takuji Kawata
PPTX
Pepper活用提案書
优辅 西
Welcome pepper~facebookで振り返る片想い?が実るまでの軌跡~
守 村山
20160529 Pepper SDK for Android Studio
Kenichi Ohwada
Pepper x IoT x Web 勉強会やってみた話と失敗談
dsuke Takaoka
Pepper DAYS ☆ -Pepperのいる世界-
tomomi_pepper
NAO Workshop #1
Takuji Kawata
ニンニンPepperアプリ概要と技術説明
chong song
Pepperって実際何モノ?
tomomi_pepper
Wo! vol.38 ロボットの「iPhone」になるか?Pepperの概要
thinkjam.Inc.
IBM Blluemix を Pepper とつないでみよう
Takuji Kawata
Pepper アプリデベロッパーのための NAO アプリ開発講座1
Takuji Kawata
Pepper活用提案書
优辅 西
Ad
Similar to 20090704rubyist九州
(20)
PDF
安全なプログラムの作り方
Kazuhiro Nishiyama
ODP
kpfx07 LT ruby-processingでイケメンになりたい
koki_h
PDF
エコなWebサーバー
emasaka
PDF
Web技術勉強会23回目
龍一 田中
PDF
Red Data Tools
Kouhei Sutou
PPTX
エンジニアという職業について
Hisatoshi Kikumoto
PDF
Rails vim easy
Naoki Takaesu
PPTX
趣味でやるSmalltalk Webアプリ開発
Kazuki Minamitani
PDF
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
PDF
Fluentd casual
oranie Narut
PDF
Mojolicious::Liteを使ってみよう
charsbar
PDF
実践スクレイピング
だいすけ ふるかわ
PDF
Rubyで始めるWebスクレイピング
Takuro Sasaki
PDF
Fluentd Casual Talks LT #fluentd #fluentdcasual
Hitoshi Asai
PPT
Mohawk presentation-gdg-kobe
Tsubasa Kato
PDF
ScrapyとPhantomJSを用いたスクレイピングDSL
Masayuki Isobe
PDF
Web技術勉強会 第37回
龍一 田中
PDF
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
ericsagnes
PDF
#31 愛しのst2
森下 智裕
PPTX
Couch Db勉強会0623 by yssk22
Yohei Sasaki
安全なプログラムの作り方
Kazuhiro Nishiyama
kpfx07 LT ruby-processingでイケメンになりたい
koki_h
エコなWebサーバー
emasaka
Web技術勉強会23回目
龍一 田中
Red Data Tools
Kouhei Sutou
エンジニアという職業について
Hisatoshi Kikumoto
Rails vim easy
Naoki Takaesu
趣味でやるSmalltalk Webアプリ開発
Kazuki Minamitani
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
Fluentd casual
oranie Narut
Mojolicious::Liteを使ってみよう
charsbar
実践スクレイピング
だいすけ ふるかわ
Rubyで始めるWebスクレイピング
Takuro Sasaki
Fluentd Casual Talks LT #fluentd #fluentdcasual
Hitoshi Asai
Mohawk presentation-gdg-kobe
Tsubasa Kato
ScrapyとPhantomJSを用いたスクレイピングDSL
Masayuki Isobe
Web技術勉強会 第37回
龍一 田中
eZ Publish勉強会2013年3月「eZ Publishの構築を簡単に!」
ericsagnes
#31 愛しのst2
森下 智裕
Couch Db勉強会0623 by yssk22
Yohei Sasaki
20090704rubyist九州
1.
Rubyを使って まとめサイトをさくっと作ろう (2009年7月Rubyist九州初心者向けコーナー)
橋本 幸樹(koki-h) http://d.hatena.ne.jp/koki-h @20090704 Rubyist九州 定例会
2.
今日のお題 ●
フィジカルコンピューティングモジュール ”Pepper” のまとめサイトを先日作ったので その作業でいかにRubyを利用して楽をしたか、 についてお話します。 ● 上記の話題を通してRuby初心者の方にRubyの便 利な機能やよく使われるライブラリについて情 報をご提供できたらうれしいです。 ● まあいろいろツッコミどころはあると思いま す。
3.
”Pepper”とは ●
フィジカルコンピューティングモジュール (Gainer互換) ● パソコンと電子部品の橋渡しをする機器 ● これがあれば以下のようなプログラムを各種の 言語で作成できます。 – たとえばパソコンの画面をクリックしたらLED点灯 (PCからLEDを制御) – たとえば警告通知メール(「サーバが止まっ た!」)が到着したら回転灯点灯(PCから回転灯を 制御) – たとえば大統領スイッチをおしたらWEBサイトで声 明(大統領スイッチからPCを制御)
4.
大統領スイッチ カバーを..
カパッとして ぐっと押す! 「シリコンハウス共立」 のブログより引用 http://blog.siliconhouse.jp/archives/51572333.html
5.
Pepperのデモ ●
画面をクリックするとLED点灯 ● 今回はProcessingという言語で実装していま す。 ● Rubyを使うことも出来ます。(が、まだ試して いません)
6.
私とPepper ●
Make: Tokyo Meeting 03 でキットを販売して いたのを購入 ● マニュアルなし(「ネットでわかりますよ」) ● そこで検索 ● 雑誌「エレキジャック」のサイトでの作者の方 が書いた入門記事の連載を発見! ● ただ、ちょっと読みにくい。。。(記事自体は とても良い記事です)
7.
エレキジャックの記事の
ここが読みにくい ● 前回、次回へのリンクがない ● 連載のインデックスページがない ● なので、第1回を読んだあと、第2回を読みたく ても時間をかけて探さなければならない。 そうだ。自分でまとめサイトを作ろ う!
8.
サイト内検索は? キーワード“ Pepper”で検索した結 果
9.
サイト内検索は? ●
"Pepper”で検索すると他の記事が上位に来る ● 掲載日順のソートが出来ない 検索結果から必要なリンクを抜き出 し、 並べ替えれば読みやすくなる。 抜き出しや並べ替えは Rubyで自動化できる!(ある程度)
10.
まとめサイト製作の手順 ※赤文字のところをRubyでやります 1.エレキジャックのサイトを検索し、検索結果か らPepperに関する記事のリンクだけを抜き出
し、URL順(大体日付順になる)にソートする 2.日付順になっていないところをエディタで直す 3.抜き出したURLを使って記事ページ取得し、サ ブタイトルの部分を抜き出す 4.サブタイトルが取得できていないところをエディタで 直す 5.URL、ページタイトル、サブタイトルを整形 し、HTML化する 6.整形したHTMLを適当なWEBページに貼り付ける
11.
1.検索→リンク抜き出し→ソート # fetch_link.rb require 'rubygems' require
'mechanize' url = "http://search.cqpub.co.jp/cgi-bin/searchej.cgi?q=pepper&o=" url2= "http://search.cqpub.co.jp/cgi-bin/searchej.cgi?q=pepper&qxpnd=0&pagenum=2" Linktext_contains = /Pepper/ Agent = WWW::Mechanize.new Links = {} def fetch_link(url) #Mechanizeで検索結果ページを取得 page = Agent.get(url) page.links_with(:text => Linktext_contains).each do |l| #Pepper関連の<a>タグのみ Links[l.href] = l.text #URLをキーにリンク文字を格納 end end fetch_link(url) fetch_link(url2) Links.keys.sort.each do |k| #URL順にソートしてタブ区切りで出力 printf "%st%sn", Links[k], k end
12.
1.検索→リンク抜き出し→ソート
(解説) ● WWW::Mechanizeというライブラリを使用してい ます。 ● WWW::Mechanizeはブラウザの代わりにスクリプ トでWEBにアクセスするためのライブラリです ● WWW::Mechanizeは 最近のRubyが入っていて、 ネットにつながっている環境ならコマンドライ ンから “gem install mechanize” とやると入ります ※gemコマンドは”RubyGems”というRuby用のライブラリやRubyで書かれたアプリを 管理するソフトウェアです。Ruby1.9系には標準添付ですが、Ruby1.8系だと別途イ ンストールしなければならない場合があります。(1.8系でもパッケージ作者さんが 添付している場合が多いようです。) 前のスライドに戻ってソースを見直してみましょう
13.
出力結果(イメージ) 記事タイトルに"Pepper”を含むものだけが抜き出されました Ginger/Pepper/Sugarでフィジカル・コンピューティング(1) -
フィジカル・ コンピュー...http://www.eleki-jack.com/FC/2008/11/post.html Ginger/Pepper/Sugarでフィジカル・コンピューティング(2) - フィジカル・ コンピュー...http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar2.html Ginger/Pepper/Sugarでフィジカル・コンピューティング(3) - フィジカル・ コンピュー...http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar3.html Ginger/Pepper/Sugarでフィジカル・コンピューティング(4) - フィジカル・ コンピュー...http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar4.html Ginger/Pepper/Sugarでフィジカル・コンピューティング(5) - フィジカ ル・コンピュー...http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar.html Ginger/Pepper/Sugarでフィジカル・コンピューティング(6) - フィジカル・ コンピュー...http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar6.html ※プログラムの実行結果をエディタで修正したものの一部 Ginger/Pepper/Sugarでフィジカル・コンピューティング(7) - フィジカル・ です。 コンピュー...http://www.eleki-jack.com/FC/2008/11/7.html
14.
3.記事ページ取得して
サブタイトル抜き出し #fetch_subtitle.rb require 'rubygems' require 'csv' require 'open-uri' require 'nokogiri' file = './url_list.txt' #前工程の出力結果(タブ区切りテキスト(TSV)) CSV.open(file,"r","t") do |row| #TSVの読み込み title = row[0] #各カラムが自動的に配列に入ってくれる url = row[1] page = open(url) #ページを取得 doc = Nokogiri::HTML(page) #HTMLをnokigiriで解析 subtitle = doc.css(".asset-body b")[0] #CSSセレクタでサブタイトル抜き出し subtitle = subtitle.text if subtitle printf "%st%st%sn",url, title.sub(/ - .*$/,''), subtitle #サブタイトル付きで出力(TSV) end
15.
3.記事ページ取得して
サブタイトル抜き出し(解説) ● タブ区切りテキストの読み込みにCSVライブラ リを使っています。自動で行区切り、列区切り をやってくれるので便利です。 ● ページ取得はここではMechanizeの代わりに open-uriライブラリを使っています。 ● CSVライブラリとopen-uriライブラリはRubyに 標準添付です。 ● HTMLを解析してサブタイトルを抜き出すのには Nokogiri を使っています。”gem install nokogiri”で入ります。CSSセレクタパターン で抜き出せます。
16.
出力結果(イメージ) 記事のサブタイトルが追加されました http://www.eleki-jack.com/FC/2008/11/post.html Ginger/Pepper/Sugarでフィジカル・ コンピューティング(1)
はじめに http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar2.html Ginger/Pepper/Sugar でフィジカル・コンピューティング(2) 第2回 Pepperを組み立てよう-1 http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar3.html Ginger/Pepper/Sugar でフィジカル・コンピューティング(3) 第2回 Pepperを組み立てよう-2 http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar4.html Ginger/Pepper/Sugar でフィジカル・コンピューティング(4) 第3回 Pepperの動作を確認しよう-1 http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar.html Ginger/Pepper/Sugarで フィジカル・コンピューティング(5) 第3回 Pepperの動作を確認しよう-2 (Processingのインストール編) http://www.eleki-jack.com/FC/2008/11/gingerpeppersugar6.html Ginger/Pepper/Sugar でフィジカル・コンピューティング(6) 第4回 PepperでHello World http://www.eleki-jack.com/FC/2008/11/7.htmlGinger/Pepper/Sugarでフィジカル・コン ピューティング(7) (前回からの続き) ※プログラムの実行結果をエディタで修正したものの一部 です。
17.
5.整形、HTML化 #make_html.rb require 'rubygems' require 'csv' require
'erb' TEMPLATE =<<TEMPLATE #出力結果のテンプレート <p> <a href=<%= url %>><%= title %></a><br /> <span style="font-size:85%"><%= subtitle %></span> </p> TEMPLATE FORMATTER = ERB.new(TEMPLATE) file = './subtitles.txt' #前工程の出力結果(タブ区切りテキスト (TSV)) CSV.open(file,"r","t") do |row| #TSV読み込み url = row[0] title = row[1] subtitle = row[2] puts FORMATTER.result(binding) #erbでフォーマットして出力 end
18.
5.整形、HTML化(解説) ●
TSV読み込みのところは前の工程と一緒です。 ● HTMLに整形する部分はERBを使っています。 ● ERBはRubyに標準添付のテンプレートエンジン です。(Ruby on Railsでも使われていま す。) ● ERBを使うと書式の中にテキストを埋め込むこ とが簡単にできます。
19.
出力結果(部分) これを適当なWEBページに貼り付ければ完成です! <p>
<a href=http://www.eleki-jack.com/FC/2008/11/post.html>Ginger/Pepper/Sugarで フィジカル・コンピューティング(1)</a><br /> <span style="font-size:85%">はじめに</span> </p> <p> <a href=http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar2.html>Ginger/Pepper/Sugarでフィジカル・ コンピューティング(2)</a><br /> <span style="font-size:85%">第2回 Pepperを組み立てよう-1</span> </p> <p> <a href=http://www.eleki- jack.com/FC/2008/11/gingerpeppersugar3.html>Ginger/Pepper/Sugarでフィジカル・ コンピューティング(3)</a><br /> <span style="font-size:85%">第2回 Pepperを組み立てよう-2</span> </p>
20.
まとめ ●
WEBから何かを取得して抜き出すときは WWW::Mechanizeが便利 ● 単純なWEBアクセスにはopen-uriが便利 ● CSVの読み込みにはCSVライブラリが便利 ● HTMLを解析して特定の要素を抜き出すには Nokigiriが便利 ● テンプレート出力にはERBが便利 ● 似たような機能を持つライブラリは他にもあり ます。慣れてきたらもっと自分好みのものを探 してみるのもいいかと思います。
21.
リンク ●
WWW::Mechanize – http://d.hatena.ne.jp/kitamomonga/20081209/kai setsu_for_ver_0_9_ruby_www_mechanize ● open-uri – http://www.ruby- lang.org/ja/man/html/open_uri.html ● CSV – http://www.ruby-lang.org/ja/man/html/CSV.html ● Nokogiri – http://mono.kmc.gr.jp/~yhara/rubyscraping/? Nokogiri
22.
リンク(2) ●
ERB – http://www.ruby-lang.org/ja/man/html/erb.html ● RubyGems – http://www.ruby- lang.org/ja/man/html/RubyGems.html ● Pepperまとめサイト – http://pepper.gohannnotomo.org ● 雑誌「エレキジャック」 – http://www.eleki-jack.com/
23.
質疑応答
24.
ご清聴ありがとうございました
Download