0

私はソフトウェア開発が初めてです。今、私は、人々が英単語を暗唱したり復習したりするのを助ける、小さくても便利なソフトウェアを設計することを計画しています.

長年の Linux ユーザーとして、ユーザー指向のアプリケーションは、XML、プレーン テキスト、SQLite などのさまざまな方法でユーザー構成を保存することに気付きました。アプローチ。

ここで私の質問です。ほとんどのアプリケーションはどのようにデータを保存しますか? 具体的には、一般的に使用されているデータの保存方法をいくつか挙げていただけますか? 上記のデータは、アプリケーションがそのことを記憶し、次回の起動時に以前の状態に戻るのに役立つデータを指します (おそらく、それが構成ファイルのすべてです)。ところで、プレーン テキスト スタイルの構成に興味があります。次のようになります。

プロパティ 1 = 値 1

プロパティ 2 = 値 2

...

プログラマーがスキーム全体をどのように実装するのだろうか、正規表現を使用する必要があるのか​​ 、それともサードパーティのライブラリを呼び出す必要があるのか​​ 、それとも直接解析するコードを書くだけなのか?

私の小さなプロジェクトには、2 種類の永続データがあります。1 つはユーザー フレンドリーな構成用で、もう 1 つは英語の単語と関連情報を格納するデータベースとして機能します。

お待ちいただきありがとうございます。:)

4

2 に答える 2

3

うーん。他のアプローチと比較して、適切なアプローチがあるとは思いません。カスタム解析ルーチンを含むプレーン テキスト ファイルを好む開発者もいれば、対応するライブラリで使用される YAML や XML などの形式を使用する開発者もいれば、sqlite のようなローカル データベース バックエンドや外部データベース (主にエンタープライズ集中環境で使用される外部データベース構成) を使用する開発者もいます。 Lua をデータ表現言語として使用することもできます (ただし、これには長所と短所があります)。必要に応じて、またはより使い慣れたものを自由に選択できます。ここには特効薬はありません。単純な構成の場合は、プレーンファイルを使用して構成パーサーを使用する方が良いようです (たとえば、POSIX 準拠システムの場合はlibconfig )。

于 2013-01-27T08:24:12.787 に答える
0

実際には、データの形式、データのおおよそのサイズ、パフォーマンス要件、データの前処理または後処理の機能などによって異なります。

また、データを何らかのテキスト形式で保持したい (または保持したくない) 場合もあります。テキスト形式 (XML、JSONYAMLなどを含む) の主な利点は、移植可能で、開発者が見やすいことです。また、ソース コード用のツール (たとえば のようなバージョン管理システムgit) を使用して管理することもできます。欠点は、ディスク上のスペースが多くなり、解析と生成に時間がかかることです (ただし、XML、JSON、YAML 形式には、それらをサポートする多数のライブラリがあります)。また、テキスト データに直接アクセスするのは困難です。基本的に、テキスト データを使用するにはすべてを読み取る必要があります。

その問題をシリアル化または永続性の問題と見なすこともできます。XDR、ASN1、独自の形式、またはs11nなどのライブラリの使用を検討できます。バイナリでありながら移植可能な形式 (たとえば、ファイルは、他のプロセッサ、エンディアン、およびワード サイズを備えたシステムで読み取り可能) に関心があるかもしれません。

データを構成データ (プログラムによって書き込まれるのではなく、読み取られる) と考える場合は、テキストにして、コメントを表現する方法を用意してください。システム管理者は、構成ファイルにコメントを追加することを非常に喜んでいます。プログラムは無視する必要があります。

大量のデータにアクセスしてすばやく更新する必要がある場合は、バイナリ形式 (RAM の内部にあるものと同様) が望ましい場合があります。その場合、テキストを作成 (および消費) するダンプ & リストア機能を考えてみてください。

ガベージ コレクションと同様のアルゴリズムを使用するアプリケーション チェックポイントの観点から考えることもできます。

問題は、データの価値とは何かということです... アプリケーションが進化している (新しいバージョン、新しい機能) 間でもデータを維持する必要があると考える場合は、それについてよく考えてください。データの形式を十分に文書化します。

于 2013-01-27T08:22:40.260 に答える