golangでgracefull restartする

概要 シグナルとGracefull Shutdownを用いて、ホットデプロイ(Gracefull Restart)を行う仕組みを理解する Gracefull Restartを実現するための仕組みに、Server::Starterというperlで書かれたソフトがあるらしいが、今回はその[Go版](https://github.com/lestrrat/go-server- ...

golang-img-s3upload.md

はじめに サーバーで画像を圧縮して、そのデータをos.Createでファイルを作成してJPEGエンコードし、S3に画像をアップロードしようとしたら0バイトでアップロードされていた。 Go S3uploader エラーハンドリングは省く。 以下はS3アップロードのコード。UploadInput{}のBody((io.Reader)にデータを詰め込むだけ ` ...

Go + WebsocketでGoroutineをさわる

はじめに GoにちょっとだけなれてきたのでGoroutineとかチャネルとかについて勉強しようと思った。 ついでにWebsocketも知らなかったのでまとめて勉強した。 作るもの クライアントとサーバーをWebsocketで通信し、データを送信すると接続しているクライアントすべてにそのメッセージをリアルタイムに表示させるWebApp インターフェースはjson ...

ActionsでGoのバイナリをバージョニングして自動リリースする

概要 Githubでリリース機能を使ったことがなかったので試しにつかってみた。 ソフトウェアのバージョン管理はセマンティックバージョニングでおこなう。 具体的には、v1.0.3みたいな感じにする。 「ドット」を挟んで以下のような意味。 (メジャーバージョン).(マイナーバージョン).(パッチバージョン) さて、本題の流れは以下のようになる バージョンアップする ...

go-debug-vscode

出来事 vscodeのリモートコンテナを使ってデバッグしてたが、コンテナをrecreateする必要があったので実行したところ Configured debug type 'go' is not supported. というエラーがでた。 調べたところ、VSCodeのGoExtensionがインストールされていなかった。 なんでやねん コンテナ作り直すと拡張機能き ...

golang-log-library-zap

Zapとは Goのログライブラリ カーシェアのUberが作ったっぽい > ホットパスでログを記録するアプリケーションでは、reflectionベースのシリアライズと文字列フォーマットはめちゃんこに高く付く。別の言い方をすれば、大量の interface{}s をログに記録するために encoding/json や fmt.Fprintf を使用すると、アプリケーションは遅く ...

GoでIPアドレスから位置情報を取得する

使用するライブラリ github.com/oschwald/geoip2-golang プライバシー規制の強化のため、2019/12/30からGeoLite2 databasesをダウンロードするのにライセンスが必要となったため、MaxMindにSignupしてからダウンロードする ...

golangのversionを上げる

goを1.13から1.14にバージョンアップした 今回はMacのバージョンアップをした アンインストール sudo rm -rvf /usr/local/go インストール cd /tmp wget https://golang.org/dl/go1.14.6.darwin-amd64.tar.gz sudo tar -C /usr ...

golang-pointer-

構造体の場合は実体を指してくれる シンプルな構造体を用意する type User struct { ID int Name string } 下記はどちらも同じになる func updateID(u *User, x int) { u.ID = x } func updateID(u *User, x int) ...