gRPC のメソッドを実行している最中にアプリケーションを終了させたらどうなるのかを調べてみました。
2018年1月31日水曜日
2018年1月27日土曜日
グローバル変数を使うなと言われてもどうすればいいの
多くのコーディング標準では、グローバル変数は極力使用しないようにしてくださいと説明されています。
グローバル変数が推奨されない主な理由には次のようなものがあります。
- どこからでも値を変更できてしまう
- 値が変更されたことを検知できない
- 値を変更する複数の処理を同時に実行できない
それぞれについてリファクタリング案を考えてみます。
2018年1月24日水曜日
プログラミングルールなどあれこれ
私はこのブログの前にも別のブログを書いていました。そのときの記事をもう一度あげてみたいと思います。私が勤めているSI業界の、主に業務システム開発に従事しているプログラマに伝えたくて書いたものです。プログラミングに関する普遍的な内容ですので数年たった今でも参考にしてもらえたら、と思います。
2018年1月21日日曜日
gRPC の例外処理(2)
gPRC のサービスのメソッドの引数には ServerCallContext があります。この ServerCallContext のステータスに OK 以外の値を設定すると、明示的に例外をスローしなくても RpcException がスローされます。
2018年1月18日木曜日
2018年1月16日火曜日
2018年1月14日日曜日
gRPC の例外処理
gRPC では、サービス側で例外が発生するとクライアント側で RpcException がスローされます。プロジェクトのエラーコードなどを渡すには MetaData 型(キー&値の組み合わせ)の Trailers プロパティを使用することになるようです。
2018年1月13日土曜日
C# 実装の Google.ProtBuf の Timestamp 型は参照型
C# 実装の Google.ProtBuf の Timestamp 型は参照型です。
.NET の DateTime や TimeSpan などと同じで「日付だから値型だ」と思い込んでいると、わかりにくいバグの原因になります。特に == 演算子と Equals メソッドの結果が異なるのは注意が必要です。データ通信のための型と割り切って使用したほうがよいのかもしれません。
2018年1月9日火曜日
Protocol Buffers のIDL記述(日付型)
Protocol Buffers で定義されているスカラー型の中には日付を意味する型がありませんが、Google の GitHub リポジトリには Timestamp 型があります。この proto ファイルをインポートすれば、C# の DateTime 型を Google.ProtoBuf の Timestamp 型にマッピングさせることができます。
2018年1月8日月曜日
Protocol Buffers のIDL記述(名前空間関連)
Protocol Buffers で IDL をどのように記述するとよいのかを調べています。まずは名前空間から。C# でコーディングを行うときに名前空間や型をスムーズに記述できるような指定方法を探ります。
gRPC はじめました。
大きなサイズのデータ通信を伴うシステム開発の予定があり、データ通信基盤の候補として gRPC を調べ始めました。gRPC は Google が開発している OSS です。HTTP/2 や Protocol Buffers を使った高速データ通信が特徴で、双方向通信もサポートされています。マルチプラットフォーム(Windows, Linux, Mac)・マルチ開発言語(C, C++, C#, Node.js, PHP, Ruby, Python, Go, Java)に対応しているのも大きな魅力です。
開発予定の C# を対象に調査していきます。
開発予定の C# を対象に調査していきます。
登録:
投稿 (Atom)
paiza のスキルチェックをやってみました
いまさら感はありますが、 paiza のスキルチェックをやってみました。指定された時間内にコードを書いてユニットテストにかけ、その結果を基に評価を数値化してくれるというものですが、ゲーム感覚で空き時間を見つけて進めていこうと考えています。 どうやら時間が短いほど高い評価を得...
-
多くのコーディング標準では、グローバル変数は極力使用しないようにしてくださいと説明されています。 グローバル変数が推奨されない主な理由には次のようなものがあります。 どこからでも値を変更できてしまう 値が変更されたことを検知できない 値を変更する複数の処理を同時に実...
-
VB.net のソースコードを見ていると、使い終わった変数を解放するために Nothing を代入しているコーディングを見かけることがあります。これでは必ずしもリソースは解放されませんし、むしろリークの原因になります。Nothing を代入する意味を理解しておく必要があります。 ...
-
.NET Framework では例外の捕捉には Try-Catch を使用しますが、正しく利用されていないのをときどきみかけます。誤った例外処理は補足すべき例外を見逃したり、例外情報を取得できなくなったりする原因になります。 ※これは2013年に書いたものです。