こんにちは、みんな、
他社がスクリプトを企業知的財産として保護するためにどのような対策を講じているか、また、スクリプトの使用状況をログに記録している団体があるかどうかを知りたいです。スクリプトのログ記録は、どのスクリプトが最も広く使用されているかを把握するのに役立ち、それに応じて対策を講じることができます。
現在の方法は、暗号化されたスクリプトの使用状況をネットワークドライブに記録することです。この方法では、ユーザーがネットワーク上で既に認証されている必要があります。JMPスクリプトがネットワークドライブにアクセスできない場合、スクリプトは終了します。アクセスできた場合は、スクリプト名、ユーザー名、日時などのスクリプト使用情報をテキストファイルに書き込んでネットワークディレクトリに記録します。この処理には、ユーザーとサーバーの位置、そしてネットワークの状況にもよりますが、かなり時間がかかり、時には10秒以上かかることもあります。この処理時間の大部分はファイル書き込み処理によるものだと思います。ユーザーの観点からすると、これはあまり良いことではありません。JMPがスクリプトのGUIを開こうとするのに膨大な時間を費やしているように見えますが、実際にはサーバーに接続してファイルを書き込むのにかかっているのです。私たちのネットワーク問題を解決することは不可能で、回避策もいくつか考えられますが、この記事を読んでいただいた上で、皆さんから代替案があれば教えていただければ幸いです。
注: スクリプトは表示用に暗号化されますが、実行用に暗号化されることはありません。
現在:
- スクリプトを実行する
- ネットワークパスが存在するかどうかを確認する
- 存在する場合は、使用状況情報をログに記録し(時間がかかります)、スクリプトを続行します。テキストをCSV形式で保存するには、save text file() コマンドを使用します。
- これにより、認証の検証とログ記録の両方が実現されます。認証の検証だけが必要な場合は、ディレクトリが存在するかどうかを確認するだけで十分であり、かなり高速に動作するようです。
- それ以外の場合はスクリプトを終了します
提案1:
- スクリプトを実行する
- 認証名空間が存在しない場合(JMPセッション内で初めて認証を検証する場合)
- 注: ここでの「authentication_namespace」は、作成可能な名前空間とその中に作成可能な変数を指します。JMPセッション内の任意のスクリプトで、この名前空間が作成されているかどうか、またはまだ存在しないかどうかを確認できます。これを使用して、認証後にこの名前空間を作成できます。
- ネットワークディレクトリが存在する場合(ユーザーが会社のネットワーク上にいることを確認する)
- 認証ネームスペースを作成します。その中に変数を作成することもできますが、必要ないと思います。後でその存在を確認するだけです。
- ローカル ログ ファイルを見つけて、以前にローカルに記録されたすべてのスクリプト使用状況データをサーバーにアップロードします。
- これを認証時にのみ実行することで、少なくともJMPセッションごとに書き込みに要する時間が1回に短縮されます。
- 問題: いくつのファイルを調べればいいのでしょうか? ログファイルだけに限定するために、デフォルトディレクトリの「log」フォルダに保存しますが、破損したファイルがあったらどうなるでしょうか? あるいは、ユーザーが個別に開いたらどうなるでしょうか? あるいは、ユーザーがスクリプトをダブルクリックして、同じタイムスタンプ (最新のもの) を持つ複数のファイルが作成されたらどうなるでしょうか? あるいは、JMP のセッションが複数開かれていたらどうなるでしょうか? 将来の JMP セッションでは、名前空間の参照にはアクセスできず、指定した名前のみにアクセスできるようになります。などなど。
- ネットワークディレクトリが存在しない場合は、ユーザーがネットワーク上にいないため終了します。
- 認証ネームスペースが存在する場合(ユーザーがこの JMP セッション内で以前に認証済みであることが確認されている場合)、使用状況をデフォルト ディレクトリ \ ログ フォルダーにローカルに記録します。
- ファイルが存在しない場合は作成し、ログ情報を保存します
- ファイルが存在する場合はログ情報を追加する
- (上記の注意事項、複数のファイルなど)
- 今すぐ情報をサーバーに転送する必要はありません。JMPセッション内で最初に認証を確認するときにのみ転送してください。
上記は可能ですが、複雑になり、問題が発生すると思います。数百人のユーザーがいる場合、何か問題が発生した場合のデバッグは悪夢のような状況になるでしょう。
提案2:
現在の方法と似ていますが、ネットワーク検証はネットワークディレクトリの存在確認(高速)によって行われ、ログ記録はJMPが待機する必要のないログタスクを開始することによって行われます。これが可能かどうかはわかりません。JMPは、リモートファイルへの書き込みタスクを開始し、完了を待たずに済むでしょうか?そうすれば、この問題はかなり簡素化されるでしょう。
このトピックに関して何か別のアイデアがあればお知らせください。
ありがとう
マイク
Run Program()を使用すると、タスクを開始して完了を待たずに済むと思います。
全体的に見て、この種のログ記録はすぐに複雑になってしまうので、あまり行わないでしょう。もしどうしても行わなければならない場合は、それをサポートする適切なシステム(APIを備えたHTTPサーバーとログ保存用のデータベース)を構築し、JMPの「新規HTTPリクエスト」を使ってデータを送信します。
「すぐに複雑になる」 -- これは技術的でない領域をかなりカバーしています。