YAPC Asia 2015 #yapcasia

さて、最後?のYAPC Asiaに行ってきました。

talkでよかったと思うのは裏のbonnuさんのとどっちに行くかすごい迷ったけど(すいません)、超直近仕事でgolangを 書いているのもありbradfitzさんのtalkは実践的でよかったなと思いました。 githubに全部のってるのであとからでも試せるのもうれしい。

github.com

そういえば2007にも来てたんですよね。そのときはtalk聞けなかったのでよかったなと。

懇親会では昔の同僚と、そのご友人といろいろ話して、だいたい話したなってなったら うろうろしてとりあえず話したい人に声かけまくろうみたいになって、直接は知らないけど 誰か知ってたらそのまま会話に参加みたいになって、いろいろな人と話せてとても楽しかったですね。 すごいお話するの久しぶりだったりで話しかけるか迷ったけど、HTTP2は広告配信に有効ですかねみたいな質問が できたのも大変よかったです。

思い出してみると2007年の津田ホールのときから参加していて、8年連続で参加できてその間に転職してて、 昔の同僚とかと会える同窓会みたいになってるし、優秀な人いっぱいいるし今後そういう人の発表が聞ける場が 減るのはやっぱ残念だねと、懇親会後の新橋二次会で話してたのでbuilderscon.ioが最後でてきてよかったなと 思いました。たぶんまだどうなるかわからないけど。

builderscon.io

最後にスタッフのみなさん、参加者のみなさんお疲れ様でした。 今年も楽しかったです。

銀行をスクレイピングする

最近、UFJ銀行スクレイプするの流行りみたいなので、スクレイピングモジュール出したし、乗らないわけにいかなかった。

元ネタはこれ

まだmechanizeで消耗してるの? WebDriverで銀行をスクレイピング(ProtractorとWebdriverIOを例に) - 詩と創作・思索のひろば (Poetry, Writing and Contemplation)

(ns web.scraper.sample.ufj
  (:require [web.scraper :refer :all]
            [clojure.pprint :as pp]))

(defn login []
  (let [client (default-mode! (make-client browser-chrome))
        form (get-form-by-name (get-page client "https://entry11.bk.mufg.jp/ibg/dfw/APLIN/loginib/login?_TRANID=AA000_001") "MainForm")]
    (let [submit (get-elem-from-nodelist-by-index 
                  (get-elements-by-tag-name form "a") 5)
          id (get-input-by-name form "KEIYAKU_NO")
          pass (get-input-by-name form "PASSWORD")]
      (input-form id (str (System/getenv "UFJ_ID")))
      (input-form pass (str (System/getenv "UFJ_PASS")))
      (click submit))))

(def logined (login))

