YAML कॉन्फ़िगरेशन (.yaml)

YAML मानक

YAML ऐनट मार्कअप लैंग्वेज (YAML) आधुनिक DevOps, क्लाउड बुनियादी ढांचे (Kubernetes, Docker Compose), और CI/CD स्वचालन के लिए प्रमुख डेटा सीरियलाइज़ेशन प्रारूप है, जो स्वच्छ व्हाइटस्पेस इंडेंटेशन के माध्यम से मानवीय पठनीयता पर जोर देता है।

YAML को JSON में कन्वर्ट करें

मुफ्त इन-ब्राउज़र YAML से JSON कन्वर्टर। अपने डिवाइस पर तुरंत फ़ाइलें कन्वर्ट करें।

निरीक्षण और मेटाडेटा

ऑपरेटिंग सिस्टम और फ़ाइल विश्लेषक शुरुआती बाइनरी बाइट अनुक्रम का निरीक्षण करके YAML फ़ाइलों की पहचान करते हैं:

फ़ाइलें यहाँ चुनें या छोड़ें

निजी - फ़ाइलें कभी आपके डिवाइस से बाहर नहीं जातीं

या पेस्ट करें Ctrl+V
नेटवर्क पर कोई डेटा भेजे बिना गोपनीयता की गारंटी: बाहरी सर्वर पर 0 बाइट अपलोड किए गए। सारी प्रोसेसिंग आपके ब्राउज़र सैन्डबॉक्स में स्थानीय रूप से हुई।

बाइट-स्तरीय हेडर हस्ताक्षर (मैजिक बाइट्स)

ऑपरेटिंग सिस्टम और फ़ाइल विश्लेषक शुरुआती बाइनरी बाइट अनुक्रम का निरीक्षण करके YAML फ़ाइलों की पहचान करते हैं:

HEX हस्ताक्षर (ऑफ़सेट 0):

2D 2D 2D 0A

ASCII निरूपण: ---\n

मानकीकरण: YAML 1.2.2 Specification

तकनीकी विनिर्देश

