鳩舎

レースしない

golang

git-set-mtime を Docker のためにリリースした

Docker のキャッシュは mtime ベースっぽい - 鳩舎 って話は前にしたんだけど、そんでじゃあどうするのっていう解決策がなかったので、 CI サーバー上で都度ソースをひっぱってくるような場合でも Docker のキャッシュを効かせるために、 git-set-mtime を作…

mysql.NullTime を JSON に変換出来るようにしたい

ポッポー package main import ( "github.com/go-sql-driver/mysql" ) type Pigeon struct { LastFlewAt mysql.NullTime `json:"last_flew_at"` } みたいなことしたいとき、普通に mysql drvicer 生で使ってるとこういうことは起こらないけど gorp とか使っ…

Go で CPU を使い切る

単に 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 にエラーコードなどを付与している時

自前で Error() string なメソッドを持った struct を定義した際、エラーコードなどを持たせていて、それを取り出したい。 package main import "log" type MyError struct { Message string } func (e *MyError) Error() string { return "MyError" } func …

golang を始めた時

そういやまだ新しい経験だから覚えてるし、 golang を勉強していった過程を書いておく。 正しさとかは気にせず、動くものが出来るまでがむしゃらに。 Hello, world まで 特にひねりはない。 homebrew は便利だ。 $ brew install go $ cd ~ $ mkdir -p go/src…

Go Conference 2013 Autumn で Gondler の話をした

Go Conference 2013 Autumn で命短し恋せよ乙女というタイトルで Gondler の話をしてきました。 他にもたくさんおもしろい発表があって、個人的には Hatena で Go の REST サーバーを立てて運用している話とかおもしろかったです。 Golang in Production !!…

Gondler という bundler for golang を作った

2番煎じ乙。 Gondler という Bundler みたいなツールを go 向けに作りました。gom という先行実装があるのでもう作らんでもええかな感があったのですが、Ruby っぽいけど Ruby じゃない Gomfile とか、bundle exec 相当の機能がないとか、そういう理由でわざ…

channel lock

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…

golang JSON struct tag

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",…

gofu is tofu clone implemented by golang

go 言語かけるようになるとメス鳩のウケが良いと聞いたので頑張って勉強しました。リリースは大安か友引の日を選ぶタイプの鳩、ロージーです。 gofu(護符) という、弊社の id:mirakui さんが作ったイケてる画像リサイズサーバー、 tofu の go 実装です(tofu …

golang s3

go 言語から S3 にアクセスする。 goamz つかえばあとは大体どうとでもなるみたい。 Mac に bzr が入ってなかったのでまず入れる。 $ brew install bzr $ echo "export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH" >> ~/.zshrc つぎは …