問題タブ [event-driven]
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.
excel - Excel スプレッドシートでクリック イベントをキャプチャする
ユーザーがセルをクリックしたときに Excel でイベントをキャプチャするにはどうすればよいですか。このイベントを使用して、ユーザーが列内の複数の異なるセルをクリックした回数をカウントするコードをトリガーできるようにしたいと考えています。
c++ - イベント ドリブン シミュレーション クラス
私は、Bjarne Stroustrup による The C++ Programming Language のいくつかの演習に取り組んでいます。第 12 章の最後の問題 11 で混乱しています。
(*5) イベント駆動型シミュレーションを記述するためのライブラリを設計および実装します。ヒント: <task.h>。... クラス task のオブジェクトは、その状態を保存し、その状態を復元して、コルーチンとして動作できるようにする必要があります。特定のタスクは、タスクから派生したクラスのオブジェクトとして定義できます。タスクによって実行されるプログラムは、仮想関数として定義される場合があります。... 仮想時間の概念を実装するスケジューラが必要です。... タスクは通信する必要があります。そのためのクラス キューを設計します。...
これが何を求めているのか正確にはわかりません。タスクは別のスレッドですか? (私が知る限り、システム コールなしで新しいスレッドを作成することはできません。また、これは C++ に関する本なので、それが意図されているとは思いません。) 割り込みがなければ、実行中のスレッドを開始および停止するにはどうすればよいですか?関数?これには、ビジー待機 (つまり、継続的にループして条件をチェックする) が含まれると思いますが、しばらくの間終了しない可能性がある関数にそれを適用する方法はわかりません (たとえば、無限ループが含まれている場合)。 .
編集:詳細については、以下の私の投稿を参照してください。
javascript - 動的で抽象的なイベントオブジェクトを簡単に理解できますか?
GUIボタンにMFCを使用してC++イベント駆動型アプリを作成し、onmousedownなどのHTMLイベントを使用してWebページでJavascriptをトリガーします。インターフェイスを使用していてイベントがハードコーディングされている場合、イベント駆動型プログラミングの考え方は直感的です。
Cで関数ポインターを使用する方法を知っており、Windowsがそれらを使用してイベントループを実行する方法を理解しています。別の関数を動的に呼び出すコードを書くことができます。
私の問題は、コンパイル時からランタイムに移行することです。ここではどの言語でも話していますが、言語が必要な場合は、最近使用しているJavascriptまたはPHPを選択してください。自分のイベントオブジェクトを使用して何かを実行する方法をまったく理解していません。それは私が得た概念ではありません。そして、私はそれらを使用しないので、それらの実際の使用が何であるかわかりません。
たとえば、カスタムのターンベースのゲームを作成したい場合は、イベントオブジェクトを使用して、「発生」する必要があるゲームピースの能力の効果を表すことができると思います。
誰かが私にカスタムイベントの簡単な使用法を教えてもらえますか?またはそれが有用または実用的な状況ですか?それは言語と環境、そしてイベントの処理方法に大きく依存しますか?Javascriptの答えは良いでしょうが、私は多くの言語を読みました。
申し訳ありませんが、私はこの点で不十分であり、実用的で高度な(中級?)洞察が必要です。それはCのポインターのようなものです。私はポインターとそれらがあなたの友達である方法を「取得」します。しかし、私がそうしなかった時がありました、そして私が知っている多くの人々はまだそうしません。一度取得すれば簡単です。カスタムの動的なイベントをそのように取得することはありません。
windows - Win32イベント駆動型プログラミングは内部でどのように実装されていますか?
Win32 C ++アプリケーションでは、キューからメッセージをフェッチし、それらを変換してからディスパッチするメッセージループを開始します。最終的に、各メッセージはWndProcに到達し、そこで関連するイベントを処理できます。
私はその部分を理解しています。私が理解していないのは、進行の合間です。具体的には:
- さまざまな種類のOS割り込みハンドラーが、前述の「メッセージキュー」にメッセージを配置する必要がありますが、このキューはプロセスアドレス空間内のどこにありますか?割り込みハンドラコードにどのように公開されますか?
- メッセージを「翻訳」するとはどういう意味ですか?呼び出しは
TranslateMessage()
実際に何をしますか? - によってディスパッチされる
DispatchMessage()
と、メッセージはWndProcに到達する前にどの場所でスイングしますか(つまり、OSはそれをどのように処理しますか)?
上記の答えをご存知の方がいらっしゃいましたら、好奇心を満たしてください。ありがとう。
c++ - C++を使用したイベント駆動型クライアント/サーバー設計
スクリプト機能を備えたゲームサーバーを設計しています。一般的な設計は次のようになります。
さて、最後の部分は私にとって今最もトリッキーなことです。
現在、私の設計では、Client
特定の受信イベントへのコールバックを作成するために継承するクラスを使用できます。これらのコールバックはリストで管理され、受信したバッファーは、何かを受信するたびに解析プロセスを実行します。バッファが有効な場合、コールバックが呼び出され、バッファ内の内容に基づいて動作します。注意すべき点の1つは、コールバックがスクリプトエンジンに到達する可能性があることです。この時点では、何が発生するかはわかりません。
コールバックが終了するたびに、現在の受信バッファをリセットする必要があります。前述のように、何かが発生する可能性があるため、コールバックには現在、値を返す機能がありません。
何が起こるかというと、コールバックのどこかでthis-> disconnect()と表示されたら、すぐに切断してClient
、から削除しEventManager
、最後に、から削除しServer
ます。ここで、最終的に破棄され、メモリが解放されます。ただし、クライアントでコールバックが終了した後もコードが実行されているため、メモリを解放できません。
デザインで何を変更すればよいですか?どのが自由に破壊できるかServer
をチェックする時限イベントが必要ですか?Client
それは私が必要としない追加のオーバーヘッドを作成しますか?コールバックが終了した後でも、スタック(return -1;
)で最小限のコードを実行しても問題ありませんか?
どうすればいいのかわかりませんが、デザインを完全に刷新する準備ができています。
前もって感謝します。
performance - JBoss Seam - アプリケーションでの大規模なメッセージング
私は現在、次のチャットの類推に一致する設定を持つアプリケーションをいじっています。
- チャットは、メモリに保持され、チャット メッセージのリストを含むオブジェクトです。
- チャットは複数のブラウザー ウィンドウでレンダリングされ、更新は a4j:push で取り込まれます
プログラムによるセットアップは次のようになります: メッセージを含むチャット オブジェクトのインスタンスは、異なるセッションの PAGE スコープの seam コンポーネント間で共有されます。これで、任意のセッションが新しいメッセージをポストするとき、つまりチャット オブジェクトを変更するとき、すべての Seam コンポーネントに新しいメッセージが通知され、新しい状態がすべてのクライアントの UI に中継されるようになります。
これを実現するには、次の 3 つの方法が考えられます。
- パラメータとしてチャット ID を持つ Seam のイベント。次に、各コンポーネントが ID をチェックし、メッセージを更新または無視します。
- JMS キューまたは 1 つの JMS トピックで、各コンポーネントがフィルタを使用してチャットだけをリッスンします。
- 共有チャット オブジェクト内の純粋な Java リスナー メカニズム。つまり、各 seam コンポーネントがそれに登録され、通知は純粋で直接的な Java です。
議論のために、チャットの数が多く (数万)、チャット ユーザーの数が少ない (2 ~ 10 としましょう) と仮定します。
それぞれのパフォーマンスはどのようにスケールしますか? Seam でこれを実現し、パフォーマンスを向上させる方法について他に何か提案はありますか?
私が見ているように、(1) は統合されてクリーンになりますが、最終的には、実際にそれを必要とするのはごくわずかな数万のコンポーネントに通知することになります。したがって、おそらくスケーリングしません。
(2) 統合され、JMS プロバイダー (交換可能) のパフォーマンスのみに依存し、変更なしでクラスター化された環境でも動作します。ここでの JMS のパフォーマンスについてはよくわかりません。つまり、1 秒あたり数百のメッセージと、さまざまなフィルターを持つ数千のリスナーが多いかどうかはわかりません。
(3) 必要なコンポーネントのみが通知され、通知は純粋で直接的な Java であるため、高速です。ただし、セッション/コンポーネント/スレッドを横断する何かが行われるため、並行性/アクセスの問題が発生する可能性があります。
(1) と (3) の場合、クラスタリングをサポートするソリューションは、必要に応じて手動で追加する必要があります。
winapi - Win32 を使用してフォルダーを監視する
Win32 (最小ターゲットは XP) を使用してフォルダーの内容を監視する簡単な方法を探しています。可能であれば、ポーリング タイプのアプローチではなく、イベント ドリブンのアプローチを使用するとよいでしょう。事態を複雑にするために、監視フォルダーがネットワーク共有である場合があります。
私は本当に「新しいファイル」をキャプチャすることにのみ興味があります。ファイルの名前変更や削除について知らされなくても構いません。
イベント ドリブンの方法はありますか、それとも Win32 を扱うときの唯一の選択肢はポーリングですか?
flash - イベント駆動型フラッシュ開発を学習するための良いリソースはありますか?
アクションスクリプトでのイベント駆動型プログラミングのベストプラクティスを学べる良い本/サイトは何ですか (明らかに 3 つ)。
大規模なプロジェクトが近づいていますが、正直なところ、私のフラッシュは通常、クラスの大きな混乱であり、次のフラッシュが巨大な髪の毛のボールに変わることを望んでいません.
architecture - イベント駆動型アーキテクチャについて学ぶための優れたリソース
本、ブログ、ウェブサイトまたはビデオを探しています。
現時点では、UdiDahanとGregYoungのブログから多くの価値を得ていますが、他に聞く価値のある専門家はいないかと思いました。
architecture - SEDA (Staged Event Driven Architecture) とは何ですか?
SEDA: 条件の整ったスケーラブルなインターネット サービスのためのアーキテクチャ
「SEDA は、 staged event-driven Architectureの頭字語であり、複雑なイベント駆動型アプリケーションをキューで接続された一連のステージに分解します。」
これがアーキテクチャであり、SEDA には多くの実装があることを理解しています (ウィキペディアの記事を参照)。「ステージ」とは?ステージングされたイベント ドリブン アーキテクチャの概要と、従来の (ステージングされていない) イベント ドリブン アーキテクチャとの違いを誰かが詳しく説明してくれませんか?