問題タブ [ipc]
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++ - C++でのプロセス間通信の最良の方法
2つのプロセスがあり、1つは他のデータをクエリします。限られた時間(1秒あたり10000)で大量のクエリが発生し、1秒あたりデータ(> 100 mb)が転送されます。データのタイプは整数型(double)になります。 、int)私の質問は、このプロセスをどのように接続するかです。
共有メモリ、メッセージキュー、lpc(ローカルプロシージャコール)など...
また、どのライブラリを提案するか尋ねたいですか?ちなみにMPIは提案しないでください。編集:WindowsXP32ビットの下
c++ - How do I setup a callback mechanism for RichEdit in win32
In win32, how do I setup a callback mechanism for RichEdit I have not created myself?
PART 1
I'm reading from a textedit field in another application's GUI. This works just fine now, except after the first read I'd like to fetch only new or modified lines. In GTK+ or Qt I'd just install a callback on some signal the field edits when its changed, but how does it work on Win32?
My MSDN searches result with nothing useful, probably because I don't know the exact term to search for. The class of the textedit is RichText20W, and it has some messages that are probably used somehow, though that article just discusses using them for the parent of the class.
PART 2
Also, if there is no such "text changed, here is the newly inserted text" callback which returns the new content immediately, I need some way to easily detect what is new. From top-of-my-head:
- Have a marker at the end of the text block we've read, and only read between that and the end.
- Store what we've read previously, and after a second read, remove the duplicate part from the latter to have the newly inserted stuff.
Option 2 might not be viable, since the textedit can contain any amount of text. The marker part sounds doable, but yet again, my feeble Win32 skills and horrible Win32 function names prevent me from finding the right way to do it.
Note that all these must be doable for a textedit I do not own and have not created, they belong to a third party process.
Code samples in C++ highly appreciated.
Disclaimer
Obviously, if there is some better way of doing it, let me know. I only assumed callback would be the way to go based on my previous experience with GTK+/Qt. Feel free to show me the path :)
linux - Unix/Linux IPC の比較
Unix/Linux では、パイプ、ソケット、共有メモリ、dbus、メッセージ キューなど、多くの IPC が提供されています。
それぞれに最も適したアプリケーションは何ですか?また、それらはどのように機能しますか?
perl - Perlの中規模データに最適なIPCメカニズムは何ですか?
Perl で多層アプリの設計に取り組んでおり、利用可能なさまざまな IPC メカニズムの長所と短所について疑問に思っています。通常は数十キロバイトですが、最大で数メガバイトの適度なサイズのデータを処理しようとしています。負荷は非常に軽く、1 分間にせいぜい数百リクエストです。
私の主な関心事は、保守性とパフォーマンスです (この順序で)。複数のサーバーにスケールアップしたり、メイン プラットフォーム (RHEL) から移植したりする必要はないと思いますが、考慮すべきことだと思います。
次のオプションを考えることができます。
- 一時ファイル - 速度とストレージ要件の点でおそらく最悪のオプションです。
- UNIX ドメイン ソケット - 移植性がなく、スケーラブルでない
- インターネット ソケット - ポータブル、スケーラブル
- パイプ - ポータブル、スケーラブルではない (?)
スケーラビリティと移植性は私の主な関心事ではないことを考えると、もっと学ぶ必要があります。最良の選択は何ですか?その理由は? 追加情報が必要な場合はコメントしてください。
編集: ysth の質問 に応じて、より詳細な情報を提供しようとします(警告、テキストの壁が続きます)。
- リーダー/ライターは 1 対 1 の関係にあるのか、それとももっと複雑な関係にあるのか?
- 読者が不在または多忙な場合、ライターに何をしてもらいたいですか?
- およびその逆?
- 希望する使用法について他にどのような情報がありますか?
現時点では、3 層のアプローチを検討していますが、各層にいくつのプロセスを含めるかはわかりません。左側に向けてプロセスを増やし、右側に向けてプロセスを減らす必要があると思いますが、全体的に同じ数にする必要があるかもしれません。
これらの名前はまだ一般的なものであり、おそらくこれらの形式での実装にはなりません。
要求マネージャーは、Web 要求や CLI (応答時間が重要な場合) や電子メール (応答時間がそれほど重要でない場合) など、さまざまなインターフェースからの要求をリッスンする役割を果たします。ロギングを実行し、リクエストへのレスポンスを管理します(リクエストのタイプに適した形式でレンダリングされます)。
リクエストに関するデータをビジネス ロジックに送信します。ビジネス ロジックは、ビジネス ルールに応じてロギング、承認などを実行します。
次に、ビジネス ロジック (必要な場合) がデータ レイヤーからデータを要求します。データ レイヤーは、(ほとんどの場合) 内部 MySQL データベースまたはチームの制御外にある他のデータ ソース (たとえば、組織のプライマリ LDAP サーバー、または私たちのDB2 従業員情報データベースなど)。これはほとんどの場合、ビジネス ロジックでより簡単に処理できるようにデータを統一された方法でフォーマットする単純なラッパーです。
その後、情報は提示のために要求マネージャーに戻されます。
データが右に流れているときにリーダーがビジーである場合、インタラクティブなリクエストに対して、適切な時間だけ待機し、その時間内にアクセスできない場合はタイムアウト エラーを返します (例: 「後でもう一度やり直してください」)。非対話的な要求 (電子メールなど) の場合、ポーリング システムは単純に終了し、次の呼び出しで再試行できます (おそらく 1 ~ 3 分に 1 回)。
データが逆方向に流れている場合、待機状況は発生しません。左に戻ろうとしたときにプロセスの 1 つが停止した場合、実際にできることは、ログを記録して終了することだけです。
とにかく、それはかなり冗長でした。私はまだ設計の初期段階にあるので、おそらくまだ混乱したアイデアがいくつか残っています。私が言及したことのいくつかは、おそらく、どの IPC システムを使用するかという問題に接するものです。私は設計に関する他の提案を受け入れていますが、質問の範囲を限定しようとしていました (たとえば、IPC にとってははるかに簡単な 2 つの層に折りたたむことを検討する必要があるかもしれません)。あなたの考えは何ですか?
ipc - 別のマシンで統計を計算し、それらを再度組み合わせるにはどうすればよいですか?
同じ機能を提供する 2 つのバックエンド アプリケーションがあり、それらは 2 つの別々のマシンに配置されています (実際には、これは負荷分散を行うためです)。そのため、同じ方法を使用してクライアントのフロントエンド リクエストを処理します。
接続されているすべてのクライアントに関する統計を収集し (つまり、クライアント GUI アプリケーションで最も使用されているコンポーネントなど)、その結果をすべてのクライアントに毎秒送信したいと考えています。
バックエンドコンポーネントごとにこれらの統計を個別に計算し、両方を合計することを考えています。その場合、バックエンドコンポーネント間で何らかの通信を行うか、単にグローバルDBに小さなテーブルを作成し、各バックエンドがテーブルを更新してから選択するクライアントに送信しますが、統計を毎秒送信したいので、これによりパフォーマンスが低下する可能性があります
助けが必要です
java - Java から Python モジュールを呼び出す
Cで書かれたグラフライブラリのPythonインターフェース-igraph(ライブラリの名前)があります。このグラフ ライブラリに関連する Python モジュールを Java コードから呼び出す必要があります。このように、ライブラリのコアは c にあります。このコアは Python にインポートされており、コアに組み込まれている関数へのインターフェイスは Python で使用できます。私のプロジェクトの残りのコードは Java であるため、グラフ関数も Java で呼び出したいと考えています。Jython - Java で python モジュールを呼び出すことができるオプションがありました。Jython を試してみたところ、コアコードは C であり、Jython は python で ac dll としてインポートされたものをサポートしないため、私の場合は機能しないことがわかりました。また、c でグラフ ルーチンを直接呼び出す方法を選択することも考えました。つまり、Python コードを通過しません。Java から C コードを呼び出すことができる何かがあるに違いないと思いますが、私は C が得意ではないので、それを選びませんでした。私の最後の手段は、Java を使用してコマンドラインから Python インタープリターを実行するようです。しかし、それは汚くて恥知らずです。また、Python コードによって生成された結果を処理するには、結果をファイルに書き込み、Java で読み戻す必要があります。再び汚れた方法。誰でも私に提案できることはありますか?時間を割いてくださった皆様、ありがとうございました。誰でも私に提案できることはありますか?時間を割いてくださった皆様、ありがとうございました。誰でも私に提案できることはありますか?時間を割いてくださった皆様、ありがとうございました。
Igal さん、ご回答ありがとうございます。私はそれを見ていた。一見、単に python スクリプトを呼び出しているように見えます。
コマンドラインからJavaコードを介してpythonインタープリターを呼び出した場合に行うことと非常によく似ています。
問題は、Python スクリプトによって生成された結果をどのように使用するかです。単純な方法は、それらをファイルに書き込んで Java で読み戻すことです。よりスマートなアプローチを探しています。とにかく提案をありがとう。
windows - Windows サービスへのパスワードの送信
パスワードを Windows サービスに送信する最良の方法は何ですか? アプリケーションを開始するには、パスワードが必要です。サービスが「通常」ユーザーの操作なしで実行されることになっていることは気にしません。オペレーターがアプリケーションを起動してからログオフできることは、私たちにとっては十分なことです。
UNIX システムでは、stdin を介してパスワードをエコーするだけですが、サービスには stdin がありません。
現在、DPAPI を使用して、CryptProtectData を使用してパスワードを保存するだけです。これは機能しますが、厄介になり始めている他の問題を提示します。
パスワードを送信しているサービスとアプリケーションの間で何らかの形式の IPC を使用する必要があると推測していますが、どの方法が適切かはわかりません。
ありがとう
python - Vista UAC (ユーザー アクセス制御) 用の python IPC (プロセス間通信)
私は (wx)python で Filemanager を書いています - 多くはすでに動作しています。ファイルをコピーするときは、進行状況ダイアログ、上書き処理などがあります。
現在、Vista では、ユーザーがファイルを特定のディレクトリ (%Program Files% など) にコピーする場合、アプリケーション/スクリプトに昇格が必要ですが、実行時に要求することはできません。したがって、昇格した別のアプリ/スクリプトを起動する必要がありますが、これは機能しますが、メインアプリと通信する必要があるため、後者は進行状況などを更新できます.
検索したところ、共有メモリとパイプが最も簡単な方法であるという記事がたくさん見つかりました。だから私が探しているのは、共有メモリまたはパイプを使用した python バインディングを備えた「高レベル」のプラットフォームに依存しない ipc ライブラリです。
すでに ominORB、fnorb などを見つけました。それらは非常に興味深いように見えますが、TCP/IP を使用しています。共有メモリまたはパイプを使用する同等のライブラリはありますか? ipc-client は常に同じマシン上にあるため、ここではソケットは必要ないようです。また、ユーザーが個人のファイアウォールで ipc-socket-communications を許可する必要があるのではないかと心配しています。
編集: 私は本当に高レベルを意味します: stdin/stdout に文字列を送信する代わりに、omniORB を使用する場合のように、いくつかの関数を呼び出すことができれば素晴らしいでしょう。
c# - 実行中のコンソール アプリから別のコンソール アプリにメッセージを送信する
ftp サーバーとの同期に時間がかかるコンソール アプリが 1 つあります。
別のコンソール アプリは、いくつかの必要な更新済みファイルを含むローカル ファイル システムを準備します。
次に、2 つ目は最初のディレクトリ名が終了するのを待ってから、最終的なディレクトリ名を交換して、Web 上で表示されるようにします。
私は、同期アプリが 2 番目のアプリに仕事が終わったことを伝えるための最良の方法を探しました。これには、 Data Copy for IPC を使用するのが最適なソリューションのようです。
質問は 2 つあります。
- 私は正しいですか?同じ結果を得るより簡単な方法はありますか?
- これを行う管理された (.net) 方法はありますか?
windows - Windows 用の D-Bus に相当するもの
Linux/D-Bus のような Windows 用のメカニズムを知っている人はいますか?
ありがとう