자바스크립트를 활성화 해주세요

h009 yaml이 좋나요 Toml이 좋나요

 ·  ☕ 3 min read

    hugo의 config는 toml, yaml, json 이 세가지 포맷을 사용할 수가 있습니다. 어느것을 사용해도 상관없지만, Default는 toml을 사용합니다. 각각의 파일포맷이 객관적으로 어떤 특성을 가지고 있는 지 살펴봅니다.

    json

    json은 Object를 serializing하는 일반적인 방법으로 꽤 많이 사용되고 있었습니다만, 객체의 Property가 증가하거나 객체의 수가 많아지면서 보다 더 간편한 설정 포맷을 찾는 사람들이 늘어나고 있습니다. 저도 xml에서 json으로 넘어올 때는, 아. 대세는 json이구나 하고 생각했었는데, 실제로 json을 configuration 포맷으로 사용하려면 편집시에 좀 번거로운 부분을 발견하곤 합니다.

    • comment도 안되죠.
    • heredoc도 안되죠. 특히 private key를 json으로 적으면…
    • escape도 사용하기 불편하죠.
    • comma를 잊어서 로딩 실패한 적 없으세요? 저는 많았습니다.

    cson

    cson은 coffee script로, 다시 javascript의 json으로 변환되는 포맷입니다. 조금 json보다는 낫다 싶었지만, 문제는 cson까지 지원하는 라이브러리는 그다지 많지 않습니다. 우선 hugo는 지원하지 않습니다.

      books: [
        id: 'bk102'
        author: 'Crockford, Douglas'
        title: 'JavaScript: The Good Parts'
        genre: 'Computer'
        price: 29.99
        publish_date: '2008-05-01'
        description: 'Unearthing the Excellence in JavaScript'
      ]
    

    toml

    https://github.com/toml-lang/toml
    Tom이라는 사람이 만들었다고 해서 toml입니다. 풀네임은 Tom's Obvious, Minimal Language. 입니다. 이 문서에 대한 사양은 여기에 존재합니다. 특히 Rust 커뮤니티에서 많이 사용합니다. 생긴 모습은 ini와 비슷합니다.

    toml은 yaml보다 낫습니다만, visually hierarchical하지는 않습니다.

    powershell로 toml 다루는 예제는 없을까요?

    아직은 없습니다.

    yaml

    kubernetes를 사용하려면 yaml 파일을 다루는 일이 많습니다. yaml 사양은 여기에서 살펴볼 수 있습니다. docker도 사용하고, ansible도 사용합니다.

    하지만, 이런 얘기 들어본 적이 있으십니까?

    YAML is complicated and ambiguous.

    powershell로 yaml을 다루는 모듈은 없을까요?

    있습니다.
    https://github.com/cloudbase/powershell-yaml
    cloudbase는 openstack을 윈도우즈에서 돌리는 등, 윈도우즈OS로 오픈소스의 클라우드 서비스를 돌리는 툴등을 제공하는 커뮤니티입니다.

    xml

    xml은.. 너무나 verbose해서 요즘은 잘 쓰이지 않는 포맷입니다.

    psd1

    조금 번외의 이야기입니다만, Powershell은 이보다 가장 괜찮은 포맷을 우연히도 만들었습니다.

    • python처럼 계층형으로 적습니다. visually hierarchical 라고 하는 것 같습니다. 이건 편리합니다.
    • 커맨트도 지원합니다. inline, block 모두 지원합니다.
    • 타입을 지원합니다. integer, float, boolean, string, array 그리고 map 까지.
    • 백쿼트 문자를 지원합니다. escape할 필요가 없는 거죠.
    • 멀티라인과 here-strings도 지원합니다.
    • 파워쉘은 이를 지원하는 함수를 이미 갖추고 있습니다. Import-PowerShellDataFile
      Powershell에 관심이 있다면, config파일의 포맷대용으로 적절하다고 생각합니다.

    레퍼런스

    공유하기

    tkim
    글쓴이
    tkim
    Software Engineer