사용자 도구

사이트 도구


utils:yaml

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
utils:yaml [2018/03/05 11:58] – [1.YAML(YAML Ain't Markup Language)] taekguutils:yaml [2025/04/15 10:05] (현재) – 바깥 편집 127.0.0.1
줄 3: 줄 3:
 YAML은 YAML Ain’t Markup Language의 약자입니다. 이쪽 필드에는 이렇게 재귀를 이용해서 이름을 짓는 경우가 많은 것 같습니다. 재귀를 통해 이름을 짓는걸 보면 개발자의 위트라 할 수 있긴 한데…머리속에 ‘아재 개그’란 말이 같이 떠오르는건 왜 일까요..? YAML은 YAML Ain’t Markup Language의 약자입니다. 이쪽 필드에는 이렇게 재귀를 이용해서 이름을 짓는 경우가 많은 것 같습니다. 재귀를 통해 이름을 짓는걸 보면 개발자의 위트라 할 수 있긴 한데…머리속에 ‘아재 개그’란 말이 같이 떠오르는건 왜 일까요..?
  
-==== 2.정의 +==== 2.정의 ==== 
-  > YAML is a human friendly data serialization  +> YAML is a human friendly data serialization  
-  > standard for all programming languages.+> standard for all programming languages
 + 
 +아래 참고 자료에 있는 YAML 1.2 스펙 문서에 있는 글입니다. 스펙 문서에 보면 JSON과 XML과의 차이, 디자인 철학등에 대해 자세한 설명이 나오는데 시간이 되시는 분들은 보시면 될 것 같습니다. 
 + 
 +YAML, JSON, XML 모두 사람의 가독성을 염두에 두고 설계된 포맷이지만 YAML이 좀 더 가독성에 포커싱이 많이 되어 있습니다. 이에 따라 JSON에 비해 구조가 좀 더 복잡하지만 사람이 보기엔 좀 더 자연스러운 형태입니다. 
 + 
 +이에 따라 YAML은 설정 파일의 목적으로 많이 쓰이는 거 같습니다. 하지만 JSON이 문법이 더 단순하기 때문에 훨씬 더 많이 사용되고 있고 YAML이 이를 뒤집기는 어려워 보입니다. 어떤 포맷이든 각자 장점이 있고 자주 사용되는 곳이 있으니 필요에 따라 그저 잘 사용하면 될 것 같습니다. 
 + 
 +==== 3. 용어 및 기본 구조 ==== 
 +YAML의 기본 자료형(primitives)입니다. 
 +  * 스칼라(scalar) : 스트링 또는 숫자 
 +  * 시퀀스(sequence) : 배열 또는 리스트 
 +  * 맵핑(mapping) : 해시 또는 딕셔너리, 키(key)/값(value) 형태 
 +  * 맵핑 시 키/값은 :를 이용해서 구분합니다. ex> key: value 
 +  * 각 블록은 들여쓰기를 통해 구분 
 +  * 시퀀스는 들여쓰기와 -를 통해 표현 
 +  * #으로 시작하면 주석 
 +  * 하나의 스트림으로 여러개의 문서를 표현할 때에는 하이픈 세개(---)로 나눕니다. 마침표 세개(...)은 스트림의 끝을 나타냅니다. 
 +  * 반복되는 값은 &를 통해 alias를 설정할 수 있습니다. 
 + 
 +==== 4. 사용 예 ==== 
 +자세한 내용을 알면 좋겠지만 저는 YAML이 필요할 때 간단히 사용해보는 정도 수준으로 보려 합니다. 이정도의 목적이라면..바로 예제를 보는게 가장 좋겠죠. 아래에는 1.2 스펙 문서에 있는 내용을 그대로 옮겼습니다. 
 + 
 +===스칼라, 시퀀스, 맵핑 예제=== 
 +<code yaml> 
 +# Sequence of scalars(ball player) 
 +- Mark McGwire 
 +- Sammy Sosa 
 +- Ken Griffey 
 +  
 +# Mapping of scalars to scalars(player statics) 
 +hr:  65    # Home runs 
 +avg: 0.278 # Batting average 
 +rbi: 147   # Runs Batted In 
 +  
 +# Mapping of scalars to sequences(ball clubs in each league) 
 +american: 
 +  - Boston Red Sox 
 +  - Detroit Tigers 
 +  - New York Yankees 
 +national: 
 +  - New York Mets 
 +  - Chicago Cubs 
 +  - Atlanta Braves 
 +  
 +# Sequence of mappings(players' statics) 
 +
 +  name: Mark McGwire 
 +  hr:   65 
 +  avg:  0.278 
 +
 +  name: Sammy Sosa 
 +  hr:   63 
 +  avg:  0.288 
 +  
 +# in-line flow style for compact notation 
 +- [name        , hr, avg  ] 
 +- [Mark McGwire, 65, 0.278] 
 +- [Sammy Sosa  , 63, 0.288] 
 +  
 +Mark McGwire: {hr: 65, avg: 0.278} 
 +Mark McGwire: {hr: 65, avg: 0.278} 
 +Sammy Sosa: { 
 +    hr: 63, 
 +    avg: 0.288 
 +  } 
 +</code> 
 +===스트림 내 여러 문서 표현의 예=== 
 +==Two Documents in a Stream(each with a leading comment)== 
 +<code yaml> 
 +# Ranking of 1998 home runs 
 +--- 
 +- Mark McGwire 
 +- Sammy Sosa 
 +- Ken Griffey 
 + 
 +# Team ranking 
 +--- 
 +- Chicago Cubs 
 +- St Louis Cardinals 
 +</code> 
 +==Play by Play Feed from a Game== 
 +<code yaml> 
 +--- 
 +time: 20:03:20 
 +player: Sammy Sosa 
 +action: strike (miss) 
 +... 
 +--- 
 +time: 20:03:47 
 +player: Sammy Sosa 
 +action: grand slam 
 +... 
 +</code> 
 +===앵커와 별명(alias)=== 
 +==Node for “Sammy Sosa”appears twice in this document== 
 +<code yaml> 
 +--- 
 +hr: 
 +  - Mark McGwire 
 +  # Following node labeled SS 
 +  - &amp;SS Sammy Sosa 
 +rbi: 
 +  - *SS # Subsequent occurrence 
 +  - Ken Griffey 
 +</code> 
 +==== 5. 참고 자료 ==== 
 +[[http://www.yaml.org/|YAML]] 
 +YAML 공식 페이지입니다. 
 + 
 +[[http://yaml.org/spec/1.0/|YAML 1.0 (1st Edition)]] 
 +YAML 1.0의 스펙 문서입니다. YAML에 대한 전반적인 설명을 볼 수 있습니다. 
 + 
 +[[http://www.yaml.org/spec/1.2/spec.html|YAML 1.2 (3rd Edition)]] 
 +YAML 1.2의 스펙 문서입니다. 
 + 
 +[[https://ko.wikipedia.org/wiki/YAML|YAML – 위키백과]] 
 +YAML의 한글 위키 페이지입니다.
utils/yaml.1520251113.txt.gz · 마지막으로 수정됨: 2025/04/15 10:05 (바깥 편집)