कंटेनर आर्किटेक्चरइंडेंटेशन-आधारित, मानव-अनुकूल डेटा सीरियलाइज़ेशन प्रारूप, JSON का सुपरसेट, जो एंकर और एलियास का समर्थन करता है
कंप्रेशनअसंपीड़ित पाठ स्ट्रीम
बाइट एंडियानेसUTF-8 / यूनिकोड पाठ स्ट्रीम
कलर स्पेसलागू नहीं (डेटा सीरियलाइज़ेशन)
चैनल और संरचनामैपिंग (कुंजी-मान शब्दकोश), अनुक्रम (सूचियाँ), स्केलर प्रकार (स्ट्रिंग, संख्याएँ, बूलियन) और एंकर (&ref/*ref)
अधिकतम आयामदस्तावेज़ आकार की कोई निश्चित सीमा नहीं ('---' से अलग की गई कई दस्तावेज़ों वाली स्ट्रीम का समर्थन)।
पारदर्शिताकोई नहीं
स्ट्रीमिंग और प्रोग्रेसिवबहु-दस्तावेज़ स्ट्रीम में दस्तावेज़-दर-दस्तावेज़ क्रमिक प्रोसेसिंग संभव है

तकनीकी तुलना मैट्रिक्स: YAML बनाम प्रतियोगी

तकनीकी विशेषताYAML (वर्तमान)JSONTOMLXML
सिंटैक्स शैलीइंडेंटेशन व्हाइटस्पेस पदानुक्रमसख्त ब्रैकेट और कोट्सटेबल और key=value युग्मवर्बोज़ खुलने/बंद होने वाले टैग
टिप्पणी समर्थनअंतर्निहित (# टिप्पणियों का समर्थन)कोई टिप्पणी स्वीकृत नहींअंतर्निहित (# टिप्पणियों का समर्थन)<!-- टिप्पणियाँ -->
DevOps अपनानासॉफ़्टवेयर के अनुसार समर्थन अलग-अलग होता है।सॉफ़्टवेयर के अनुसार समर्थन अलग-अलग होता है।Rust/Python पैकेज कॉन्फ़िगरेशनएंटरप्राइज लिगेसी कॉन्फ़िगरेशन
डेटा का पुनः उपयोगअंतर्निहित एंकर (&) और उपनाम (*)कोई नहीं (मैनुअल डुप्लीकेशन)कोई नहीं (मैनुअल डुप्लीकेशन)XML एंटिटीज़

सामान्य करप्शन मोड और हेक्स रिकवरी गाइड

पार्सर त्रुटि: 'mapping values are not allowed here' या इंडेंटेशन त्रुटि।

मूल कारण: रिक्त स्थान के साथ टैब मिलाना या गलत संरेखित इंडेंटेशन स्तर।

रिकवरी: टैब को रिक्त स्थान में बदलें और File2File.app YAML फ़ॉर्मेटर का उपयोग करके सिंटैक्स को सत्यापित करें।

सुरक्षा विश्लेषण और पार्सर अटैक वेक्टर्स

YAML पार्सर्स जो कस्टम प्रकार टैग (जैसे PyYAML का 'yaml.load()') का समर्थन करते हैं, ऐतिहासिक रूप से मनमाने ऑब्जेक्ट इंस्टेंटेशन के माध्यम से रिमोट कोड निष्पादन की अनुमति देते थे।

ज्ञात अटैक वेक्टर्स

  • असुरक्षित ऑब्जेक्ट डिसीरियलाइजेशन टैग के माध्यम से मनमाना कोड निष्पादन (उदा. '!!python/object/apply')।
  • एंटिटी विस्तार बम (YAML एंकर और उपनामों का उपयोग करने के समतुल्य बिलियन लाफ्स)।
  • निहित बूलियन और टाइमस्टैम्प पार्सिंग के कारण प्रकार भ्रम कमजोरियां।

सुरक्षात्मक सर्वोत्तम प्रथाएँ: हमेशा सुरक्षित YAML पार्सर (Python में 'yaml.safe_load()') का उपयोग करें और एंकर विस्तार गहराई सीमाओं को लागू करें।

ऐतिहासिक मूल और मील के पत्थर

2021YAML 1.2.2 संशोधन प्रकाशित हुआ, जिसने JSON संगतता और औपचारिक व्याकरण परिभाषाओं को परिष्कृत किया।
2009YAML 1.2 ने YAML को JSON के सख्त सुपरसेट के रूप में मानकीकृत किया, जिसका अर्थ है कि सभी वैध JSON वैध YAML हैं।
2001क्लार्क इवांस, Ingy döt Net, और ओरन बेन-किकी ने XML के मानव-अनुकूल विकल्प के रूप में YAML बनाया।

मुख्य लाभ और खूबियाँ

  • इन्फ्रास्ट्रक्चर टूल में YAML आम है, लेकिन समर्थन और व्यवहार कार्यान्वयन के अनुसार बदलते हैं।
  • स्वच्छ, पठनीय सिंटैक्स: सहज इंडेंटेशन के माध्यम से ब्रेसिज़, ब्रैकेट और कोट्स की अव्यवस्था को समाप्त करता है।
  • डुप्लीकेशन के बिना दोहराए गए कॉन्फ़िगरेशन ब्लॉकों का पुनः उपयोग करने के लिए संदर्भों और एंकरों (&anchor / *anchor) का समर्थन करता है।

तकनीकी सीमाएँ और कमियाँ

  • व्हाइटस्पेस-संवेदनशील: एक आकस्मिक टैब या एक अतिरिक्त स्थान दस्तावेज़ पदानुक्रम को दूषित कर सकता है या पार्सिंग त्रुटियों का कारण बन सकता है।
  • कुख्यात प्रकार रूपांतरण बग: 'no', 'on', 'yes' जैसे अनकोटेड शब्द, या देश कोड (नॉरवे के लिए 'NO') चुपचाप बूलियन बन सकते हैं।
  • बाइनरी प्रारूपों या सख्त JSON की तुलना में काफी धीमी पार्सिंग गति।

रोचक तकनीकी जानकारी

  • YAML का मूल रूप से मतलब 'Yet Another Markup Language' था, लेकिन डेटा सीरियलाइज़ेशन पर जोर देने के लिए इसे हास्यास्पद रूप से पुनरावर्ती संक्षिप्त नाम 'YAML Ain't Markup Language' में बदल दिया गया था।
  • नॉरवे समस्या एक प्रसिद्ध प्रोग्रामिंग बग है जहाँ YAML फ़ाइल में देश कोड 'NO' को बूलियन 'false' के रूप में पार्स किया गया था।
  • दुनिया में हर वैध JSON फ़ाइल एक ही समय में 100% वैध YAML फ़ाइल भी है।

अक्सर पूछे जाने वाले तकनीकी प्रश्न

YAML का उपयोग किस लिए किया जाता है?

YAML क्लाउड कंप्यूटिंग, कुबेरनेट्स क्लस्टर डिप्लॉयमेंट, डॉकर कंपोज फ़ाइलों, गिटहब एक्शन वर्कफ़्लो और सॉफ़्टवेयर सेटिंग के लिए प्राथमिक कॉन्फ़िगरेशन भाषा है।

क्या मैं YAML फ़ाइलों में टैब का उपयोग कर सकता हूँ?

नहीं। आधिकारिक YAML विनिर्देश इंडेंटेशन के लिए टैब वर्णों के उपयोग को कड़ाई से प्रतिबंधित करता है; आपको हमेशा रिक्त स्थान (आमतौर पर प्रति स्तर 2 रिक्त स्थान) का उपयोग करना चाहिए।

मैं YAML को JSON में कैसे बदल सकता हूँ?

पूर्ण गोपनीयता के साथ अपने वेब ब्राउज़र में सीधे File2File.app का उपयोग करके आप एक क्लिक में YAML फ़ाइलों को साफ़, मान्य JSON में बदल सकते हैं।