TOML 설정 (.toml)

TOML 표준

TOML(Tom's Obvious Minimal Language)은 GitHub의 공동 창립자 Tom Preston-Werner가 만든 명확하고 인간 중심적인 설정 형식으로, Rust(Cargo) 및 Python(pyproject.toml)을 포함한 현대 프로그래밍 생태계 전반에서 널리 채택되고 있습니다.

TOML을(를) JSON(으)로 변환

무료 브라우저 내 TOML-JSON 변환기. 기기에서 파일을 즉시 변환하세요.

검사 및 메타데이터

운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 TOML 파일을 식별합니다:

여기에 파일을 선택하거나 놓으세요

100% 브라우저 내 프라이버시 변환 - 파일이 기기를 절대 떠나지 않습니다

또는 붙여넣기 Ctrl+V
제로 네트워크 전송 프라이버시 보장: 외부 서버로 업로드된 데이터 0바이트. 모든 처리는 브라우저 샌드박스내에서 로컬로 수행되었습니다.

바이트 단위 헤더 시그니처 (매직 바이트)

운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 TOML 파일을 식별합니다:

16진수 시그니처 (오프셋 0):

5B ... 5D

ASCII 표현: [...]

표준화: TOML v1.0.0 Specification

기술 사양

컨테이너 아키텍처Human-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
압축Uncompressed text stream
바이트 엔디안UTF-8 text stream
색 공간N/A (Configuration File)
채널 및 구조Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
최대 크기Unbounded text length
투명도None
스트리밍 및 프로그레시브Sequential line-by-line configuration parsing

기술 비교 매트릭스: TOML 대 경쟁사

기술적 속성TOML (현재)YAMLJSONINI
모호성 위험없음 (엄격하게 명확한 사양)높음 (YAML '노르웨이 문제' 부울 버그)없음 (엄격한 데이터 형식)보통 (공식 표준 없음)
네이티브 날짜/시간 형식네이티브 RFC 3339 날짜 및 시간 지원암시적 문자열 / 날짜 구문 분석없음 (문자열만 지원)없음 (문자열만 지원)
주석 지원네이티브 (# 주석)네이티브 (# 주석)주석 허용 안 함네이티브 (; 및 # 주석)
기본 생태계Rust (Cargo), Python (PEP 518), GoKubernetes, Ansible, CI/CD 파이프라인웹 API, 브라우저 통신레거시 Windows, Git 설정

일반적인 손상 모드 및 헥스 복구 가이드

구문 분석기 오류: 'Duplicate key in table' 또는 'Invalid table header'.

근본 원인: 문서 내에서 기존 키 또는 테이블 네임스페이스를 다시 정의하려고 시도했습니다.

복구: File2File TOML 포맷터를 사용하여 TOML 구문을 검증하고 다시 형식화하세요.

보안 분석 및 파서 공격 벡터

TOML 구문 분석기는 프로토타입 오염 및 비정상적인 테이블 배열 중첩으로 인한 CPU 고갈을 방지해야 합니다.

알려진 공격 벡터

  • JavaScript TOML 구문 분석기의 프로토타입 오염으로 Object.prototype에 속성 주입.
  • 깊게 중첩된 테이블 배열 선언을 통한 서비스 거부(DoS).
  • 대규모 인라인 배열 구문 분석 중 제한 없는 메모리 할당.

방어적 모범 사례:

역사적 배경 및 주요 이력

2021TOML v1.0.0이 공식 출시되어 핵심 구문 사양이 확정되었습니다.
2018Python이 현대적인 빌드 설정 표준으로 'pyproject.toml'(PEP 518)을 표준화합니다.
2013Tom Preston-Werner가 YAML의 복잡성 없는 깔끔한 설정 형식을 제공하기 위해 TOML을 발표합니다.

주요 장점

  • 완벽한 명확성: 놀라운 형식 강제 없이 해시 테이블에 깔끔하고 예측 가능하게 매핑됩니다.
  • 문자열 이스케이프가 필요 없는 일급(First-class) 네이티브 날짜/시간 지원(RFC 3339 타임스탬프, 날짜, 시간).
  • 현대적인 언어 도구의 공식 표준 설정 형식으로 채택됨 (Rust Cargo.toml, Python pyproject.toml).

기술적 제한 사항 및 단점

  • 깊게 중첩된 다중 수준 객체 트리는 YAML에 비해 장황해질 수 있습니다.
  • 테이블 배열 구문([[table.array]])은 초보자에게 직관적이지 않을 수 있습니다.
  • 처리량이 많은 머신 간 API 데이터 교환의 경우 JSON보다 간결하지 않습니다.

흥미로운 기술적 상식

  • TOML은 GitHub을 공동 창립하고 Gravatar 및 SemVer(유의적 버저닝)를 만든 Tom Preston-Werner가 만들었습니다.
  • 모든 Rust 프로젝트의 'Cargo.toml' 파일은 TOML 형식으로 모든 패키지 종속성과 컴파일러 플래그를 지정합니다.
  • JSON과 달리 TOML은 주석('#' 문자 사용)과 여러 줄 문자열을 기본적으로 지원합니다.

자주 묻는 기술 질문

TOML은 어디에 사용되나요?

TOML은 소프트웨어 설정에 사용되며, 특히 Rust의 Cargo.toml, Python의 pyproject.toml, Go Hugo 설정 및 컨테이너 도구에서 두드러지게 사용됩니다.

설정 파일로 YAML보다 TOML이 선호되는 이유는 무엇인가요?

TOML은 따옴표가 없는 'NO'가 부울 거짓(false)으로 바뀌는 등의 악명 높은 YAML의 엣지 케이스 파싱 버그를 방지하면서도, 주석과 명확한 테이블을 통해 사람이 읽기 편하게 유지됩니다.

TOML을 JSON이나 YAML로 어떻게 변환할 수 있나요?

웹 브라우저에서 직접 File2File.app을 사용하여 TOML 파일을 JSON 또는 YAML로 즉시 변환할 수 있습니다.