問題タブ [hotswap]
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.
python - Pickle: 更新されたクラス定義を扱う
スクリプトの再コンパイルによってクラス定義が更新された後、pickle はそのクラスの以前にインスタンス化されたオブジェクトのシリアル化を拒否し、次のエラーを表示します: "Can't pickle object: it's not the same object as "
そのような場合を無視する必要があることをピクルに伝える方法はありますか? クラスを名前で識別するだけで、不一致の原因となっている内部の一意の ID を無視しますか?
この問題を便利で堅牢な方法で解決する代替の同等のモジュールの提案を答えとして歓迎します。
参考までに、私の志望動機は次のとおりです。
私は、Python スクリプトをライブで編集できる、生産性の高い迅速なイテレーション開発環境を作成しています。スクリプトは繰り返し再コンパイルされますが、データはコンパイル間で保持されます。生産性の目標の一環として、私はシリアル化に pickle を使用しようとしています。これにより、データ構造が常に変化するための明示的なシリアル化コードを作成および更新するコストを回避できます。
ほとんどの場合、組み込み型をシリアル化します。私はピクルするクラスで意味のある変更を避けるように注意しており、必要に応じて copy_reg.pickle メカニズムを使用して unpickle でアップコンバージョンを実行します。
スクリプトの再コンパイルにより、クラス定義が実際には変更されていない (または変更が無害な方法でのみ変更されている) 場合でも、オブジェクトをピクルすることがまったくできなくなります。
java - ホット クラス リロード用のさまざまな Java プラグインの違いと、最も直感的なプラグインはどれですか?
現在、Java アプリケーションでホット クラス リロードを実装しようとしていますが、選択できるプラグインが非常に多く、オプション間の適切な比較が見つかりません。また、プラグインのウェブサイトでは、正確な機能とその使用方法について明確に説明されているわけではありません。
ClassLoader をリロードするカスタム ホット クラスを作成するオプションもありますが、仕事を行うことができるプラグインが既に非常に多くある場合、それは「車輪の再発明」に似ているように感じます..他の人はこれに同意しますか?
私が見つけたJavaプラグインは、仕事をすることができると思います:
- Jレベル
- 動的コード進化仮想マシン (DCEVM)
- フェイクリプレイス
- Apache Commons Java Compiler Interace (JCI) FileAlterationMonitor (FAM)
- エージェント・スミス
- フィーニックス
- Play フレームワーク
- JBoss /ワイルドフライ
- OSGi
では、プラグイン間の違いを知っている人はいますか? また、どのプラグインが最も直感的に使用できますか?
補足として: 私が実際にやりたいことは、Java アプリケーションの .jar ファイル依存関係をリロードすることです。非常に頻繁に自動的に再コンパイルされ、.jar ファイルに変換される Java コードがあります。これは私の Java アプリケーションの依存関係であり、私のアプリケーションは毎回この .jar ファイルの最新バージョンを使用する必要があります。
java - クライアントからの動的なホットスワップ サーバー ランタイム動作
ある (jaxrs 準拠の) コンテナーにデプロイされたロギング・サービスがあるとします。
このサービスをホストしているコンテナーに対して次の要求を行うと、メッセージの出力がコンテナーの stdout ログに表示されるはずです。
ここで、任意のクライアントによって指定された動作で、実行時にこのログ メッセージの実装を変更したいと思います。
たとえば、次のインターフェースがあるとします。
サービスは、このインターフェースの実装を使用するように再定義されました。
したがって、問題は、ロガーの実装を、サーバー外部のクライアントによって定義された新しい実装とホットスワップするにはどうすればよいかということになります。
私の最初の本能は、RMI および/または動的プロキシを使用すれば、自分が望む場所に到達できるということでしたが、セキュリティ ポリシーの狂気のせいで、あまり確信が持てませんでした。
基本的に私が欲しいのは、次のことを行う能力です。
考え?
(ああ、私はこれが深刻なセキュリティ リスクをもたらすことを知っており、そのようなパターンは本番環境では決して使用すべきではありません。私の関心は、モック サービスを呼び出す統合テストによってサービスの動作と副作用を定義できるモック サービスを設計することです)