Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

なにこれ? 昔どこかに書いた記事が吹っ飛んで悲しかったので、こちらに復帰。 Goを使ってgRPCのServer,Clientを実装する記事となります。 gRPC? gRPCは、Googleによって開発されたRPCフレームワークです。 HTTP/2を使用した通信部分のライブラリ(ProtocolBuffersでシリアライズ)とProtocolBuffers(標準)としたテンプレートコードの生成がセットで提供されています。 ざっくりと言っちゃうと、HTTP/2を使った手続き部分がばっくり提供されていて Server,ClientのコードはProtocみたいなエコシステムでgenerate できる、という省エネでHTTP/2に乗れる仕組みです。わーい。 HTTP/2のstreamもサポートしています。 gRPCのサポートするRPC方式は以下の通り。 Unary RPC (1リクエスト1レスポンス
はじめに 久しぶりにDockerさわったらboot2dockerも無くなってて浦島太郎状態でした。 再学習も兼ねて色々と触ってみたメモです。 何となくGoとAlpineLinux使ったらモテそうな気がしたんで、やってみました。 OSはMac前提でのお話しです。 ゴール タイトルの通りの開発用インフラ構成をローカルマシンに構築 freshを使ってGoのファイルを更新したら自動でビルドが走る supervisorでgo run してHello World!が表示出来る 読むのが面倒な方 (Docker入ってる前提) githubに一式アップしました。 https://github.com/s-noguchi/docker_alpine_go_nginx ①一式プルするなりダウンロードする ②イメージビルドdocker build --no-cache . -t alpine-go-nginx
この記事は Go (その2) Advent Calendar 2016 の24日目の記事です。 この記事では 去年からずっと趣味で Go を使ってリアルタイム通信ゲームサーバー作っていて、それなりに動くものができたので、それを紹介したいと思います。 リポジトリはこちらです。 https://github.com/shiwano/submarine 一部 Unity の有償アセットを除いている以外、クライアントもサーバーもすべてのコードをここで公開しているので、もし気になる実装があったら見てみてください。 以下、簡単なディレクトリの説明です。 . ├── art # デザインまわりのファイル置き場 ├── client # Unity クライアント (C#) ├── contract # 通信定義ファイル置き場 (TypeScript) ├── server │ ├── api # Ra
はじめに 構造化メッセージが構築できる高速なロギングライブラリを謳っている『zap』を触ってみました。 ドキュメントがあまり充実していなくて、どんなことができるのかGodoc見ながら調査したので、その結果を自分用のメモがてら書いておこうと思います。 確認した環境とバージョン Mac OSX 10.11.6 (El Capitan) go v1.8 zap v1.0.0 zapの特徴 高速 zapは以下のようなアプローチで高速化していると言っています。 Reflectionを使わない アロケーションしないJSONエンコーダを使用 可能な限りシリアル化のオーバーヘッドとアロケーションを避ける そして、独自のベンチマークによると、他の構造化ロギングライブラリだけでなく、標準ライブラリよりも高速に動作するそうです。 確かにReadMeのパフォーマンスを見ると圧倒的に高速で低アロケーションを実現して
バックエンドエンジニアの@yagi5です。 go modについて書きました。 元記事 Modulesとは goのパッケージ管理ツールはglide -> depと進化を遂げたが、go 1.11の世界では新たにModulesという機構が生まれ、go mod コマンドでmodulesを管理することができるようになった。(言語レベルでモジューリングがサポートされたことを意味する) goの思想としてもdepではなくmodulesに置き換えていくことを推進してるっぽいので、早めに直しておくと良いと思う。 今回使ってみて、今後は必ず使うと思う。そのくらい便利だった。 Requirements Go 1.11以上 go modの使い方 すでにdepを使っていない場合(新規プロジェクトなど) ローカルにmattn/todoをgo getしてやってみた。 このリポジトリでは、 github.com/gonut
はしがき テストもコードベースが巨大になってくると、 時間が掛かるので並列処理したいヨネーって要望とか。 並列処理のベンチマークどないしよか的な事を まとめてみました。 CIで並列実行してもらえばよくね? とか言われると、そうですね感溢れるかもですが :P 最近、testの事ばかり調べてたので、メモがてら。 テストの並列実行 testing.T.Parallel() を呼び出したテストは並列に実行されます。 go test -parallel n(並列数)で指定すれば並列で実行してくれます。 試してみましょう。 package main import ( "testing" "time" ) // 10秒かかるテスト func Test10sSleep(t *testing.T) { t.Parallel() time.Sleep(10 * time.Second) } // 20秒かかる
情報が古いので注意ください。golang pluginは現在1.0.0のalpha版が出ており、限界がありますがリファクタリング、ブレークポイントともに対応しています。 TL;DR IntelliJ IDEA + golang plugin は現時点で一番マトモだと思いました。 Go のエディタ、今まで Sublime Text 3 の GoSublime でやってきていたのですが、どうもしっくりこない… 趣旨が違うのはわかるのですが、Sublime Text 3 の project の扱いがどうも慣れませんでした。 IDE 厨らしく素直に IDE を使おうと思い立ち、探してみると IntelliJ IDEA には golang plugin あるみたいですね。 導入にあたり少し嵌りどころがありましたので共有まで。 1.IntelliJ IDEA 入れてなかったらインストールする お値段が
いままでは IntelliJ の external tool として goimports を設定して、ファイル保存時に goimports を実行するマクロを作って、ファイル保存キーマップを置き換える方法で実現してた。ただ、新しい pc に変えたときとか IntelliJ アップデートした場合とかに再設定するのが面倒で、もっと簡単な方法ないかなーと思ったら File Watchers ってプラグインが良かった。 2017/11 追記: 本記事では IntelliJ を対象としていますが、Gogland や GoLand でも同じ方法で OK です。今だったら goimports より goreturns がオススメかな。 プラグインをインストールして、 Custom テンプレートで新しい設定項目開いて、 goimports のパスをこんな感じに設定(追記: Immediate file s
始めに 前回の延長でちょっと分かりにくいgrpc-goのInterceptorを使ってみようと思います。 参考:go-grpc-middleware Interceptorとは WebFramework系で言うとこのMiddlewareという認識で良いのではないかと思います。RPCメソッドの呼出に割り込んで事前・事後処理を実行することができます。 サーバーサイド・クライアントサイドどちらでも使えるようですが、今回はサーバーサイドのみに使っています。 ※grpc-goのソースにまだ実験的なものとあったので今後に注意必要かも 実装 InterceptorにはUnaryInterceptorとStreamInterceptorの2種類が用意されており、単純なリクエストとリプライを返すRPCメソッドにはUnaryInterceptorを、Streamを使うRPCメソッドにはStreamInterc
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く