TOML-konfiguratsioon (.toml)
TOML StandardTom's Obvious Minimal Language (TOML) on ühene, inimkeskne konfiguratsioonivorming, mille lõi GitHubi kaasasutaja Tom Preston-Werner ning mida kasutatakse laialdaselt tänapäevastes programmeerimisökosüsteemides, sealhulgas Rustis (Cargo) ja Pythonis (pyproject.toml).
Teisenda formaadist TOML formaati JSON
Tasuta TOML -> JSON konverter brauseris. Teisenda faile koheselt oma seadmes.
Kontrolli ja metaandmed
Operatsioonisüsteemid ja failianalüsaatorid tuvastavad TOML faile, kontrollides algset binaarset baidijada:
Baidi-taseme päise allkiri (maagilised baidid)
Operatsioonisüsteemid ja failianalüsaatorid tuvastavad TOML faile, kontrollides algset binaarset baidijada:
HEX-ALLKIRI (NIHE 0):
5B ... 5DASCII-ESITUS: [...]
Standardiseerimine: TOML v1.0.0 Specification
Tehnilised andmed
| Konteineri arhitektuur | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Tihendamine | Uncompressed text stream |
| Baitide järjekord (Endianness) | UTF-8 text stream |
| Värviruumid | N/A (Configuration File) |
| Kanalid ja struktuur | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Max mõõtmed | Unbounded text length |
| Läbipaistvus | None |
| Voogedastus ja progressiivsus | Sequential line-by-line configuration parsing |
Tehniline võrdlusmaatriks: TOML vs konkurendid
| Tehniline atribuut | TOML (Praegune) | YAML | JSON | INI |
|---|---|---|---|---|
| Mitmetähenduslikkuse risk | Null (rangelt ühene spetsifikatsioon) | Kõrge (YAML-i 'Norra probleemi' tõeväärtuse vead) | Null (ranged andmetüübid) | Mõõdukas (ametlik standard puudub) |
| Omased kuupäeva/kellaaja tüübid | Omane RFC 3339 kuupäeva ja kellaaja tugi | Kaudne stringi / kuupäeva analüüs | Puudub (ainult stringid) | Puudub (ainult stringid) |
| Kommentaaride tugi | Omane (# kommentaarid) | Omane (# kommentaarid) | Kommentaarid pole lubatud | Omane (; ja # kommentaarid) |
| Põhiökosüsteem | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD torujuhtmed | Veebi API-d, brauserisuhtlus | Pärand-Windows, Git seadistus |
Levinud riknemisvead ja heksataaste juhend
Parseri viga: 'Duplicate key in table' või 'Invalid table header'.
Juurpõhjus: Katse uuesti määratleda olemasolevat võtit või tabeli nimeruumi dokumendis.
Taastamine: Kontrollige ja vormindage TOML-i süntaks uuesti, kasutades File2File TOML-i vormindajat.
Turvaanalüüs ja parsimisründevektorid
TOML-i parserid peavad kaitsma prototüüpide saastamise ja patoloogilisest tabelite massiivide pesastamisest tuleneva protsessori kurnatuse eest.
Teadaolevad ründavektorid
- Prototüübi saastamine JavaScripti TOML-i parserites, mis süstivad omadusi objekti Object.prototype.
- Teenusetõkestus sügavalt pesastatud tabelite massiivide deklaratsioonide kaudu.
- Piiramatu mälueraldis massiivse sisemise massiivi analüüsimise ajal.
Kaitsealased parimad tavad:
Ajalooline taust ja verstapostid
Peamised eelised
- Täiesti ühene: vastendub puhtalt ja etteaimatavalt räsustruktuurile ilma üllatavate tüübiteisendusteta.
- Esimese klassi omane kuupäeva- ja kellaajatugi (RFC 3339 ajatemplid, kuupäevad, kellaajad) ilma stringi eskaleerimiseta.
- Võetud vastu kaasaegse keeletööriistastiku ametliku standardse konfiguratsioonivorminguna (Rust Cargo.toml, Python pyproject.toml).
Tehnilised piirangud ja puudused
- Sügavalt pesastatud mitmetasandilised objektipuud võivad võrreldes YAML-iga muutuda mahukaks.
- Tabelite massiivide süntaks ([[table.array]]) võib algajatele olla ebaatraditsiooniline.
- Vähem kompaktne kui JSON suure läbilaskevõimega masinalt-masinale API-andmevahetuse jaoks.
Huvitavaid tehnilisi fakte
- TOML-i lõi Tom Preston-Werner, kes oli ka GitHubi kaasasutaja ning lõi Gravatari ja SemVeri (semantilise versioonihalduse).
- Igas Rusti projektis määratleb fail 'Cargo.toml' kõik paketi sõltuvused ja kompilaatori lipud TOML-vormingus.
- Erinevalt JSON-ist toetab TOML omaselt kommentaare (kasutades märki '#') ja mitmerealisi stringe.
Korduma kippuvad tehnilised küsimused
Milleks TOML-i kasutatakse?
TOML-i kasutatakse tarkvara konfigureerimiseks, kõige märkimisväärsemalt Rusti Cargo.toml-is, Pythoni pyproject.toml-is, Go Hugo konfiguratsioonides ja konteineritööriistades.
Miks eelistatakse konfiguratsioonis YAML-ile TOML-i?
TOML hoiab ära YAML-i kurikuulsad äärmuslike juhtumite parsimise vead (näiteks tsiteerimata 'NO' muutumine tõeväärtuseks false), jäädes samas inimestele sõbralikuks tänu kommentaaridele ja selgetele tabelitele.
Kuidas ma saan TOML-i JSON-iks või YAML-iks konverteerida?
Saate TOML-failid koheselt JSON-iks või YAML-iks konverteerida File2File.app-i abil otse oma veebibrauseris.
Seotud TOML teisenduspaarid
TOML-konfiguratsioonifailide teisendamine JSON-vormingusse tõlgib inimsõbralikud omaduste seaded rangeks andmeobjektiks, mida veebirakendused saavad koheselt parsida.
JSON-konfiguratsioonifailide teisendamine TOML-vormingusse lihtsustab käsitsi muutmist, säilitades samal ajal kõik struktureeritud võtme-väärtuse andmehierarhiad.