नॉन-बीएलओबी सेटिंग्स को स्टोर करने का सबसे अच्छा तरीका (और स्थान) क्या है?
विंडोज पर, रजिस्ट्री का उपयोग करना स्वीकार्य लगता है। मेरी राय में, रजिस्ट्री एक खराब-तैयार प्रणाली थी, और इसके बजाय एक सरल पाठ फ़ाइल थीUsers\Username\AppData
निर्देशिका प्राथमिकता दी जानी चाहिए। यह बैकअप लेना आसान है, उपयोगकर्ताओं के लिए संशोधित करने के लिए कम खतरनाक है, और सफाई करना आसान है।
लिनक्स और अधिकांश यूनिक्स पर, पसंदीदा स्थान /home/user/.config/appname
उपयोगकर्ता-विशिष्ट सेटिंग्स और /etc/
वैश्विक (सिस्टम-वाइड) सेटिंग्स के लिए है। उपयोगकर्ता सेटिंग्स के लिए कम पसंदीदा (लेकिन स्वीकार्य) स्थान है ~/.appname
, लेकिन यह आमतौर पर एहसान से बाहर हो रहा है। इन फ़ाइलों को उपयोगकर्ता-संपादन योग्य होना चाहिए, इसलिए एक मानव-पठनीय प्रारूप हमेशा पसंद किया जाता है।
मैं ज्यादातर लोगों से असहमत हूं कि XML गैर-ब्लॉब डेटा संग्रहीत करने के लिए एक स्वीकार्य प्रारूप है। यह मेरी राय में, आमतौर पर संरचित डेटा के बहुत छोटे टुकड़े होने के लिए एक अत्यधिक और अत्यधिक जटिल प्रारूप है। मैं YAML, JSON, ASN.1, नाम = मान जोड़े, या इसी तरह के प्रारूप में फाइलें देखना पसंद करता हूं। बहुत अधिक सिंटैक्स होने से उपयोगकर्ता के लिए गड़बड़ करना और फ़ाइल को अमान्य प्रारूप में छोड़ना बहुत आसान हो जाता है।
क्या हमें प्रत्येक सिस्टम डिफ़ॉल्ट का पालन करना चाहिए या एक एकीकृत समाधान होना चाहिए?
यह पूरी तरह से आपके ऊपर है, लेकिन कुछ बातों को ध्यान में रखें:
- प्लेटफ़ॉर्म जैसे * निक्स की सख्त सीमाएँ हैं, जिन पर स्थान उपयुक्त हैं। विंडोज से ज्यादा सख्त। इसलिए:
- आपको कुछ भी लिखने के लिए एकमात्र स्थान उपयोगकर्ता की होम निर्देशिका में है।
- जब तक आपका आवेदन एक सिस्टम सेवा नहीं है; किस स्थिति में, सभी परिवर्तनशील डेटा फ़ाइलों को लिखा जाना चाहिए
/var/
। नॉनम्यूटेबल डेटा फ़ाइलों को आपके ऐप डायरेक्टरी में /usr/share/
या में रखा जाना चाहिए/usr/local/share/
या/opt/
- कॉन्फ़िगरेशन फ़ाइलों को एप्लिकेशन द्वारा कभी भी नहीं लिखा
/etc/
जाना चाहिए जब वह चल रहा हो, भले ही उन तक पहुंच हो। डिफ़ॉल्ट व्यवहार के लिए भंडार होना चाहिए और कुछ नहीं।/etc/
- आपके आवेदन के लिए योजना तीन स्थानों में से एक में स्थापित होने के लिए:
/usr/local/
, /opt/appname
, या /home/username/appname
।
- यदि उन्हें बदलना है तो अन्य कॉन्फ़िगरेशन फ़ाइलों के साथ ब्लब्स को संग्रहीत किया जाना चाहिए। यह आमतौर पर उपयोगकर्ता-संपादन योग्य प्रारूप का उपयोग करने के लिए बेहतर होता है, इसलिए SQLite या बर्कले DB जैसा कुछ पसंद किया जाता है (क्योंकि प्रत्येक के लिए कमांड-लाइन टूल हैं), लेकिन इसकी आवश्यकता नहीं है।
- विंडोज पर, आपके एप्लिकेशन को केवल उपयोगकर्ता निर्देशिका में लिखना चाहिए। डेटा फ़ाइलों के लिए मानकीकृत स्थान है
Users\User\AppData
। कहीं और स्वीकार्य नहीं लगता।
- मैक ओएस एक्स पर, आपकी एप्लिकेशन सेटिंग्स को
~/Library/Preferences
अन्य एप्लिकेशन की सभी प्लिस्ट फ़ाइलों के साथ संग्रहीत किया जाना चाहिए । plist
लगता है कि पसंदीदा प्रारूप है, लेकिन आप Apple दिशानिर्देशों के साथ दोबारा जांच करना चाहते हैं।
और सबसे अच्छा पोर्टेबल तरीका क्या है?
ईमानदार होने के लिए कोई "सर्वश्रेष्ठ" नहीं है। केवल मंच-विशिष्ट सीमाएँ और अपेक्षाएँ हैं। मेरी सिफारिश प्लेटफ़ॉर्म-विशिष्ट साधनों से चिपकना है, भले ही इसका अर्थ अधिक कोड लिखना हो।