go modulesに移行したらvscodeがまだ微妙だった
今やってるやつで dep から go modules にしたらvscodeの対応がイマイチだったのでメモ。 ついでにlanguage-serverの対応もする。
現状がここにまとまってる。 github.com
やったこと
- goenv使っててvscodeで使ってたgoが古かったのでgoroot設定してgoenvで使ってるやつに直した
- ms-vscode.goが0.8.0以上か確認
- Go: Install/Update Tools から gocode-gomod と godef-gomod と go-langserver インストール
- langserverを入れる。go getでインストールできなかったのでcloneしてgo install GitHub - saibing/bingo: Bingo is a Go language server that speaks Language Server Protocol.
- vscodeに以下の設定を入れる
"go.useLanguageServer": true, "go.alternateTools": { "go-langserver": "bingo" }, "go.languageServerExperimentalFeatures": { "format": false, "autoComplete": true, "rename": true, "goToDefinition": true, "hover": true, "signatureHelp": true, "goToTypeDefinition": true, "goToImplementation": true, "documentSymbols": true, "workspaceSymbols": true, "findReferences": true }
- vscodeを再起動する
goのversion切り替えツール使ってるとvscodeでどのversion使われるかでハマりがち。
YAPC Asia 2015 #yapcasia
さて、最後?のYAPC Asiaに行ってきました。
talkでよかったと思うのは裏のbonnuさんのとどっちに行くかすごい迷ったけど(すいません)、超直近仕事でgolangを 書いているのもありbradfitzさんのtalkは実践的でよかったなと思いました。 githubに全部のってるのであとからでも試せるのもうれしい。
そういえば2007にも来てたんですよね。そのときはtalk聞けなかったのでよかったなと。
懇親会では昔の同僚と、そのご友人といろいろ話して、だいたい話したなってなったら うろうろしてとりあえず話したい人に声かけまくろうみたいになって、直接は知らないけど 誰か知ってたらそのまま会話に参加みたいになって、いろいろな人と話せてとても楽しかったですね。 すごいお話するの久しぶりだったりで話しかけるか迷ったけど、HTTP2は広告配信に有効ですかねみたいな質問が できたのも大変よかったです。
思い出してみると2007年の津田ホールのときから参加していて、8年連続で参加できてその間に転職してて、 昔の同僚とかと会える同窓会みたいになってるし、優秀な人いっぱいいるし今後そういう人の発表が聞ける場が 減るのはやっぱ残念だねと、懇親会後の新橋二次会で話してたのでbuilderscon.ioが最後でてきてよかったなと 思いました。たぶんまだどうなるかわからないけど。
最後にスタッフのみなさん、参加者のみなさんお疲れ様でした。 今年も楽しかったです。
銀行をスクレイピングする
最近、UFJ銀行スクレイプするの流行りみたいなので、スクレイピングモジュール出したし、乗らないわけにいかなかった。
元ネタはこれ
(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というのを上げてみた
最近は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
Perl QA Hackathon satellite at Tokyo 2013
自社で開催だったので短い時間でしたが参加してきました。Test::Doubleの未実装メソッドを実装していましたが、時間が足りなく一週間たってしまいましたが先ほどpull-reqしてみました。
それと、関係ないんですが放置してたAmon2::Setup::Flavor::Tengのpull-reqを取り込んで、Minillaizeしてリリースしました。MinillaはDocumentにしたがってmigrateすればいいので簡単で素晴らしいですね。