TOML konfiguracija (.toml)
Specifikacija StandardTom's Obvious Minimal Language (TOML) je nedvosmislen konfiguracioni format usredsređen na čoveka, koji je kreirao suosnivač GitHub-a Tom Preston-Werner, a koji je široko prihvaćen u modernim programskim ekosistemima, uključujući Rust (Cargo) i Python (pyproject.toml).
Konvertujte TOML u JSON
Besplatan konvertor TOML u JSON u pregledaču. Konvertujte datoteke odmah na svom uređaju.
Pregled i metapodaci
Operativni sistemi i analizatori datoteka identifikuju TOML datoteke proverom početnog binarnog niza bajtova:
Potpis zaglavlja na nivou bajtova (magični bajtovi)
Operativni sistemi i analizatori datoteka identifikuju TOML datoteke proverom početnog binarnog niza bajtova:
HEKSADECIMALNI POTPIS (OFFSET 0):
5B ... 5DASCII REPREZENTACIJA: [...]
Standardizacija: Specifikacija TOML v1.0.0
Tehničke specifikacije
| Arhitektura kontejnera | Ljudima čitljiva konfiguraciona datoteka koja se nedvosmisleno preslikava u hash tabelu i strukturirana je pomoću [tabela] i parova ključ = vrednost |
| Kompresija | Nekomprimovani tekstualni tok |
| Bajtni redosled (Endianness) | UTF-8 tekstualni tok |
| Prostori boja | Nije primenljivo (konfiguraciona datoteka) |
| Kanali i struktura | Tabele, nizovi tabela, tabele ugrađene u red, tekstualni nizovi, celi brojevi, decimalni brojevi, logičke vrednosti i datumi i vremena prema RFC 3339 |
| Maksimalne dimenzije | Neograničena dužina teksta |
| Transparentnost | Nema |
| Strimovanje i progresivno učitavanje | Sekvencijalno parsiranje konfiguracije, red po red |
Tehnička matrica poređenja: TOML u odnosu na konkurente
| Tehnički atribut | TOML (Trenutno) | YAML | JSON | INI |
|---|---|---|---|---|
| Rizik od dvosmislenosti | Nula (strogo nedvosmislena specifikacija) | Visok (greške sa boolean vrednostima u YAML 'Norveškom problemu') | Nula (strogi tipovi podataka) | Umeren (nema formalnog standarda) |
| Izvorni tipovi datuma i vremena | Izvorna podrška za RFC 3339 datum i vreme | Implicitno raščlanjivanje stringova i datuma | Nema (samo niske) | Nema (samo niske) |
| Podrška za komentare | Izvorno (# komentari) | Izvorno (# komentari) | Komentari nisu dozvoljeni | Izvorno (; i # komentari) |
| Primarni ekosistem | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD procesi | Veb API-ji, komunikacija u pregledaču | Nasleđeni Windows, Git konfig |
Uobičajeni režimi oštećenja i vodič za heksadecimalni oporavak
Greška parsera: 'Duplicate key in table' ili 'Invalid table header'.
Osnovni uzrok: Pokušaj redefinisanja postojećeg ključa ili imenskog prostora tabele unutar dokumenta.
Oporavak: Potvrdite i reformatirajte TOML sintaksu pomoću File2File.app TOML Formatter-a.
Bezbednosna analiza i vektori napada parsera
TOML parseri se moraju braniti od zagađenja prototipa (prototype pollution) i iscrpljivanja CPU-a usled patološkog ugnježđivanja nizova tabela.
Poznati vektori napada
- Zagađenje prototipa u JavaScript TOML parserima koji ubacuju svojstva u Object.prototype.
- Uskraćivanje usluge (DoS) kroz duboko ugnježđene deklaracije nizova tabela.
- Neograničena alokacija memorije tokom parsiranja masivnih ugrađenih nizova.
Najbolje prakse za zaštitu: Proverite ograničenja ugnežđivanja tabela i koristite objekte rečnika sigurne od zagađenja prototipa.
Istorijat i prekretnice
Ključne prednosti
- Potpuno nedvosmislen: čisto i predvidivo se preslikava u heš tabelu bez iznenađujućih konverzija tipova.
- Prvoklasna izvorna podrška za datume i vreme (RFC 3339 vremenske oznake, datumi, vreme) bez potrebe za stringovima i ekraniranjem.
- Usvojen kao zvanični standardni konfiguracioni format za moderne alate jezika (Rust Cargo.toml, Python pyproject.toml).
Tehnička ograničenja i nedostaci
- Duboko ugnježđena stabla objekata na više nivoa mogu postati opširna u poređenju sa YAML-om.
- Sintaksa za nizove tabela ([[table.array]]) može biti neintuitivna za početnike.
- Manje kompaktan od JSON-a za razmenu API podataka između mašina sa velikim protokom.
Zanimljivosti
- TOML je kreirao Tom Preston-Werner, koji je takođe suosnivač GitHub-a i tvorac Gravatar-a i SemVer-a (Semantičko verzionisanje).
- Cargo paketi koriste Cargo.toml za metapodatke, zavisnosti i ciljeve; Rust projekti sa drugim sistemima za izgradnju mogu koristiti druge fajlove.
- Za razliku od JSON-a, TOML izvorno podržava komentare (korišćenjem znaka '#') i višelinijske niske.
Često postavljana tehnička pitanja
Čemu služi TOML?
TOML se koristi za konfiguraciju softvera, a najpoznatiji je u Rust-ovom Cargo.toml, Python-ovom pyproject.toml, Go Hugo konfiguracijama i alatima za kontejnere.
Zašto je TOML poželjniji u odnosu na YAML za konfiguraciju?
TOML izbegava poznate greške u parsiranju graničnih slučajeva YAML-a (kao što je nenavodeno „NO“ koje se pretvara u logičku vrednost false), a i dalje je razumljiv ljudima zahvaljujući komentarima i jasnim tabelama.
Kako mogu da konvertujem TOML u JSON ili YAML?
Možete trenutno da konvertujete TOML fajlove u JSON ili YAML koristeći File2File.app direktno u vašem veb pretraživaču.
Povezani parovi konverzije za TOML
Pretvaranje TOML konfiguracionih datoteka u JSON format prevodi podešavanja svojstava prilagođena ljudima u strogi objekat podataka koji veb aplikacije mogu odmah da parsiraju.
Konvertovanje JSON konfiguracionih datoteka u TOML format pojednostavljuje ručno uređivanje uz očuvanje svih strukturiranih hijerarhija podataka ključ-vrednost.