タグ付けされた質問 「event-programming」

イベント駆動型プログラミングとは、マウスクリック、キープレスなどのイベントの認識と処理によってプログラムのフローが駆動されるプログラミング手法を指します。

2
パブリッシュ/サブスクライブパターンは、gotoとどのように異なりますか?
私の理解では、後藤声明は一般的に眉をひそめているということです。しかし、パブリッシュ/サブスクライブパターンは、コードの一部がメッセージをパブリッシュすると、一方向の制御の転送を実行するという点で概念的に類似しているようです。プログラマは、プログラムのどの部分がこのメッセージにサブスクライブしているかわからない場合があります。 イベントを使用してモジュール間を便利に「ホップ」するJavaScriptプログラムの多くで、似たようなものを見てきました。パブリッシュ/サブスクライブまたはイベント駆動型のパターンについて何かが欠けていますか?

2
イベントバブリングは一般にどのように機能しますか?また、イベントの伝播と同義語ですか?
私は、イベント駆動型(サブ)システムでのイベントディスパッチの一般的な仕組みと原則に頭を包み込もうとしています。 たとえば、Javascript、Flash(Actionscript 2および3)で何度も使用し、一度にPHPで簡単なイベントディスパッチシステムを作成したこともありますが、イベントバブリングやその伝播。 最初の質問: イベントバブリングはイベント伝播の同義語ですか? 2番目の質問: イベントが「バブル」するとき、これはイベントがオブジェクトの階層を「移動」することを意味すると理解して正しいですか? 3番目の最も重要な質問: 質問2の私の理解が正しい場合。これは、一般的に実装されるオブジェクトの階層をどのように「上に」移動するのですか? 一般に、親オブジェクトは同じイベントをその親に「再送信」することを意味しますか(ルートオブジェクトに到達するまで)。そしてそうならば; 階層内のこれらすべてのオブジェクトは、これらのイベントの子をリッスンする必要がありますか、または親オブジェクトが子オブジェクトイベントのリスナーとして自分自身を登録する必要がないイベントバブリングについての理解に重要な原則がありませんか? いくつかの簡単な擬似コードを使用してこれらの基本原理を説明できるとしたら、ありがたいです。

2
CQRSで新しい集約ルートを作成するにはどうすればよいですか?
cqrsアーキテクチャで新しい集約ルートを作成するにはどうすればよいですか?この例では、最初の1つのAR1への参照を保持する新しい集約ルートAR2を作成します。 開始点としてAR1メソッドを使用してAR2を作成しています。これまでのところ、いくつかのオプションが表示されます。 AR1の内部メソッドでは、リポジトリにアクセスできるドメインサービスを使用して、このオブジェクトをcreateAr2RootOpt1呼び出しnew AR2()てdb imediatellyに保存できます。 最初の集約ルートなどでイベントを発行できます。SholdCreateAR2Eventこれに反応してコマンドCreateAR2Commandを発行するステートレスサガがあり、それが処理されて実際にAR2が作成されて放出されAR2CreatedEventます。イベントソースを使用する場合、SholdCreateAR2Event最初の集約ルートの状態には影響しないため、イベントストアに保持されません。(または、これをイベントストアに保存する必要がありますか?) class AR1{ Integer id; DomainService ds; //OPTION 1 void createAr2RootOpt1(){ AR2 ar2 = new AR2(); ds.saveToRepo(ar2); } //OPTION 2 void createAr2RootOpt2(){ publishEvent(new SholdCreateAR2Event()); //we don't need this event. Shoud it still be preserved in event store? } } class AR2{ Integer id; Integer ar1Id; …

2
ゲームの成果を検出するにはどうすればよいですか?
私は誤ってこれをstackoverflowに投稿し、そのサイトの提案に基づいてここに投稿しました... これは非常に高レベルの概念的な質問です。ソフトウェアアプリケーションで、「アップロード」、「共有」、「コメント」など、4つの異なるアクションがあるとします。 そして、私は次のようなユーザーに達成バッジを与えたいです: 新人-最初の5つのファイルをアップロードする Junkieをアップロードする-1日に20個のファイルをアップロードする ナイトクローラー-午前0時以降にファイルをアップロード Share-a-holic-10種類のファイルを共有する すべてが好き-20種類のファイルが好き あなたはアイデアを得ます。ユーザーが特定のアチーブメントを達成したかどうかをチェックして、達成のためのロジックをコードにコンパイルする必要がないかどうかを確認する最良の方法は何ですか?そして..-コンパイル後に新しい実績を追加する機能を保持します(xmlまたはdb)-実績は特定のアクション、回数、および追加の基準(時刻など)を追跡する必要があります-検出はほぼリアルタイムであるため、ユーザーに通知されます実績が完了するとほぼ瞬時に 私の最大の質問は、達成されているこれらの成果をどのように検出するかです。私は: 1)すべてのアクションの後で、...(ほとんどリアルタイム)かどうかを確認します。2)別のプログラムに、一連のルールに照らして常にDBをチェックさせますか?(最も簡単) 私が見逃している別のパラダイムはありますか?多くのゲーム(iOSのjetpackなど)では、ロックを解除した瞬間にロックを解除した実績が通知されるので、間違いなくあると思います。非常に印象的でした。 ありがとうございました

