- golang
- gox
- anacondaの関数自分で一個作った
- update_nameした
golang
まともに書いたの(書いてないけど)初めてでした。golangにした理由みたいなものはなくって、バイナリ生成できる何かならいいかなーっと。
golangを書いていて思ったことをちょっと書きますが、ググれば解決策出てくるようなものです。
- GOPATHとかGOROOTとか面倒
- err何回も使いまわしているの嫌だ
- スコープがわからん
忘れてたけど(追記してる)、ちょっと挙動確かめたいとかいってコメントアウトとかウカツにするとimportで怒られるの悲しいです。
gox
あとに書きます(書かないかも)が、さくらのVPSにCentOSの6を入れて、そこで動かすことにしたので、バイナリをかっちょよく生成したくなりました(クロスコンパイルしたいという意味)。goxというのが便利らしいので、gogetしてgox -osarch="linux/amd64"
しました。これだけでバイナリできるのすごい(時間とか気にかけなければ、gox
だけで、たくさんのばいなりが作れます)。
anaconda
anacondaはgolangのライブラリでTwitterのAPIを叩きます。StreamingAPIも多分対応してます(叩いてない&調べてないけど、GoDocみたらそれっぽい関数があった)。使い方は、日本語の情報もそれなりにあるのでパス。anacondaの関数作ったよという話を。
anacondaが用意する関数とかいろいろは、↓からわかりやすく見えますが、
私はupdate_nameしたいのに、それっぽい関数がなかったので作りました。anacondaに用意されているそれぞれの関数はとても小さくてわかりやすいのでこぴってぺってしてtwitterのapidocみてurlとかいじるだけでした。
func (a TwitterApi) UpdateName(v url.Values) (user User, err error) { response_ch := make(chan response) a.queryQueue <- query{a.baseUrl + "/account/update_profile.json", v, &user, _POST, response_ch} return user, (<-response_ch).err }
↑をanacondaパッケージに放り込んだら叩けます。サイコー。
update_name
ということでupdate_nameを作りました。さくらのVPSいっこ借りているので、そこにバイナリを投げて、cronで毎分呼び出しています。
感想
楽しい。
Streamingとか、golangは得意そうなので余裕があればそういうことやりたい。