TOML-konfiguraatio (.toml)
TOML StandardiTom's Obvious Minimal Language (TOML) on yksiselitteinen, 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 selaimessa toimiva muunnin, jolla voit muuntaa tiedostoja muodosta TOML muotoon JSON. Muunna tiedostot hetkessä laitteellasi.
Tarkastele tiedostoa ja sen metatietoja
Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat TOML-tiedostot tarkistamalla tiedoston alun binäärisarjan:
Otsaketunniste tavutasolla (tunnistetavut)
Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat TOML-tiedostot tarkistamalla tiedoston alun binäärisarjan:
HEKSADEKSIMAALINEN TUNNISTE (SIJAINTI 0):
5B ... 5DASCII-ESITYSTAPA: [...]
Standardointi: TOML v1.0.0 Specification
Tekniset tiedot
| Säiliöarkkitehtuuri | Ihmisen luettava asetustiedosto, joka vastaa yksiselitteisesti hajautustaulua ja jossa käytetään [taulukot]-lohkoja sekä avain = arvo -pareja |
| Pakkaus | Pakkaamaton tekstivirta |
| Tavujärjestys (Endianness) | UTF-8-tekstivirta |
| Väriavaruudet | Ei sovellu (asetustiedosto) |
| Kanavat ja rakenne | Taulukot, taulukkojen taulukot, upotetut taulukot, merkkijonot, kokonaisluvut, liukuluvut, totuusarvot ja RFC 3339 -päivämäärä- ja kellonaika-arvot |
| Suurimmat mitat | Tekstin pituutta ei ole rajattu |
| Läpinäkyvyys | Ei läpinäkyvyyttä |
| Suoratoisto ja progressiivinen lataus | Peräkkäinen, rivi kerrallaan tapahtuva asetusten jäsentäminen |
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 vioittumistavat ja heksadesimaalinen palautusopas
Jäsennysvirhe: 'Duplicate key in table' tai 'Invalid table header'.
Perussyy: Yritys määrittää olemassa oleva avain tai taulukon nimiavaruus uudelleen asiakirjan sisällä.
Korjaus: Tarkista ja muotoile TOML-syntaksi uudelleen File2File.app TOML Formatter -työkalulla.
Tietoturva-analyysi ja tiedostojäsentimien hyökkäysvektorit
TOML-jäsentimien on suojauduttava prototyyppien saastumiselta ja suorittimen ylikuormitukselta, jota voi aiheuttaa poikkeuksellisen syvä taulukoiden sisäkkäisyys.
Tunnetut hyökkäysvektorit
- Prototyypin saastuminen JavaScriptin TOML-jäsennissä, mikä lisää ominaisuuksia Object.prototype-kohteeseen.
- Palvelunestohyökkäys syvästi sisäkkäisillä taulukkomäärityksillä.
- Rajoittamaton muistinvaraus massiivisen sisäkkäisen taulukon jäsennyksen aikana.
Tietoturvan parhaat käytännöt: Tarkista taulukoiden sisäkkäisyyden rajat ja käytä sanakirjaolioita, jotka ovat suojattuja prototyyppien saastumiselta.
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.
- Taulukoiden taulukoita ([[table.array]]) koskeva syntaksi voi olla aloittelijoille vaikeaselkoinen.
- Vähemmän kompakti kuin JSON, kun dataa siirretään paljon koneiden välillä rajapintojen kautta.
Mielenkiintoisia teknisiä faktoja
- TOML:n loi Tom Preston-Werner, joka oli myös perustamassa GitHubia ja loi Gravatarin sekä SemVerin (Semantic Versioning).
- Cargo-paketit käyttävät Cargo.toml-tiedostoa metatietojen, riippuvuuksien ja kohteiden määrittämiseen; muita koontijärjestelmiä käyttävissä Rust-projekteissa voi olla eri tiedostoja.
- Toisin kuin JSON, TOML tukee kommentteja (käyttämällä #-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älttää 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 muuntaa ihmisen luettavissa olevat asetukset tarkkarajaiseksi tietorakenteeksi, jonka verkkosovellukset voivat jäsentää välittömästi.
JSON-konfiguraatiotiedostojen muuntaminen TOML-muotoon helpottaa manuaalista muokkausta säilyttäen samalla kaikki rakenteiset avain-arvohierarkiat.