1
先物/モナドvsイベント
アプリケーションフレームワークで、パフォーマンスへの影響を無視できる場合(最大で1秒あたり10〜20イベント)、 モジュール間の通信の優先媒体として使用するのに、より保守的で柔軟なものは何ですか?イベントまたは先物/プロミス/モナド? イベント(pub / sub、メディエーター)は疎結合を許可するため、より保守しやすいアプリであるとよく言われます...私の経験ではこれが否定されます。20以上のイベントがあると、デバッグが困難になり、リファクタリングも行われます-誰が、いつ、なぜ使用するのかを確認するのは非常に難しいためです。 約束(私はJavascriptでコーディングしています)は、イベントよりも醜くて気難しいものです。ただし、関数呼び出し間の接続を明確に確認できるため、アプリケーションロジックがより簡単になります。私が恐れていること。ただし、Promiseはそれらとのより強い結合をもたらすでしょう... PS:答えはJSに基づく必要はありません。他の関数型言語の経験は大歓迎です。

1
イベントソーシングは、書き込みがまれな場合のみですか?
私はイベントソーシングについて読んでいて、書き込みが非常にまれであるか、軍事レベルの監査が必要なエキゾチックな状況でのみ意味があるかどうかを自問するのをやめられません。 重要な使用法がある例外的ではないシステムでは、1日あたり数百から数千の書き込みが発生する可能性があり、たとえば、1年間の操作で100万回または2回の書き込み(つまりイベント)に変換されます。現在の状態を取得するためだけに数百万のオブジェクト(イベント)をマージすることは、従来のストレージからのまっすぐな読み取りと比較すると、ばかげた命題のように聞こえます。それでも、イベントソーシングは、最もパフォーマンスの高いシステムの背後にあります(LMAXなど)。 それで、私は何が欠けていますか?イベントストリームからの状態の復元は一般的に行われていますか?または、これを行う必要がほとんどなく、代わりに通常の操作(つまり、CQRSからのクエリストレージを使用)に別のストレージを使用し、例外的な場合(レプリケーション、監査など)にのみイベントから復元するという考えですか?

2
イベントが既に発生した後にアタッチされた場合、イベントリスナーを呼び出す必要がありますか?
イベントがすでに発生した後に接続されている場合、イベントリスナーを呼び出す必要がありますか?イベントが一度だけ発生する場合はどうなりますか? 頭に浮かぶ最初の例は、readyjQuery のイベントです。次のスニペットは、ページが読み込まれた後に評価されると、コールバックを呼び出します。 $(document).ready(function () { console.log("Works."); }); この動作の代わりに、ページが読み込まれたときに設定されるフラグを使用して、APIのコンシューマーに、イベントがすでに発生しているかどうかを確認し、それに応じて動作するように強制することができます。 if (document.readyState == "complete") { console.log("Works."); } else { $(document).ready(function () { console.log("Works."); }); } 上記の例は、ページが完全にロードされた後に何でも(通常は)すべてを実行する必要があるWebページのロードのコンテキストですが、「singleton」イベントを持つアプリケーションの単一のコンポーネントに対して同じ引数を作成できます(load、start、end、など)。単一成分の例は、とマップすることができload、イベント起動マップが読み込まれ、そのように指定すること。 map.on("load", function () { console.log("The map has loaded."); }); 上記の例は、ArcGIS API for JavaScriptからのもので、そのイベントは1回だけ発生します。コンシューマーがマップがロードされた後にマップがロードされるのを「待機」した場合、リスナーは呼び出されません。望ましい結果を得るには、リスナーをアタッチする前にマップの状態を確認する必要があります。 if (map.loaded) { console.log("The map has loaded."); } else { map.on("load", function …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.