問題タブ [msgpack]
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.
serialization - MessagePack:高速クロスプラットフォームシリアライザーとRPC-経験を共有してください
高速でシンプルで安定したRPCライブラリを探していたところ、非常に優れていると思われるMessagePackプロジェクトに出くわしました。また、活発な開発が行われています。
何か使ったことがあれば、経験を教えてください。
PSこの質問はコミュニティウィキであるべきだと思います
c++ - ユーザー定義クラスのシリアル化、C++ および msgpack
私はmsgpackを試したばかりです。ポインター (内部ツリー、ハッシュなど) といくつかの基本型属性を含むオブジェクト (ユーザー定義クラスのインスタンス) をシリアル化する必要があります。
これまでは、msgpack.org wiki の簡単な例で行われていたことを行うことができました。クラスをmsgpack::sbuffer
にシリアル化し、バッファを読み取ってシリアル化を解除します。
しかし今、そのバッファをファイルに送信するか、シリアル化の結果をファイルに送信してから、シリアル化を解除したいと考えています。
誰かがそれを行う方法についてのヒントを教えてもらえますか? 私はそれに飽きるほどブラウジングして読んでいます:)
私のコードは次のようになります。
みんなありがとう!
ベスト、
ルチュクス。
serialization - パフォーマンスの高いエンティティのシリアル化: BSON vs MessagePack (vs JSON)
最近、私はMessagePackを見つけました。これは、Google のProtocol BuffersとJSONの代替バイナリシリアル化形式であり、どちらも優れています。
また、データを格納するために MongoDB で使用されるBSONシリアル化形式もあります。
誰かが BSON と MessagePack の違いと欠点/利点を詳しく説明できますか?
パフォーマンスの高いバイナリ シリアル化形式のリストを完成させるために、Google の Protocol Buffers の後継となるGob もあります。ただし、言及されている他のすべての形式とは対照的に、これらは言語に依存せず、Go の組み込みリフレクションに依存しており、少なくとも Go 以外の言語用の Gobs ライブラリもあります。
objective-c - Objective-C の MessagePack 実装
Objective-C 用のMessagePackプロトコルの実装はありますか?
そうでない場合、C 実装を Objective-C 型にブリッジする例はありますか?
c++ - MsgPackのfree()/deleteが一致していません
プログラムでMsgpackを使用しようとしています。誰かがmsgpackwikiの次の例(ストリーミング機能)を手伝ってくれますか:http ://wiki.msgpack.org/pages/viewpage.action?pageId = 1081387そして、ストリーミング機能でこのライブラリを使用するより正しい例を提供してください。
Valgrindは、次のエラーがあると言っています。
http - msgpackのMIMEタイプ?
msgpackは、データシリアル化の非常に新しい形式である場合、非常に高速であるように思われます。認識されたMIMEタイプはまだありますか?そうでない場合は、暫定的に何を使用する必要がありますか?
c++ - C++ MsgPack: リンカ エラー
メッセージ パック (http://msgpack.org/) のサンプル コードをコンパイルしようとしていますが、これらのエラーが発生し続けます。
g++ -o"MsgPack2" ./src/MsgPack2.o -lmsgpack -lmsgpackc
msgpack::rpc::server::listen(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short)' ./src/MsgPack2.o: In function
ループ への未定義の参照':mp::wavy::loop::loop()' ./src/MsgPack2.o: In function
/usr/local/include/msgpack/rpc/loop.h:30: ベース への未定義の参照': /usr/local/include/msgpack/rpc/server.h:59:msgpack::rpc::server::server(msgpack::rpc::loop)' /usr/local/include/msgpack/rpc/server.h:59: undefined reference to
msgpackへの未定義の参照::rpc::server::serve(msgpack::rpc::dispatcher*)' /usr/local/include/msgpack/rpc/server.h:59:msgpack::rpc::server::~server()' ./src/MsgPack2.o: In function
~base への未定義参照': /usr/local/include /msgpack/rpc/server.h:64:msgpack::rpc::server::~server()' ./src/MsgPack2.o: In function
myserver::dispatch(msgpack::rpc::request)への未定義の参照 ': /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:14 :msgpack::rpc::request::method()' /mnt/eoh/workspace/MsgPack2/Debug/../src/MsgPack2.cpp:18: undefined reference to
msgpack::rpc::request::params()' への未定義の参照./src/MsgPack2.o: 関数msgpack::rpc::loop_util<msgpack::rpc::session_pool>::run(unsigned long)': /usr/local/include/msgpack/rpc/loop_util.h:34: undefined reference to
内 msgpack::rpc::session_pool::get_loop()' /usr/local/include/msgpack/rpc /loop_util.h:34: への未定義の参照mp::wavy::loop::run(unsigned long)' ./src/MsgPack2.o: In function
void msgpack::rpc::request::call(int&, msgpack::type::nil&)': /usr/local/include/msgpack/rpc/request.h:119:msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to
msgpack::rpc への未定義の参照:: request::get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125:msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In function
void msgpack::rpc::request::call(msgpack::type::nil&, unsigned char&への未定義参照)': /usr/local/include/msgpack/rpc/request.h:119:msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to
msgpack::rpc::request::get_msgid() への未定義の参照 const' /usr/local/include/msgpack/rpc/request. h:125:msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In function
void msgpack::rpc::request::call, std::allocator への未定義の参照 >(msgpack::type::nil&, std::basic_string, std::allocator >&)': /usr/local/include/msgpack/rpc/request.h:119:
msgpack::rpc::request::is_sent() const' /usr/local/include/msgpack/rpc/request.h:122: undefined reference to
msgpack::rpc::requestへの未定義の参照::get_msgid() const' /usr/local/include/msgpack/rpc/request.h:125:msgpack::rpc::request::send_data(msgpack::sbuffer*)' ./src/MsgPack2.o: In function
__shared_count への未定義の参照': /usr/include/c++/4.5/tr1/shared_ptr.h:121: への未定義の参照mp::wavy::loop::~loop()' ./src/MsgPack2.o: In function
std::tr1::_Sp_deleter::operator()(mp::wavy::loop*) const': /usr/include/c++/4.5/tr1/shared_ptr.h:99: `mp::wavy への未定義参照::loop::~loop()' collect2: ld が 1 の終了ステータスを返しました make: * [MsgPack2] エラー 1
コードは次のとおりです。
誰かに何かアイデアがあれば、それは大歓迎です。
よろしくお願いします。
c - `msgpack_pack_int()`マクロに渡されたカウンター変数はインクリメントしません
zmqとmsgpackを使用しているこの非常に単純なCプログラムを実行しようとすると、非常に奇妙な問題が発生します。
に問題はありませんがserver.c
、clinet.c:39
これがmsgpack_pack_int (&mpkg, i);
あり、の値は、反復ごとに変化しないi
ように取得されているようです。0
私はさまざまなことを試しましたが(たとえば、ポインターを作成して
i
それを使用したり、関数に分割したりするなど)、何も役に立たないようです。それはマクロであることがわかりますmsgpack_pack_int()
が、なぜそれがそのような振る舞いを導入するのでしょうか、そしてそれを克服するために何ができるでしょうか?この種のマクロの動作を変更する可能性のあるフラグはありますか(インライン関数に展開されるのがわかります)... -Werror -Wall
、with gcc
、およびを試しclang
ましたが、警告も表示されません;(*
私はそれをデバッグしてみてi
、期待通りにインクリメントしました。
私もこれを試しました、そしてそれはとにかく同じことをするでしょう:
私は違うはずの何かを試したことさえありますが、ここでも運がありません-
なぜこれが起こるのか誰にも分かりますか?
更新1:また、最適化フラグなしでmsgpack ライブラリ自体を再コンパイルしましたが、動作も変更されませんでした。
アップデート2: gitリポジトリからmsgpackをインストールしても、同じ問題が発生します。
java - AndroidでMessagePackを使用する
誰かがMessagePack
Androidアプリで使用しようとしましたか?
出来ますか?からJarを使用しようとしmsgpack-java
ましたが、次の例外が発生しました。
私が使用するコードは非常に単純です
私のディレクトリ にはjavassist.jar
、、、msgpack-0.5.2.jar
がslf4j-api-1.6.2.jar
あります。slf4j-jdk14-1.6.2.jar
lib
私のサーバーアプリケーションでは、このコードは同じライブラリで正常に機能します。
javascript - msgpack の Sinatra バイナリ リターン -- 文字セットの問題/文字がどこかで変換されていますか?
現在、ルビー シナトラ サービスからmsgpack http://msgpack.org/を返し、javascript を使用して解析しようとしています。ここにあるjavascriptライブラリを使用しています: https://github.com/uupaa/msgpack.js/ (ただし、この質問には関係ないと思います)。
msgpack gem を使用して次のことを行う sinatra サービスがあります。
私は次のようにそれを読むJavaScriptを持っています:
問題は、データを取り戻すと、多くの文字がサーバー側のバージョンから0xfffd
.
次に、2 つのバリアントを試しました。
と
サーバー側で。前者は何も変更しませんでしたが、後者は近づき、1 つの例外を除いてほとんどのメッセージは変更されませんでした: 最初の文字が から に変換され0x82
ました0x201a
。
まだ試していない、これを修正する文字セット/コンテンツタイプの組み合わせがあると思います。いつでも Base64 にフォールバックすることもできますが、最初に Base64 なしで機能させるには何が必要かを理解したいと思います。