TOML konfigurācija (.toml)
TOML StandartsTom's Obvious Minimal Language (TOML) ir nepārprotams, uz cilvēku orientēts konfigurācijas formāts, kuru izveidoja GitHub līdzdibinātājs Toms Prestons-Verners (Tom Preston-Werner) un kurš ir plaši iecienīts mūsdienu programmēšanas ekosistēmās, tostarp Rust (Cargo) un Python (pyproject.toml).
Konvertēt TOML uz JSON
Bezmaksas TOML uz JSON konvertētājs pārlūkprogrammā. Konvertējiet failus uzreiz savā ierīcē.
Pārbaudīt un metadati
Operētājsistēmas un failu analizatori identificē TOML failus, pārbaudot sākotnējo bināro baitu secību:
Baitu līmeņa galvenes paraksts (maģiskie baiti)
Operētājsistēmas un failu analizatori identificē TOML failus, pārbaudot sākotnējo bināro baitu secību:
HEKSADECIMĀLAIS PARAKSTS (NOBĪDE 0):
5B ... 5DASCII ATTEIOLOJUMS: [...]
Standartizācija: TOML v1.0.0 Specification
Tehniskās specifikācijas
| Konteinera arhitektūra | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Saspiešana | Uncompressed text stream |
| Baitu secība | UTF-8 text stream |
| Krāsu telpas | N/A (Configuration File) |
| Kanāli un struktūra | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Maks. izmēri | Unbounded text length |
| Caurspīdīgums | None |
| Straumēšana un progresīvā ielāde | Sequential line-by-line configuration parsing |
Tehniskā salīdzinājuma matrica: TOML pret konkurentiem
| Tehniskais atribūts | TOML (Pašreizējais) | YAML | JSON | INI |
|---|---|---|---|---|
| Ambiguitātes risks | Nulle (stingri nepārprotama specifikācija) | Augsts (YAML "Norvēģijas problēmas" Būla vērtību kļūdas) | Nulle (stingri datu tipi) | Mērens (nav oficiāla standarta) |
| Vietējie datuma un laika tipi | Vietējais RFC 3339 datuma un laika atbalsts | Netieša virkņu / datumu parsēšana | Nav (tikai virknes) | Nav (tikai virknes) |
| Komentāru atbalsts | Vietējais ("#" komentāri) | Vietējais ("#" komentāri) | Komentāri nav atļauti | Vietējais (";" un "#" komentāri) |
| Galvenā ekosistēma | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD konveijeri | Tīmekļa API, pārlūkprogrammu saziņa | Mantotās Windows, Git konfigurācijas |
Biežākie bojājumu veidi un heksadecimālās atkopšanas ceļvedis
Parsētāja kļūda: "Duplicate key in table" vai "Invalid table header".
Pamatcēlonis: Mēģinājums atkārtoti definēt esošu atslēgu vai tabulas nosaukumvietu dokumentā.
Atkopšana: Validējiet un pārformātējiet TOML sintaksi, izmantojot File2File TOML formātētāju.
Drošības analīze un parsētāja uzbrukuma vektori
TOML parsētājiem ir jāaizsargājas pret prototipu piesārņošanu un CPU izsmelšanu, ko izraisa patoloģiska tabulu masīvu iegulšana.
Zināmie uzbrukuma vektori
- Prototipu piesārņošana JavaScript TOML parsētājos, injicējot rekvizītus Object.prototype.
- Pakalpojuma atteice (DoS) caur dziļi iegultām tabulu masīvu deklarācijām.
- Neierobežota atmiņas piešķire masveida iekļauto masīvu parsēšanas laikā.
Aizsardzības labākā prakse:
Vēsturiskā izcelsme un pavērsieni
Galvenās priekšrocības un plusi
- Pilnīgi nepārprotams: tīri un paredzami kartējas uz jaucumtabulu bez pārsteidzošas tipu piespiedu konvertēšanas.
- Pirmās klases vietējais datuma un laika atbalsts (RFC 3339 laikspiedumi, datumi, laiki) bez virkņu aizsargzīmju (escaping) lietošanas.
- Pieņemts kā oficiālais standarta konfigurācijas formāts mūsdienu valodu rīkiem (Rust Cargo.toml, Python pyproject.toml).
Tehniskie ierobežojumi un mīnusi
- Dziļi iegulti vairāku līmeņu objektu koki var kļūt garvārdiski salīdzinājumā ar YAML.
- Tabulu masīvu sintakse ([[table.array]]) iesācējiem var šķist neintuitīva.
- Mazāk kompakts nekā JSON liela datu plūsmas apjoma mašīna-mašīnai API datu apmaiņai.
Interesanti tehniski fakti
- TOML izveidoja Toms Prestons-Verners, kurš arī bija līdzdibinātājs GitHub un izveidoja Gravatar un SemVer (Semantic Versioning).
- Fails "Cargo.toml" katrā Rust projektā nosaka visas pakotņu atkarības un kompilatora karodziņus TOML formātā.
- Atšķirībā no JSON, TOML dabiski atbalsta komentārus (izmantojot rakstzīmi "#") un daudzrindu virknes.
Bieži uzdotie tehniskie jautājumi
Kam tiek izmantots TOML?
TOML tiek izmantots programmatūras konfigurācijai, visievērojamāk Rust Cargo.toml, Python pyproject.toml, Go Hugo konfigurācijās un konteineru rīkos.
Kāpēc konfigurācijā TOML ir priekšroka attiecībā pret YAML?
TOML novērš YAML bēdīgi slavenās malējo gadījumu parsēšanas kļūdas (piemēram, nepēdiņās ievietots "NO", kas pārvēršas par Būla vērtību false), vienlaikus saglabājot cilvēkam draudzīgu izskatu ar komentāriem un skaidrām tabulām.
Kā es varu konvertēt TOML uz JSON vai YAML?
Jūs varat uzreiz konvertēt TOML failus uz JSON vai YAML, izmantojot File2File.app tieši savā tīmekļa pārlūkprogrammā.
Saistītie TOML konvertēšanas pāri
TOML konfigurācijas failu konvertēšana JSON formātā tulko cilvēkam draudzīgus rekvizītu iestatījumus stingrā datu objektā, ko tīmekļa lietojumprogrammas var uzreiz parsēt.
JSON konfigurācijas failu konvertēšana uz TOML formātu vienkāršo rediģēšanu cilvēkam, vienlaikus saglabājot visas strukturētās atslēgu un vērtību datu hierarhijas.