TOML-konfiguraatio (.toml)

TOML Standardi

Tom'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:

Valitse tai pudota tiedostot tähän

Yksityisesti - tiedostot eivät koskaan poistu laitteeltasi

tai liitä Ctrl+V
Tietosuojatakuu: 0 % verkkosiirtoa Ulkoisille palvelimille ei ole ladattu yhtään tavua. Kaikki käsittely tapahtui paikallisesti selaimen hiekkalaatikossa.

Otsaketunniste tavutasolla (tunnistetavut)

Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat TOML-tiedostot tarkistamalla tiedoston alun binäärisarjan:

HEKSADEKSIMAALINEN TUNNISTE (SIJAINTI 0):

5B ... 5D

ASCII-ESITYSTAPA: [...]

Standardointi: TOML v1.0.0 Specification

Tekniset tiedot

SäiliöarkkitehtuuriIhmisen luettava asetustiedosto, joka vastaa yksiselitteisesti hajautustaulua ja jossa käytetään [taulukot]-lohkoja sekä avain = arvo -pareja
PakkausPakkaamaton tekstivirta
Tavujärjestys (Endianness)UTF-8-tekstivirta
VäriavaruudetEi sovellu (asetustiedosto)
Kanavat ja rakenneTaulukot, taulukkojen taulukot, upotetut taulukot, merkkijonot, kokonaisluvut, liukuluvut, totuusarvot ja RFC 3339 -päivämäärä- ja kellonaika-arvot
Suurimmat mitatTekstin pituutta ei ole rajattu
LäpinäkyvyysEi läpinäkyvyyttä
Suoratoisto ja progressiivinen latausPeräkkäinen, rivi kerrallaan tapahtuva asetusten jäsentäminen

Tekninen vertailumatriisi: TOML vs. kilpailijat

Tekninen attribuuttiTOML (Nykyinen)YAMLJSONINI
MoniselitteisyysriskiNolla (tiukasti yksiselitteinen määrittely)Korkea (YAML:n 'Norja-ongelma' totuusarvobugit)Nolla (tiukat tietotyypit)Kohtalainen (ei virallista standardia)
Natiivit päivämäärä- ja aikatyypitNatiivi RFC 3339 -päivämäärän ja -ajan tukiEpäsuora merkkijono-/päivämääräjäsennysEi ole (vain merkkijonot)Ei ole (vain merkkijonot)
KommenttitukiNatiivi (#-kommentit)Natiivi (#-kommentit)Kommentit eivät ole sallittujaNatiivi (; ja #-kommentit)
Ensisijainen ekosysteemiRust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD-putketVerkko-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

2021TOML v1.0.0 julkaistaan virallisesti, mikä jäädyttää perussyntaksimäärittelyn.
2018Python ottaa standardikseen 'pyproject.toml'-tiedoston (PEP 518) nykyaikaiseksi rakennusasetusstandardiksi.
2013Tom Preston-Werner julkaisee TOML:n tarjotakseen puhtaan asetustiedostomuodon ilman YAML:n monimutkaisuutta.

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.