TOML konfiguracija (.toml)
TOML StandardnoTom's Obvious Minimal Language (TOML) je jednoznačan konfiguracijski format usredotočen na čovjeka koji je stvorio suosnivač GitHub-a Tom Preston-Werner, a široko je prihvaćen u suvremenim programskim ekosustavima, uključujući Rust (Cargo) i Python (pyproject.toml).
Pretvori TOML u JSON
Besplatni TOML u JSON pretvarač u pregledniku. Trenutno pretvorite datoteke na svom uređaju.
Pregledaj i metapodaci
Operativni sustavi i alati za analizu datoteka identificiraju TOML datoteke provjerom početnog niza binarnih bajtova:
Potpis zaglavlja na razini bajtova (Magic Bytes)
Operativni sustavi i alati za analizu datoteka identificiraju TOML datoteke provjerom početnog niza binarnih bajtova:
HEX POTPIS (POMAK 0):
5B ... 5DASCII PRIKAZ: [...]
Standardizacija: TOML v1.0.0 Specification
Tehničke specifikacije
| Arhitektura spremnika | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Kompresija | Uncompressed text stream |
| 字节序 | UTF-8 text stream |
| Prostori boja | N/A (Configuration File) |
| Kanali i struktura | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Maksimalne dimenzije | Unbounded text length |
| Prozirnost | None |
| Streaming i progresivno | Sequential line-by-line configuration parsing |
Tehnička matrica usporedbe: TOML vs Konkurencija
| Tehnički atribut | TOML (Trenutno) | YAML | JSON | INI |
|---|---|---|---|---|
| Rizik od dvoznačnosti | Nula (strogo jednoznačna specifikacija) | Visok (bugovi s boolean vrijednostima u YAML-ovom 'Norway problem') | Nula (strogi tipovi podataka) | Umjeren (nema službenog standarda) |
| Izvorni tipovi datuma i vremena | Izvorna podrška za RFC 3339 datum i vrijeme | Implicitno analiziranje niza / datuma | Nema (samo nizovi znakova) | Nema (samo nizovi znakova) |
| Podrška za komentare | Izvorna (# komentari) | Izvorna (# komentari) | Komentari nisu dopušteni | Izvorna (; i # komentari) |
| Glavni ekosustav | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD cjevovodi | Web API-ji, komunikacija u pregledniku | Naslijeđeni Windows, Git konfiguracija |
Uobičajeni načini oštećenja i vodič za heksadecimalni oporavak
Pogreška parsera: 'Duplicate key in table' ili 'Invalid table header'.
Temeljni uzrok: Pokušaj ponovnog definiranja postojećeg ključa ili imenskog prostora tablice unutar dokumenta.
Oporavak: Provjerite valjanost i ponovno formatirajte TOML sintaksu pomoću File2File TOML Formattera.
Sigurnosna analiza i vektori napada na parser
TOML parseri se moraju zaštititi od zagađenja prototipa (prototype pollution) i iscrpljivanja CPU-a uzrokovanog patološkim ugniježđivanjem nizova tablica.
Poznati vektori napada
- Zagađenje prototipa u JavaScript TOML parserima unošenjem svojstava u Object.prototype.
- Uskraćivanje usluge (DoS) putem duboko ugniježđenih deklaracija nizova tablica.
- Neograničeno alociranje memorije tijekom analize masivnih ugrađenih nizova.
Najbolje obrambene prakse:
Povijesni izvori i prekretnice
Ključne prednosti
- Potpuno jednoznačan: čisto i predvidljivo se preslikava u tablicu raspršivanja (hash table) bez ikakvog iznenađujućeg pretvaranja tipova.
- Prvoklasna izvorna podrška za datum i vrijeme (RFC 3339 vremenske oznake, datumi, vremena) bez navodnika i escapinga.
- Usvojen kao službeni standardni konfiguracijski format za moderne jezične alate (Rust Cargo.toml, Python pyproject.toml).
Tehnička ograničenja i nedostaci
- Duboko ugniježđena stabla objekata s više razina mogu postati opširna u usporedbi s YAML-om.
- Sintaksa za nizove tablica ([[table.array]]) može biti manje intuitivna za početnike.
- Manje kompaktan od JSON-a za visokopropusnu razmjenu API podataka između strojeva.
Zanimljive tehničke činjenice
- TOML je stvorio Tom Preston-Werner, koji je također suosnivač GitHub-a te tvorac Gravatara i SemVer-a (Semantic Versioning).
- Datoteka 'Cargo.toml' u svakom projektu u Rustu definira sve ovisnosti paketa i zastavice prevoditelja u TOML formatu.
- Za razliku od JSON-a, TOML izvorno podržava komentare (korištenjem znaka '#') i višelinične nizove znakova.
Često postavljana tehnička pitanja
Za što se koristi TOML?
TOML se koristi za softversku konfiguraciju, najistaknutije u Rustovoj datoteci Cargo.toml, Pythonovoj pyproject.toml, Go Hugo konfiguracijama i alatima za kontejnere.
Zašto je TOML draži od YAML-a za konfiguraciju?
TOML izbjegava poznate pogreške u analiziranju rubnih slučajeva u YAML-u (kao što je nenavodeni 'NO' koji se pretvara u logičku vrijednost false), a pritom ostaje razumljiv ljudima s komentarima i jasnim tablicama.
Kako mogu pretvoriti TOML u JSON ili YAML?
TOML datoteke možete trenutno pretvoriti u JSON ili YAML pomoću alata File2File.app izravno u svom web pregledniku.
Povezani parovi konverzije za TOML
Pretvaranje TOML konfiguracijskih datoteka u JSON format prevodi postavke svojstava pogodne za ljude u strogi podatkovni objekt koji web aplikacije mogu trenutačno obraditi.
Pretvaranje JSON konfiguracijskih datoteka u TOML format pojednostavljuje ručno uređivanje uz očuvanje svih strukturiranih hijerarhija podataka ključ-vrijednost.