BLOB dışı ayarları depolamanın en iyi yolu (ve konumu) nedir?
Windows'da kayıt defterini kullanmak kabul edilebilir görünüyor. Bence, kayıt defteri kötü tasarlanmış bir sistemdi ve bunun yerine Users\Username\AppData
dizindeki basit bir metin dosyası tercih edilmelidir. Bu, yedeklenmesi daha kolay, kullanıcılar için daha az tehlikeli ve temizlenmesi daha kolaydır.
Linux'ta ve çoğu Unix'te, Tercih edilen konum /home/user/.config/appname
kullanıcıya özgü ayarlar ve /etc/
genel (sistem çapında) ayarlar içindir. Kullanıcı ayarları için daha az tercih edilen (ancak kabul edilebilir) konum ~/.appname
, ancak bu genellikle gözden düşüyor. Bu dosyalar kullanıcı tarafından düzenlenebilir olmalıdır, bu nedenle her zaman okunabilir bir format tercih edilir.
Çoğu insanla XML'in blob olmayan verileri depolamak için kabul edilebilir bir format olduğunu kabul etmiyorum. Benim görüşüme göre, genellikle çok küçük bir yapısal veri parçası haline gelen şey için aşırı işlenmiş ve aşırı karmaşık bir biçimdir. Dosyaları YAML, JSON, ASN.1, name = değer çiftleri veya benzeri biçimlerde görmeyi tercih ederim. Çok fazla sözdizimine sahip olmak, kullanıcının dosyayı karıştırıp geçersiz bir biçimde bırakmasını çok kolaylaştırır.
Her bir sistem varsayılanını izlemeli miyiz yoksa birleşik bir çözümümüz olmalı mı?
Bu tamamen size bağlı, ancak bazı şeyleri aklınızda bulundurun:
- * Nix gibi platformlar, yazılabilir konumların kesin sınırlamalarına sahiptir. Windows'tan daha katı. Yani:
- Herhangi bir şeye yazmanız gereken tek yer kullanıcının ana dizinindedir.
- Başvurunuz bir sistem hizmeti olmadığı sürece ; bu durumda, değiştirilebilir tüm veri dosyaları yazılmalıdır
/var/
. Değiştirilemeyen veri dosyaları uygulama dizininizde /usr/share/
veya /usr/local/share/
veya/opt/
- Yapılandırma dosyaları
/etc/
gerektiğini asla uygulama tarafından yazılabilir bunun onlara yazma erişimi olsa bile, çalışırken. varsayılan davranışların /etc/
deposu olmalı ve başka bir şey olmamalıdır .
- Uygulamanız için Planı üç yerden birinde kurulacak:
/usr/local/
, /opt/appname
veya /home/username/appname
.
- Bloblar değiştirileceklerse diğer yapılandırma dosyalarının yanında saklanmalıdır. Genellikle kullanıcı tarafından düzenlenebilir bir biçimin kullanılması tercih edilir, bu nedenle SQLite veya Berkeley DB gibi bir şey tercih edilir (çünkü her biri için komut satırı araçları vardır), ancak gerekli değildir .
- Windows'ta uygulamalarınız yalnızca Kullanıcı dizinine yazmalıdır. Veri dosyaları için standart konum
Users\User\AppData
. Başka hiçbir yerde kabul edilebilir görünmüyor.
- Mac OS X'te, uygulama ayarlarınız
~/Library/Preferences
diğer tüm uygulamaların plist dosyalarıyla birlikte saklanmalıdır . plist
tercih edilen biçim gibi görünüyor, ancak Apple yönergelerini tekrar kontrol etmek isteyeceksiniz.
Ve en iyi taşınabilir yol nedir?
Dürüst olmak gerekirse "en iyi" yoktur. Yalnızca platforma özgü sınırlamalar ve beklentiler vardır. Benim tavsiyem, daha fazla kod yazmak olsa bile platforma özgü araçlara bağlı kalmaktır.