問題タブ [eda]
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.
events - イベント/コールバックを使用した機能の拡張
皆さんが私を理解してくれることを願っています。
イベント ハンドラー/リスナーを使用して、コールバックで機能を拡張したいと考えています。問題は、イベント ハンドラーに複数のコールバックを割り当てることができ、すべてのコールバックが値 (ブール値、文字列など) を返すことです。
いくつかのユーザーケース:
onLogin という名前のイベントがあり(誰かがログインしたときに発生します)、コールバックが選択した場合はブロックできます( false または true を返す)。コールバックが 1 つしかない場合は簡単ですが、複数のコールバックがある場合、どのコールバックが決定を下すかをどのように選択できますか?
verilog - verilog で eda-playground.com をクロックイン
クロック波形を EDA Playground に表示しようとすると、「実行が中断されたか、最大実行時間に達しました」というエラーが表示されます。波形を表示するにはどうすればよいですか?
scala - イベント駆動型アーキテクチャでscala/akkaアクターを初期化する方法は?
私は長時間実行されているプロセスを持っています.2時間から1日としましょう。各プロセスは、更新メッセージでライフサイクルを開始し、さらに同時更新をリッスンし続けます。更新メッセージには、一意のターゲット識別子があります。
各プロセスをアクターで表現したい場合、アクターを初期化するにはどうすればよいですか? 更新メッセージの識別子の値に基づいて、アトミックな検索/作成操作を行う必要があることは明らかですか? これをscala/akkaで設計するにはどうすればよいですか?
java - 単一の実行後に PreparedStatement を閉じる – これは設計上の欠陥ですか?
私はさまざまな場所を調べましたが、パフォーマンス上の利点のためだけであっても、どこよりもPreparedStatement
優先されるべきであるという疑わしい主張をたくさん聞いてきました。s はバッチ処理されたステートメントのみに使用されるべきであり、それ以外には使用されるべきではないとStatement
主張しています。PreparedStatement
しかし、私がフォローしてきた (主にオンラインの) 議論には盲点があるようです。具体的なシナリオを提示しましょう。
DB接続プールを備えたEDA設計のアプリケーションがあります。イベントが発生すると、永続性が必要なものもあれば、そうでないものもあります。人為的に生成されたものもあります (たとえば、X 分ごとに何かを更新/リセットするなど)。一部のイベントは発生して順次処理されますが、他の種類のイベント (持続性も必要) は同時に処理できます (また処理される予定です)。
これらの人為的に生成されたイベントは別として、持続性を必要とするイベントがどのように到着するかについての構造はありません。
このアプリケーションはかなり前 (2005 年ごろ) に設計され、いくつかの DBMS をサポートしています。典型的なイベント ハンドラー (永続性が必要な場合):
- プールから接続を取得する
- SQL文を準備する
- 準備されたステートメントを実行する
- 結果セットを処理し、該当する場合は閉じます
- 準備されたステートメントを閉じる
- 必要に応じて別のステートメントを準備し、同じ方法で処理する
- 接続をプールに戻す
イベントにバッチ処理が必要な場合、ステートメントは一度準備され、addBatch
/executeBatch
メソッドが使用されます。これは明らかなパフォーマンス上の利点であり、これらのケースはこの質問には関係ありません。
最近、ステートメントを準備 (解析) し、それを 1 回実行してクローズするという全体的な考え方は、本質的に の誤用でありPreparedStatement
、サーバーまたはクライアントの準備済みステートメントが使用されているかどうかに関係なく、パフォーマンス上の利点はまったくないという意見を受け取りました。 (Oracle、DB2、MSSQL、MySQL、Derby など) は、そのようなステートメントを準備済みステートメント キャッシュにプロモートすることさえしません (少なくとも、デフォルトの JDBC ドライバー/データソースはプロモートしません)。
さらに、MySQL の開発環境で特定のシナリオをテストする必要がありましたが、Connector/J 使用状況アナライザーはこの考えに同意しているようです。バッチ化されていないすべての準備済みステートメントの場合、呼び出しは次のようにclose()
出力します。
PreparedStatement created, but used 1 or fewer times. It is more efficient to prepare statements once, and re-use them many times
前述のアプリケーション設計上の選択によりPreparedStatement
、接続プール内の各接続のすべてのイベントで使用されるすべての SQL ステートメントを保持するインスタンス キャッシュを持つことは、不適切な選択のように思えます。
誰かがこれについてさらに詳しく説明できますか? 「準備 - 実行 (1 回) - 閉じる」というロジックに欠陥があり、本質的に推奨されていませんか?
PS Connector/J に対してuseUsageAdvisor=true
andを明示的に指定し、 or のいずれかを使用すると、バッチ処理されていないすべての SQL ステートメントのインスタンスを呼び出すときに、効率に関する警告が表示されます。cachePrepStmts=true
useServerPrepStmts=true
useServerPrepStmts=false
close()
PreparedStatement
events - イベント駆動型のアーキテクチャとイベントの構造
私は EDA を初めて使用し、利点について多くのことを読みました。おそらく次のプロジェクトでそれを適用することに興味がありますが、まだ何かを理解していません。
イベントを発生させる場合、どのパターンが最も適しているか:
- イベントに「CustomerUpdate」という名前を付け、顧客に関するすべての情報 (更新されているかどうかに関係なく) を含めます。
- イベントに「CustomerUpdate」という名前を付け、実際に更新された情報のみを含めます
- イベントに「CustomerUpdate」という名前を付け、消費者がこの顧客に関する情報を取得できるように、最小限の情報 (識別子) および/または URI を含めます。
私たちのイベントの中には、重くて頻繁なものがあるかもしれないので、質問します.
あなたの答えと時間をありがとう。
eda - Altium Designer シルクスクリーンからデジグネータの凡例をすべて非表示にしますか?
シルクスクリーンからすべてのパーツ指定子を隠そうとしています。各パーツを個別にダブルクリックせずにすべてを非表示にするより速い方法はありますか?
また、指定子のフォントとサイズをグローバルに設定する方法もあります。私のデザインは PCB サイズが非常に小さいので、デフォルトのサイズから縮小することが重要です。
ps。オフ グラインド ピンの警告は、私が心配する必要があることですか?
php - Magento EDA システムでイベント ループを回避するにはどうすればよいですか?
catalog_product_save_afterイベントをフックしようとしています。ここにconfig.xmlがあります
以下は、methodToCall()で実行されるコードです。
問題: catalog_product_save_after
イベントが発生したとき。methodToCall()に記述されたコードは、catalog_product_save_afterを再度起動します。そして、Magento EDA システムmethodToCall()によると、 catalog_product_save_afterをもう一度起動するメソッドToCall()が再度呼び出されます。そのため、システムは一連の発火と同じイベントのリッスンでスタックしました。
私の質問:
- この状況を回避するには?
- 一時的な目的で Magento イベント ディスパッチ機能を無効にする方法はありますか (可能であれば、 Mage_Core_Model_AppのdispatchEventメソッドを書き換えずに )。
- オブザーバーが、オブザーバーをインスタンス化したのと同じイベントを発生させた場合に、無限ループを防ぐ方法。上記の場合のように。