(defn account []
  (-> (page->enlive logined)
      (select-text-node [:div#account :div.situation :table.situation_data :tbody :tr :td.number :p#setAmountDisplay])
      (as-> x (map clojure.string/trim x)
            (pp/pprint x))))

CIDER replで試す場合はrepl上げる前にemacsのsetenvで環境変数設定してね。 というか自分のモジュールで他にもあれやこれやスクレイプしてる。 APIあればいいのに。

Clojarsにweb-scraperというのを上げてみた

web-scraper 0.0.2 - Clojars

最近はClojureを趣味で書いてまして、web-scraperというものをつくって clojarsというサイトに上げたのでご報告。まあ、単なるWebページをスクレイプするという ものなんですが、HtmlUnitというJavaのライブラリを使っていてJavaScriptを解釈して くれるので、最近のJavaScriptいっぱい使っているサイトでもある程度スクレイプできる というものです。

こんな感じで project.clj に足してもらって lein deps でインストールして

:dependencies [[org.clojars.ka2u/web-scraper "0.0.2"]]

こんな感じでスクレイプできます。

(ns something.scrape
    (:require [org.clojars.ka2u/web.scraper :refer :all]
              [clojure.pprint :as pp]))

(defn scrape []
  (let [client (default-mode! (make-client browser-chrome))]
    (-> (get-page client "http://example.com")
      (page->enlive)
      (select-text-node [:div#foo :table :tbody :tr :td])
      (pp/pprint))))

(scrape)

まだ、Clojure書き始めてそんなにたってないので、書き方とか自信なかったんですが 先日 Tokyo.clj #22 という勉強会に参加して、主催者の@tnoborioさんとペアプロする 機会に恵まれ、このライブラリの中身を見てもらえまして、そこそこまともだということ がわかったのでよかったです。

ペアプロでは、3つのマクロをひとつに整理すること、set系のメソッドは!をつけるなどを やりました。時間内に終わらなくて、しかも最終的には2つのマクロになりましたが コードはだいぶ減りました。やはり、知っているひとにコード見てもらえるのは自信になるので とてもよかったなと思います。

YAPC::ASIA 2014

やばい。毎年YAPCでしかブログ更新してない。

というわけで、今年も行ってきました、YAPC::Asia 2014。
運営が変わってどうなるかと思ってましたが、今までと変わらずとても楽しめた。一年ぶりにひさしぶりですねみたいな人もたくさんいて、これでしか会わない人もたくさんいるなと思ったり。

トーク自体は2日間(+前夜祭ちょっと)ほぼいたので、Perl成分少なめではあったけど刺激を受けたのもいくつかあって、よかったなと思った。使わなかったけど、同時通訳は流れが切れないしとてもよい試みだったんではないかと思う。一個紛失があったのは残念でした。

そして、typoさんのキーノートはとても懐かしいのと、やっぱすごいなってのととても刺激があってよかった。近年のマネージメントの話もいいけど、やっぱりあんまり燃えない。サブテクのころもShibuya.pmとか参加してたけど、ああーすごい人いるなーっていう遠い世界で、Kamaitachi作ってたってころは、某氏に誘われてカヤックさんに遊びに行ったときにtypoさんKamaitachi作ってたなとか。懐かしい。懐かしすぎる。その時のhackathonに参加してたすごい人と今の会社で、一緒に働いてたりとかして長い間Perl書いてるとこういうこともあるんだなと思い返したり。20代へのアドバイスはそうですよねって感じで、20代は適切な場所で適切な努力をしよう。あと、30代にもアドバイス欲しい。あと、Jr.超かわいい

それと、お昼にはてなのみなさんと一緒できて楽しかった。実は寿司あんまり得意ではないのは内緒です。みなさんお疲れ様でした。

YAPC::Asia 2013 たぶんこれ見る

予定は未定

Day1

YAPC::Asia Tokyo 2013 オープニング
Postcards from the Edge The State of Perl 5 Development

Perlのモジュールを公開するときに気をつけておいたほうがよい**個のこと
BrowserStackを用いたクライアントサイドのテスト

ランチ

Inseide amon2-live-door-setup.pl with web application development 2013
SPDY, HTTP/2.0の使い方

モダンPerl Tips 50選
Dist::Zilla

僕の考えたFuture Perl

Build Your Own Exobrain

Lightning Talks Day1

Day2

Perlで書く結合テスト

これからのPerlプロダクトの形 & What's new in Carton & cpanm

ランチ

Emacs実践入門 Perl編 & 特別座談会

本当に遭ったレガシーな話
スマフォアプリ開発を支える認証認可アーキテクチャ

PhantomJSによる多岐にわたる広告枠の確実な表示テスト
フルテストも50msで終わらせたい

Lightning Talks Day2

Keynote

Closing

Perl QA Hackathon satellite at Tokyo 2013

自社で開催だったので短い時間でしたが参加してきました。Test::Doubleの未実装メソッドを実装していましたが、時間が足りなく一週間たってしまいましたが先ほどpull-reqしてみました。

それと、関係ないんですが放置してたAmon2::Setup::Flavor::Tengのpull-reqを取り込んで、Minillaizeしてリリースしました。MinillaはDocumentにしたがってmigrateすればいいので簡単で素晴らしいですね。

YAPC::Asia 2012

今年もYAPC::Asiaに参加してきました。スタッフのみなさん、スピーカーの方々、参加者の皆さんお疲れ様でした。

今年は三日間すべて参加できていろいろおもしろいセッションもあったんですが、特に印象に残ったPerl今昔物語のことを書こうかなと思います。miyagawaさん、nekokakさん、tokuhiromさんとnaoyaさんという4人でパネルディスカッションという形式だったんですが、懐かしい話が結構でてきて、色々思い出しました。

私がYAPCに最初に参加したのは2007年の津田ホールで、なんか桜が咲いている頃にやってた気がしますが、MJDのHigher-Order Perlの話を聞いてさっぱりわからんと思っていたのを思い出しました。確か懇親会でnipotanさんがHigher-Order Perlの本をじゃんけんで勝ち取っていたような。そういえばBradFItzさんとかAudreyさんとかも来てたのか。

あと、パネルディスカッションのなかでBlogHacksの話がでて、仕事でPerlを書き始めたのが前の会社入社してからなので2006年くらいで、当時miyagawaさんやnaoyaさんを知らなかったんですが、たまたまBlogHacksを読んでRSSリーダーを使い始め(BloglinesとかFeedbringer?だったような)いろんな人のブログを読み始めて、特にblog.bulknews.netとnaoyaのはてなダイアリーは全部の記事を読んだ覚えがあります。あと今年のゲストスピーカーだったmizzyさんに当時Feedbringerのフィードの見た目のユーザCSSでコメントしたような覚えが。懐かしいですね。

他にも、言語についてもあったんですが、昔よりも実用できる言語が増えてきていて、選択肢としては広がってるけど後方互換性とか安定性とかライブラリの充実とかでPerlもまだメリットあるよね!という話だったと思います。

いままでのPerlYAPCとこれからのPerlということでとてもいいセッションだったと思いました。転職という節目だったというのもありますが、いろいろ思い出すきっかけになりました。

最後に、来年もYAPCあるといいですね!

f:id:ka2u:20120929183724j:plain