Go
あらすじ ある日手元で開発したソースコードを App Engine にデプロイしようとするとエラーが出たときのお話です。 問題と解決策 問題となったのは以下のコード func NewNullString(s string) NullString { return NullString{sql.NullString{s, s != ""}} }…
現在 Google App Engine で Golang + React での開発を行っているのですが、学習曲線を高めるために同じ構成で Blog を作ってみました。 いろいろとはまるポイントがあって学ぶポイントが結構あったので折を見て共有したいと思います。とりあえずはてなブロ…
追記: c.Bind とかする時に type error が起きたりするので Unmarshal も追加 あらすじ MySQL で nullable なカラムレコードを入れるために struct の定義をこうしたらレコードには null が入らずに空文字が入ってしまいます。 Something.Code には Unique …
User.birthday や Diary.ymd みたいな date 型を指定したい場合は struct を以下のようにすれば良いらしい。 Update するときは Query に hms つけた状態でも ymd だけ更新されます。 Find するときは ymd 形式に変えてあげればいいと思います。 package mai…
そんなエラーが出た場合はたぶん parseTime をつけるのを忘れている - "username:password@/dbname" + "username:password@/dbname?charset=utf8&parseTime=True&loc=Local"
前回 CLI で記事を追加する機能を追加しました。 今回は SERVER から記事一覧と記事詳細を取得する処理を追加します。 取り急ぎ JSON を返す処理を追加する edit server/router.go: func AddRoute(r *gin.Engine, dbmap *gorp.DbMap) *gin.Engine { r.GET("/…
前回は CLI ツールを作成して記事の作成(タイトルのみ)を行えるようにしました。 今回は Markdown 形式で保存したテキストファイルから記事を作成するようにします。 仕様 Markdown 形式のファイルを読み込む DB には Markdown の形式のまま保存する(Javascr…
前回は WEB Layer のテストケースを考えました。 今回は CLI について考えます CLIの要件 あるディレクトリに Markdown 形式のファイルを記述しておき、そのファイルからブログ記事を生成する 仕様 とりあえず第三回では CLI の雛形を作ります。実際に Markd…
前回は DB Layer のテストケースを考えました。 今回は WEB Layer のテストケースを考えます。 web layer のテストケースを考える 巷の記事を読んでもイマイチ書き方が分からないので実際に gin のテストコードを参考にして web layer のテストケースを考え…
あらすじ Go 言語の WEB フレームワークである gin を使って WEB API の作り方を調べたのでまとめようと思います。 お断り たぶん全5回ぐらいの内容になると思うのですが、ちょっとまだ記事まとめ中なので、この記事自体をちょいちょい修正します。 完成した…
メモ package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func main() { c, err := redis.Dial("tcp", ":6379") if err != nil { panic(err) } defer c.Close() c.Do("FLUSHALL") c.Do("RPUSH", "list-key", "item1") c.Do("RPUSH", "list-k…
そろそろ 今年も終わりそうなのでとりあえず Go したい Ready? anyenv を使ってインストールする。anyenv を最新状態に変更する % cd ~/.anyenv % git pull install goenv % anyenv install goenv % exec $SHELL -l install go 1.3 % goenv install 1.3 % go…