फ़ाइल प्रारूप विनिर्देश कैसे दस्तावेज़ित करें [बंद]


12

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

हालांकि मुझे नहीं लगता कि इसमें से अधिकांश के लिए बहुत मांग है, मैं अपने प्रयासों के परिणामों को प्रकाशित करने का इरादा रखता हूं। फ़ाइल स्वरूपों के दस्तावेज़ीकरण के लिए कोई स्वीकृत मानक हैं? चारों ओर देखते हुए, उपयोग में कई शैलियाँ हैं: कुछ, जैसे .ZIP फ़ाइल स्वरूप विशिष्टता , बहुत चिंताजनक हैं; अन्य, जैसे कि एक्सेंटैक्सविकी, बहुत अधिक प्रचलित हैं - मुझे लगता है कि उनमें से कुछ को पढ़ना मुश्किल है; व्यक्तिगत रूप से मुझे जो सबसे अच्छा लगता है , वह है PlayStation 2 मेमोरी कार्ड फाइल सिस्टम का यह वर्णन , जिसमें ऑफ़सेट्स के साथ विस्तृत वर्णनात्मक पाठ और कई 'मेमोरी मैप्स' दोनों शामिल हैं और यह भी - यह मेरे उपयोग के मामले से सबसे अधिक निकटता से मेल खाता है। यह अलग-अलग प्रारूपों के लिए थोड़ा अलग होगा, लेकिन ऐसा लगता है कि कुछ सामान्य सिद्धांत होने चाहिए जिनका मुझे पालन करने की कोशिश करनी चाहिए।

संपादित करें: मुझे लगता है कि मैं जो करना चाहता हूं उसे बहुत अच्छी तरह से नहीं समझाया गया है। एक उदाहरण देता हूं।

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

इस तरह के दस्तावेज़ लिखे जाने के कई तरीके हैं। उपरोक्त PKZIP उदाहरण बहुत ही चिंताजनक है और ज्यादातर मुफ्त पाठ में फ़ाइल प्रारूप का वर्णन करता है। PS2 उदाहरण मूल्य प्रकार, ऑफसेट, और आकार की तालिका देता है, जिसमें वे सभी का मतलब है। XentaxWiki पर उन जैसे कई अन्य, केवल कम या कोई टिप्पणी के साथ चर प्रकार और आकारों को सूचीबद्ध करते हैं।

मैं पूछता हूं कि क्या कोई मानक है, कोडिंग स्टाइल गाइड के समान है, जो इस तरह के प्रलेखन को लिखने के बारे में मार्गदर्शन प्रदान करता है। यदि नहीं, तो क्या कोई प्रसिद्ध उदाहरण है जिसका मुझे अनुकरण करना चाहिए? यदि नहीं, तो क्या कोई कम से कम कुछ उपयोगी सलाह को संक्षेप में बता सकता है?



हा! मैं अनुभव कर चुका हूँ। एक प्रारूप जो मैं देख रहा था, उसमें वास्तव में मूल स्रोत कोड था जिसने फ़ाइल लिखी थी। समस्या यह थी कि संरचनात्मक परिभाषा की तुलना में चर अलग-अलग क्रम में लिखे जा रहे थे, बीच में कुछ अतिरिक्त सामान छिड़का हुआ था। और टिप्पणी गलत थी। यह इस सवाल से प्रेरित है - क्या यह मत करने की तीव्र इच्छा है।
सोफॉर्फिक

1
दस्तावेज वाले उल्टे इंजीनियर फिल् ट के साथ मेरा एकमात्र अनुभव wiibrew.org से है। अगर मुझे सही याद है, तो उन्होंने फ़ाइल को एक के रूप में प्रलेखित किया struct। इसने काफी अच्छा काम किया।
मेटाफ़ाइट

1
मैं इस प्रश्न को गलत समझ सकता हूं लेकिन ऐसा लगता है कि आप ईबीएनएफ जैसी किसी चीज की तलाश कर रहे हैं ।

@MattFenwick: BNF किसी भाषा के वाक्य-विन्यास को निर्दिष्ट करने के लिए है; नहीं काफी के बाद मैं क्या कर रहा हूँ। मैं स्पष्ट करने के लिए संपादित करूँगा कि मैं किस प्रकार के फ़ाइल प्रारूप का मतलब है।
सोफोफोरिक

