PhantomJSでスクレイピングするのがいいのかわるいのか?

PhantomJSを触ってみたけど、スクレイピングというか自動化するならWWW::Mechanize::Firefoxのが使いやすいなぁと思った。

CasperJSを使うのがよさそうなんだけど、node.jsから使えないしなぁ。

例えばデータベースからurlリストを引っ張ってきて次々にアクセスしたいといった用途の場合、PhantomJSだったらphantomjs-nodeを使うらしいんだけどCasperJSはそういうことができるんだろうか?

と思って調べたら、SpookyJSというものを見つけたんだが、PhantomJSが1.8からwebdriverをサポートするようになったからそっち使えみたいな感じになっている。

結局pythonでselenium使うのが正解なのか?

ていうかseleniumでいいじゃんみたいな気分になっている。

tiTokyoにいってきた

スタッフの皆様お疲れ様でした。

後半のセッションが特に面白かったですね。

1361051796

デンソー

車情報連携ユニットが楽しそう。発表聞いていて、クルマもスマホと同じ持ち運ぶデバイスなんだなーと思った。電気自動車は充電するしなー。あとVelocityの意味でビッグデータの範疇に入っていくのかな。

Alloy

最近ご無沙汰のAlloy。WidgetsとThemeが便利そうなので積極的に使っていこうと思った。ちなみに僕の開発環境は

なんだけど、ちょっと前にtylusっていうTSSをStylusで書くモジュールを発見したので使おうと思っている。

LanicaのPlatino

1361051799 1361051800

さくさく動いていてヤバイ、これは面白そう。Alloyでも動くそうだし。楽しみだ。

芸術闘争論

コンテクストが大切

鑑賞の4要素

  • 構図
  • 圧縮
  • コンテクスト
  • 個性

ProductName 芸術闘争論
村上 隆
幻冬舎 / 1890円 ( 2010-11 )


  • ARTのルールはプレイヤーの望むもの
  • ルドルフ・スティンゲル
  • マーク・グロッチャン

Node.jsでSQLiteを使ってみる

Node.jsのときはMongoばかりなので実は使ってないことに気づいた。

sqlite3 = require('sqlite3').verbose()

db = new sqlite3.Database('/tmp/blog.db')

readAllRows = ->
  db.all "SELECT perma,title FROM entries", (err, rows) ->
    rows.forEach (row) -> console.log("#{row.perma}: #{row.title}")
    closeDb()

closeDb = ->
  console.log "closeDb"
  db.close

出力

1355998432: PersistentのMigrationが便利そうだ
1356131853: カタカナのしりとりの圏
1356162470: ScottyはHaskellのSinatraクローン
1356235849: 本棚オーバーフロー
1356333890: virthualenvwrapperをつくった
1356341787: ブロッコリーとカリフラワーを畑とベランダで育てている
1356429473: yesod-tutorialがわかりやすい
1356515387: 24 Days of Hackage
1356521203: snapでさくっと作るウェブサーバー
closeDb

会社数字を理解するために

筆者は計数感覚と提唱しているが。

15のハンバーガーを半額にした時の増益の理由の計算と、20の居酒屋オーナーの年収推定の計算のやり方が面白かったので、待ち時間に計算して暇つぶしをするという楽しみが増えた。

ProductName 会社数字がわかる計数感覚ドリル (朝日新書)
千賀 秀信
朝日新聞出版 / 777円 ( 2009-06-12 )


  • ホテルとスーパー、ポイント発行が有利なのはどちらか?
  • 販売費は節約可能と不能な費用に分解できる
  • ROAは売上高営業利益率と総資産回転率に分解できる
  • 内部留保は現金を示しているわけではない -労働分配率は50%くらい

なかじま園でイチゴ三昧

やっと行ってきた。新東名のSAからだったらすごく近い。が、新聞に載った直後らしく激混みだった。そしてみんな待ち時間にどうぶつの森をやっていた(老若男女問わず)。

1360667819

いちごパフェといちごケーキ

1360667821 1360667823

いちごミルクとワッフル

1360667824 1360667826

美味しかった。また行きたい(平日に)。

Chaplin.jsを試している

Brunchで生成されるスキャフォールドよくわからんわーっていうのはChaplin.jsがわからんわーっていうことと同義だった。

