@mlrpadilla JMP でファイルを保存できない場合のファイルの復元について質問されました。コンピュータ/JMPのシャットダウンが避けられない場合、JMPファイルの最新の作業を復元するにはどうすればよいですか?
私は 1 年前に .JSL スクリプトを使用して同様の経験をしました。停電により数時間の作業が必要になったときです。 開いている JSL ファイルを定期的に探して、それらのスナップショットを作成するアドインを作成しました。 JMP データ テーブルのスナップショットは作成されません。 また、Windows でのみ動作します。 しかし、それ以来、私のJSLは数回節約されました。 また、少なくとも一度は失敗しました(以下)。
FileSnapper アドイン
インストール後、FileSnapper アドイン スクリプトは 5 分ごと (デフォルト) に実行され、開いているウィンドウを調べて、変更されたスクリプト ウィンドウを見つけます。 見つかったら、テキストを取得して保存します。
JMP が正常に終了しない場合、センチネル ファイルが残されます。 次に JMP を起動して番兵を見つけると、JMP は FileSnapper ダイアログを開き、復元するスナップショットがあるかどうかを確認します。 アドイン メニューからダイアログを開き、いくつかのプロパティを設定することもできます (5 分の間隔や 14 日間の保持期間など)。
使い方
FileSnapper をできるだけ見えないようにするために、JSL スケジューラを使用しません。 (スケジューラーはウィンドウを開きます。別の目的で使用できるスケジューラーは 1 つだけです。)代わりに、FileSnapper は RunProgram を使用して定期的なウェイクアップ コールを取得します。 何度も繰り返しました。現在のバージョンは CMD.EXE と DOS を使用していますを待つコマンドをループで実行して、5 分ごとにテキストを FileSnapper に送り返します。 JMP がシャットダウンすると、を待つCMD.EXE をすばやく終了させるイベント。 センチネルが消えると、CMD.EXE も終了します。
センチネル ファイルには小さな JMP データ テーブルが使用されます。 テーブルは保存されますが、プライベート テーブルとして開いたままになります。 JMP の 2 番目のコピーを実行すると、JMP の別のコピーでテーブルが開いていることが検出され、(1) 回復ダイアログが開かず、(2) 別のセンチネル ファイルが作成されます。 開いていないセンチネルが見つかった場合、開いていないすべてのセンチネルが削除され、回復ダイアログが開きます。 ファイルを回復するためのプロンプトは 1 回だけ表示されます。
アドインは、シャットダウン フックを使用してセンチネルを削除し、RunProgram が確実に終了するようにいくつかのことを行います。 いくつかの診断用の show() 呼び出しが残っている可能性がありますが、JMP がシャットダウンしているため、通常はその出力を確認できません。 ビュー -> アドインを使用して FileSnapper を有効/無効にし、ログ ウィンドウで監視できます。
backup() 関数は、RunProgram から 5 分ごとに呼び出されます。 Backup() は、ダーティな (変更された) エディター ウィンドウを探し、その内容を前回と比較し、変更されている場合はコピーを保存します。 ドキュメントの下に、スナップショット用の特別なフォルダが作成されます。 ファイルは読み取り専用としてマークされているため、使用しないでください...
FileSnapper が起動するたびに、古いスナップショット ファイルが調査されます。 FileSnapper は古いスナップショットを静かに削除します。 ログのノイズを制御することはできますが、5 分ごとにキーストロークを 1 つか 2 つ失う可能性があるため、FileSnapper が作成するすべてのスナップショットをログに記録することは望ましくありません。
ダイアログ ウィンドウ (失敗後、またはメニューから) には、最新のスナップショットから最も古いスナップショットまでのリストが表示されます。 (1) ダブルクリックして開くか、(2) シングルクリックして選択します。 1 つのファイルを選択すると、選択したファイルを右クリックして (右クリックでは選択できません。残念です!)、既存のファイルと比較できます。 2 つのファイルを選択した場合は、右クリックして 2 つのファイルを比較できます。 比較ウィンドウのタイトルをチェックして、ファイルが同じかどうかをすばやく確認します。 既存のファイルと比較してもプロンプトは表示されません。レジストリといくつかの識別されたディレクトリを調べて、正しい名前のファイルを探します。 比較したいファイルである場合とそうでない場合があります。
しかし、私はまだいくつかの仕事を失いました。
スクリプトを作成しているときは、エスケープを押してスクリプトを停止することがよくあります。 FileSnapper はスクリプトです。 ときどきエスケープ キーを処理して間違ったタイミングで停止し、5 分後に再び実行されないようにする方法はないようです。 FileSnapper には、5 分後にデータ テーブルが開かれた場合にのみ、停止したというレポートを作成するという中途半端なアイデアがあります。 私の場合、スクリプトを書いているときにデータ テーブルをあまり使用しないので、通知が届かない場合があります。
ある時点で、保持期間を 100 日に設定し、スナップショットの頻度を 30 秒に設定しました。 これは、やりすぎ。 10,000 以上のファイルがあり、JMP の起動に 30 秒かかることもありました。 ダイアログのオプションで痛みのレベルを選択します。 保存ボタンを押して、ダイアログを閉じます。
これが JMP に組み込まれることを望み、コールバック タイマーの改善を望みます。 改善できる点はたくさんあります (ダイアログの保存ボタンがフィードバックを返さないなど)。 それは実際に誰かを助けるかもしれないし、助けないかもしれません。 時折キーストロークを逃したことにうんざりしている場合は、アンインストールできます。 同じビュー -> アドイン メニューでも、ソースを表示できます。 おかげで@ジャスティン・チルトンプロジェクト内の JSL ウィンドウがどのように機能するかを指摘してくれました。
加える。
設定が本当に大好きです実行前に自動保存。
- JSL デバッグ中は、JSL コードが数分ごとに (実行の試行ごとに) 保存されることを確認できます。
- JSL ファイルをクラウドに保存すると、コードの以前のバージョンを取得できるようになります - 最後のバージョンが OK でなかった場合に備えて...
