問題タブ [agent]
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# - .NET 用の適切な分散エージェント/サービス モデルはありますか?
分散型エージェント/サービス モデルを実装するツールを探しています... これをグリッドまたはクラウド コンピューティングと呼ぶこともできると思いますが、この用語が正確に類似しているかどうかはわかりません。分散エージェント モデルは、開発者がフレームワークにディスパッチされるエージェントを構築し、フレームワークが分散環境のどこかでエージェントを実行するモデルです。
具体的には、グリッド/クラウド全体での動的分散をサポートするフレームワークを探していますが、一時的なエージェントをより永続的なサービスに置き換えます。ここでの目標は、サービスをグリッド/クラウド コンテナーにデプロイするために必要な時間と労力を最小限に抑えることです。
FWIW、デジピードはこれにかなり近づいていると思いますが、他に何があるかに興味があります. ソリューションを実行可能にするためには、アセンブリの配布を考慮する必要があるという印象を受けています。
java - 自動化された例外処理
次の機能を備えたJVMの現在の状態のスナップショットを取得できる何かが(Javaの世界に)存在するかどうか疑問に思っていました:
- 例外がスローされている間に実行してください。
- ローカル変数、メソッドの引数などをキャプチャします。
- ソースコードの状況をIDEで抽出または再現するために使用できる便利なファイルに入れます。
最初の 2 つの機能が必要です (3 つ目の機能はすばらしいでしょう)。また、本番環境での使用に適している必要があります (したがって、デバッガーについてはありません)。
これを尋ねる前に、私は WWW を (可能な限り) 検索し、いくつかの指針を見つけました。
- Cajoon Interceptor : Dzone の投稿で述べたように、3 つの要件を満たすパッシブ JVM エージェントです。しかし、これには 2 つの欠点があります。料金を支払わなければならないことと、サイトがダウンしていることです (支払う機会がない可能性があります)。
- AviCode Intercept Studio : Cajoon の .NET に相当するもの。いくつかの洞察を与えるだけです。
- JavaFrame : わかりました、ツイートですが、問題ないように見える JVM エージェントのソース コード (MIT ライセンスに基づく) を含む利用可能な SVN リポジトリを指しています (試してみます)。
それで、多分私は存在しない解決策を探していますか?緊急ではありませんが、私はあるプロジェクトについてこのアイデアを思いつきました。この「未知の」(?) パスを探索して、何か現実のものを得ることができれば素晴らしいと思います。
JVM エージェントであることは明らかなようです (たとえば、JVMTI からの例外イベント)。
最後に、ウィキペディアの例外処理の記事から次の段落を強調します。
Java や .NET などのランタイム エンジン環境には、ランタイム エンジンに接続するツールが存在し、対象の例外が発生するたびに、例外がスローされた時点でメモリに存在していたデバッグ情報を記録します (コール スタックとヒープ)。値)。これらのツールは、自動例外処理またはエラー インターセプト ツールと呼ばれ、例外の「根本原因」情報を提供します。
それがアイデアです。誰かが私に洞察を与えてくれることを願っています。あるいは、将来、誰かがこの謙虚な投稿に触発されることを願っています:)
ありがとう!
containers - 翡翠エージェントコンテナ
誰かがJavaコードを介して利用可能なエージェントコンテナを見つける方法を教えてもらえますか?JADEエージェントフレームワークを使用していますが、新しいコンテナーを作成する方法を理解しましたが、既存のコンテナーを見つけることができません(エージェントをコンテナーにデプロイできるようにするため)。
scala - Agent / Actor ベースの並行設計の設計パターン
最近、私はアクター/エージェント/シェアード ナッシング アーキテクチャをサポートする代替言語に取り掛かっています。scala、clojure など (clojure は共有状態もサポートしています)。
これまでに読んだドキュメンテーションのほとんどは、イントロ レベルに焦点を当てています。私が探しているのは、4 つのギャングに沿ったより高度なドキュメントですが、代わりに何も共有されていません。
なんで ?デザイン思考の変化を理解するのに役立ちます。単純な例は簡単ですが、実際の Java アプリケーション (シングル スレッド) では、複雑な関係を持つ数千のメンバーを持つオブジェクト グラフを作成できます。しかし、エージェント ベースの同時実行開発では、大規模なシステムを設計するときに理解すべきまったく新しい一連のアイデアが導入されます。すなわち。エージェントの粒度 - 1 つのエージェントが管理する状態の量 - パフォーマンスなどへの影響、または共有状態オブジェクト グラフをエージェント ベースのシステムにマッピングするための適切なパターンです。ドメイン モデルを設計にマッピングするためのヒント。技術についてではなく、設計で技術を最大限に活用する方法についての議論 (現実世界の「複雑な」例は素晴らしいでしょう)。
haskell - Haskell で内部状態を持つ 2 つの相互プロデューサー/コンシューマーを作成するにはどうすればよいですか?
状態とアクションのペアのユーティリティの内部表現を維持しながら、状態を取り込んでアクションを返すエージェントがあります。また、アクションを取り、状態/報酬のペアを返す環境もあります。
開始状態でエージェントをセットアップし、エージェント -(アクション) -> 環境 -(状態、報酬) -> エージェント -(アクション) -> ... から継続的に移動できるようにする必要がありますが、内部状態は(反復ごとに更新する必要があります) 非公開のままにする必要があります (つまり、エージェントまたは環境内で)。これは、state と action を引数として使用して、エージェント内の関数として environment を単純に呼び出すことができないことを意味します。
私はHaskell初心者なので、これが可能かどうかさえわかりません。
macos - GUIセッションを持つすべてのユーザーの起動エージェントの開始/停止
ルートレベルのデーモンからセッションごとのGUIエージェントを開始/停止できる必要があります。
私がやりたいのは基本的に
ただし、これは1つのインスタンスのみを開始/停止し、現在のGUIセッションでrootとして実行されます。sudoをオフにしておくと、開始します
bsexecの他のさまざまな順列をいじってみましたが(load / unloadコマンドを使用してbsexecからセカンダリスクリプトを呼び出すことを含む)、インスタンスをroot以外のものとして起動したり、別のGUIセッションで起動したりすることはできません。 。
私もとをいじってみましたが、そこでも運がsu - <user> ...
ありsudo -u <user> ...
ませんでした(多くの人が上記のリンクされた記事や他の場所で議論しているように)。
誰か考えがありますか?
編集:Graham Leeが以下に提案するように、ラッパーツールを使用してこれを実行しようとしましたが、次のエラーが発生します。
これは、私が使用しているコマンドラインコマンド、ラッパー、およびスクリプトです(501はユーザーIDであり、63093はシステムにログインしている別のユーザーのlaunchdのpidです)。
コマンドライン:
ラッパー:
脚本:
java - 動的バイトコード計測 - 問題
解決できない問題があります。次の 2 つのクラスと継承関係があるとします。
次のように追加のコードを計測したいと思います。
java.lang.instrument
この目標を達成するために、独自のクラス ファイル トランスフォーマーを備えたエージェントを使用して、パッケージに基づいて実装しました。このメカニズムは、動的バイトコード インストルメンテーションとも呼ばれます。
これまでのところ簡単です。さて、私のテストメソッドは次のことを行います:
コード:
これは、インスツルメンテーション パッケージの次の制限により機能しません。 を呼び出すnew B()
と、インストルメンテーションはクラス B で開始され、スーパー クラス A にはまだ print() メソッドがないため、操作されたクラスをロードするときにコンパイル エラーになります。クラス B の前にクラス A のインスツルメンテーションをトリガーできるかどうか、またどのようにトリガーできるかという問題が生じます。classfiletransformer の transform() メソッドは、クラス A で明示的に呼び出す必要があります。だから私は読み始めて、これにぶつかりました:
のjava.lang.instrument.ClassFileTransformer.transform()
javadocは言う:
トランスフォーマーは、すべての新しいクラス定義とすべてのクラスの再定義に対して呼び出されます。新しいクラス定義のリクエストは ClassLoader.defineClass で行われます。クラスの再定義の要求は、Instrumentation.redefineClasses またはそのネイティブの同等物で行われます。
transform メソッドにはクラスローダーのインスタンスが付属しているので、B のインストルメンテーションが開始されたときにクラス A を使用して自分でloadClass
メソッド ( loadClass
calls )を呼び出してみませんか。defineClass
その結果、instrument メソッドが呼び出されることを期待していましたが、残念ながらそうではありませんでした。代わりに、A
インストルメンテーションなしでクラスがロードされました。(エージェントはロード処理をインターセプトするはずですが、インターセプトしません)
この問題を解決する方法はありますか?一部のバイトコードを操作するエージェントが別のクラスを手動でロードできず、そのクラスがその/任意のエージェントを介して送信される可能性がない理由がわかりますか?
B が操作される前に A が読み込まれ、インストルメント化されているため、次のコードは適切に機能することに注意してください。
どうもありがとう!
sql - GUIを使用せずにSQLServerエージェントを作成するにはどうすればよいですか?
私はAngelLMSを使用しており、SQLServerプラットフォーム上に構築されています。私はその2005年を信じていますが、それについて100%確信しているわけではありません。
とにかく、多分私の擬似コードはその答えに光を当てるでしょう。また、文字列には一重引用符を使用する必要があり、連結文字は+です。
1日に2〜5回何かを実行する必要があります(頻度はまだ決定されていませんが、ポイントはわかります)。トランザクションブロック/擬似コードは次のとおりです。
データベースへの私の唯一のアクセスは、SQLコマンドを実行するテキストボックスです。テーブルの作成と削除、トランザクションブロックの実行、そして明らかに選択/挿入/更新/削除を行うことができます。エージェントを作成するためのコマンドが見つかりませんが、EnterpriseManagerまたはGUIが呼び出されているものを使用している場合の手順のみが見つかります。
また、エージェントのタイミングスケジュールを操作する方法に関するいくつかのリファレンスが役立ちます。テストするときは、15分程度ごとに実行するように設定したいと思います。
EDIT
EXEC dbo.sp_add_job @ job_name =N'test'はエラーを返しました
。ストアドプロシージャ'dbo.sp_add_job'が見つかりませんでした。