![今どきの Go の書き方まとめ (2020 年末版) - エムスリーテックブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/bf7f5e59a6b9cf16fcb6efa8c36108ac7d220489/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2FS%2FSaiya%2F20201202%2F20201202203554.png)
GoのAPIを書くとき、参考になるユニットテストの話は非常によく見ます。Table Driven Testをしましょうとか、サブテストの実行とか、そのあたりの話はたくさん書かれています。 また、テストキャッシュなども出てきましたので、ユニットテスト周りの機能・ノウハウは充実していると感じてます。 一方で、httptestを使ってテストサーバーを立て、リクエスト/レスポンスの内容を検証する場合、単一のリクエストを検証する程度のサンプルにとどまっていたり、あまり共通でこういう処理を書いてるよ、みたいなノウハウがなく、自前で一から書くとなると非常に腰が重くなります。 事実自分はそういう経験をしました。そういった共通処理は普段internalパッケージの中の、testutilsとしてまとめる、などしています。 今回はGoで上記のようなテストを書く場合、どういう共通処理が必要となったかをテーマとして
概要 先日リリースされた1.11でソケットオプションを設定できるようになりました。 これによってLinux 3.9から導入されたSO_REUSEPORTという、同じポートでbindすることが可能になる機能が利用可能になります。 環境 golang 1.11 macOS 10.13.6 (Darwin Kernel Version 17.7.0) Ubuntu 16.04 (4.4.0-87-generic) 何が嬉しい? 一言で言うとGraceful Restartが可能になるという点です。 通常サーバプロセスを再起動するとその瞬間はリクエストを捌けなくなります。 Rolling updateのような事ができる環境であればいいですが、そうではない場合 a) Listenしているsocketのfile descriptorの複製 b) SO_REUSEPORTを使う といった手段でデプロイ時
If you are deploying serverless applications in AWS Lambda and using Java, you are well aware of cold start problems. Cold start happens because of the way the Java Virtual Machine works, it kicks in JIT (Just-in-time), and it needs to “warm-up” like a car from the 80s. AWS Lambda caches containers for you, so when idle, it is paused and brought back online immediately as soon as a request arrives
会社でGoばかり書いていて、気付いたらGoのイベントをやっていた inoues です。 今回は弊社内で開催致しました「Go(Un)Conference(Goあんこ) LT大会 1kg」のレポート記事になります! どんなイベント? Goあんこは社内での「Go Conferenceが人気過ぎて、全く抽選に当たる気がしない・・・」という話をキッカケに、それじゃ我々でイベントを開催してみよう!という心意気の元、誕生致しました。 基本的には、アンカンファレンスと銘打っている通り、参加者様のLTで成り立っているイベントです。 ひたすらにLTをやり、そして聞く、という非常に学びがあるイベントとなっています! 第2回も5/25(金)に開催予定ですので、このレポートを読んで興味の出た方は是非ご参加を! 当日レポート それでは当日のGoあんこの様子をレポートしていきます! Togetterにもまとめてあります
build-crosscompile-env.sh #!/bin/sh # Environment list # $GOOS $GOARCH # darwin 386 # darwin amd64 # freebsd 386 # freebsd amd64 # freebsd arm # linux 386 # linux amd64 # linux arm # netbsd 386 # netbsd amd64 # netbsd arm # openbsd 386 # openbsd amd64 # plan9 386 # plan9 amd64 # windows 386 # windows amd64 set -e OS=("darwin" "darwin" "freebsd" "freebsd" "freebsd" "linux" \ "linux" "linux" "netbsd
Go でツール書くときはタスクランナーとして make を使っています。ビルドだけじゃなくて、テストや配布用パッケージ作成も一括して make でやっています。 今回は整理も兼ねて、自分が普段どういう Makefile を使っているのか解剖していきます。 なぜ make を使うのか ビルドフラグ覚えるのが面倒だから、make は (Windows を除く) 大半のプラットフォームに入っていて使いやすいからというのが理由です。script/build みたいにシェルスクリプトを複数用意するのでもまあ良いと思いますが…。大半の Go プロジェクトは Makefile 置いてありますね。 make を使った開発フロー 基本的には、リポジトリを git clone / go get -d した後に以下のコマンドを打てばアプリケーションをインストールできるようにしています。 $ cd $GOPATH
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く