@Konboi memo

主に技術に関してつらつらと。

go

net/httpで静的ファイルを返す

追記 (2016/04/13) 完全に読み間違えていましたね やっちゃいけないそうです shogo82148.github.io やるならこう func main() { http.HandleFunc("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) http.ListenAndServe(":30…

GoでMySQLからdatetimeのデータを引いてtime.Time に食わせるときに嵌った

db, err := sql.Open("mysql", "<user>:<password>@/<db name>?parseTime=true&loc=Asia%2FTokyo") parseTime=true をつけるといい感じにparesしてくれる ただこれだとUTCになるっぽうので loc=Asia/Tokyo をつけるとよい github.com</db></password></user>

#shibuyago #2でLTしてきました

はじめに @suzu_v さん VOYAGE GROUP さん会場提供及び、 との提供ありがとうございました と ごちそうさまです #shibuyago pic.twitter.com/JnHK8nh7RB— こんぼい。 (@Konboi) 2016年3月22日 発表資料 こちら発表資料になります 自分のツールの紹介もしつつ、…

Goのflag package で同じオプション名で複数の値を受け取る

はじめに コマンドラインツールを作っていると同一オプションで複数の値を受け取りたい事があります 今回は -ignore hoge -ignore fuga の用に特定の文字列を結果から除きく ignore というオプション名で複数のStringを受け取りたい という事にします Goのfl…

redis-cli monitor のログをプロファイルするツールを作った

TL;DR rmlp という redis-cli monitor で出力されたログのプロファイラを作りました redis-cli monitor のログを調べる必要がある時は、使ってみて下さい。 はじめに 時間帯によってはredis serverのcpu使用率が高くなるときがあった アプリのコードレベルでは…

Route53でダイナミックDNSをする 実装編

はじめに Route53でダイナミックDNSをする 事前調査編 Route53でダイナミックDNSをする ドメイン編 Route53でダイナミックDNSをする IAM編 過去3回に渡って色々準備してきました。 最後これらを使って実際にグローバルIPが変わった時にDNSを変更するクライア…

Golangでinterfaceなsliceの長さを調べる

日本語の使い方的にどうなのっていうのはあるがそこは置いく。 コードを見てもらったほうが早いと思うので。 こちらになります。 package main import ( "encoding/json" "fmt" "reflect" "strings" "github.com/mattn/go-jsonpointer" ) func main() { var i i…

ghooks というGithubのWeb Hook Receiver をgolangで書いた

はじめに goの練習がてらに Github::Hooks::Receiver、 octoks をgolangで書いてみました。 ghooks 使い方 README.md にかいてありますが、こんな感じで使います // sample.go package main import ( "fmt" "log" "github.com/Konboi/ghooks" ) func main() { p…

Golangでどんな json が返ってくるかわからない時に const で定義するまでじゃないんだけど、 interface だと呼び出しが面倒なのどうしたらいいんだろう問題

package main import ( "bytes" "encoding/json" "fmt" ) func main() { b := []byte(`{"foo": "bar", "hoge": {"fuga": "hoga"}}`) dec := json.NewDecoder(bytes.NewReader(b)) var jsonData interface{} dec.Decode(&jsonData) fmt.Println(jsonData) fmt…

Golang で Headerの中身を取得する

func Hoge(w http.ResponseWriter, req *http.Request) { header_hoge := req.Header.Get(“Hoge”) } でできる 逆にセットする場合は req.Header..Set(“Hoge”) = “fuafuga” でできる。

go-bindata を使って静的ファイルもビルドファイルに含めてみる

追記 2018/02/08 go-bindata の作者が GitHub アカウントを削除し、他の誰かが同じ名前のアカウントと go-bindata を作成しました。現時点では新しいユーザが良い意味でアカウントを作ったという保証はないのでリポジトリを使用している場合は、まず確認する…

goma っていうmarkdown preview tool を書いてみた

はじめに golangの練習がてらにmarkdownをブラウザでプレビューするやつを作ってみました。 Konboi/goma 使い方は goma --path path/for/README.md してブラウザで localhost:5858 にアクセスすれば大丈夫なはずです。 作る前の目標として対象の markdown ファ…

golang でファイルを取得する

io/ioutil を使う file, err := ioutil.ReadFile(path) こんな感じで引数は byte

# goalng でコマンドライン入力を受け取る

flagを使うのがいいらしい var ip = flag.Int("flagname", 1234, "help message for flagname") こんな感じで使う flag.XXX の XXX には受け取りたい型を指定する 引数は大体の場合3つある flag.Int を例に出すと 1つ目は 引数の名前 2つ目は デフォルトの値…

Golangでjsonのレスポンスを入れ子にする

はじめに jsonのレスポンスだと { status: 200, results: { message: “ok” } } というようなレスポンスをよく見る。 それをGoでどうすればいいのか調べたのでそれのメモ。 jsonのレスポンスを入れ子にする type Ping struct { Status int `json:"status"` Resu…

Golangでredirectのテストをしようとしたら嵌った

はじめに post以外のメソッドでアクセスしてきた場合は `/‘へリダイレクトするURLに対してきちんとリダイレクトするかのテストを書こうとしたら嵌った 嵌った func TestRedirectHandler(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(redirect…

GolangでレスポンスにJSONで返す

はじめに railsとかだと render json: HASH とかでよしなにjson形式にして返してくれるんですが、 goだと結構嵌ったのでメモ。 今回はサンプルで /pingにアクセスすると { status: 200, result: “ok” } というjsonを返す例を作ってみたいと思います。 jsonで返…

GoでHTTPのリクエストメソッドを取得する

Getのときは〇〇で Postの時は××したいみたいなのよくある そんなときは http.Request の Method を使えば取得できる func postHandler(w http.ResponseWriter, r *http.Request) { log.Printf(r.Method) } 下記がアクセスしたときのlog 2014/09/21 16:18:59…