問題タブ [node-ffi]
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.
node.js - ref-struct と ref-array を使用して構造体の配列を作成することは可能ですか?
node-ffi を使用して、out-param を構造体の配列へのポインタへのポインタとして受け取る関数を呼び出しています。取得した配列にアクセスするために ref-struct と ref-array を使用する方法はありますか?
関数呼び出し後にポインターから最初の構造体を取得できますが、残りの配列を取得できません。
パラメータを構造体の配列として宣言する方法はありますか? 私はこれを試しましたが、うまくいきません:
javascript - SDL2 - RenderPresent でランダムに 20 ~ 30 ミリ秒以上かかる (Node.JS FFI 呼び出しで)
Node.JS FFI を SDL に更新して、SDL2 を使用しています。( https://github.com/Freezerburn/node-sdl/tree/sdl2 ) そして、これまでのところ順調に進んでおり、1600 以上のカラー テクスチャをあまり問題なくレンダリングできます。しかし、私は理解できないように見える問題に遭遇し始めたばかりで、FFI、GC、Javascriptの速度などとは何の関係もないようです.
問題は、VSYNC を有効にして SDL_RenderPresent を呼び出すと、数秒おきにこの呼び出しが完了するまでに 20 ~ 30 ミリ秒以上かかることです。そして、これは2〜3回続けて起こっているようです。これにより、画面上で動いているものに非常に短いが目立つ視覚的なヒッチが生じます。残りの時間、この呼び出しは、画面と同期する正しい時間に画面に描画されたものを表示するのに通常の時間を要し、すべてが非常にスムーズに見えます。
上記のリポジトリをクローンすると、これが実際に動作していることがわかります。node-gyp でビルドし、test.js を実行するだけです。(テスト コードを StackOverflow に埋め込むことはできますが、完全な例を GitHub に置く方が簡単だと思いました) SDL2、SDL2_ttf、SDL2_image が /Library/Frameworks にある必要があります。(これはまだ開発中であるため、SDL2 を自動的に検出したり、リポジトリに必要なコードを配置したり、どこかからプルしたりなど、特別なことは何もしていません。)
編集: これはおそらく gamedev StackExchange サイトの下にあるはずです。移動/リンクできるかどうかわかりません。
node.js - メモリ リーク: Linux でノード JS を使用してファイルをダウンロードするとメモリ リークが発生する
node.js (v0.10.22) と Express モジュールを使用して、ユーザーにファイルのダウンロード機能を提供しています。リクエストごとに平均 50 個のファイルをダウンロードしており、平均サイズは約 700 MB です。実行時にこれらのファイルを書き込む独自の C プログラムと、これらのファイルをユーザーに同期的に送信する子プロセスがあります。
FFIモジュールを使用してC関数を呼び出しています。私が直面している問題は、node.js が仮想メモリを増加させ、大量のメモリが解放されず、ダウンロード後にENOMEM
エラーが発生してクラッシュすることです。ここでの質問は、各リクエストの後に V8 がメモリを解放しない理由、またはノード / V8 に必要な特別な種類のコンパイルがあるかどうかです。Valgrind を使用して C プログラムをテストしましたが、メモリ リークは見られませんでした。
javascript - javascriptでUNIX crypt(3)を実行するには?
UNIX crypt(3) を javascript (具体的には node.js) で実行する方法はありますか?
crypt(3) は DES を使用します。openssl で実行できると思いますが、javascript から openssl にアクセスするにはどうすればよいですか?
ありがとう
アップデート
node-ffiでそれを行う方法を見つけました:
javascript - REST API でのネイティブ オブジェクトの処理
Web サーバー マシンに接続された Web カメラを記録するための REST API を提供する、expressjs を使用して実装された Web サーバー API があります。
Web カメラとエンコードは C++ で記述された dll を使用して処理され、相互運用はnode-ffiライブラリを使用して行われます。
私が抱えている問題は、応答でネイティブの ffi ハンドルと JSON 文字列化を混在させていることです。
たとえばStream
、プロトタイプを持つクラスがあります。
ffiStream.filePtr
ハンドルが含まれる場所などref.refType(ref.types.void)
次に、expressjs POSTstart
呼び出しで次のようなことを行います。
ご覧のとおり、Stream
オブジェクトをそのまま応答に送信するだけです。これは、通常、REST API を実装する方法です。問題は、ネイティブfilePtr
ハンドルを実際に含めるべきではないことです。これに対するベスト プラクティスが何であるか、または何か根本的に間違っているかどうかはわかりません。
注: Web、nodejs、expressjs、および javascript 全般に関しては、私は初心者です。したがって、私が行っていることが意味をなさない、またはもっとうまくできる可能性がある場合は、指摘してください。
より完全な例: