Go
「tour of go」の goroutineやってみた。goroutineを使うと別スレッドで処理をおこなえる。むずかしい話ではないとは思うけど自分なりにちゃんと読んだので理解した内容をメモしておく GoroutinesとChannels https://tour.golang.org/concurrency/1 https://…
以前にgoでのapiサーバーの実装を調べたけどすでに色々忘れかけてるので手順などまとめておく。使おうと思った理由としては以下の要件が厳しめで、phpとかでは厳しいと思ったため。 ・レスポンスの高速化 ・APIサーバー数の最小化あと、時間が空くと環境作っ…
今回やりたかったことは以下。 ・HTMLのテンプレートを変数等に定義しておく。 ・テンプレートを元に動的な部分をHTMLに埋め込む。 ・生成したHTMLをJSONにいれてレスポンスとして返す。 package main import( "net/http" "github.com/labstack/echo" ) // V…
glideでgorm入れようとしたら突然logrusのエラーが。。。 [ERROR] Update failed for github.com/Sirupsen/logrus: The Remote does not match the VCS endpoint [ERROR] Could not update packages: The Remote does not match the VCS endpoint意味わから…
実際使おうとすると調べる内容が細かい。。けどメモ。 logrusというのを使ってみる。ローテションはとりあえず考えない。log/log.go package log import ( "os" "fmt" "github.com/Sirupsen/logrus" ) var AppLog = logrus.New() var AppLog2 = logrus.New()…
こんなことできるのかmain.go package main import ( "net/http" "github.com/labstack/echo" ) func main() { e := echo.New() e.GET("/users", func(c echo.Contet) error { // エラーを返す return echo.NewHTTPError(http.StatusInternalServerError, "S…
apiサーバーの実装でとりあえずのエラー処理中。とりあえず以下をハンドリングするような想定で。 ・ビジネスエラー ・システムエラー ・404エラー ・その他サーバーエラーディレクトリ構成はこんな感じ $ tree -L 3 . └── app ├── controller │ └── traking…
細かい話だけどecho的には特にルールは決まっていなそう。main.go package main import ( "github.com/labstack/echo" "app/controller" ) func main() { e := echo.New() e.GET("/members", controller.GetMember()) e.POST("/members", controller.PostMem…
echoでjsonを返すサンプル package main import( "net/http" "github.com/labstack/echo" ) // レスポンスを表す構造体を定義 type Member struct { Id int `json:"id"` Name string `json:"name"` } func main() { e := echo.New() e.GET("/members", func(…
1台のPCで複数バージョンのGoを使用したいのでgvm(Go Version Manger)を使用する。https://github.com/moovweb/gvm ドキュメントどおりにやったらすんなり入った。Mac使ってるので「Mac OS X Requirements」のコマンド実行準備 $ brew update $ brew install…
Echoを使っていてデフォルトのままで存在しないURLにアクセスするとNotFoundのJSONがレスポンスとして返される。 今回はAPIでなくてサイトを作りたかったのでHTMLを返したかった。ちょっとやり方がわからなかったので今回は以下のように対応した。Echoで定義…
はじめに Echoでテンプレートの使い方を調べたのでメモ。今回やりたかったことはそんな多くなくて ・URLによってテンプレートを振り分けたい ・ヘッダー等の共通テンプレートを使いまわしたい 実装 まずはメインの処理server.go package main import( "net/h…
マニュアルにあったとおりだけどメモメモ package main import ( "os" "net/http" "github.com/labstack/echo" "github.com/labstack/echo/middleware" ) func main() { e := echo.New() fp, err := os.OpenFile("/path/to/log", os.O_RDWR|os.O_CREATE|os.O…
開発時またはリリース後もしばらくはSQLは全てログに残しておきたいのでそのやり方を調べたのでメモ。http://jinzhu.me/gorm/advanced.html#logger ドキュメントにそれっぽいのがあった package main import ( "log" "os" "github.com/jinzhu/gorm" _ "githu…
dbrを使ったdb処理でinsertしてオートインクリメント値を取得したいということ。 READMEみてもよくわからなかったけど、コードみたらLastInsertIdというのがあった。 package main import ( "fmt" "strconv" _ "github.com/go-sql-driver/mysql" "github.com…
今回やりたかったことはMySQLのdatetime型のカラムから取得した値をGoの時刻型に変換したかったということ。 なかなかうまくいかず以下にたどり着いた date := "2016-12-22 23:01:00" layout := "2006-01-02 15:04:05" t, _ := time.Parse(layout, target) f…
はじめに Githubのアカウントは持ってたけどコード管理したりはしてなかった。 で、今回試しに使ってみようかと思った。 個人用途なので無料のパブリックなレポジトリで。基本的にコードの中身は見られても問題ないけどアカウントやファイルパスなどは公開し…
はじめに やりたいことはキーワードでtwitterの投稿を取得してくるだけちょっとだけプログラムいじった箇所は以下 ・1回で取得できる件数の上限(100件)が決まっているので複数回取得するようにする ・タイムゾーンをJSTに パッケージ 今回使ったパッケージは…
はじめに 開発始めようとして以下が問題があったので整理しておく。前提条件としては以下 ・複数人での開発で各々のPCで開発を想定 ・コードはgitで管理で、サードパーティのパッケージをどう管理するかとういのが問題点でした。 そのままやると$GOPATH以下…