सबसे सरल मानव पठनीय विन्यास फाइल प्रारूप क्या है? [बन्द है]


13

वर्तमान विन्यास फाइल इस प्रकार है:

mainwindow.title = 'test'
mainwindow.position.x = 100
mainwindow.position.y = 200

mainwindow.button.label = 'apply'
mainwindow.button.size.x = 100
mainwindow.button.size.y = 30

logger.datarate = 100
logger.enable = True
logger.filename = './test.log'

यह अजगर के साथ एक नेस्टेड शब्दकोश में पढ़ा जाता है:

{
  'mainwindow':{
    'button':{
      'label': {'value':'apply'},
       ...
  },
  'logger':{
     datarate: {'value': 100},
     enable: {'value': True},
     filename: {'value': './test.log'}
  }, 
  ...    
}

क्या ऐसा करने का कोई बेहतर तरीका है? विचार यह है कि XML प्रकार का व्यवहार प्राप्त करें और यथासंभव लंबे समय तक XML से बचें। अंतिम उपयोगकर्ता को लगभग पूरी तरह से कंप्यूटर अनपढ़ माना जाता है और मूल रूप से नोटपैड और कॉपी-पेस्ट का उपयोग करता है। इस प्रकार अजगर मानक "हेडर + वैरिएबल" प्रकार को बहुत मुश्किल माना जाता है।

डमी उपयोगकर्ता कॉन्फ़िगरेशन फ़ाइल को संपादित करता है, सक्षम प्रोग्रामर शब्दकोशों को संभालता है। नेस्टेड डिक्शनरी को आसान विभाजन के लिए चुना जाता है (लकड़हारे को मेनविंडो मापदंडों की आवश्यकता नहीं होती है या संपादित भी नहीं हो सकती है)।


11
पूर्ण सरलतम आपके क्लाइंट को एक छोटा ऐप बनाना होगा जो इन कॉन्फिग फाइलों को संपादित करने के अलावा कुछ नहीं करता है।
पैट्रिक ह्यूजेस

11
मनुष्यों के लिए सबसे सरल विन्यास फ़ाइल है: Do what I want.यह कंप्यूटर के लिए सबसे कठिन है, हालांकि: P
Sjoerd

@PatrickHughes मुझे लगता है कि वहाँ पहले से ही एक मौजूद है। क्या आप ऐसे किसी कार्यक्रम के बारे में जानते हैं। मैं केवल "सुंदर प्रिंट" सरल चीजों के लिए समय नहीं लेना चाहूंगा। समस्या यह है कि छोटे प्रोग्राम ब्रेक को जोड़ने के लिए अधिक की आवश्यकता होती है। मेरा मतलब है कि हर कंप्यूटर में vim, textedit या notepad होता है।
जूहा

@sjoerd यह वही है जो मैं जानना चाहता था। क्या इस अर्थ में कार्यक्रमों की तुलना में मानव भाषा पर अधिक एल्गोरिदम हैं।
जूहा

2
उपयोगकर्ता कुछ भी तोड़ सकते हैं। यदि वे इसे मैन्युअल रूप से संपादित करने जा रहे हैं, तो समर्थन करने के लिए तैयार रहेंmainwindow.title =='test"
मर्सल्ट्स

जवाबों:


15

आप YAML जैसी किसी चीज़ का उपयोग कर सकते हैं । यहाँ एक उदाहरण का लिंक दिया गया है:

http://www.yaml.org/start.html

--- !clarkevans.com/^invoice
invoice: 34843
date   : 2001-01-23
bill-to: &id001
    given  : Chris
    family : Dumars
    address:
        lines: |
            458 Walkman Dr.
            Suite #292
        city    : Royal Oak
        state   : MI
        postal  : 48046
ship-to: *id001
product:
    - sku         : BL394D
      quantity    : 4
      description : Basketball
      price       : 450.00
    - sku         : BL4438H
      quantity    : 1
      description : Super Hoop
      price       : 2392.00
tax  : 251.42
total: 4443.52
comments: >
    Late afternoon is best.
    Backup contact is Nancy
    Billsmer @ 338-4338.

आप PyYAML में इसके लिए पायथन बाइंडिंग पा सकते हैं । यह JSON (जो आपका दूसरा उदाहरण दिखता है) की तुलना में थोड़ा अधिक उपयोगकर्ता के अनुकूल है।


10
YAML बांका है, लेकिन निश्चित रूप से सरल नहीं है।
9000

1
मैंने उनके प्रश्न के संदर्भ में सबसे सरल सोचा: "XML प्रकार का व्यवहार प्राप्त करें और यथासंभव लंबे समय तक XML से बचें"। इस आवश्यकता को पूरा करते हुए, मैं कुछ भी सरल नहीं हूं।
jmq

हम्म, तो मेरा पहला कोडब्लॉक YAML है अगर मैं बदल गया "।" और "=" से ":" और एफ्रोस्ट्रोप खो देते हैं? थोड़ा बेमानी डेटा है, लेकिन फिर यह उपयोगकर्ता पर निर्भर करेगा कि वह कौन सा नोटेशन पसंद करता है।
जूहा

3
मैं काफी हद तक निश्चित गैर तकनीकी उपयोगकर्ताओं खरोज गलत जा रहे हैं - जैसे अधिक अस्पष्ट सामान अकेले >के बाद comments:, और &और *के सामनेid001
Izkata

6

सबसे अच्छी चीज जो आप कर सकते हैं वह है आपके समाधान का मॉकअप, और शायद एक युगल अन्य समाधानों का मॉकअप, और आपके सिस्टम के दो या तीन प्रतिनिधि उपयोगकर्ताओं से पूछें। वे आपको यह बताने में बेहतर होंगे कि इस साइट पर सवालों के जवाब देने वाले स्व-चयनित लोगों की तुलना में उन्हें क्या पसंद है।

यह कहा जा रहा है, "मूल रूप से कंप्यूटर अनपढ़" उपयोगकर्ताओं के लिए, मुझे लगता है कि आप अपने प्रश्न में जो प्रारूप दिखाते हैं, वह संभवतः सबसे अच्छा सादा पाठ प्रारूप है। यदि वे वास्तव में कंप्यूटर अनपढ़ हैं, तो आप एक साधारण जीयूआई पर विचार करना चाह सकते हैं ताकि उन्हें कॉन्फ़िगरेशन फ़ाइलों को हाथ से संपादित न करना पड़े।


3

अपना सब कुछ खो सकते हैं। name.name.name=valueप्रत्येक एक अलग लाइन पर, लगभग उतना ही सरल है जितना आप प्राप्त कर सकते हैं। आपको पार्सिंग के लिए उद्धरण चिह्नों की आवश्यकता नहीं है, आप जानते हैं कि कब trueएक बूलियन है और कब trueएक स्ट्रिंग है, "गूंगा मानव" मत बनाओ। स्ट्रिंग्स के लिए, यदि फ़ील्ड में प्रमुख / अनुगामी रिक्त स्थान नहीं होने चाहिए, तो उन्हें स्वयं पट्टी करें।


3

एक ऐसे चीनी व्यक्ति की कल्पना करें, जो आपकी कॉन्फ़िगरेशन फ़ाइल को पढ़ने की कोशिश करने वाले अंग्रेजी को नहीं जानता है। वैकल्पिक रूप से, कॉन्फ़िगरेशन फ़ाइल अरबी में है (और आप अरबी नहीं जानते हैं)। अब अपने आप से पूछें, क्या यह वास्तव में मानव पठनीय है?

यहां तक ​​कि अगर पाठक अंग्रेजी जानता है, तो उन्हें अभी भी कोई पता नहीं है अगर "logger.datarate = 100" का अर्थ है प्रति सेकंड 100 वर्ण, या प्रति घंटे 100 GiB, या प्रति मीट्रिक टन 100 मुर्गियां।

सबसे मानव पठनीय फ़ाइल प्रारूप, एक सभ्य GUI आधारित संवाद बॉक्स / विज़ार्ड / कॉन्फ़िगरेशन (अंतर्राष्ट्रीयकरण, सहायता प्रणाली, आदि के साथ) के साथ एक द्विआधारी फ़ाइल है।


2

मैं पैट्रिक ह्यूजेस के साथ हूं। कॉन्फ़िगरेशन को संपादित करने के लिए एक सरल ऐप बनाएं। कॉन्फ़िग फ़ाइल अपने आप में थोड़ी अधिक जटिल हो सकती है और इसमें संपादक के लिए उपयोग करने के लिए विशेषताएँ (प्रदर्शन नाम, मदद पाठ, मूल्य प्रकार, न्यूनतम / अधिकतम मान आदि) हो सकती हैं।


1
यहाँ समस्या यह है कि ऐप को ओएक्सएक्स, जीत और ubuntu का समर्थन करना है और फाइल सिस्टम तक पहुंच है। तो मेरा एकमात्र विकल्प स्थिर अजगर निष्पादन योग्य है (और देशी लुक के लिए wx)। या कोई और भाषा है? क्या आप स्थिर जावा निष्पादनयोग्य बना सकते हैं?
जूहा

एक क्यूटी ऐप आपके मामले में एक सरल और सरल समाधान होगा
रीगा

2

मैं कहता हूं कि आपके पास (गुण फ़ाइल) पहले से ही सबसे अच्छा मानव पठनीय विन्यास प्रारूप है। :)

यहाँ मेरे तर्क हैं:

  • गुण फ़ाइल सिर्फ कुंजी / मान युग्म है। मानव द्वारा आसानी से पठनीय।
  • Terse सिंटेक्स, xml की तरह नहीं।
  • अपने उदाहरण में, '।' के साथ आसानी से घोंसला-सक्षम।
  • फ्लैट संरचना एक स्रोत नियंत्रित वातावरण में आसान अंतर करने की अनुमति देती है।

वह अंतिम बिंदु वास्तव में बहुत महत्वपूर्ण है। यह देखते हुए कि आजकल परियोजनाएं सभी शाखाओं में विभाजित हैं, कॉन्फ़िगरेशन फ़ाइल दर्द का कारण बन सकती है जब आप शाखाओं को विलय कर रहे हैं। प्रॉपर्टी फाइल की तरह फ्लैट फाइल फॉर्मेट ट्री स्ट्रक्चर फाइल की तुलना में मर्ज करना आसान है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.