読者です 読者をやめる 読者になる 読者になる

@Konboi memo

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

みんなのGo言語を読んで

iPhone7の発表やRubyKaigiのことでTLが賑わう今日この頃、みなさんいかがお過ごしでしょうか。 自分は新型PS4が気になるところです。 さてみなさん、明日 9月9日は何の日でしょうか? そうですね!! みんなのGo言語 の発売日ですね!! みんなのGo言語[現場で使…

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>

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 を使って静的ファイルもビルドファイルに含めてみる

はじめに 先日, gomaっていうmarkdown preview tool を練習がてら作ってみましたが、自分の手元に持ってきたら静的ファイルが含まれてないので、エラーになり使うことができませんでした。 perl でいう__DATA__ みたいなのをどうやるいのか調べていたところ @Ko…

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…