TOML konfiguracija (.toml)
TOML StandardTom's Obvious Minimal Language (TOML) je nedvoumen konfiguracijski format, osredotočen na človeka, ki ga je ustvaril soustanovitelj GitHuba Tom Preston-Werner in je široko sprejet v sodobnih programskih ekosistemih, vključno z Rustom (Cargo) in Pythonom (pyproject.toml).
Pretvori TOML v JSON
Brezplačen pretvornik iz TOML v JSON v brskalniku. Pretvorite datoteke takoj v svoji napravi.
Pregled in metapodatki
Operacijski sistemi in analizatorji datotek identificirajo datoteke TOML s pregledom vodilnega binarnega zaporedja bajtov:
Podpis glave na ravni bajtov (Čarobni bajti)
Operacijski sistemi in analizatorji datotek identificirajo datoteke TOML s pregledom vodilnega binarnega zaporedja bajtov:
PODPIS HEX (ZAMIK 0):
5B ... 5DREPREZENTACIJA ASCII: [...]
Standardizacija: TOML v1.0.0 Specification
Tehnične specifikacije
| Arhitektura vsebnika | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Stiskanje | Uncompressed text stream |
| Vrstni red bajtov | UTF-8 text stream |
| Barvni prostori | N/A (Configuration File) |
| Kanali in struktura | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Največje dimenzije | Unbounded text length |
| Prosojnost | None |
| Pretočno in progresivno predvajanje | Sequential line-by-line configuration parsing |
Tehnična primerjalna matrika: TOML proti konkurenci
| Tehnični atribut | TOML (Trenutno) | YAML | JSON | INI |
|---|---|---|---|---|
| Tveganje dvoumnosti | Ničelno (strogo nedvoumna specifikacija) | Visoko (hrošči z logičnimi vrednostmi zaradi 'norveškega problema' v YAML-u) | Ničelno (strogi podatkovni tipi) | Zmerno (brez formalnega standarda) |
| Izvorni tipi datumov in časov | Izvorna podpora za datum in čas po RFC 3339 | Implicitno razčlenjevanje nizov / datumov | Brez (samo nizi) | Brez (samo nizi) |
| Podpora za komentarje | Izvorna (# komentarji) | Izvorna (# komentarji) | Komentarji niso dovoljeni | Izvorna (; in # komentarji) |
| Glavni ekosistem | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, cevovodi CI/CD | Spletni vmesniki API, komunikacija v brskalniku | Zastarel Windows, konfiguracija Git |
Pogosti načini okvar in vodič za heksadecimalno obnovo
Napaka razčlenjevalnika: 'Duplicate key in table' ali 'Invalid table header'.
Glavni vzrok: Poskus ponovne opredelitve obstoječega ključa ali imenskega prostora tabele znotraj dokumenta.
Sanacija: Preverite in ponovno oblikujte skladnjo TOML z uporabo oblikovalnika TOML File2File.
Varnostna analiza in napadalni vektorji razčlenjevalnika
Razčlenjevalniki TOML se morajo braniti pred onesnaževanjem prototipov in izčrpavanjem CPE zaradi patološkega gnezdenja matrik tabel.
Znani vektorji napada
- Onesnaževanje prototipov v razčlenjevalnikih TOML za JavaScript, ki vbrizgavajo lastnosti v Object.prototype.
- Zavrnitev storitve prek globoko vgnezdenih deklaracij matrik tabel.
- Neomejena dodelitev pomnilnika med razčlenjevanjem obsežnih vstavljenih matrik.
Obrambne najboljše prakse:
Zgodovinski izvor in mejniki
Ključne prednosti
- Popolnoma nedvoumen: čisto in predvidljivo se preslikava v razpršeno tabelo z nič presenetljivimi pretvorbami tipov.
- Prvovrstna izvorna podpora za datume in čase (časovne žige RFC 3339, datume, čase) brez ubežnih znakov za nize.
- Sprejet kot uradni standardni konfiguracijski format za sodobna jezikovna orodja (Rust Cargo.toml, Python pyproject.toml).
Tehnične omejitve in slabosti
- Globoko vgnezdena večnivojska drevesa objektov lahko v primerjavi z YAML-om postanejo obsežna.
- Skladnost za tabele matrik ([[table.array]]) je lahko za začetnike neintuitivna.
- Manj kompakten kot JSON za visokozmogljivo izmeno podatkov med napravami v API-jih.
Zanimive tehnične malenkosti
- TOML je ustvaril Tom Preston-Werner, ki je tudi soustanovitelj GitHuba ter ustvarjalec Gravatarja in SemVerja (Semantic Versioning).
- Datoteka 'Cargo.toml' v vsakem projektu Rust v formatu TOML določa vse odvisnosti paketa in zastavice prevajalnika.
- Za razliko od JSON-a TOML izvorno podpira komentarje (z uporabo znaka '#') in večvrstične nize.
Pogosta tehnična vprašanja
Za kaj se uporablja TOML?
TOML se uporablja za konfiguracijo programske opreme, predvsem v datotekah Cargo.toml za Rust, pyproject.toml za Python, konfiguracijah Go Hugo in orodjih za vsebnike.
Zakaj ima TOML pred YAML prednost pri konfiguraciji?
TOML se izogiba znanim napakam YAML pri razčlenjevanju robnih primerov (kot je npr. neoznačen 'NO', ki se spremeni v logično vrednost false), hkrati pa ostaja prijazen do ljudi s komentarji in jasnimi tabelami.
Kako lahko pretvorim TOML v JSON ali YAML?
Datoteke TOML lahko takoj pretvorite v JSON ali YAML s pomočjo File2File.app neposredno v vašem spletnem brskalniku.
Sorodni pari pretvorbe za TOML
Pretvarjanje konfiguracijskih datotek TOML v format JSON prevede lastnostne nastavitve, prijazne do ljudi, v strog podatkovni objekt, ki ga spletne aplikacije lahko takoj razčlenijo.
Pretvarjanje JSON konfiguracijskih datotek v obliko TOML poenostavi ročno urejanje, hkrati pa ohranja vse strukturirane hierarhije ključ-vrednost.