非BLOB設定を保存する最良の方法(および場所)は何ですか?
Windowsでは、レジストリを使用しても問題ないようです。私の意見では、レジストリは十分に考案されていないシステムであり、代わりにUsers\Username\AppData
ディレクトリ内の単純なテキストファイルを優先する必要があります。これはバックアップが簡単で、ユーザーが変更する危険性が低く、クリーンアップが簡単です。
LinuxおよびほとんどのUNIXでは、/home/user/.config/appname
ユーザー固有の設定と/etc/
グローバルな(システム全体の)設定が望ましい場所です。ユーザー設定のあまり好ましくない(ただし許容できる)場所はですが~/.appname
、これは一般的に好まれません。これらのファイルはユーザーが編集できる必要があるため、人間が読める形式が常に優先されます。
私は、XMLが非ブロブデータを保存するための許容可能な形式であることにほとんどの人々に同意しません。私の意見では、それは構造化されたデータの非常に小さな断片になることが多いため、過度に複雑で過度に複雑な形式です。YAML、JSON、ASN.1、名前=値のペア、または同様の形式のファイルを表示することを好みます。構文が多すぎると、ユーザーがファイルを台無しにして、無効な形式のままにしてしまうのが簡単になります。
各システムのデフォルトに従うか、統合ソリューションを使用する必要がありますか?
それは完全にあなた次第ですが、いくつかのことを覚えておいてください:
- * nixなどのプラットフォームには、書き込み可能な場所に厳しい制限があります。Windowsよりも厳密です。そう:
- 何かに書き込むべき唯一の場所は、ユーザーのホームディレクトリです。
- アプリケーションがシステムサービスでない限り。その場合、すべての可変データファイルはで記述する必要があります
/var/
。可変でないデータファイルは/usr/share/
、/usr/local/share/
または/opt/
- 構成ファイルは、アプリケーションへの書き込みアクセス権がある場合でも、実行中のアプリケーションによって書き込まれる
/etc/
べきではありません。デフォルトの動作/etc/
のリポジトリであり、他には何もないはずです。
- 3ヶ所のいずれかにインストールされるアプリケーションのための計画:
/usr/local/
、/opt/appname
、または/home/username/appname
。
- BLOBを変更する場合は、他の構成ファイルと一緒に保存する必要があります。一般的に好ましいのSQLiteまたはBerkeley DBのようなものは、(それぞれのコマンドラインツールがあるため)が好ましいが、されていないので、ユーザが編集可能な形式を使用する必要。
- Windowsでは、アプリケーションはユーザーディレクトリにのみ書き込む必要があります。データファイルの標準化された場所は
Users\User\AppData
です。他に受け入れられる場所はありません。
- Mac OS Xでは、アプリケーション設定
~/Library/Preferences
は、他のすべてのアプリケーションのplistファイルとともに保存される必要があります。plist
推奨される形式のようですが、Appleのガイドラインを再確認してください。
そして、最高のポータブルな方法は何ですか?
正直なところ、「ベスト」というものはありません。プラットフォーム固有の制限と期待のみがあります。私の推奨事項は、コードをさらに記述することを意味する場合でも、プラットフォーム固有の手段に固執することです。