メメメモモ

プログラミング、筋トレ、ゲーム、etc

Go言語

LocalStack の DynamoDB と DynamoDBLocal のベンチマークを取ってみた

結論 この記事では、以下の結論となっています。 DynamoDBLocal が LocalStack の DynamoDB よりパフォーマンスが良い 自動テストでは、DynamoDBLocal を使うほうが良い 概要 手元のPCで動く開発用 DynamoDB は以下の2つがあります。 LocalStack · GitHub Dy…

型付きダックタイピング

概要 Go言語のinterfaceとダックタイピングについてまとめました。 ダックタイピングとは もしもそれがアヒルのように歩き、アヒルのように鳴くのなら、それはアヒルである。 ダック・タイピング - Wikipedia オブジェクト指向の話に置き換えると、 それが「…

Go言語でAWS ElasticSearchを操作する

package main import ( "bytes" "context" "encoding/json" "fmt" "io" "log" "net/http" "time" ) type User struct { Name string `json:"name"` Age int `json:"age"` Note string `json:"note"` CreatedAt time.Time `json:"created_at"` UpdatedAt time…

glogでDebug用ログ出力の関数を作るときの注意点

結論 以下のように、DEBUG環境変数が設定されているときに、ログ出力するような関数を定義した場合は、glog.XxxDepth(例ではglog.InfoDepth)を使いましょう。 package main import ( "flag" "fmt" "github.com/golang/glog" "os" ) func DebugLog(v interfac…

コマンドライン引数以外でglogの設定を行う方法

結論 flag.Setを使います。 例えば、stderrthresholdで、ログレベルの閾値を設定したい場合は、以下のようになります。 func main() { flag.Set("stderrthreshold", "INFO") flag.Parse() glog.Info("Hoge") } 参照 godoc.org

Goのfor rangeでのポインタでハマったこと

概要 以下のプログラムの出力結果はどうなるでしょうか? package main import "fmt" func main() { a := []string{"A", "B", "C"} var b []*string for _, str := range a { b = append(b, &str) } for _, str := range b { fmt.Println(*str) } } A B C の…

DynamoDBlocalでDynamoDBをひとまず触れるようにする

概要 DynamoDBLocalを手元のPCに入れる aws-cliで操作する テーブルを作成する テーブル一覧を表示する テーブルにデータを挿入する データを取得する データをスキャンする Go言語で操作する ダミーのCredentialsを用意しておく SDKの導入 ひとまず参照する…