2

監視している URL のリストを含むファイル urls.txt があるとします。私の監視スクリプトは、そのファイルをときどき編集して、たとえば、各 URL が到達可能かどうかを示します。また、そのファイルを手動で編集して、URL のリストを追加または変更したいと考えています。手動で編集するときに考える必要がないようにするにはどうすればよいですか?

ここにいくつかの可能な答えがあります。あなたならどうしますか?

  1. vimまたはemacsが作成するロックファイルをプログラムにチェックさせるなどのハッカーに従事します。これは私だけのものなので、これは実際に機能します。

    • 人間による編集が常に優先される場合は、常に人間がプログラムの変更を上書きするようにします (たとえば、ファイルがディスク上で変更されたという編集者の警告を無視します)。その後、プログラムは次のループで変更をやり直すことができます。それでも、ユーザーがファイルを編集している間にファイルを変更するのはあまり良くありません。

    • プログラムが進行中の変更を行っているファイルに人間が触れないようにしてください。設計を再考し、人間だけが編集する 1 つのファイルと、プログラムだけが編集する別のファイルを用意します。

    • 適切なファイル ロックを行うファイルを編集するためのカスタム ツールを人間に提供します。これは、ファイルをロックしてからエディターを起動するか、ファイルからエントリを挿入/変更/削除するためのカスタム インターフェイス (おそらく単純なコマンド ライン インターフェイス) を起動するのと同じくらい粗雑です。

    • フラット ファイルの代わりにデータベースを使用すると、ロックはすべて自動的に処理されます。

(これをより具体的にするためにURL監視の例を作成したことに注意してください。実際に考えていることはおそらくあまりにも奇妙で気を散らすものであるためです。この質問は、人間とプログラムの両方が同じ状態ファイルを変更できるようにする方法に厳密に関連しています。)

4

4 に答える 4

6

データベースは基本的に、目的を達成するために構築する必要があるためです。なぜ車輪を再発明するのですか?

本格的な DBMS の負荷が大きすぎる場合は、ファイルを 2 つに分割し、定期的に同期します。URL が到達可能かどうかは、ユーザーが変更するものとは思えないため、編集可能であってはなりません。

同期プロセス中 (モニターのサブ機能である可能性がありますが、モニターとユーザーをロックアウトする必要があります)、ユーザー フルにないモニター ファイルのエントリを削除します。また、ユーザファイルに追加したものを監視ファイルに追加(監視を開始)します。

しかし、最近では比較的優れた軽量データベースを取得できるため、ユーザー用の特別なフロントエンドを備えたデータベース方式を使用します。

于 2009-02-17T04:05:18.087 に答える
2

賢明なバージョン管理システムを使用してください!

(Git はここでうまく機能します)。

とはいえ、問題の性質上、実際のデータベースが最適であり、通常はデータベース レベル、テーブル レベル、または行レベルのロックが適用されますが、必要なスクリプトはすべてバージョン コントロールに入れます。

于 2009-02-17T05:21:40.650 に答える
1

オプション 3 を使用します。実際、人間が編集した入力ファイルをプログラムに読み取らせ、各クエリの結果をログ ファイルに追加します。このようにして、サイトの到達可能性を経時的に分析することもできます。また、現在の状態のスナップショットとして、入力ファイル内の各サイトの現在の到達可能性状態を示すファイルをプログラムに保持させることもできます。

于 2009-02-17T04:41:50.590 に答える
0

もう 1 つのオプションは、自動アクセス用と手動アクセス用の 2 つのファイルを使用することです。変更または削除を示すためにユーザーファイルに方法が必要ですが、他のソリューションのいくつかでも同様の問題が発生します。

于 2009-02-17T11:52:26.780 に答える