2018年1月31日水曜日

gRPC 強制的に終了させたらどうなるのか

gRPC のメソッドを実行している最中にアプリケーションを終了させたらどうなるのかを調べてみました。


2018年1月27日土曜日

グローバル変数を使うなと言われてもどうすればいいの


多くのコーディング標準では、グローバル変数は極力使用しないようにしてくださいと説明されています。

グローバル変数が推奨されない主な理由には次のようなものがあります。
  • どこからでも値を変更できてしまう
  • 値が変更されたことを検知できない
  • 値を変更する複数の処理を同時に実行できない

それぞれについてリファクタリング案を考えてみます。

VB.net で開発するときは Option Strict On で

VB.NET で開発を行う場合、Option Strict は On にしましょう。

2018年1月24日水曜日

プログラミングルールなどあれこれ

私はこのブログの前にも別のブログを書いていました。そのときの記事をもう一度あげてみたいと思います。私が勤めているSI業界の、主に業務システム開発に従事しているプログラマに伝えたくて書いたものです。プログラミングに関する普遍的な内容ですので数年たった今でも参考にしてもらえたら、と思います。

2018年1月21日日曜日

gRPC の例外処理(2)

gPRC のサービスのメソッドの引数には ServerCallContext があります。この ServerCallContext のステータスに OK 以外の値を設定すると、明示的に例外をスローしなくても RpcException がスローされます。

2018年1月18日木曜日

gRPC で SSL 暗号化

gRPC では SSL/TLS がサポートされています。チャネルを生成するときに資格証明を渡します。「オレオレ証明書」を作成して試してみました。

2018年1月16日火曜日

gRPC のログ出力

gRPC のログ出力は非常に簡単です。GrpcEnvironment にロガーを設定しておくだけです。

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# を対象に調査していきます。

paiza のスキルチェックをやってみました

いまさら感はありますが、 paiza のスキルチェックをやってみました。指定された時間内にコードを書いてユニットテストにかけ、その結果を基に評価を数値化してくれるというものですが、ゲーム感覚で空き時間を見つけて進めていこうと考えています。 どうやら時間が短いほど高い評価を得...