回答編集履歴
4
推敲
answer
CHANGED
@@ -45,6 +45,6 @@
|
|
45
45
|
|
46
46
|
これから設計をするなら、AvroやProtobufのように多言語で使えて、スキーマを定義したら各言語でバインディング(タイプクラス、シリアライザー、デシリアライザー)の生成ができるライブラリを使うのが良いでしょう。
|
47
47
|
|
48
|
-
例えはstructに新たにフィールドを追加したかったらどうしますか?レコード長が変わってしまいますが、全システムを同時に更新できますか?多分無理でしょう。後方互換性を確保し
|
48
|
+
例えはstructに新たにフィールドを追加したかったらどうしますか?レコード長が変わってしまいますが、全システムを同時に更新できますか?多分無理でしょう。後方互換性を確保しつつ変更する方法を考えないといけないですね。固定長で良いとのことですが、フィールドが増える度にサイズが増えますね。全てのフィールドを使っても使っていなくてもスペースを消費してしまいます。
|
49
49
|
|
50
|
-
このあたりの問題を解決してくれるのが先に挙げたようなRPCフォーマットです。ご参考まで。
|
50
|
+
このあたりの問題を解決してくれるのが先に挙げたようなライブラリで提供されるRPCフォーマットです。ご参考まで。
|
3
誤字修正
answer
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
Actual data [3, 2, 1, 0, 1, 2, 3]
|
44
44
|
```
|
45
45
|
|
46
|
-
|
46
|
+
これから設計をするなら、AvroやProtobufのように多言語で使えて、スキーマを定義したら各言語でバインディング(タイプクラス、シリアライザー、デシリアライザー)の生成ができるライブラリを使うのが良いでしょう。
|
47
47
|
|
48
48
|
例えはstructに新たにフィールドを追加したかったらどうしますか?レコード長が変わってしまいますが、全システムを同時に更新できますか?多分無理でしょう。後方互換性を確保したままペイロードを変更する方法を考えないといけないですね。固定長で良いとのことですが、フィールドが増える度にサイズが増えますね。全てのフィールドを使っても使っていなくてもスペースを消費してしまいます。
|
49
49
|
|
2
コード修正。意図を明確化
answer
CHANGED
@@ -27,7 +27,7 @@
|
|
27
27
|
|
28
28
|
head = iniHead()
|
29
29
|
print("Struct size", sizeof(head))
|
30
|
-
print("Buffer data len",
|
30
|
+
print("Buffer data len", len(head.data))
|
31
31
|
print("Buffer data", head.data[:])
|
32
32
|
print("Actual data len", head.data_len)
|
33
33
|
print("Actual data", head.data[:head.data_len])
|
1
誤字修正
answer
CHANGED
@@ -45,6 +45,6 @@
|
|
45
45
|
|
46
46
|
もしこれから設計をするなら、AvroやProtobufのように多言語で使えて、スキーマを定義したら各言語でバインディング(タイプクラス、シリアライザー、デシリアライザー)を生成が生成できるようなライブラリを使うのが良いでしょう。
|
47
47
|
|
48
|
-
例えはstructに新たにフィールドを追加したかったらどうしますか?レコード長が変わってしまいますが、全システムを同時に更新できますか?多分無理でしょう。後方互換性を確保したままペイロードを変更する方法を考えないといけないですね。固定長で良いとのことですが、フィールドが増える度にサイズが増えますね。
|
48
|
+
例えはstructに新たにフィールドを追加したかったらどうしますか?レコード長が変わってしまいますが、全システムを同時に更新できますか?多分無理でしょう。後方互換性を確保したままペイロードを変更する方法を考えないといけないですね。固定長で良いとのことですが、フィールドが増える度にサイズが増えますね。全てのフィールドを使っても使っていなくてもスペースを消費してしまいます。
|
49
49
|
|
50
50
|
このあたりの問題を解決してくれるのが先に挙げたようなRPCフォーマットです。ご参考まで。
|