TOML konfig (.toml)
TOML ŠtandardTom's Obvious Minimal Language (TOML) je jednoznačný konfiguračný formát zameraný na ľudí, ktorý vytvoril spoluzakladateľ GitHubu Tom Preston-Werner a je široko používaný v moderných programovacích ekosystémoch vrátane jazyka Rust (Cargo) a Pythonu (pyproject.toml).
Konvertovať TOML do JSON
Bezplatný konvertor z TOML do JSON priamo v prehliadači. Konvertujte súbory okamžite vo svojom zariadení.
Preskúmať a metadáta
Operačné systémy a analyzátory súborov identifikujú súbory TOML kontrolou počiatočnej binárnej bajtovej sekvencie:
Podpis hlavičky na úrovni bajtov (Magic Bytes)
Operačné systémy a analyzátory súborov identifikujú súbory TOML kontrolou počiatočnej binárnej bajtovej sekvencie:
HEXADECIMÁLNY PODPIS (OFFSET 0):
5B ... 5DASCII REPREZENTÁCIA: [...]
Štandardizácia: TOML v1.0.0 Specification
Technické špecifikácie
| Architektúra kontajnera | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Kompresia | Uncompressed text stream |
| Poradie bajtov (Endianness) | UTF-8 text stream |
| Farebné priestory | N/A (Configuration File) |
| Kanály a štruktúra | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Max. rozmery | Unbounded text length |
| Priehľadnosť | None |
| Streamovanie a postupné načítavanie | Sequential line-by-line configuration parsing |
Technická porovnávacia matica: TOML vs konkurenti
| Technický atribút | TOML (Aktuálne) | YAML | JSON | INI |
|---|---|---|---|---|
| Riziko nejednoznačnosti | Nulové (prísne jednoznačná špecifikácia) | Vysoké (chyby booleovských hodnôt spôsobené „nórskym problémom" v YAML) | Nulové (prísne dátové typy) | Stredné (bez formálneho štandardu) |
| Natívne typy dátumu a času | Natívna podpora dátumu a času podľa RFC 3339 | Implicitná analýza reťazcov / dátumov | Žiadne (iba reťazce) | Žiadne (iba reťazce) |
| Podpora komentárov | Natívna (komentáre pomocou #) | Natívna (komentáre pomocou #) | Komentáre nie sú povolené | Natívna (komentáre pomocou ; a #) |
| Primárny ekosystém | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, kanály CI/CD | Webové rozhrania API, komunikácia v prehliadači | Staršie systémy Windows, konfigurácia Git |
Bežné režimy poškodenia a príručka na obnovu v hexadecimálnom kóde
Chyba analyzátora: „Duplicate key in table" (Duplicitný kľúč v tabuľke) alebo „Invalid table header" (Neplatná hlavička tabuľky).
Hlavná príčina: Pokus o opätovnú definíciu existujúceho kľúča alebo menného priestoru tabuľky v rámci dokumentu.
Obnova: Overte a preformátujte syntax TOML pomocou formátovača TOML nástroja File2File.
Bezpečnostná analýza a vektory útokov na parser
Analyzátory TOML sa musia chrániť pred znečistením prototypov (prototype pollution) a vyčerpaním procesora v dôsledku patologického vnorenia polí tabuliek.
Známe vektory útokov
- Znečistenie prototypov v analyzátoroch TOML pre JavaScript, ktoré vkladajú vlastnosti do objektu Object.prototype.
- Odopretie služby (DoS) prostredníctvom hlboko vnorených deklarácií polí tabuliek.
- Neobmedzená alokácia pamäte počas analýzy masívnych vnorených polí.
Najlepšie obranné postupy:
Historický pôvod a míľniky
Kľúčové výhody a prednosti
- Úplne jednoznačný: čisto a predvídateľne sa mapuje na tabuľku s hashmi bez prekvapujúceho vynucovania typov.
- Prvotriedna natívna podpora pre dátum a čas (časové pečiatky, dátumy a časy podľa RFC 3339) bez potreby únikových znakov v reťazcoch.
- Prijatý ako oficiálny štandardný konfiguračný formát pre moderné nástroje programovacích jazykov (Rust Cargo.toml, Python pyproject.toml).
Technické obmedzenia a nevýhody
- Hlboko vnorené viacúrovňové stromové štruktúry objektov môžu byť v porovnaní s YAML obsiahlejšie.
- Syntax pre polia tabuliek ([[table.array]]) môže byť pre začiatočníkov neintuitívna.
- Menej kompaktný než JSON na výmenu údajov medzi strojmi v rozhraniach API s vysokou priepustnosťou.
Zaujímavé technické drobnosti
- Formát TOML vytvoril Tom Preston-Werner, ktorý tiež spoluzaložil GitHub a vytvoril služby Gravatar a SemVer (sémantické verzovanie).
- Súbor „Cargo.toml" v každom projekte v jazyku Rust špecifikuje všetky závislosti balíka a príznaky kompilátora vo formáte TOML.
- Na rozdiel od formátu JSON podporuje TOML natívne komentáre (pomocou znaku „#") a viacriadkové reťazce.
Často kladené technické otázky
Na čo sa používa TOML?
TOML sa používa na konfiguráciu softvéru, najmä v súbore Cargo.toml jazyka Rust, pyproject.toml jazyka Python, konfiguráciách Go Hugo a nástrojoch pre kontajnery.
Prečo je TOML uprednostňovaný pred YAML pre konfiguráciu?
TOML sa vyhýba známym chybám analýzy YAML v hraničných prípadoch (ako napríklad keď sa neuzatvorené 'NO' zmení na booleovskú hodnotu false), pričom zostáva zrozumiteľný pre ľudí vďaka komentárom a prehľadným tabuľkám.
Ako môžem konvertovať TOML do formátu JSON alebo YAML?
Súbory TOML môžete okamžite konvertovať do formátu JSON alebo YAML pomocou File2File.app priamo vo vašom webovom prehliadači.
Súvisiace konverzné páry pre TOML
Konverzia konfiguračných súborov TOML do formátu JSON prevádza užívateľsky prívetivé nastavenia vlastností na striktný dátový objekt, ktorý webové aplikácie dokážu okamžite analyzovať.
Konverzia konfiguračných súborov JSON do formátu TOML zjednodušuje manuálne úpravy pri zachovaní všetkých štruktúrovaných hierarchií údajov typu kľúč-hodnota.