जवाबों:


4

एक द्विआधारी फ़ाइल कुछ नियमों के अनुसार तार्किक इकाइयों में व्यवस्थित बिट्स का एक अनुक्रम है । इन नियमों को आमतौर पर व्याकरण कहा जाता है । व्याकरण को चार प्रकारों ( चॉम्स्की पदानुक्रम ) में वर्गीकृत किया जा सकता है , और संदर्भ-मुक्त व्याकरण के लिए आपको अपनी टिप्पणी में मैट फेनविक द्वारा बताए अनुसार विस्तारित बैकस-नौर फॉर्म का उपयोग करना चाहिए । फ़ाइल में संग्रहीत अनुक्रम की व्याख्या (या शब्दार्थ) को मौखिक रूप से वर्णित किया जा सकता है या अच्छी तरह से एनोटेट किए गए नमूना कार्यक्रमों के साथ सूचना को क्रमबद्ध और अवरोही कर सकता है।

द्विआधारी फ़ाइल स्वरूपों के दस्तावेज़ीकरण के बारे में अधिक जानने के लिए, उदाहरण के लिए ASN.1 मानक पर पढ़ने का सुझाव दें ।


तकनीकी रूप से , अधिकांश कॉन्फिग फाइलों में एक संदर्भ-रहित भाषा होती है, क्योंकि उनके पास एक परिमित भाषा होती है। व्यावहारिक रूप से, EBNF में 'सभी 2-बाइट स्ट्रिंग्स का सेट' (उदाहरण के लिए एक कॉन्फिग फ़ाइल जो कि सिर्फ 16-आइटम बिटफील्ड है) लिखना किसी को कुछ भी नहीं सिखाता है। ASN.1 मानक का सूचक मेरे द्वारा प्राप्त उत्तर के लिए निकटतम चीज़ है, हालांकि ऐसा लगता है कि ASN.1 में एक विनिर्देश कंप्यूटर द्वारा पढ़ा जाना है, और मुझे मनुष्यों के लिए दस्तावेज़ लिखने की जानकारी चाहिए थी। हालांकि, अगर मेरी आवश्यकताओं से अधिक निकटता से मेल नहीं खाता है, तो शीघ्र ही, मैं इस उत्तर को स्वीकार करूंगा। आपकी सहायता के लिए धन्यवाद।
सोफॉफ़ोरिक

2

यह अजीब है क्योंकि फ़ाइल स्वरूपों की त्वरित खोज विकिपीडिया लेख (फ़ाइल स्वरूपों की सूची) को सामने लाती है । इसमें कई वीडियो गेम डेटा प्रारूप भी शामिल हैं ।

फाइलसिस्टम का समर्थन करने वाले सिस्टम पर वीडियो गेम के लिए डेटा के सामान्य फ़ाइल स्वरूपों की सूची, सबसे अधिक पीसी गेम।

इसमें वीडियो गेम स्टोरेज मीडिया प्रारूपों का एक बड़ा चयन भी शामिल है।

किसी गेम की रॉम इमेज या स्टोरेज मीडियम को मूल ROM डिवाइस से कॉपी करके बाहरी मेमोरी जैसे कि हार्ड डिस्क के लिए या गेम को एमुलेटर के साथ खेलने योग्य बनाने के लिए उपयोग किए जाने वाले सबसे सामान्य फ़ाइल नाम एक्सटेंशन की सूची। कारतूस-आधारित सॉफ़्टवेयर के मामले में, यदि प्लेटफ़ॉर्म विशिष्ट एक्सटेंशन का उपयोग नहीं किया जाता है, तो फ़ाइल एक्सटेंशन ".rom" या ".bin" का उपयोग आमतौर पर यह स्पष्ट करने के लिए किया जाता है कि फ़ाइल में एक ROM की सामग्री की एक कॉपी है। ROM, डिस्क या टेप छवियां आमतौर पर एक फ़ाइल या ROM से मिलकर नहीं बनती हैं, बल्कि एक संपूर्ण फ़ाइल या ROM संरचना बैकअप माध्यम पर एक फ़ाइल में निहित होती है।


फ़ाइल स्वरूपों के दस्तावेज़ीकरण के लिए कोई स्वीकृत मानक हैं?

