JMP でファイルを読み取り専用モードで開くように強制するにはどうすればよいですか?親愛なるみんな、
で説明されているようなアドインを更新する方法を使用します。 https://community.jmp.com/t5/JMP-Scripts/How-to-write-self-updating-JMP-add-ins/ta-p/21932/jump-to/first-unread-messageに@ジェフ・パーキンソン。 そこには「metadata.jmp」というファイルがあります。JMP の起動時に開く必要があります。 多くのユーザーがこのファイルを自動的に開くと、いくつかの問題が発生しました。これは、状況によっては、ユーザーが (これを知らずに) 長時間そのファイルを開いたままにし、このファイルを更新できなくなるためです。
また、他の場合 (多数のユーザーが共有する大規模なデータテーブル)、ファイルを読み取り専用モードで開くとよい場合があります。
JMP でデータテーブルなどを読み取り専用モードで開くように強制することはできますか?
自動化とスクリプト作成データのブレンディングとクリーンアップRe: JMP でファイルを読み取り専用モードで開くように強制するにはどうすればよいですか?たくさんの提案をありがとうございます。試してみて、良い解決策を見つけます。
Re: JMP でファイルを読み取り専用モードで開くように強制するにはどうすればよいですか?@ゲオルグ
アプリケーションに関するいくつかの前提条件。
1. 複数の人が同時にメタデータに書き込んでいない
2. これは、「私のアプリの 1 つの新しいバージョンはありますか?」という読み取り専用の呼び出しです。それはどこにある?"
これらの両方が当てはまる場合、通常は実際に SQLite データベースを使用し、それに対して ODBC 呼び出しを行うことになります。メタデータを取得するだけであれば、多くの付加機能が必要であるとは言えません。さらに、実際にアドインをデータベースに保存するなどのこともできます。JMP テーブルはさまざまな用途に最適です。しかし、この特定の用途では、それはやりすぎだと思います。新しいバージョンがあるかどうかを確認したらすぐに閉じるつもりの単なる使い捨ての呼び出しである場合は、...
まだ簡単にスクリプトを作成できます。繰り返しになりますが、複数のユーザーが同時に書き込みを行っている場合、これはうまく機能しません。 重要なのは、JMP が CSV を開くときに、JMP テーブルの場合のように元のファイルをロックしないことです。
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
csv_path = convert file path("$DESKTOP\Big Class.csv");
dt << Save As(csv_path);
close(dt, no save);
dt_csv = open(csv_path);
dt_csv << Add Rows({:name = "Fake", :age = 14, :sex = "F", :height = 14, :weight = 28});
dt_csv:age[1] = 0;
// I can still delete this file even though I have the table open
show(delete file(csv_path));
dt_csv << Save As(csv_path);
通常、複数のアクセス許可レベルを扱う場合は、JMP テーブル機能を使用しないでおきます。JMP スクリプトで CSV を開くと、関連付けられていない JMP テーブルが開かれるためです。
Re: JMP でファイルを読み取り専用モードで開くように強制するにはどうすればよいですか?非表示または読み取り専用としてディスクに保存するDOS 属性コマンドを実行するための RunProgram スニペットが含まれています。 ファイルを読み取り専用としてマークすることも、フラグをクリアすることもできます。
Re: JMP でファイルを読み取り専用モードで開くように強制するにはどうすればよいですか?提案:アドインマネージャーそれか@ジャスティン・チルトン作成されたメソッドは、 @ジェフ・パーキンソン説明された。アドインは、ユーザーが読み取る連想配列を含む .jsl ファイルを更新します。
Re: JMP でファイルを読み取り専用モードで開くように強制するにはどうすればよいですか?@vince_fallerありがとう、私の場合は jmp テーブルが好まれます。(JMP で) 編集する必要がある小さなテーブルがあります。
別のケースとして、多くのユーザーが使用する大きなテーブルがある場合、変換が必要ないため、jmp テーブルの方が適しています。
さらに、jmp テーブルにはより多くの機能 (スクリプト、データ型など) があるため、ファイルタイプとしては常に jmp テーブルを好みます。
Re: JMP でファイルを読み取り専用モードで開くように強制するにはどうすればよいですか?JMP テーブルを CSV にしていただけますか?
Re: JMP でファイルを読み取り専用モードで開くように強制するにはどうすればよいですか?@ihあなたのアイデアに感謝します。それを使って適切な解決策を見つけようと思います。
ファイルシステムでアクセス許可を設定することは、私が好む単純な解決策ですが、詳細に見ると (ファイルはファイルサーバー上にあります)、アクセス許可を設定するユーザーがたくさんいることがわかり、複雑であることがわかりました。 なぜなら、ファイルを使用しているユーザーが数百人おり、どのユーザーの下で行動しているのかがわからないからです。
ただ、別のアイデアを思いつきました。
- ファイルを $TEMP にコピーして開きます。
Re: JMP でファイルを読み取り専用モードで開くように強制するにはどうすればよいですか?ファイルを読み取り専用で開く方法がわかりません (知っている人がいたら教えてください) が、問題を軽減するのに役立つかもしれないいくつかのアイデアを次に示します。
- ファイルのアクセス許可を変更して、ほとんどのユーザーがそのファイルに読み取り専用アクセスできるようにします。
- ファイルを開く必要があるコードのセクションを短くシンプルにし、try ブロックで囲みます。ファイル操作を処理する try ブロックの後、または catchExpr セクションに、ファイルを閉じるコードを含めます。例えば:
try(
//Work with the file here
dt = Open("a file");
values = dt:Column << get values;
dt << Close;
, //This is the catchExpr, it is executed on an error.
//Make sure the file is closed, but don't throw another if it wasn't open.
try( dt << Close );
//Now raise an error.
throw( "Error working with metadata file: " || char( Exception_msg ) );
);
//Or you could close the file in a subsequent try function
try(
//Work with the file here
dt = Open("a file");
values = dt:Column << get values;
);
try( dt << Close );
//Now do any time consuming functions on the data extracted from that file
//show(values);