프로그래밍을 하다 보면 실제 언어로 구현된 파일뿐만 아니라 어떤 데이터나 환경 설정 등이 필요한 경우들이 있다. 그럴 때 필요한 것이 특정한 파일 형식이다. 내가 정한 문법대로 내 프로그램에서만 사용해도 상관없지만 다른 프로그램들과의 호환성을 위해서는 많이 사용되는 형식을 따르면 훨씬 더 활용도가 높아질 것이다. 대표적인 파일 형식들에 대해서 알아보고 어떻게 사용하는지 알아보도록 하겠다. 첫 번째로 YAML 파일 형식과 문법에 대해서 알아보겠다.
YAML이란?
yml 이나 yaml과 같은 확장자를 가진 파일이다. 출력 가능한 유니코드 문자 집합(UTF-8, UTF-16 등)을 이용한다.
다른 시스템과 상호작용할 수 있는 데이터를 표현하는 다른 형식인 XML이나 JSON보다는 읽기 쉽게 표현할 수 있다.
XML과 JSON에 비해 좀 더 사람 친화적으로 작성할 수 있어서 가독성을 높였다고 한다. 그래서 고급 컴퓨터 언어에 친화적이고 최근에 다양한 고급언어를 사용하는 시스템에서 굉장히 많이 사용하고 있는 것 같다.
VS Code YAML 확장 설치
VS Code에서 YAML 을 편리하게 작성하고 검증해 보기 위해 확장을 설치했다. YAML와 learn-yaml 확장이다.
실시간으로 검증할 수도 있고 Ctrl+Shift+O 나 Ctrl+Space 와 같은 기능으로 탐색이나 추천 등이 가능하다.
YAML의 간단한 문법
---
doe: "a deer, a female deer"
ray: "a drop of golden sun"
pi: 3.14159
xmas: true
french-hens: 3
calling-birds:
- huey
- dewey
- louie
- fred
xmas-fifth-day:
calling-birds: four
french-hens: 3
golden-rings: 5
partridges:
count: 1
location: "a pear tree"
turtle-doves: two
출처 : https://www.cloudbees.com/blog/yaml-tutorial-everything-you-need-get-started
문서의 시작과 끝
- 문서는 --- 으로 시작하고 ... 으로 끝을 표시할 수 있다. 하지만 둘 다 굳이 사용하지 않아도 된다.
구분(인덴트)
- 각 개념/레벨별로 구분은 띄어쓰기 2개 혹은 4개로 할 수 있다.
- 너무 길어지지 않게 일반적으로 2개를 권장한다.
데이터의 선언
- : 을 기준으로 key: value 의 형태로 데이터를 표현한다.
- : 뒤에는 무조건 띄어쓰기를 해야 한다. 아래 띄어쓰기를 안 했을 때 오류가 나오는 것을 볼 수 있다.
- { } 와 같은 형태로 저장도 가능하다.
데이터 자료형
- 자료형은 int, bool, string을 지원한다.
int_type: 0
bool_type: true
string_type: "test"
- Object는 아래 두 가지 형태가 가능하다.
object_type:
object_1: "first"
object_2: "second"
object_type2: {
object_1: "first",
object_2: "second"
}
- List는 아래와 같이 작성할 수 있다.
list_type:
- list1
- list2
list_type2: [
list1, list2
]
텍스트 표현
- 여러 줄을 표시할 때 | 를 사용하면 실제로 줄 바꿈이 포함되어서 저장된다.
- 한 줄로 다 붙이고 싶을 때는 > 를 사용한다.
multi_line: |
I'm growing-dev.
Let's study!
single_line: >
I'm
growing-dev.
기타 다른 문법
- 주석은 # 로 작성한다.
- 반복되는 변수를 저장하고 사용할 수 있는 alias 기능이 있다.
service1:
config: &service_config
env: prod
retries: 3
version: 4.8
service2:
config: *service_config
service3:
config: *service_config
출처 : https://spacelift.io/blog/yaml
service_config 변수에 env, retries, version 정보를 포함시키고, 나머지 service에 공통적으로 활용하는 예제이다.
결론
YAML 형식은 파이썬 형식과 매우 흡사하게 확실히 사용자 친화적이며 고급 언어와 맥락을 같이하는 것으로 보인다.
더 이상의 특별한 형식은 많이 추가가 되지 않을 것 같다. YAML을 잘 이해하고 몇 번 작성해 보면 파일과 데이터를 편하게 다룰 수 있을 것 같다.
'개발 > 개발 공통' 카테고리의 다른 글
[파일 형식] 마크다운(Markdown) 파일에 대해서 (0) | 2023.02.12 |
---|---|
[파일 형식] JSON 파일의 형식과 문법에 대해서 (1) | 2023.02.11 |
[도서 리뷰] 임베디드 C를 위한 TDD (0) | 2023.01.19 |
[도서 리뷰] 개발자로 살아남기 : 30년을 주도하는 9가지 필수 기술 (0) | 2023.01.19 |
[Linux] shell 자주 쓰는 명령어를 정리해 보자 (0) | 2023.01.17 |