कहीं भी "आधिकारिक" मानक नहीं है। चूंकि फ़ाइल प्रारूप किसी कंपनी द्वारा बनाए जाते हैं, इसलिए कंपनी प्रलेखन के लिए प्रारूप पर निर्णय लेती है।


2
मुझे लगता है कि आपने मेरे प्रश्न को गलत समझा है। बेशक, कोई भी फ़ाइल प्रारूप है जिसे प्रलेखित किया गया है - मैंने XentaxWiki का मेनियन किया, जिसमें 1500 से अधिक शामिल हैं। लेकिन जिन फाइलों में मैं दिलचस्पी रखता हूं, वे आमतौर पर प्रलेखित नहीं होती हैं - आमतौर पर सामान्य कंटेनर प्रारूपों की बजाय, फाइलों या कॉन्फ़िगरेशन को सहेजने जैसी गेम-विशिष्ट चीजें। मेरी स्थिति यह है कि कोई दस्तावेज मौजूद नहीं है, और मैं कुछ लिखने का इरादा रखता हूं - तो यह कैसे किया जाएगा?
सोपोफोरिक

उसी तरह उन सभी अन्य फ़ाइल स्वरूपों को प्रलेखित किया गया था।
रॉबर्ट हार्वे

4
@RobertHarvey: भ्रमित, परस्पर विरोधी, गलत और अधूरा? गंभीरता से, हालांकि, जैसा कि मैंने उल्लेख किया है, मैंने उपयोग में कई अलग-अलग सामान्य शैलियों को नोट किया। मैं इस क्षेत्र में काम करने के लिए पर्याप्त रूप से परिचित नहीं हूं, यह जानने के लिए कि क्या किसी विशेष शैली को पसंद किया जाना है। XentaxWiki पर जो सबसे बड़ा संसाधन मैंने देखा है, वे लगभग विशेष रूप से कंटेनर प्रारूपों के लिए हैं, इसलिए वे अधिक सामान्य मामले के लिए काफी नक्शा नहीं बनाते हैं। अगर मुझे लगता है कि सिर्फ अनुकरण करने के लिए एक यादृच्छिक उदाहरण चुनना काफी अच्छा होगा, तो मैं सलाह के लिए नहीं कहूंगा।
सोपोफोरिक

@ सोपोफोरिक: फिर आपको अपने प्रश्न में स्पष्ट होना चाहिए कि आप क्या चाहते हैं। क्या आप गंभीरता से हमसे पूछ रहे हैं "मैं फ़ाइल प्रारूप के लिए दस्तावेज़ कैसे लिखूं?" तकनीकी लेखन पर पूरे शैक्षिक पाठ्यक्रम हैं जो उस विषय के लिए समर्पित हैं। एक प्रारूप ढूंढें जिसमें स्पष्ट, अच्छी तरह से लिखित प्रलेखन (आपके व्यक्तिगत मानकों के अनुसार) हो, और उस एक का अनुकरण करें। वे सभी बकवास नहीं हो सकते। संकेत: उपयोग के उदाहरण राजा हैं। स्पष्टीकरण की स्पष्टता एक दूसरे के करीब आती है।
रॉबर्ट हार्वे

1
@RobertHarvey: हां, अपने कोड को कैसे कमेंट करें या किसी फंक्शन को कैसे डॉक्यूमेंट करें, इस बारे में बहुत कुछ, मैं एक कॉम्प्रिहेंसिव फॉर्मेट स्पेसिफिकेशन लिखने के लिए 'स्टाइल गाइड' की तलाश में हूं। अगर मैं जानना चाहता हूं कि RFC कैसे लिखा जाता है, तो मैं RFC 2223 को देख सकता हूं। अगर मैं जानना चाहता हूं कि पायथन कोड में किस शैली का उपयोग करना है, तो मैं PEP 8 पढ़ सकता हूं। अगर मैं जानना चाहता हूं कि प्रश्न कैसे पूछें स्मार्ट वे, ईएसआर ने मुझे कवर किया है। क्या फ़ाइल प्रारूप विनिर्देशों के लिए कुछ समान मार्गदर्शन है? या एक का एक प्रसिद्ध उत्कृष्ट उदाहरण? मैं निश्चित रूप से अपने फैसले का उपयोग कर सकता हूं, लेकिन अगर कोई मानक मौजूद है, तो इसका पालन करना समझदारी होगी।
सोफॉर्फिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.