golang
Docker のキャッシュは mtime ベースっぽい - 鳩舎 って話は前にしたんだけど、そんでじゃあどうするのっていう解決策がなかったので、 CI サーバー上で都度ソースをひっぱってくるような場合でも Docker のキャッシュを効かせるために、 git-set-mtime を作…
ポッポー package main import ( "github.com/go-sql-driver/mysql" ) type Pigeon struct { LastFlewAt mysql.NullTime `json:"last_flew_at"` } みたいなことしたいとき、普通に mysql drvicer 生で使ってるとこういうことは起こらないけど gorp とか使っ…
単に CPU 時間を使い切るだけならすぐ出来る package main import ( "runtime" "time" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) for i := runtime.NumCPU(); i > 0; i-- { go loop() } for { time.Sleep(1 * time.Second) } } func loop() { f…
自前で Error() string なメソッドを持った struct を定義した際、エラーコードなどを持たせていて、それを取り出したい。 package main import "log" type MyError struct { Message string } func (e *MyError) Error() string { return "MyError" } func …
そういやまだ新しい経験だから覚えてるし、 golang を勉強していった過程を書いておく。 正しさとかは気にせず、動くものが出来るまでがむしゃらに。 Hello, world まで 特にひねりはない。 homebrew は便利だ。 $ brew install go $ cd ~ $ mkdir -p go/src…
Go Conference 2013 Autumn で命短し恋せよ乙女というタイトルで Gondler の話をしてきました。 他にもたくさんおもしろい発表があって、個人的には Hatena で Go の REST サーバーを立てて運用している話とかおもしろかったです。 Golang in Production !!…
2番煎じ乙。 Gondler という Bundler みたいなツールを go 向けに作りました。gom という先行実装があるのでもう作らんでもええかな感があったのですが、Ruby っぽいけど Ruby じゃない Gomfile とか、bundle exec 相当の機能がないとか、そういう理由でわざ…
channel でブロックするようなコードが書ける。例えばスレッドの並列数を制限したいとか、そういう簡単な用途で使うのに取り回しがいい。 package main import ( "fmt" "time" ) func main() { go func() { for { fmt.Printf(".") time.Sleep(100 * time.Mil…
ImageMagick で普通に画像をリサイズするとモアレがひどいことになる。 具体的には LANCZOS Filter でリサイズするとひどい。 なので Bicubic を使って、かつ線がボケないようにリサイズを行いたいときには、以下のようにする(golang w/ imagick)。 wand.Set…
go で JSON のパースする時は、こんな感じ package main import( "fmt" "encoding/json" ) var text = []byte(`{"Name":"sho"}`) func main() { type Config struct { Name string } config := &Config{} json.Unmarshal(text, &config) fmt.Printf("%+v\n",…
go 言語かけるようになるとメス鳩のウケが良いと聞いたので頑張って勉強しました。リリースは大安か友引の日を選ぶタイプの鳩、ロージーです。 gofu(護符) という、弊社の id:mirakui さんが作ったイケてる画像リサイズサーバー、 tofu の go 実装です(tofu …
go 言語から S3 にアクセスする。 goamz つかえばあとは大体どうとでもなるみたい。 Mac に bzr が入ってなかったのでまず入れる。 $ brew install bzr $ echo "export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH" >> ~/.zshrc つぎは …