TOML konfiguracija (.toml)
TOML StandardnoTom's Obvious Minimal Language (TOML) je nedvosmislen konfiguracioni format usredsređen na čoveka, koji je kreirao suosnivač GitHub-a Tom Preston-Verner, a koji je široko prihvaćen u modernim programskim ekosistemima, uključujući Rust (Cargo) i Python (pyproject.toml).
Конвертујте TOML у JSON
Бесплатан TOML у JSON конвертор у прегледачу. Конвертујте фајлове тренутно без слања на сервер уз 100% приватност.
Pregledaj i metapodaci
Operativni sistemi i analizatori datoteka identifikuju TOML datoteke proverom početnog binarnog niza bajtova:
Potpis zaglavlja na nivou bajtova (Magic Bytes)
Operativni sistemi i analizatori datoteka identifikuju TOML datoteke proverom početnog binarnog niza bajtova:
HEX POTPIS (OFFSET 0):
5B ... 5DASCII REPREZENTACIJA: [...]
Standardizacija: TOML v1.0.0 Specification
Tehničke specifikacije
| Arhitektura kontejnera | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Kompresija | Uncompressed text stream |
| Bajtni redosled (Endianness) | 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 |
| Transparentnost | None |
| Strimovanje i progresivno učitavanje | Sequential line-by-line configuration parsing |
Tehnička matrica poređenja: TOML vs Konkurenti
| 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 parsiranje niski / datuma | Nema (samo niske) | Nema (samo niske) |
| Podrška za komentare | Izvorna (# komentari) | Izvorna (# komentari) | Komentari nisu dozvoljeni | Izvorna (; 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 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.
Defanzivne najbolje prakse:
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 navodnika i eskejpovanja.
- 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 intuitivna 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-Verner, koji je takođe suosnivač GitHub-a i tvorac Gravatar-a i SemVer-a (Semantičko verzionisanje).
- Datoteka 'Cargo.toml' u svakom Rust projektu definiše sve zavisnosti paketa i flegove kompajlera u TOML formatu.
- 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 čuvene greške parsiranja u graničnim slučajevima kod YAML-a (kao što je nenastavnavano 'NO' koje se pretvara u boolean false), a istovremeno ostaje razumljiv ljudima uz komentare i jasne tabele.
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.