Che cos'è il formato di file YML?
.yml è un file di testo semplice e un formato di interscambio dati. È un formato standardizzato e indipendente dalla piattaforma che memorizza i dati come testo leggibile dall'uomo, organizzato attraverso una struttura chiave: valore basata sull'indentazione. I file .yml possono essere letti e scritti utilizzando le librerie YAML disponibili per quasi tutti i principali linguaggi di programmazione. .yml e .yaml identificano lo stesso formato - .yml è la forma più vecchia a tre lettere mantenuta da molti strumenti come docker-compose.yml, .gitlab-ci.yml e i workflow di GitHub Actions. Il formato è comunemente usato per la serializzazione dei dati e la configurazione delle applicazioni.
La serializzazione è un termine usato nell'informatica e si riferisce al concetto di scambio di dati tra programmi o applicazioni utilizzando oggetti ben definiti. Un oggetto può essere inteso come un contenitore di dati. Ad esempio, i record di un database sono una forma di serializzazione dei dati in quanto possono essere facilmente scambiati tra vari database. I dati serializzati possono anche assumere la forma di file strutturati che possono essere inviati tra le applicazioni. Tra i formati di serializzazione più diffusi ci sono .yml, XML, JSON e TOML.
Una caratteristica distintiva di .yml è l'uso di spazi bianchi significativi: l'indentazione definisce la struttura del documento e sono permessi solo gli spazi - i tabulatori sono esplicitamente vietati dalle specifiche. I documenti possono opzionalmente aprirsi con --- (inizio documento) e chiudersi con .... YAML supporta anche commenti inline con #, scalari di blocco multi-riga usando | o > e ancore (&) con alias (*) per riutilizzare valori ripetuti.
Sicurezza e incolumità
RISCHIO: MEDIUMUn file .yml è testo semplice e non si esegue da solo, quindi leggerne uno è sicuro. Due rischi reali: (1) i file YAML di configurazione (pipeline CI, Compose, K8s, Ansible) contengono spesso segreti - token, password, chiavi - quindi non incollarli in validatori online non attendibili né pubblicarli su repository pubblici. (2) Pericolo programmatico: caricare YAML non attendibile con un parser non sicuro (es. yaml.load di PyYAML invece di yaml.safe_load) può eseguire oggetti/codice arbitrari - usa sempre il caricatore sicuro per i file di cui non ti fidi. Rischio di modifica: un tabulatore o uno spazio disallineato cambia silenziosamente il significato, quindi convalida dopo la modifica.
Dettagli del formato
in sintesi- Strangereal IFL camera-map (raro) - Alcune app legacy hanno riutilizzato .yml per dati non YAML, ma oggi l'estensione è quasi sempre testo YAML.
Programmi che aprono file YML
Dettagli tecnici
specifiche approfondite| Tipo MIME | application/yaml (registrato IANA); le varianti legacy includono text/yaml, text/x-yaml, application/x-yaml |
| Codifica | UTF-8 (predefinita e più comune); UTF-16 e UTF-32 con BOM sono permessi dalle specifiche ma raramente usati in pratica |
| Struttura del file | Mappature basate sull'indentazione (chiave: valore), sequenze (- elemento) e scalari; l'annidamento è espresso puramente dal livello di indentazione |
| Spazi bianchi significativi | L'indentazione definisce la struttura; sono ammessi solo spazi - i tabulatori sono esplicitamente vietati dalle specifiche YAML |
| Marcatori di documento | --- opzionale segna l'inizio del documento; ... segna la fine; un singolo file .yml può contenere più documenti YAML separati da --- |
| Supporto commenti | Commenti inline e su riga intera introdotti da # - assenti in JSON e nella maggior parte dei formati di serializzazione binari |
| Tipi di dati nativi | Stringa, intero, float, booleano, null, timestamp e binario (codificato in base64 tramite il tag !!binary) |
| Ancore e alias | & dichiara un'ancora riutilizzabile; * vi fa riferimento (alias) - elimina la ripetizione copia-incolla nei file di configurazione complessi |
| Scalari di blocco | | (scalare di blocco letterale) preserva i ritorni a capo così come sono; > (scalare di blocco ripiegato) comprime i ritorni a capo in spazi |
| Superset di JSON | Dalla versione YAML 1.2 (2009) ogni file JSON valido è anche un file YAML valido, quindi i parser YAML possono leggere JSON nativamente |
| Magic bytes / firma | Nessuno - nessun header binario o numero magico; identificato dalla sua struttura chiave: valore basata sull'indentazione e dall'estensione .yml o .yaml |
| Dimensione del file (tipica) | Da pochi byte a decine di KB per file di configurazione e pipeline CI/CD; raramente supera le poche centinaia di KB |
| Equivalenza estensioni | .yml e .yaml sono identici nel formato; .yml è la forma a tre lettere dell'era DOS adottata da docker-compose.yml, .gitlab-ci.yml e GitHub Actions |
| Direttiva versione specifica | Il pragma opzionale %YAML 1.2 all'inizio del file dichiara la versione della specifica; la maggior parte dei file lo omette e si affida ai valori predefiniti del parser |
| Rilasciato | 2001 (YAML 1.0); YAML 1.1 (2005); current YAML 1.2 (2009, revised 1.2.2 in 2021) |
| Ultima versione | YAML 1.2.2 (2021) |
| Standard aperto | Sì · royalty-free |
| Specifica | yaml.org |
Conversioni YML
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file YML.