TOML-konfiguraatio (.toml)
TOML StandardiTom's Obvious Minimal Language (TOML) on yksiselieköinen, ihmiskeskeinen asetustiedostomuoto, jonka loi GitHubin perustajajäsen Tom Preston-Werner. Sitä käytetään laajasti nykyaikaisissa ohjelmointiekosysteemeissä, kuten Rustissa (Cargo) ja Pythonissa (pyproject.toml).
Muunna tiedostot muodosta TOML muotoon JSON
Ilmainen selaimen sisäinen TOML - JSON-muunnin. Muunna tiedostoja välittömästi laitteellasi.
Tarkastele ja metatiedot
Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat TOML-tiedostot tarkistamalla tiedoston alun binäärisarjan:
Tavutason otsikon allekirjoitus (Magic Bytes)
Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat TOML-tiedostot tarkistamalla tiedoston alun binäärisarjan:
HEX-ALLEKIRJOITUS (OFFSET 0):
5B ... 5DASCII-ESITYSTAPA: [...]
Standardointi: TOML v1.0.0 Specification
Tekniset tiedot
| Säiliöarkkitehtuuri | Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs |
| Pakkaus | Uncompressed text stream |
| Tavujärjestys (Endianness) | UTF-8 text stream |
| Väriavaruudet | N/A (Configuration File) |
| Kanavat ja rakenne | Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes |
| Suurimmat mitat | Unbounded text length |
| Läpinäkyvyys | None |
| Suoratoisto ja progressiivinen lataus | Sequential line-by-line configuration parsing |
Tekninen vertailumatriisi: TOML vs. kilpailijat
| Tekninen attribuutti | TOML (Nykyinen) | YAML | JSON | INI |
|---|---|---|---|---|
| Moniselitteisyysriski | Nolla (tiukasti yksiselitteinen määrittely) | Korkea (YAML:n 'Norja-ongelma' totuusarvobugit) | Nolla (tiukat tietotyypit) | Kohtalainen (ei virallista standardia) |
| Natiivit päivämäärä- ja aikatyypit | Natiivi RFC 3339 -päivämäärän ja -ajan tuki | Epäsuora merkkijono-/päivämääräjäsennys | Ei ole (vain merkkijonot) | Ei ole (vain merkkijonot) |
| Kommenttituki | Natiivi (#-kommentit) | Natiivi (#-kommentit) | Kommentit eivät ole sallittuja | Natiivi (; ja #-kommentit) |
| Ensisijainen ekosysteemi | Rust (Cargo), Python (PEP 518), Go | Kubernetes, Ansible, CI/CD-putket | Verkko-rajapinnat, selaimen viestintä | Perinteinen Windows, Git-asetukset |
Yleiset korruptiotilat ja heksatietojehdotusopas
Jäsennysvirhe: 'Duplicate key in table' tai 'Invalid table header'.
Perussyy: Yritys määrittää olemassa oleva avain tai taulukkonimiavaruus uudelleen asiakirjan sisällä.
Korjaus: Tarkista ja muotoile TOML-syntaksi uudelleen File2File TOML Formatter -työkalulla.
Turvallisuusanalyysi ja jäsenninhyökkäysvektorit
TOML-jäsenninten on suojattava prototyypin saastumiselta ja suorittimen ylikuormitukselta, joka johtuu patologisesta taulukoiden sisäkkäisyydestä.
Tunnetut hyökkäysvektorit
- Prototyypin saastuminen JavaScriptin TOML-jäsennissä, mikä lisää ominaisuuksia Object.prototype-kohteeseen.
- Palvelunesto hyödyntämällä syvälle sisäkkäisiä taulukkoilmoituksia.
- Rajoittamaton muistinvaraus massiivisen sisäkkäisen taulukon jäsennyksen aikana.
Parhaat puolustuskäytännöt:
Historia ja virstanpylväät
Tärkeimmät edut
- Täysin yksiselitteinen: muuntuu puhtaasti ja ennustettavasti hajautustaulukkoon ilman yllättäviä tietotyyppimuunnoksia.
- Ensiluokkainen natiivi päivämäärän ja ajan tuki (RFC 3339 -aikaleimat, päivämäärät, kellonajat) ilman merkkijonojen karkausta.
- Hyväksytty viralliseksi standardiasetusmuodoksi nykyaikaisille kielityökaluille (Rust Cargo.toml, Python pyproject.toml).
Tekniset rajoitukset
- Syvälle sisäkkäiset monitasoiset oliopuut voivat kasvaa polveileviksi verrattuna YAML:ään.
- Syntaksi taulukoiden taulukoille ([[table.array]]) saattaa olla aloittelijoille epäintuitiivinen.
- Vähemmän kompakti kuin JSON suuren läpimenon koneelta koneelle -rajapintojen tiedonsiirrossa.
Mielenkiintoisia teknisiä faktoja
- TOML:n loi Tom Preston-Werner, joka oli myös mukana perustamassa GitHubia sekä loi Gravatarin ja SemVerin (Semantic Versioning).
- Jokaisen Rust-projektin 'Cargo.toml'-tiedosto määrittää kaikki pakettiriippuvuudet ja kääntäjän liput TOML-muodossa.
- Toisin kuin JSON, TOML tukee natiivisti kommentteja (käyttäen '#' -merkkiä) ja monirivisiä merkkijonoja.
Usein kysytyt tekniset kysymykset
Mihin TOMLia käytetään?
TOMLia käytetään ohjelmistojen konfigurointiin, erityisesti Rustin Cargo.toml-tiedostossa, Pythonin pyproject.toml-tiedostossa, Go Hugo -asetuksissa ja säilötyökaluissa.
Miksi TOMLia suositaan YAML-muodon sijaan asetuksissa?
TOML vältetään YAMLin tunnetut reunaehtojen jäsennysvirheet (kuten lainaamaton 'NO', joka muuttuu totuusarvoksi false), pysyen samalla ihmisystävällisenä kommenttien ja selkeiden taulukoiden ansiosta.
Miten voin muuntaa TOMLin JSON- tai YAML-muotoon?
Voit muuntaa TOML-tiedostot JSON- tai YAML-muotoon hetkessä File2File.appilla suoraan verkkoselaimessasi.
Aiheeseen liittyvät TOML-muunnosparit
TOML-konfiguraatiotiedostojen muuntaminen JSON-muotoon kääntää ihmisystävälliset asetusmääritykset tiukaksi tietorakenteeksi, jonka verkkosovellukset voivat jäsentää välittömästi.
JSON-konfiguraatiotiedostojen muuntaminen TOML-muotoon helpottaa manuaalista muokkausta säilyttäen samalla kaiken rakenteellisen avain-arvo-datan hierarkian.