تهيئة YAML (.yaml)
مواصفة قياسيYAML (اختصار لعبارة «YAML ليست لغة ترميز») هو تنسيق تسلسلي للبيانات شائع في عمليات DevOps والبنية التحتية السحابية الحديثة، مثل Kubernetes وDocker Compose، وأتمتة CI/CD. ويعتمد على المسافات البادئة الواضحة لتسهيل القراءة.
تحويل YAML إلى JSON
محول مجاني داخل المتصفح للتحويل من YAML إلى JSON. قم بتحويل الملفات فوراً على جهازك.
فحص البيانات الوصفية
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات YAML من خلال فحص تسلسل البايت الثنائي البادئ:
توقيع رأس الملف على مستوى البايت (Magic Bytes)
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات YAML من خلال فحص تسلسل البايت الثنائي البادئ:
التوقيع الست عشري (الإزاحة 0):
2D 2D 2D 0Aتمثيل ASCII: ---\n
التوحيد القياسي: مواصفة YAML 1.2.2
المواصفات الفنية
| هيكلية الحاوية | تنسيق تسلسلي للبيانات سهل القراءة يعتمد على المسافات البادئة، وهو مجموعة شاملة من JSON ويدعم المراسي والأسماء المستعارة |
| الضغط | تدفق نصي غير مضغوط |
| ترتيب البايتات (Endianness) | تدفق نصي بترميز UTF-8 أو Unicode |
| مساحات الألوان | لا ينطبق (تسلسل بيانات) |
| القنوات والبنية | تعيينات (قاموس مفاتيح وقيم) وتسلسلات (قوائم) وقيم مفردة (نصوص وأعداد وقيم منطقية) ومراسي (&ref و*ref) |
| الحد الأقصى للأبعاد | حجم المستند غير محدود (ويمكن فصل المستندات المتعددة بالعلامة ---) |
| الشفافية | None |
| البث والتحميل التدرجي | تتيح تدفقات المستندات المتعددة معالجة كل مستند بالتتابع |
مصفوفة المقارنة التقنية: YAML مقابل المنافسين
| السمة التقنية | YAML (الحالي) | JSON | TOML | XML |
|---|---|---|---|---|
| أسلوب الصياغة | تسلسل هرمي تحدده المسافات البادئة | استخدام صارم للأقواس وعلامات الاقتباس | جداول وأزواج مفتاح=قيمة | وسوم فتح وإغلاق مطوّلة |
| دعم التعليقات | مدعوم أصليًا (تعليقات تبدأ بـ #) | غير مسموح بالتعليقات | مدعوم أصليًا (تعليقات تبدأ بـ #) | تعليقات بصيغة <!-- تعليق --> |
| انتشار الاستخدام في DevOps | يختلف الدعم حسب البرنامج. | يختلف الدعم حسب البرنامج. | تكوين حزمة Rust/Python | إعدادات المؤسسات القديمة |
| إعادة استخدام البيانات | مراسي وأسماء مستعارة مدمجة (& و*) | لا يوجد (نسخ يدوي) | لا يوجد (نسخ يدوي) | كيانات XML |
أنماط التلف الشائعة ودليل الاسترداد بالنظام الست عشري
خطأ في المُحلل: 'mapping values are not allowed here' أو خطأ في المسافة البادئة.
السبب الجذري: الخلط بين علامات الجدولة والمسافات، أو عدم اتساق مستويات الإزاحة.
الاسترداد: حوّل علامات الجدولة إلى مسافات، وتحقق من صحة الصياغة باستخدام منسّق YAML من File2File.app.
تحليل الأمان ومتجهات الهجوم على المحلّل
أتاحت محللات YAML التي تدعم وسوم الأنواع المخصصة (مثل 'yaml.load()' في PyYAML) تاريخيًا تنفيذ تعليمات برمجية عن بُعد عبر إنشاء كائنات اعتباطية.
ناقلات الهجوم المعروفة
- تنفيذ تعليمات برمجية اعتباطية عبر وسوم إلغاء تسلسل الكائنات غير الآمن (مثل '!!python/object/apply').
- هجمات تضخيم الكيانات (على غرار هجوم «مليار ضحكة» باستخدام مراسي YAML وأسمائها المستعارة).
- ثغرات خلط الأنواع بسبب التحليل الضمني للقيم المنطقية والطوابع الزمنية.
أفضل الممارسات الدفاعية: استخدم دائمًا محللات YAML الآمنة (مثل yaml.safe_load() في Python)، وحدد أقصى عمق لتوسيع المراسي.
الأصول التاريخية والمحطات الرئيسية
المزايا الرئيسية والإيجابيات
- يشيع استخدام YAML في أدوات البنية التحتية، لكن الدعم والسلوك يختلفان حسب التطبيق.
- صياغة واضحة وسهلة القراءة، تتجنب كثرة الأقواس وعلامات الاقتباس بفضل المسافات البادئة البديهية.
- يدعم المراجع والمراسي (&anchor و*anchor) لإعادة استخدام كتل الإعدادات بدلًا من تكرارها.
القيود الفنية والسلبيات
- يتأثر YAML بالمسافات البيضاء: فقد يؤدي إدخال علامة جدولة أو إضافة مسافة واحدة إلى إفساد بنية المستند أو التسبب في خطأ عند تحليله.
- أخطاء شهيرة في تحويل الأنواع: قد تتحول كلمات غير محاطة بعلامات اقتباس مثل 'no' أو 'on' أو 'yes'، أو رموز البلدان مثل 'NO' للنرويج، بصمت إلى قيم منطقية.
- سرعة تحليل أبطأ بكثير مقارنة بالتنسيقات الثنائية أو JSON الصارم.
معلومات تقنية طريفة
- كان YAML اختصارًا في الأصل لعبارة Yet Another Markup Language، ثم أُعيد تفسيره مازحًا ليصبح اختصارًا تراجعيًا لعبارة YAML Ain’t Markup Language، تأكيدًا على أن التنسيق مخصص لتسلسل البيانات.
- «مشكلة النرويج» خطأ برمجي شهير فُسّر فيه رمز الدولة 'NO' في ملف YAML على أنه القيمة المنطقية 'false'.
- كل ملف JSON صالح هو أيضًا ملف YAML صالح بالكامل.
الأسئلة التقنية المتكررة
فيمَ يُستخدم YAML؟
تُعد YAML لغة الإعدادات الأساسية للحوسبة السحابية، ونشر عناقيد Kubernetes، وملفات Docker Compose، وسير عمل GitHub Actions، وإعدادات البرامج.
هل يمكن استخدام علامات الجدولة في ملفات YAML؟
لا. تحظر مواصفات YAML الرسمية استخدام علامات الجدولة للمسافات البادئة؛ استخدم المسافات دائمًا (غالبًا مسافتين لكل مستوى).
كيف يمكنني تحويل YAML إلى JSON؟
يمكنك تحويل ملفات YAML إلى ملفات JSON سليمة وصالحة بنقرة واحدة عبر File2File.app في متصفحك، مع الحفاظ على خصوصية ملفاتك.
أزواج تحويل YAML ذات الصلة
يحوّل تحويل ملفات إعدادات YAML إلى JSON البنى النصية ذات المسافات البادئة والمقروءة للبشر إلى كائنات دقيقة قابلة للتحليل آلياً في تطبيقات الويب.
يحوّل تحويل ملفات إعدادات JSON إلى تنسيق YAML هياكل البيانات الجامدة الموجهة للبرامج إلى مستندات واضحة سهلة القراءة والتعديل لمسؤولي الأنظمة.