Rubyによるクローラ開発技法 読書メモ 最終回

DSC03930

rubyによるクローラ開発技法ですが、最後まで読み終わりました。

序盤は、クローラに必要な様々なクラスの紹介や中身の解説がメインでしたが、後半の多くは実際に存在するサイトをクロールする場合のハックの紹介が中心。
全部はやらなくていいかな と思ったので飛ばしながらやりました。
個人的にWikipediaのデータ活用は実際に使えそうなシーンがあって良かった。

4章 mongodbでエラー

これは本の内容と関係ないですが、 mongodbをElCapitanにインストールする際うまくいかなかったのでメモ。

$ mongod で起動せず。orz

ちなみに今回brew では入ったのは3.2.0でした。

$mongo --version
MongoDB shell version: 3.2.0

で、mongod を起動すると、 こう。

$mongod
2016-01-22T07:54:10.008+0900 I CONTROL  [initandlisten] MongoDB starting : pid=57227 port=27017 dbpath=/data/db 64-bit host=Red-Lobster.local
2016-01-22T07:54:10.009+0900 I CONTROL  [initandlisten] db version v3.2.0
2016-01-22T07:54:10.009+0900 I CONTROL  [initandlisten] git version: 45d947729a0315accb6d4f15a6b06be6d9c19fe7
2016-01-22T07:54:10.009+0900 I CONTROL  [initandlisten] allocator: system
2016-01-22T07:54:10.009+0900 I CONTROL  [initandlisten] modules: none
2016-01-22T07:54:10.009+0900 I CONTROL  [initandlisten] build environment:
2016-01-22T07:54:10.009+0900 I CONTROL  [initandlisten]     distarch: x86_64
2016-01-22T07:54:10.009+0900 I CONTROL  [initandlisten]     target_arch: x86_64
2016-01-22T07:54:10.009+0900 I CONTROL  [initandlisten] options: {}
2016-01-22T07:54:10.010+0900 I STORAGE  [initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating
2016-01-22T07:54:10.010+0900 I CONTROL  [initandlisten] dbexit:  rc: 100

わかりやすい解説がありました。
http://stackoverflow.com/questions/30235200/mongodb-data-directory-data-db-not-found

というわけで、単純に  Data directory /data/db not found., で言われてるとおり、/data/db というPathのディレクトリを作るか、自分でDBのパスを指定すれば良さそうです。

/dataディレクトリは別にあっても今後困ることないだろうと思って作成しました。

サクセスのパティーン

$mongod
2016-01-22T08:03:50.001+0900 I CONTROL  [initandlisten] MongoDB starting : pid=57333 port=27017 dbpath=/data/db 64-bit host=Red-Lobster.local
2016-01-22T08:03:50.003+0900 I CONTROL  [initandlisten] db version v3.2.0
2016-01-22T08:03:50.003+0900 I CONTROL  [initandlisten] git version: 45d947729a0315accb6d4f15a6b06be6d9c19fe7
2016-01-22T08:03:50.003+0900 I CONTROL  [initandlisten] allocator: system
2016-01-22T08:03:50.003+0900 I CONTROL  [initandlisten] modules: none
2016-01-22T08:03:50.003+0900 I CONTROL  [initandlisten] build environment:
2016-01-22T08:03:50.003+0900 I CONTROL  [initandlisten]     distarch: x86_64
2016-01-22T08:03:50.003+0900 I CONTROL  [initandlisten]     target_arch: x86_64
2016-01-22T08:03:50.003+0900 I CONTROL  [initandlisten] options: {}
2016-01-22T08:03:50.005+0900 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=4G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2016-01-22T08:03:50.392+0900 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-01-22T08:03:50.393+0900 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2016-01-22T08:03:50.416+0900 I NETWORK  [initandlisten] waiting for connections on port 27017

Ctl + c でmongoを終了できますね。

感想

職種にもよると思うんですが、クローラーとかって何年かに一度いきなりのタイミングで開発する機会が降ってくるような気がします。(当社比)
自分の場合、その都度その場しのぎ的に作って
「まぁ。。 こんなもんだろう。とりあえず動いたから。」
と終わらせてしまうので、一度クローラ開発に関する周辺知識も含めて一通り勉強できたのはいい機会でした。

あと、「正直世の中の他の人はこうやって作ってるんですね」っていう事を知るだけでも安心感ある説。

本のレベルとしてはruby初心者でも全然読めるような気がします。
ただ、個人的には「テスト」も盛り込まれてると良かったなぁ と思います。
特にクローラって外部サイトと密接に関わるので、皆はどうやってテスト書いてるんだろう 的な事が気になりました。

おわり

2016-02-24 | Posted in RubyNo Comments » 


関連記事

Comment





Comment



*