問題タブ [protocol-buffers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - プロトコルバッファは標準コンテナのシリアライゼーション/デシリアライゼーションをどのようにサポートできますか?
Boost.serialization
分散システム設計で使用されるプロトコルバッファに置き換える予定です。プロトコルバッファは標準コンテナなどの複雑なデータ構造をどのようにサポートしていますか?
たとえば、このようなクラスは、この場合、シリアル化/逆シリアル化する必要があります。
protocol-buffers - Google プロトコル バッファで sint32 の代わりに int32 を使用するのに適した時期はありますか?
私は最近、メッセージでさまざまなスカラー値の型を使用できるようにするGoogle Protocol Buffersについて調べています。
彼らのドキュメントによると、可変長整数プリミティブint32
には 、uint32
、およびの 3 種類がありますsint32
。彼らのドキュメントでint32
は、「負の数をエンコードするには非効率的です。フィールドに負の値が含まれる可能性がある場合は、sint32
代わりに使用してください。」しかし、負の数を持たないフィールドがある場合は、とにかく uint32 を使用する方が適していると思いますint32
(余分なビットと負の数を処理するための CPU コストの削減のため)。
では、いつint32
使用するのに適したスカラーになるのでしょうか? ドキュメントは、負の数がめったに得られない場合にのみ最も効率的であることを暗示していますか? または、フィールドの内容に応じて、常にsint32
andを使用することをお勧めしますか?uint32
(これらのスカラーの 64 ビット バージョンにも同じ質問が適用されます: int64
、uint64
、およびsint64
; しかし、読みやすくするために、問題の説明からそれらを除外しました。)
python - Python でバイナリ データを転送するにはどうすればよいですか?
私は初めてクライアント サーバー プログラムに取り組んでいますが、自分がやっていることをどこから始めればよいのか、ひどく不十分だと感じています。
Google Protocol Buffersを使用して、クライアントとサーバーの間でバイナリ データを転送します。Python バリアントを使用します。私が理解しているように、基本的な考え方は、クライアントがデータをシリアル化してサーバーに送信し、サーバーがデータを逆シリアル化するというものです。
問題は、バイナリ データをサーバーに送信するためにどこから始めればよいか本当にわからないことです。HTTP リクエストのような「単純な」ものになることを望んでいましたが、バイナリ データを転送する方法を Google で検索し、膨大な数のチュートリアル、ガイド、ドキュメントで迷子になりました。HTTP 転送を調査しても、間違ったツリーを鳴らしているかどうかさえわかりません (私はそれを使用したいと思っていたので、セキュリティが必要な場合は HTTPS にノッチアップできます)。ただし、ソケットプログラミングのレベルに行く必要はありません。それを行う前に、利用可能なライブラリを使用したいと思います。(私は標準の Python ライブラリも好みますが、完璧なサード パーティのライブラリがあれば生きていきます。)
したがって、Python を介してバイナリ データを転送するための適切な方法について、適切な出発点を誰かが持っている (または自分で少し説明したい) 場合は、感謝します。ちなみに、私が実行しているサーバーは現在mod_pythonでApacheを実行しています。
xna - 利用可能なゲーム ネットワーク プロトコル定義言語とコード生成
リアルタイム ゲーム サーバーとクライアント (World Of Warcraft や Quake III など) を複数の言語 (Java バックエンド サーバーと iPhone フロントエンドなど) で作成する方法を提供する、優れた汎用バイナリ ネットワーク プロトコル定義フレームワークを探していました。 Objective-C と Cocoa で書かれたクライアント)。
Java Flash クライアント、iPhone クライアント、および Windows 上の C# クライアント (および XBOX 上の XNA クライアント) をサポートしたいと考えています。
TCP/IP または UDP ソケット ストリーム接続を介してメッセージを効率的に送受信する方法を探しています。JSON や XML マーシャリング オブジェクトなど、HTTP Web サービス経由で送信できるものを探しているわけではありません。Hessian のバイナリ Web サービス プロトコルは非常に興味深いソリューションですが、
クライアントがサーバーに接続し、定義されたプロトコルでメッセージを送信し、ある種の RPC エンドポイントにバインドすることなくプロトコルでメッセージを受信できるようにする、ネットワーク プロトコル形式とクライアント/サーバーの基本的な実装が必要です。プロトコルの着信および発信のメッセージの汎用ストリームが必要です。これは、サーバーがすべてのクライアントにゲーム内のさまざまなエンティティの位置を 100 ミリ秒ごとに送信するようなことをサポートできるようにするためです。
.net - プロトコルバッファ:.NET DateTime値を表すためにint64またはfixed64を使用する必要がありますか?
プロトコルバッファメッセージで.NETDateTime値をシリアル化する必要があります。
私の計画では、DateTime.ToBinary()を使用してから、64ビットの戻り値をメッセージに渡します。しかし、それを表すためにプロトコルバッファデータ型として何を選択すればよいかわかりません。
fixed64(またはsfixed64)データ型をいつ使用すべきかについて混乱していると思います。
このシナリオでは、DateTime.ToBinary()によって返される値が正の場合も負の場合もあるため、符号付きの型を使用すると想定しています。
c++ - プロトコル バッファで生成された C++ コードとリンクする必要があるライブラリ
mytest.proto ファイルからの mytest.cc と mytest.h の出力がありますが、これに g++ を使用してオブジェクトをコンパイルする方法についての参照が見つかりません。(.proto は Python で動作するようになったので問題ありません)
g++ mytest.cc -l???????
どのライブラリを含めるか?
c# - 難読化と protobuf.net - 例外: デフォルトの列挙値が定義されていません
難読化されたプロジェクトで列挙型を含むクラスをシリアル化しようとすると、次の例外が表示されます。
ProtoBuf.ProtoException: デフォルトの列挙値 X は、オプションのプロパティ Y に対して定義されていません
影響を受けるすべての列挙型を難読化から除外すると、すべて正常に動作しますが、より多くのコード コンテンツを難読化できるように protobuf.net に切り替えたので、より良い解決策があることを願っています。
それで、protobuf.netをめちゃくちゃにするのは難読化ツールですか、それとも列挙型を間違った方法で宣言していますか?
私が試してみました:
と
また、契約がまったくなく、他のいくつかのそれほど明白ではないこともありますが、除外が機能すること以外は何もありません。ところで: protobuf.net を使用するときに列挙型を使用する必要がある例はどこかにありますか?
c# - ProtoInclude 属性の意味 (protobuf-net 内)
ProtoBuf-Net実装では、ProtoInclude属性は何を意味し、何をしますか?
例をいただければ幸いです。
この投稿でそれを見ましたが、それが何をするのかわかりません。例は次のとおりです。
また、protogenツールを使用してそのような継承を生成する方法はありますか?