Configurație YAML (.yaml)

YAML Standard

YAML Ain't Markup Language (YAML) este formatul dominant de serializare a datelor pentru DevOps modern, infrastructură cloud (Kubernetes, Docker Compose) și automatizare CI/CD, punând accentul pe lizibilitatea umană prin indentație curată bazată pe spații albe.

Convertește din YAML în JSON

Convertor gratuit din YAML în JSON direct în browser. Convertește fișiere instantaneu pe dispozitivul tău.

Inspectează și Metadate

Sistemele de operare și analizatoarele de fișiere identifică fișierele YAML prin inspectarea secvenței binare inițiale:

Selectează sau plasează fișierele aici

Conversie 100% privată în browser - fișierele nu părăsesc niciodată dispozitivul tău

sau lipește Ctrl+V
Garanție de confidențialitate cu zero transmisie în rețea: 0 octeți încărcați pe servere externe. Toată procesarea a avut loc local în sandbox-ul browserului tău.

Semnătura antetului la nivel de octet (Magic Bytes)

Sistemele de operare și analizatoarele de fișiere identifică fișierele YAML prin inspectarea secvenței binare inițiale:

SEMNĂTURĂ HEX (OFFSET 0):

2D 2D 2D 0A

REPREZENTARE ASCII: ---\n

Standardizare: YAML 1.2.2 Specification

Specificații tehnice

Arhitectură containerIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
CompresieUncompressed text stream
Endianitatea octețilorUTF-8 / Unicode text stream
Spații de culoareN/A (Data Serialization)
Canale și structurăMappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
Dimensiuni maximeUnbounded document size (supports multi-document streams separated by '---')
TransparențăNone
Streaming și progresivMulti-document streams allow sequential document-by-document processing

Matrice de comparație tehnică: YAML vs Competitori

Atribut tehnicYAML (Curent)JSONTOMLXML
Stil de sintaxăIerarhie de spații albe pentru indentațieParanteze drepte și ghilimele stricteTabele și perechi cheie=valoareEtichete de deschidere/închidere verboase
Suport pentru comentariiNativ (comentarii #)Nu sunt permise comentariiNativ (comentarii #)<!-- comentarii -->
Adopție în DevOpsStandard universal (Kubernetes, CI/CD)Standard API universalConfigurare pachete Rust/PythonConfigurare legacy enterprise
Reutilizare a datelorAncore native (&) și aliasuri (*)Niciuna (duplicare manuală)Niciuna (duplicare manuală)Entități XML

Moduri comune de corupție și ghid de recuperare hexazecimală

Eroare de analizor: 'mapping values are not allowed here' sau eroare de indentație.

Cauză principală: Amestecarea caracterelor Tab cu spații sau niveluri de indentație nealiniate.

Recuperare: Convertește taburile în spații și validează sintaxa utilizând Formatorul YAML File2File.

Analiză de securitate și vectori de atac asupra parserului

Analizoarele YAML care acceptă etichete de tip personalizate (cum ar fi 'yaml.load()' din PyYAML) permiteau istoric execuția de cod la distanță prin instanțierea arbitrară de obiecte.

Vectori de atac cunoscuți

  • Execuție de cod arbitrar prin etichete nesigure de deserializare a obiectelor (de ex., '!!python/object/apply').
  • Atacuri de expansiune a entităților (echivalentul miliardului de râsete utilizând ancore și aliasuri YAML).
  • Vulnerabilități de confuzie a tipurilor datorate analizei implicite a valorilor booleane și a marcajelor temporale.

Cele mai bune practici de securitate:

Origini istorice și repere

2021Publicarea revizuirii YAML 1.2.2, care perfecționează compatibilitatea JSON și definițiile gramaticale formale.
2009YAML 1.2 standardizează YAML ca superset strict al JSON, ceea ce înseamnă că tot JSON-ul valid este și YAML valid.
2001Clark Evans, Ingy döt Net și Oren Ben-Kiki creează YAML ca o alternativă prietenoasă cu utilizatorul uman la XML.

Avantaje cheie și beneficii

  • Standardul incontestabil pentru infrastructura cloud modernă: utilizat universal în manifestele Kubernetes, Docker Compose și GitHub Actions.
  • Sintaxă curată și citibilă: elimină aglomerația de acolade, paranteze drepte și ghilimele prin indentație intuitivă.
  • Acceptă referințe și ancore (&anchor / *anchor) pentru a reutiliza blocuri de configurare repetate fără duplicare.

Limitări tehnice și dezavantaje

  • Sensibil la spațiile albe: o tastare accidentală cu tasta Tab sau un singur spațiu în plus poate corupe ierarhia documentului sau poate cauza erori de analiză.
  • Erori notorii de conversie a tipurilor: cuvintele fără ghilimele precum 'no', 'on', 'yes' sau codurile de țară ('NO' pentru Norvegia) pot deveni silențios valori booleane.
  • Viteză de analiză semnificativ mai lentă în comparație cu formatele binare sau JSON-ul strict.

Curiozități tehnice interesante

  • YAML a însemnat inițial 'Yet Another Markup Language', dar a fost redenumit ironic în acronimul recursiv 'YAML Ain't Markup Language' pentru a sublinia serializarea datelor.
  • 'Problema Norvegiei' este o eroare celebră de programare în care codul de țară 'NO' dintr-un fișier YAML a fost analizat ca valoare booleană 'false'.
  • Fiecare fișier JSON valid din lume este, de asemenea, în același timp un fișier YAML 100% valid.

Întrebări tehnice frecvente

Pentru ce este folosit YAML?

YAML este principalul limbaj de configurare pentru cloud computing, implementarea clusterelor Kubernetes, fișierele Docker Compose, fluxurile de lucru GitHub Actions și setările software.

Pot folosi tabulatori în fișierele YAML?

Nu. Specificația oficială YAML interzice cu strictețe utilizarea caracterelor de tabulator pentru indentare; trebuie să folosiți întotdeauna spații (de obicei, 2 spații pe nivel).

Cum pot converti YAML în JSON?

Puteți converti fișierele YAML în JSON curat și validat cu un singur clic folosind File2File.app direct în browserul dumneavoastră web, cu confidențialitate completă.