הגדרות YAML (.yaml)
YAML תקןYAML Ain't Markup Language (YAML) הוא פורמט סריאליזציית הנתונים הדומיננטי עבור DevOps מודרני, תשתיות ענן (Kubernetes, Docker Compose) ואוטומציית CI/CD, תוך דגש על קריאות אנושית באמצעות הזחות רווחים נקיות.
המר YAML ל-JSON
ממיר חינמי מ-YAML ל-JSON פועל בדפדפן. המר קבצים באופן מיידי במכשיר שלך.
בדיקה ומטא-דאטה
מערכות הפעלה ומנתחי קבצים מזהים קבצי YAML על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי YAML על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
2D 2D 2D 0Aייצוג ASCII: ---\n
תקינה: YAML 1.2.2 Specification
מפרט טכני
| ארכיטקטורת מעטפת | Indentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases |
| דחיסה | Uncompressed text stream |
| סדר בתים (Endianness) | UTF-8 / Unicode text stream |
| מרחבי צבע | N/A (Data Serialization) |
| ערוצים ומבנה | Mappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref) |
| ממדים מרביים | Unbounded document size (supports multi-document streams separated by '---') |
| שקיפות | None |
| הזרמה ופרוגרסיביות | Multi-document streams allow sequential document-by-document processing |
מטריצת השוואה טכנית: YAML מול מתחרים
| תכונה טכנית | YAML (נוכחי) | JSON | TOML | XML |
|---|---|---|---|---|
| סגנון תחביר | היררכיית רווחי הזחה | סוגריים ומרכאות קפדניים | טבלאות וצמדי מפתח=ערך | תגי פתיחה/סגירה מרוצפים |
| תמיכה בהערות | מובנית (הערות #) | הערות אינן מותרות | מובנית (הערות #) | <!-- הערות --> |
| אימוץ ב-DevOps | תקן אוניברסלי (Kubernetes, CI/CD) | תקן API אוניברסלי | הגדרות חבילה של Rust/Python | הגדרות מדור קודם ארגוניות |
| שימוש חוזר בנתונים | עוגנים מובנים (&) וכינויים (*) | ללא (כפילות ידנית) | ללא (כפילות ידנית) | ישויות XML |
מצבי שיחשות נפוצים ומדריך שחזור הקסדצימלי (Hex)
שגיאת מנתח: 'mapping values are not allowed here' או שגיאת הזחה.
גורם שורש: ערבוב של טאבים עם רווחים או רמות הזחה לא מיושרות.
התאוששות: המר טאבים לרווחים ואמת את התחביר באמצעות מעצב ה-YAML של File2File.
ניתוח אבטחה ווקטורי התקפה על מנתחים (Parsers)
מנתחי YAML שתומכים בתגי טיפוס מותאמים אישית (כמו 'yaml.load()' של PyYAML) אפשרו היסטורית הרצת קוד מרחוק באמצעות יצירת אובייקטים שרירותיים.
ווקטורי תקיפה ידועים
- היקסט קוד שרירותי באמצעות תגי דסריאליזציה לא מאובטחים של אובייקטים (למשל '!!python/object/apply').
- פצצות הרחבת ישויות (המקבילה של 'מיליארד צחוקים' המשתמשת בעוגנים ובכינויים של YAML).
- פגיעויות בבלבול טיפוסים עקב ניתוח משתמע של ערכים בוליאניים ותאריכים.
השיטות המומלצות להגנה:
היסטוריה ואבני דרך
יתרונות מרכזיים
- התקן הבלתי מעורער לתשתיות ענן מודרניות: בשימוש אוניברסלי במניפסטים של Kubernetes, ב-Docker Compose וב-GitHub Actions.
- תחביר נקי וקריא: מבטל את העומס של סוגריים מסולסלים, מרובעים ומרכאות באמצעות הזחה אינטואיטיבית.
- תומך בהפניות ועוגנים (&anchor / *anchor) כדי לעשות שימוש חוזר בלוקי הגדרות חוזרים ללא כפילות.
מגבלות טכניות וחסרונות
- רגיש לרווחים לבנים (whitespace): טאב מקרי או רווח נוסף בודד עלולים להשחית את היררכיית המסמך או לגרום לשגיאות ניתוח.
- באגי המרת טיפוסים ידועים לשמצה: מילים ללא מרכאות כמו 'no', 'on', 'yes', או קודי מדינות ('NO' עבור נורווגיה) עשויים להפוך בשקט לבוליאניים.
- מהירות ניתוח איטית משמעותית בהשוואה לפורמטים בינאריים או ל-JSON קפדני.
עובדות טכניות מעניינות
- YAML עמד במקור עבור 'Yet Another Markup Language', אך שונה בהומור לשם המעגלי 'YAML Ain't Markup Language' כדי להדגיש את סריאליזציית הנתונים.
- 'בעיית נורווגיה' (The Norway Problem) היא באג תכנותי מפורסם שבו קוד המדינה 'NO' בקובץ YAML פוענח כערך הבוליאני 'false'.
- כל קובץ JSON תקף בעולם הוא בו-זמנית גם קובץ YAML תקף ב-100%.
שאלות טכניות נפוצות
למה משמש YAML?
YAML הוא שפת התצורה הראשית עבור מחשוב ענן, פריסת אשכולות Kubernetes, קובצי Docker Compose, זרימות עבודה של GitHub Actions והגדרות תוכנה.
האם אני יכול להשתמש בטאבים (tabs) בקובצי YAML?
לא. מפרט ה-YAML הרשמי אוסר בתכלית האיסור על שימוש בתווי טאב לצורך הזחה (indentation); עליך להשתמש תמיד ברווחים (בדרך כלל 2 רווחים לכל רמה).
איך אוכל להמיר YAML ל-JSON?
ניתן להמיר קובצי YAML ל-JSON נקי ומאומת בלחיצת כפתור אחת באמצעות File2File.app ישירות בדפדפן האינטרנט שלך תוך שמירה על פרטיות מלאה.
זוגות המרה קשורים ל-YAML
המרת קובצי הגדרות בפורמט YAML למבנה JSON מתרגמת טקסט מזוהה ומבני השהיה ידידותיים למשתמש לאובייקטים קפדניים הניתנים לניתוח מכונה עבור יישומי אינטרנט.
המרת קובצי הגדרות בפורמט JSON לפורמט YAML הופכת מבני נתונים תכנותיים נוקשים למסמכים נקיים וקריאים לבני אדם, שהרבה יותר קל למנהלי מערכת לערוך.