2011年5月30日

CygwinでGit/GitHubを使うための環境構築

最近Gitを使い始めたんですが、コミットメッセージが文字化けるとか色々悩まされたんで、その結論的なものをまとめます。とりあえず、これでCygwinだけを使っている分には文字化けに悩まされずに済みそうです(やってることは文字コードをUTF-8で統一するように設定してるだけですが)

以下セットアップ手順です(既にGitHub上にアカウントを持ってる前提です)。

2011年5月16日

Azure Table Storageに非サポート型のプロパティを保存する

標準のAzure Table Storageにおいては以下の型のみが保存可能な型としてサポートされており、これ以外のプロパティとして持つエンティティを保存しようとするとエラーになってしまいます。

EDM型 CLR型 詳細
Edm.Binary byte[] バイトの配列 (サイズは最大 64 KB)
Edm.Boolean bool ブール値
Edm.DateTime DateTime UTC 時刻として表現された 64 ビット値 (サポートされている値の範囲は 1/1/1601 ~ 12/31/9999)
Edm.Double double 64 ビットの浮動小数点値
Edm.Guid Guid 128 ビットのグローバル一意識別子
Edm.Int32 Int32 or int 32 ビットの整数
Edm.Int64 Int64 or long 64 ビットの整数
Edm.String String UTF-16 でエンコードされた値 (サイズは最大 64 KB)

ただ、この制限に従って実際にシステムを作ろうとすると、ビジネスロジック層がドメインモデルとして設計されている場合に、ドメインオブジェクト群をストレージへ保存する際、そのオブジェクト構造をフラットに展開してからデータを保存しなければなりません。また、そのデータを読み込む時もフラットな構造から元のドメインオブジェクトに戻す処理が必要です。

データを読み書きするためにいちいちこんなことはやってられないので、今回はStorage Client APIをカスタマイズして、オブジェクト構造をそのままTable Storageへ保存できるようにします。