TOML konfiguráció (.toml)
TOML SzabványA Tom's Obvious Minimal Language (TOML) egy egyértelmű, emberközpontú konfigurációs formátum, amelyet a GitHub társalapítója, Tom Preston-Werner hozott létre, és amelyet széles körben alkalmaznak a modern programozási ökoszisztémákban, beleértve a Rustot (Cargo) és a Pythont (pyproject.toml).
TOML konvertálása erre: JSON
Ingyenes, böngészőben használható TOML-konverter JSON formátumba. A fájlokat azonnal konvertálhatja az eszközén.
Vizsgálat és metaadatok
Az operációs rendszerek és a fájlelemzők a kezdő bináris bájtsorozat vizsgálatával azonosítják a(z) TOML fájlokat:
Bájtszintű fejlécaláírás (fájlazonosító bájtok)
Az operációs rendszerek és a fájlelemzők a kezdő bináris bájtsorozat vizsgálatával azonosítják a(z) TOML fájlokat:
HEX ALÁÍRÁS (ELTOLÁS 0):
5B ... 5DASCII ÁBRÁZOLÁS: [...]
Szabványosítás: TOML v1.0.0 Specification
Műszaki specifikációk
| Konténer architektúra | Ember által olvasható konfigurációs fájl, amely egyértelműen hashtáblára képezhető le; [tables] fejléceket és kulcs = érték párokat tartalmaz |
| Tömörítés | Tömörítetlen szövegfolyam |
| Bájtsorrend | UTF-8 szövegfolyam |
| Színterek | Nem alkalmazható (konfigurációs fájl) |
| Csatornák és struktúra | Táblák, táblák tömbjei, beágyazott táblák, karakterláncok, egész számok, lebegőpontos számok, logikai értékek és RFC 3339 dátum-idő értékek |
| Max. méretek | A szöveg hossza nincs korlátozva |
| Átlátszóság | Nincs |
| Streaming és progresszív | Szekvenciális, sorról sorra történő konfigurációelemzés |
Műszaki összehasonlító mátrix: TOML vs. versenytársak
| Technikai attribútum | TOML (Jelenlegi) | YAML | JSON | INI |
|---|---|---|---|---|
| Kétértelműségi kockázat | Nulla (szigorúan egyértelmű specifikáció) | Magas (YAML 'Norvégia-probléma' logikai hibák) | Nulla (szigorú adattípusok) | Mérsékelt (nincs hivatalos szabvány) |
| Natív dátum-idő típusok | Natív RFC 3339-dátum- és időtámogatás | Implicit karakterlánc- és dátumelemzés | Nincs (csak karakterláncok) | Nincs (csak karakterláncok) |
| Megjegyzések támogatása | Natív (#-jellel jelölt megjegyzések) | Natív (#-jellel jelölt megjegyzések) | Megjegyzések nem engedélyezettek | Natív (; és # megjegyzések) |
| Elsődleges ökoszisztéma | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD-munkafolyamatok | Webes API-k, böngészőkommunikáció | Régi Windows-rendszerek, Git-konfiguráció |
Gyakori sérülési módok és hexadecimális helyreállítási útmutató
Elemzőhiba: „Duplicate key in table” vagy „Invalid table header”.
Kiváltó ok: Meglévő kulcs vagy táblanévtér újradefiniálásának kísérlete a dokumentumon belül.
Helyreállítás: Érvényesítse és formázza újra a TOML szintaxist a File2File.app TOML Formatter segítségével.
Biztonsági elemzés és elemző (parser) támadási vektorok
A TOML-elemzőknek védekezniük kell a prototípus-szennyezés és a kóros táblatömb-beágyazás miatti CPU-kimerülés ellen.
Ismert támadási vektorok
- Prototípus-szennyezés a JavaScript TOML-elemzőkben, amelyek tulajdonságokat fecskendeznek be az Object.prototype-ba.
- Szolgáltatásmegtagadás (DoS) a mélyen beágyazott táblatömb-deklarációk révén.
- Korlátlan memóriafoglalás hatalmas beágyazott tömbök elemzése közben.
Ajánlott védekezési módszerek: Érvényesítse a táblák beágyazási korlátait, és használjon prototípus-szennyezés szempontjából biztonságos szótárobjektumokat.
Történeti háttér és mérföldkövek
Főbb előnyök
- Teljesen egyértelmű: tisztán és kiszámíthatóan képezhető le hashtáblára, meglepő típuskényszerítés nélkül.
- Első osztályú natív dátum- és időtámogatás (RFC 3339 időbélyegek, dátumok, idők) karakterláncok escape-elése nélkül.
- A modern programozási nyelvek eszközeinek hivatalos konfigurációs formátumaként fogadták el (Rust Cargo.toml, Python pyproject.toml).
Technikai korlátok és hátrányok
- A mélyen beágyazott, többszintű objektumfák bőbeszédűvé válhatnak a YAML-hez képest.
- A táblatömbök szintaxisa ([[table.array]]) kezdők számára nem mindig magától értetődő.
- Kevésbé kompakt, mint a JSON a nagy áteresztőképességű gép-gép közötti API-k közötti nagy adatforgalmú adatcseréhez.
Érdekes technikai tudnivalók
- A TOML-t Tom Preston-Werner készítette, aki szintén társalapítója volt a GitHubnak, valamint megalkotta a Gravatart és a SemVert (Szemantikus Verziószámozás).
- A Cargo-csomagok a Cargo.toml fájlban adják meg a metaadatokat, függőségeket és célokat; más buildrendszerű Rust-projektek eltérő fájlokat használhatnak.
- A JSON-nel ellentétben a TOML natívan támogatja a megjegyzéseket (a '#' karakter használatával) és a többsoros karakterláncokat.
Gyakran Ismételt Műszaki Kérdések
Mire használatos a TOML?
A TOML-t szoftverkonfigurációhoz használják, leginkább a Rust Cargo.toml fájljában, a Python pyproject.toml fájljában, a Go Hugo konfigurációiban és a konténereszközökben.
Miért részesítik előnyben a TOML-t a YAML-lel szemben a konfigurációhoz?
A TOML elkerüli a YAML hírhedt szélső esetekben előforduló elemzési hibáit (például amikor az idézőjel nélküli 'NO' hamis logikai értékké változik), miközben a megjegyzések és az áttekinthető táblák révén emberbarát marad.
Hogyan alakíthatom át a TOML-t JSON-ba vagy YAML-be?
A TOML-fájlok azonnal JSON- vagy YAML-formátumba konvertálhatók a File2File.app segítségével, közvetlenül a böngészőben.
Kapcsolódó TOML konverziós párok
A TOML konfigurációs fájlok JSON formátumba konvertálása az emberközeli tulajdonságbeállításokat szigorú adatszerkezetté alakítja, amelyet a webes alkalmazások azonnal fel tudnak dolgozni.
A JSON konfigurációs fájlok TOML formátumba történő konvertálása leegyszerűsíti a kézi szerkesztést, miközben megőrzi az összes strukturált kulcs-érték hierarchiát.