Hello Worldのサンプルostioのコードを読んでみたんだけど、いまいちわかってないところがある(HandlebarとかStylusをどこで組み込んでいるのかとか)ので、自分で一つ書いてみないとダメだなぁ。

Chaplin.jsとは

いまのとこの理解だと、Chaplin.jsというのはBackbone.jsを土台にしたフレームワーク。backbone.layoutmanagerはBackbone.jsの拡張っぽいなぁと思ったがこっちはフレームワークな感じなので規約とかお作法っぽいものが多い。

  • View,Mode,Utilsのディレクトリ構造は大体決まっている。
  • View,Modelにはbaseっていうディレクトリが掘ってあって、共通の処理を書く。ほんでもって継承する。
  • Layoutはbackbone.layoutmanagerとは異なり、Viewを継承していない。

他にドキュメントからだと、

  • Applicationクラスは単なるブートストラップ
  • mediatorがpub/subを司る
  • ControllerがModelと対応するViewをインスタンス化する

という感じで役者が増えている。

「ゆさぶる。 企画書」にはそれほど揺さぶられなかった

速読

「コンセプトとはパーセプションの変容を促すもの」という表現は良かった。

ProductName ゆさぶる。企画書
村山 涼一
日本経済新聞出版社 / 1470円 ( 2012-12-15 )


ターゲティングで求められていることは、誰も考えなかったような細分化の尺度を考えることです

これもなるほどなーと思った。

しかし、略歴見たけど実績が書かれてなかった。マーケティングプランナーはあまり実績を表に出さないものなのだろうか?

grunt-bbbでtodoリストをつくってみた

Yeomanはちょっとデカすぎるなぁってことで、Yeomanよりは小さめな感じのgrunt-bbbをいじってみた。

todomvc用のスキャフォールドが用意されているので

bbb init; bbb init:todomvc

というコマンドが使えるんだけど、これは動かない

というわけでbbbのお作法の勉強も兼ねて自分で最初から書いてみた。

mkdir bbbtodos
cd bbbtodos
bbb init
bbb init:module todo

とかこんな感じで書いていけばいい。

bbbtodos

  • backbone-localstorages.jsをvendor/jam以下に置いてしまったがまぁいいかな。
  • 実際のコードはapp/modulesに置くのがお作法らしい。bbb init:moduleもあるしな。
  • bbb serverで127.0.0.1:8000でサーバーが立ち上がるので便利
  • main.jsではrouterの設定をしている
  • app.jsではLayoutの設定とか、useLayoutといった便利関数を追加しているだけ。
  • router.jsが頑張っている

grunt-bbbとは何か?

backbone.layoutmanagerを含んだbackbone.jsのボイラープレートのフレームワーク。

backbone.layoutmanagerはPhilosophyを読めば分かるようにBackbone.Viewを拡張したものでキャッシュ機構を入れたりテンプレートをよろしく管理してくれたりとかそんな感じ。

なので、Backbone.jsで開発している感をだしつつ、弱いところを補ってくれる感じのBackbone.js++って感じのツールかな。

MODERN WORKFLOWS FOR MODERN WEBAPPSなYeomanで利用されているパッケージを調べた

Yeomanはrobust and opinionated set of tools, libraries, and a workflowなので、使われているパッケージを調べることでjavascript界で今イケてるツールの情報をゲットできるわけだ。

というか、ざっと見たところgrunt.jsしかわからん。

grunt.js

makeのjavascript版みたいな位置付け。ほとんど使ったことがない。

BOWER

ブラウザサイドのパッケージマネージャ。プロキシ通らないなぁと思ったら、fixされていた

AMD関連

underscore.jsがAMD対応されていないので対応版としてlodashってのがあるらしい。他にrequire.jsの軽い版でalmond.jsがある。

PhantomJS

Headless Webkitというわけで、テストしたりスクレイピングできたりする。

ブラウザを使ったスクレイピングをやりたい時にはWWW::Mechanize::Firefoxを使っていたが、PhantomJSベースのCasperJSに乗り換えるかもしれない(WWW::Mechanize::FirefoxはFirefoxをインストールしないといけないのでちょっと面倒臭いので)。

Yeoman使うのか?

養鰻だけにShizuoka.jserは使うよね的なtweetしたけど、僕は使わないと思う。ツールの寄せ集めだと追随していくの大変だしねー。

自分の用途だとボイラープレートで十分なんじゃないかと思う。