TOML konfigūracija (.toml)
TOML StandartinisTom's Obvious Minimal Language (TOML) yra vienareikšmis, į žmogų orientuotas konfigūracijos formatas, kurį sukūrė „GitHub" bendraįkūrėjas Tomas Prestonas-Werneris. Jis plačiai naudojamas šiuolaikinėse programuotojų ekosistemose, įskaitant „Rust" („Cargo") ir „Python" („pyproject.toml").
Konvertuoti TOML į JSON
Nemokamas TOML į JSON konverteris naršyklėje. Konvertuokite failus akimirksniu savo įrenginyje.
Tikrinti ir metaduomenys
Operacinės sistemos ir failų analizatoriai atpažįsta TOML failus tikrindami pradinę dvejetainę baitų seką:
Baitų lygio antraštės parašas (magiškieji baitai)
Operacinės sistemos ir failų analizatoriai atpažįsta TOML failus tikrindami pradinę dvejetainę baitų seką:
ŠEŠIOLIKTAINIS PARAŠAS (POSLINKIS 0):
5B ... 5DASCII ATVAIZDAVIMAS: [...]
Standartizacija: TOML v1.0.0 Specification
Techninės specifikacijos
| Konteinerio architektūra | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Glaudinimas | Uncompressed text stream |
| Baitų seka (Endianness) | UTF-8 text stream |
| Spalvų erdvės | N/A (Configuration File) |
| Kanalai ir struktūra | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Maksimalūs matmenys | Unbounded text length |
| Skaidrumas | None |
| Srautas ir progresyvusis įkėlimas | Sequential line-by-line configuration parsing |
Techninė palyginimo matrica: TOML vs konkurentai
| Techninis atributas | TOML (Dabartinis) | YAML | JSON | INI |
|---|---|---|---|---|
| Ambiguitiškumo rizika | Nulinė (griežtai vienareikšmė specifikacija) | Didelė („YAML" Norvegijos problemos Būlio logikos klaidos) | Nulinė (griežti duomenų tipai) | Vidutinė (nėra oficialaus standarto) |
| Vietiniai datos/laiko tipai | Vietinis RFC 3339 datos ir laiko palaikymas | Netiesioginis eilučių / datų analizavimas | Nėra (tik eilutės) | Nėra (tik eilutės) |
| Komentarų palaikymas | Vietinis (# komentarai) | Vietinis (# komentarai) | Komentarai neleidžiami | Vietinis (; ir # komentarai) |
| Pagrindinė ekosistema | „Rust" („Cargo"), „Python" (PEP 518), „Go" | „Kubernetes", „Ansible", CI/CD konvejeriai | Žiniatinklio API, naršyklės ryšys | Pasenusi „Windows", „Git" konfigūracija |
Dažni sugadinimo režimai ir šešioliktainio atkūrimo vadovas
Analizatoriaus klaida: „Duplicate key in table" arba „Invalid table header".
Pirminė priežastis: Bandymas dokumente iš naujo apibrėžti esamą raktą arba lentelės vardų sritį.
Atkūrimas: Patvirtinkite ir iš naujo suformatuokite TOML sintaksę naudodami „File2File TOML" formatuotuvą.
Saugumo analizė ir analizatoriaus atakos vektoriai
TOML analizatoriai turi apsisaugoti nuo prototipų taršos ir procesoriaus išsekimo dėl patologinio lentelių masyvų įdėjimo.
Žinomi atakos vektoriai
- Prototipų tarša „JavaScript TOML" analizatoriuose, įpurškianti savybes į Object.prototype.
- Paslaugos trikdymo (DoS) atakos per giliai įdėtų lentelių masyvų deklaracijas.
- Nebūdinga atminties asignacija analizuojant didžiulius vidinius masyvus.
Geriausia apsaugos praktika:
Istorinė kilmė ir svarbiausi etapai
Pagrindiniai privalumai
- Visiškai vienareikšmis: švariai ir nuspėjamai susiejamas su maišos lentele be jokių netikėtų tipo pertvarkymų.
- Pirmos klasės vietinis datos ir laiko palaikymas (RFC 3339 laiko žymos, datos, laikai) be eilučių kaitos simbolių.
- Priimtas kaip oficialus standartinis konfigūracijos formatas šiuolaikiniams kalbos įrankiams („Rust Cargo.toml", „Python pyproject.toml").
Techniniai apribojimai ir trūkumai
- Giliai įdėti daugiapakopiai objektų medžiai gali tapti pernelyg išsamių lyginant su „YAML".
- Lentelių masyvų sintaksė ([[table.array]]) pradedantiesiems gali būti neintuityvi.
- Mažiau kompaktiškas nei JSON didelio pralaidumo mašinos su mašina (M2M) API duomenų mainams.
Įdomūs techniniai faktai
- TOML sukūrė Tomas Prestonas-Werneris, kuris taip pat buvo vienas iš „GitHub" įkūrėjų bei sukūrė „Gravatar" ir „SemVer" (semantinį versionavimą).
- „Cargo.toml" failas kiekviename „Rust" projekte apibrėžia visas paketo priklausomybes ir kompiliatoriaus vėliavėles TOML formatu.
- Skirtingai nuo JSON, TOML iš prigimties palaiko komentarus (naudojant '#' simbolį) ir kelių eilučių eilutes.
Dažniausiai užduodami techniniai klausimai
Kam naudojamas TOML?
TOML naudojamas programinės įrangos konfigūracijai, dažniausiai „Rust“ faile Cargo.toml, „Python“ faile pyproject.toml, „Go Hugo“ konfigūracijose ir konteinerių įrankiuose.
Kodėl konfigūracijai teikiama pirmenybė TOML, o ne YAML?
TOML leidžia išvengti YAML liūdnai pagarsėjusių kraštytinių atvejų analizės klaidų (pvz., kai neįkabintos „NO“ virsta Būlio (boolean) reikšme false), kartu išlikdamas patogus žmonėms su komentarais ir aiškiomis lentelėmis.
Kaip galiu konvertuoti TOML į JSON arba YAML?
Naudodami File2File.app tiesiogiai interneto naršyklėje, galite akimirksniu konvertuoti TOML failus į JSON arba YAML.
Susijusios TOML konvertavimo poros
TOML konfigūracijos failų konvertavimas į JSON formatą paverčia vartotojui draugiškus savybių nustatymus griežtu duomenų objektu, kurį žiniatinklio programos gali akimirksniu nuskaityti.
JSON konfigūracijos failų konvertavimas į TOML formatą supaprastina rankinį redagavimą, kartu išsaugant visas struktūrizuotas raktų ir reikšmių duomenų hierarchijas.