YAML เชเซ‡เชจ เชฎเชพเชŸเซ‡ 10 เชชเช—เชฒเชพเช‚

เช†เชชเชฃเซ‡ เชฌเชงเชพ เชœเชตเชพเชฌเซ€เชฌเชฒเชจเซ‡ เชชเซเชฐเซ‡เชฎ เช•เชฐเซ€เช เช›เซ€เช, เชชเชฐเช‚เชคเซ เชœเชตเชพเชฌเซ€ YAML เช›เซ‡. เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเซ‹ เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เชซเซ‹เชฐเซเชฎเซ‡เชŸเซเชธ เช›เซ‡: เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เชธเซ‚เชšเชฟ, เชชเชฐเชฟเชฎเชพเชฃ-เชฎเซ‚เชฒเซเชฏ เชœเซ‹เชกเซ€เช“, INI เชซเชพเช‡เชฒเซ‹, YAML, JSON, XML เช…เชจเซ‡ เช…เชจเซเชฏ เช˜เชฃเซ€. เชœเซ‹ เช•เซ‡, เชคเซ‡ เชฌเชงเชพเชฎเชพเช‚เชฅเซ€ เช˜เชฃเชพ เช•เชพเชฐเชฃเซ‹เชธเชฐ, YAML เช˜เชฃเซ€เชตเชพเชฐ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชฎเซเชถเซเช•เซ‡เชฒ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เชตเช‚เชถเชตเซ‡เชฒเซ‹ เชฎเซ‚เชฒเซเชฏเซ‹ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ€ เชคเชพเชœเช—เซ€เชญเชฐเซ€ เชฒเช˜เซเชคเซเชคเชฎเชคเชพ เช…เชจเซ‡ เชชเซเชฐเชญเชพเชตเชถเชพเชณเซ€ เช•เซเชทเชฎเชคเชพเช“ เชนเซ‹เชตเชพ เช›เชคเชพเช‚, YAML เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เชคเซ‡เชจเชพ เชชเชพเชฏเชฅเซ‹เชจ เชœเซ‡เชตเชพ เช‡เชจเซเชกเซ‡เชจเซเชŸเซ‡เชถเชจเชจเชพ เช…เชญเชฟเช—เชฎเชฅเซ€ เชนเซ‡เชฐเชพเชจ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

YAML เชเซ‡เชจ เชฎเชพเชŸเซ‡ 10 เชชเช—เชฒเชพเช‚

เชœเซ‹ YAML เชคเชฎเชจเซ‡ เชจเชพเชฐเชพเชœ เช•เชฐเซ‡, เชคเซ‹ เชคเชฎเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹-เช…เชจเซ‡ เชคเชฎเชพเชฐเซ‡ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช! - เชคเชฎเชพเชฐเซ€ เชจเชฟเชฐเชพเชถเชพเชจเซ‡ เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เชธเซเชคเชฐ เชธเซเชงเซ€ เช˜เชŸเชพเชกเชตเชพ เช…เชจเซ‡ YAML เชธเชพเชฅเซ‡ เชชเซเชฐเซ‡เชฎเชฎเชพเช‚ เชชเชกเชตเชพ เชฎเชพเชŸเซ‡ เชจเซ€เชšเซ‡เชจเชพ 10 เชชเช—เชฒเชพเช‚ เชฒเซ‹. เช† เชธเซ‚เชšเชฟเชจเซ‡ เช…เชจเซเช•เซ‚เชณ เชนเซ‹เชตเชพเชฅเซ€, เช…เชฎเชพเชฐเซ€ เชฆเชธ เชŸเซ€เชชเซเชธเชจเซ‡ เชถเชฐเซ‚เช†เชคเชฅเซ€ เช•เซเชฐเชฎเชพเช‚เช•เชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เช…เชฎเซ‡ เชงเซเชฏเชพเชจ เช…เชจเซ‡ เช†เชงเซเชฏเชพเชคเซเชฎเชฟเช• เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธเชจเซ‡ เช‡เชšเซเช›เชพเชฅเซ€ เช‰เชฎเซ‡เชฐเซ€เชถเซเช‚ ๐Ÿ˜‰

0. เชคเชฎเชพเชฐเชพ เชธเช‚เชชเชพเชฆเช•เชจเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‹

เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เชฏเชพ เชŸเซ‡เช•เซเชธเซเชŸ เชเชกเชฟเชŸเชฐ เช›เซ‡ เชคเซ‡เชจเชพเชฅเซ€ เช•เซ‹เชˆ เชซเชฐเช• เชชเชกเชคเซ‹ เชจเชฅเซ€, YAML เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฆเชพเชš เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชเช• เชชเซเชฒเช—เช‡เชจ เช›เซ‡. เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชจเชฅเซ€, เชคเซ‹ เชคเซ‡เชจเซ‡ เชคเชฐเชค เชœ เชถเซ‹เชงเซ‹ เช…เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹. เชคเชฎเซ‡ YAML เชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฆเชฐเซ‡เช• เชตเช–เชคเซ‡ เชถเซ‹เชงเชตเชพเชฎเชพเช‚ เช…เชจเซ‡ เชธเซ‡เชŸเช…เชช เช•เชฐเชตเชพเชฎเชพเช‚ เชตเชฟเชคเชพเชตเซ‡เชฒเซ‹ เชธเชฎเชฏ เช˜เชฃเซ€ เชตเช–เชค เชšเซ‚เช•เชตเชถเซ‡.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเช‚เชชเชพเชฆเช• เชเชŸเชฎ เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเซ‡ YAML เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ GNU Emacs เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เชชเซ‡เช•เซ‡เชœเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชชเชกเชถเซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, yaml-เชฎเซ‹เชก.

YAML เชเซ‡เชจ เชฎเชพเชŸเซ‡ 10 เชชเช—เชฒเชพเช‚

YAML เชฎเซ‹เชก เช…เชจเซ‡ เชกเชฟเชธเซเชชเซเชฒเซ‡ เชธเซเชชเซ‡เชธเชฎเชพเช‚ Emacs.

เชœเซ‹ เชคเชฎเชพเชฐเชพ เชฎเชจเชชเชธเช‚เชฆ เชธเช‚เชชเชพเชฆเช• เชชเชพเชธเซ‡ YAML เชฎเซ‹เชก เชจเชฅเซ€, เชคเซ‹ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€เชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชธเชฎเชธเซเชฏเชพเช“ เชนเชฒ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเซเชŸเชพเชจเซเชกเชฐเซเชก เชœเซ€เชจเซ‹เชฎ เชŸเซ‡เช•เซเชธเซเชŸ เชเชกเชฟเชŸเชฐ Gedit เชชเชพเชธเซ‡ YAML เชฎเซ‹เชก เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชคเซ‡ YAML เชธเชฟเชจเซเชŸเซ‡เช•เซเชธเชจเซ‡ เชนเชพเช‡เชฒเชพเช‡เชŸ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเชจเซ‡ เช‡เชจเซเชกเซ‡เชจเซเชŸเซ‡เชถเชจ เชธเชพเชฅเซ‡ เช•เชพเชฎเชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡:

YAML เชเซ‡เชจ เชฎเชพเชŸเซ‡ 10 เชชเช—เชฒเชพเช‚

Gedit เชฎเชพเช‚ เช‡เชจเซเชกเซ‡เชจเซเชŸ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช.

เชเช• เชชเซเชฒเช—เช‡เชจ เชกเซเชฐเซ‹เชธเซเชชเซ‡เชธ Gedit เชฎเชพเชŸเซ‡, เชœเช—เซเชฏเชพเช“ เชฌเชฟเช‚เชฆเซเช“ เชคเชฐเซ€เช•เซ‡ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡, เช‡เชจเซเชกเซ‡เชจเซเชŸเซ‡เชถเชจ เชธเซเชคเชฐเซ‹ เชธเชพเชฅเซ‡ เช…เชธเซเชชเชทเซเชŸเชคเชพเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‡ เช›เซ‡.

เชฌเซ€เชœเชพ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เชคเชฎเชพเชฐเชพ เชฎเชจเชชเชธเช‚เชฆ เชธเช‚เชชเชพเชฆเช• เชตเชฟเชถเซ‡ เชถเซ€เช–เชตเชพเชฎเชพเช‚ เชธเชฎเชฏ เชชเชธเชพเชฐ เช•เชฐเซ‹. YAML เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡ เช…เชฅเชตเชพ เชคเซ‡เชจเซ‹ เชตเชฟเช•เชพเชธ เชธเชฎเซเชฆเชพเชฏ เชถเซเช‚ เช“เชซเชฐ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเซ‹ เช…เชจเซ‡ เชคเซ‡ เชคเช•เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹. เชคเชฎเซ‡ เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เชคเซ‡เชจเซ‹ เช…เชซเชธเซ‹เชธ เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚.

1. เชฒเชฟเช‚เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹

เช†เชฆเชฐเซเชถ เชฐเซ€เชคเซ‡, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเช“ เช…เชจเซ‡ เชฎเชพเชฐเซเช•เช…เชช เชญเชพเชทเชพเช“ เช…เชจเซเชฎเชพเชจเชฟเชค เชตเชพเช•เซเชฏเชฐเชšเชจเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เช•เซ‹เชฎเซเชชเซเชฏเซเชŸเชฐ เช…เชจเซเชฎเชพเชจเชฟเชคเชคเชพเชฎเชพเช‚ เชธเชพเชฐเชพ เช›เซ‡, เชคเซ‡เชฅเซ€ เชœ เช–เซเชฏเชพเชฒ เช†เชตเซ‡ เช›เซ‡ เชฒเชฟเชจเซเชŸเซ‡เชฐเชพ. เชœเซ‹ เชคเซ‡เชจเชพ เช…เชธเซเชคเชฟเชคเซเชตเชจเชพ 40 เชตเชฐเซเชทเซ‹เชฎเชพเช‚ เชคเซ‡ เชคเชฎเชพเชฐเชพเชฅเซ€ เชชเชธเชพเชฐ เชฅเชˆ เช—เชฏเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเซ‡ เชนเชœเซ€ เชชเชฃ YAML เชฒเชฟเช‚เชŸเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชจเชฅเซ€, เชคเซ‹ เชชเช›เซ€ เชฏเชพเชฎเชฒเชฟเชจเซเชŸเชจเซ‡ เช…เชœเชฎเชพเชตเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡.

เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‹ เชฏเชพเชฎเชฒเชฟเชจเซเชŸ เชคเชฎเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค Linux เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฎเชพเช‚ Red Hat Enterprise Linux 8 เช…เชฅเชตเชพ Fedora เชคเซ‡ เช† เชœเซ‡เชฎ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

$ sudo dnf install yamllint

เชชเช›เซ€ เชคเชฎเซ‡ เช–เชพเชฒเซ€ yamllint เชšเชฒเชพเชตเซ‹, เชคเซ‡เชจเซ‡ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ YAML เชซเชพเช‡เชฒ เชชเชธเชพเชฐ เช•เชฐเซ‹. เชœเซ‹ เชคเชฎเซ‡ เชฒเซ€เช‚เชŸเชฐเชฎเชพเช‚ เชญเซ‚เชฒ เชธเชพเชฅเซ‡ เชซเชพเช‡เชฒ เชชเชธเชพเชฐ เช•เชฐเซ‹ เช›เซ‹ เชคเซ‹ เชคเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชฏ เช›เซ‡:

$ yamllint errorprone.yaml
errorprone.yaml
23:10     error    syntax error: mapping values are not allowed here
23:11     error    trailing spaces  (trailing-spaces)

เชกเชพเชฌเซ€ เชฌเชพเชœเซเชจเซ€ เชธเช‚เช–เซเชฏเชพเช“ เชธเชฎเชฏ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชญเซ‚เชฒเชจเชพ เช•เซ‹เช“เชฐเซเชกเชฟเชจเซ‡เชŸเซเชธ เช›เซ‡: เชชเช‚เช•เซเชคเชฟ เช…เชจเซ‡ เช•เซ‰เชฒเชฎ เชจเช‚เชฌเชฐ. เชญเซ‚เชฒเชจเซเช‚ เชตเชฐเซเชฃเชจ เชคเชฎเชจเซ‡ เช•เช‚เชˆเชชเชฃ เช•เชนเซ‡เชถเซ‡ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชฌเชฐเชพเชฌเชฐ เชœเชพเชฃเซ‹ เช›เซ‹ เช•เซ‡ เชคเซ‡ เช•เซเชฏเชพเช‚ เช›เซ‡. เช•เซ‹เชกเชฎเชพเช‚ เชซเช•เซเชค เช† เชธเซเชฅเชพเชจเชจเซ‡ เชœเซเช“, เช…เชจเซ‡ เชธเช‚เชญเชตเชคเชƒ เชฌเชงเซเช‚ เชธเซเชชเชทเซเชŸ เชฅเชˆ เชœเชถเซ‡.

เชœเซเชฏเชพเชฐเซ‡ yamllint เชจเซ‡ เชซเชพเชˆเชฒเชฎเชพเช‚ เช•เซ‹เชˆ เชญเซ‚เชฒเซ‹ เชฎเชณเชคเซ€ เชจเชฅเซ€, เชคเซเชฏเชพเชฐเซ‡ เชธเซเช•เซเชฐเซ€เชจ เชชเชฐ เช•เช‚เชˆเชชเชฃ เช›เชพเชชเชตเชพเชฎเชพเช‚ เช†เชตเชคเซเช‚ เชจเชฅเซ€. เชœเซ‹ เช†เชตเซ€ เชฎเซŒเชจ เชคเชฎเชจเซ‡ เชกเชฐเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเชจเซ‡ เชฅเซ‹เชกเซ‹ เชตเชงเซ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชœเซ‹เชˆเช เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชคเชฎเซ‡ เชกเชฌเชฒ เชเชฎเซเชชเชฐเชธเซ‡เชจเซเชก (&&) เชฆเซเชตเชพเชฐเชพ เช•เชจเซเชกเชฟเชถเชจเชฒ เช‡เช•เซ‹ เช•เชฎเชพเชจเซเชก เชธเชพเชฅเซ‡ เชฒเชฟเช‚เชŸเชฐ เชšเชฒเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡เชฎ เช•เซ‡:

$ yamllint perfect.yaml && echo "OK"
OK

POSIX เชฎเชพเช‚, เชกเชฌเชฒ เชเชฎเซเชชเชฐเชธเซ‡เชจเซเชก เชซเชพเชฏเชฐ เชฅเชพเชฏ เช›เซ‡ เชœเซ‹ เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เชœเซ‹ เชชเชนเซ‡เชฒเชพเชจเซ‹ เช†เชฆเซ‡เชถ 0 เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡. เช…เชจเซ‡ yamllint เชฎเชพเชคเซเชฐ เชฎเชณเซ‡เชฒเซ€ เชญเซ‚เชฒเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชจเชพ เช•เชพเชฐเชฃเซ‡ เช† เชธเช‚เชชเซ‚เชฐเซเชฃ เชถเชฐเชคเซ€ เชฐเชšเชจเชพ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡.

2. Python เชฎเชพเช‚ เชฒเช–เซ‹, YAML เชฎเชพเช‚ เชจเชนเซ€เช‚

เชœเซ‹ YAML เช–เชฐเซ‡เช–เชฐ เชคเชฎเชจเซ‡ เช—เซเชธเซเชธเซ‡ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชซเช•เซเชค เชคเซ‡เชฎเชพเช‚ เชฒเช–เชถเซ‹ เชจเชนเซ€เช‚, เชถเชพเชฌเซเชฆเชฟเช• เชฐเซ€เชคเซ‡. เชเชตเซเช‚ เชฌเชจเซ‡ เช›เซ‡ เช•เซ‡ YAML เช เชเช•เชฎเชพเชคเซเชฐ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช›เซ‡ เชœเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชฎเชœเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชชเชฃ, YAML เชซเชพเช‡เชฒ เชฌเชจเชพเชตเชตเซ€ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€. เชคเชฎเชจเซ‡ เชœเซ‡ เช—เชฎเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชฒเช–เซ‹ เช…เชจเซ‡ เชชเช›เซ€ เช•เชจเซเชตเชฐเซเชŸ เช•เชฐเซ‹. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเชพเชฏเชฅเซ‹เชจ เชฎเชพเชŸเซ‡ เชเช• เชฎเชนเชพเชจ เชชเซเชธเซเชคเช•เชพเชฒเชฏ เช›เซ‡ เชชเซเชฏเชพเชฎเชฒ เช…เชจเซ‡ เชฌเซ‡ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฃ เชชเชฆเซเชงเชคเชฟเช“: เชธเซเชต-เชฐเซ‚เชชเชพเช‚เชคเชฐ เช…เชจเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธ เชฆเซเชตเชพเชฐเชพ เชฐเซ‚เชชเชพเช‚เชคเชฐ.

เชธเซเชต-เชฐเซ‚เชชเชพเช‚เชคเชฐ

เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชกเซ‡เชŸเชพ เชซเชพเช‡เชฒ เช เชชเชพเชฏเชฅเซ‹เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชชเชฃ เช›เซ‡ เชœเซ‡ YAML เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡. เช† เชชเชฆเซเชงเชคเชฟ เชจเชพเชจเชพ เชกเซ‡เชŸเชพ เชธเซ‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชถเซเชฐเซ‡เชทเซเช  เช…เชจเซเชฐเซ‚เชช เช›เซ‡. เชคเชฎเซ‡ เชซเช•เซเชค JSON เชกเซ‡เชŸเชพเชจเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เชตเซ‡เชฐเซ€เชเชฌเชฒเชฎเชพเช‚ เชฒเช–เซ‹, เชคเซ‡เชจเซ‡ เช†เชฏเชพเชค เชจเชฟเชฐเซเชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชชเซเชฐเชธเซเชคเชพเชตเชจเชพ เช†เชชเซ‹, เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เชซเชพเช‡เชฒเชจเชพ เช…เช‚เชคเซ‡ เชคเซเชฐเชฃ เชฒเซ€เชŸเซ€เช“ เช‰เชฎเซ‡เชฐเซ‹.

#!/usr/bin/python3	
import yaml 

d={
"glossary": {
  "title": "example glossary",
  "GlossDiv": {
	"title": "S",
	"GlossList": {
	  "GlossEntry": {
		"ID": "SGML",
		"SortAs": "SGML",
		"GlossTerm": "Standard Generalized Markup Language",
		"Acronym": "SGML",
		"Abbrev": "ISO 8879:1986",
		"GlossDef": {
		  "para": "A meta-markup language, used to create markup languages such as DocBook.",
		  "GlossSeeAlso": ["GML", "XML"]
		  },
		"GlossSee": "markup"
		}
	  }
	}
  }
}

f=open('output.yaml','w')
f.write(yaml.dump(d))
f.close

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เช† เชซเชพเช‡เชฒเชจเซ‡ Python เชฎเชพเช‚ เชšเชฒเชพเชตเซ€เช เช›เซ€เช เช…เชจเซ‡ output.yaml เชซเชพเช‡เชฒ เชฎเซ‡เชณเชตเซ€เช เช›เซ€เช:

$ python3 ./example.json
$ cat output.yaml
glossary:
  GlossDiv:
	GlossList:
	  GlossEntry:
		Abbrev: ISO 8879:1986
		Acronym: SGML
		GlossDef:
		  GlossSeeAlso: [GML, XML]
		  para: A meta-markup language, used to create markup languages such as DocBook.
		GlossSee: markup
		GlossTerm: Standard Generalized Markup Language
		ID: SGML
		SortAs: SGML
	title: S
  title: example glossary

เช† เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เชฎเชพเชจเซเชฏ YAML เช›เซ‡, เชชเชฐเช‚เชคเซ yamllint เชคเชฎเชจเซ‡ เชšเซ‡เชคเชตเชฃเซ€ เช†เชชเชถเซ‡ เช•เซ‡ เชคเซ‡ - เชฅเซ€ เชถเชฐเซ‚ เชฅเชคเซเช‚ เชจเชฅเซ€. เช เซ€เช• เช›เซ‡, เช†เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชœเชพเชคเซ‡ เชธเซเชงเชพเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชฅเชตเชพ เชชเชพเชฏเชฅเซ‹เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ เชฅเซ‹เชกเซ‹ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชฆเซเชตเชพเชฐเชพ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฃ

เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เชฎเซ‡ เชชเซเชฐเชฅเชฎ JSON เชฎเชพเช‚ เชฒเช–เซ€เช เช›เซ€เช, เช…เชจเซ‡ เชชเช›เซ€ เช•เชจเซเชตเชฐเซเชŸเชฐเชจเซ‡ เช…เชฒเช— เชชเชพเชฏเชฅเซ‹เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เชšเชฒเชพเชตเซ€เช เช›เซ€เช, เชœเซ‡ YAML เชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เช‰เชคเซเชชเชจเซเชจ เช•เชฐเซ‡ เช›เซ‡. เช…เช—เชพเช‰เชจเซ€ เชชเชฆเซเชงเชคเชฟเชจเซ€ เชคเซเชฒเชจเชพเชฎเชพเช‚, เช† เชชเชฆเซเชงเชคเชฟ เชตเชงเซ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชฎเชพเชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฃ เชกเซ‡เชŸเชพเชฅเซ€ เช…เชฒเช— เช›เซ‡.

เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ JSON เชซเชพเชˆเชฒ example.json เชฌเชจเชพเชตเซ€เช, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฒเชˆ เชถเช•เซ‹ เช›เซ‹ json.org:

{
	"glossary": {
	  "title": "example glossary",
	  "GlossDiv": {
		"title": "S",
		"GlossList": {
		  "GlossEntry": {
			"ID": "SGML",
			"SortAs": "SGML",
			"GlossTerm": "Standard Generalized Markup Language",
			"Acronym": "SGML",
			"Abbrev": "ISO 8879:1986",
			"GlossDef": {
			  "para": "A meta-markup language, used to create markup languages such as DocBook.",
			  "GlossSeeAlso": ["GML", "XML"]
			  },
			"GlossSee": "markup"
			}
		  }
		}
	  }
	}

เชชเช›เซ€ เช†เชชเชฃเซ‡ เชเช• เชธเชฐเชณ เช•เชจเซเชตเชฐเซเชŸเชฐ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฌเชจเชพเชตเซ€เชถเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ json2yaml.py เชจเชพเชฎ เชนเซ‡เช เชณ เชธเชพเชšเชตเซ€เชถเซเช‚. เช† เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฌเช‚เชจเซ‡ YAML เช…เชจเซ‡ JSON Python เชฎเซ‹เชกเซเชฏเซเชฒเซ‹เชจเซ‡ เช†เชฏเชพเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ-เชจเชฟเชฐเซเชฆเชฟเชทเซเชŸ JSON เชซเชพเช‡เชฒ เชฒเซ‹เชก เช•เชฐเซ‡ เช›เซ‡, เชฐเซ‚เชชเชพเช‚เชคเชฐเชฃ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ output.yaml เชซเชพเช‡เชฒเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชฒเช–เซ‡ เช›เซ‡.

#!/usr/bin/python3
import yaml
import sys
import json

OUT=open('output.yaml','w')
IN=open(sys.argv[1], 'r')

JSON = json.load(IN)
IN.close()
yaml.dump(JSON, OUT)
OUT.close()

เช† เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เชชเชพเชฅเชฎเชพเช‚ เชธเชพเชšเชตเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชœเชฐเซ‚เชฐ เชฎเซเชœเชฌ เชšเชฒเชพเชตเซ‹:

$ ~/bin/json2yaml.py example.json

3. เช˜เชฃเซเช‚ เช…เชจเซ‡ เชตเชพเชฐเช‚เชตเชพเชฐ เชชเชพเชฐเซเชธ เช•เชฐเซ‹

เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช…เชฒเช— เช–เซ‚เชฃเชพเชฅเซ€ เชœเซ‹เชตเชพเชจเซเช‚ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡. เชœเซ‹ เชคเชฎเชจเซ‡ YAML เชฎเชพเช‚ เชคเชฎเชพเชฐเชพ เชกเซ‡เชŸเชพ เชตเชšเซเชšเซ‡เชจเชพ เชธเช‚เชฌเช‚เชงเซ‹เชจเซเช‚ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเซเชถเซเช•เซ‡เชฒเซ€ เช†เชตเซ€ เชฐเชนเซ€ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เช…เชธเซเชฅเชพเชฏเซ€ เชฐเซ‚เชชเซ‡ เช•เช‚เชˆเช• เชตเชงเซ เชชเชฐเชฟเชšเชฟเชคเชฎเชพเช‚ เชชเชฐเชฟเชตเชฐเซเชคเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‹ เชคเชฎเซ‡ เชถเชฌเซเชฆเช•เซ‹เชถ เชฏเชพเชฆเซ€เช“ เช…เชฅเชตเชพ JSON เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เชฐเชพเชฎเชฆเชพเชฏเช• เช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เชชเชพเชฏเชฅเซ‹เชจ เชถเซ‡เชฒเชฎเชพเช‚ เชซเช•เซเชค เชฌเซ‡ เช†เชฆเซ‡เชถเซ‹ เชธเชพเชฅเซ‡ YAML เชจเซ‡ JSON เชฎเชพเช‚ เช•เชจเซเชตเชฐเซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ YAML เชซเชพเช‡เชฒ mydata.yaml เช›เซ‡, เชคเซ‹ เชคเซ‡ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชถเซ‡:

$ python3
>>> f=open('mydata.yaml','r')
>>> yaml.load(f)
{'document': 34843, 'date': datetime.date(2019, 5, 23), 'bill-to': {'given': 'Seth', 'family': 'Kenlon', 'address': {'street': '51b Mornington Roadn', 'city': 'Brooklyn', 'state': 'Wellington', 'postal': 6021, 'country': 'NZ'}}, 'words': 938, 'comments': 'Good article. Could be better.'}

เชคเชฎเซ‡ เช† เชตเชฟเชทเชฏ เชชเชฐ เช…เชจเซเชฏ เช˜เชฃเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹. เชตเชงเซเชฎเชพเช‚, เชคเซเชฏเชพเช‚ เช˜เชฃเชพ เช‘เชจเชฒเชพเช‡เชจ เช•เชจเซเชตเชฐเซเชŸเชฐ เช…เชจเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชชเชพเชฐเซเชธเชฐเซเชธ เช‰เชชเชฒเชฌเซเชง เช›เซ‡. เชคเซ‡เชฅเซ€ เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชฎเชพเชคเซเชฐ เชเช• เช…เช—เชฎเซเชฏ เช—เซ‚เช‚เชšเชตเชพเชกเซ‹ เชฆเซ‡เช–เชพเชฏ เชคเซเชฏเชพเชฐเซ‡ เชกเซ‡เชŸเชพเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช…เชšเช•เชพเชถเซ‹ เชจเชนเซ€เช‚.

4. เชธเซเชชเซ‡เช•เซเชธ เชตเชพเช‚เชšเซ‹

เชฒเชพเช‚เชฌเชพ เชตเชฟเชฐเชพเชฎ เชชเช›เซ€ YAML เชชเชฐ เชชเชพเช›เชพ เชซเชฐเชตเซเช‚, เชคเซ‡ เชฎเซเชฒเชพเช•เชพเชค เชฒเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡ yaml.org เช…เชจเซ‡ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเซ‹ (เชธเซเชชเซ‡เช•เซเชธ) เชซเชฐเซ€เชฅเซ€ เชตเชพเช‚เชšเซ‹. เชœเซ‹ เชคเชฎเชจเซ‡ YAML เชธเชพเชฅเซ‡ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเชจเซ€ เช†เชธเชชเชพเชธ เชฎเซ‡เชณเชตเซเชฏเซเช‚ เชจเชฅเซ€, เชคเซ‹ เช† เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชธเซเชงเชพเชฐเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡. เชธเซเชชเซ‡เช•เซเชธ เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ เช†เชถเซเชšเชฐเซเชฏเชœเชจเช• เชฐเซ€เชคเซ‡ เชธเชฐเชณ เช›เซ‡, เช…เชจเซ‡ เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เช†เชตเชถเซเชฏเช•เชคเชพเช“ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชธเชพเชฅเซ‡ เชธเชšเชฟเชคเซเชฐ เช›เซ‡ เชชเซเชฐเช•เชฐเชฃ 6.

5. เชธเซเชฏเซเชกเซ‹-เชฐเซ‚เชชเชฐเซ‡เช–เชพเช“

เชชเซเชธเซเชคเช• เช…เชฅเชตเชพ เชฒเซ‡เช– เชฒเช–เชคเซ€ เชตเช–เชคเซ‡, เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชตเชฟเชทเชฏเชตเชธเซเชคเซเชจเชพ เช•เซ‹เชทเซเชŸเช•เชจเชพ เชฐเซ‚เชชเชฎเชพเช‚, เชชเซเชฐเชฅเชฎ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชฐเซ‚เชชเชฐเซ‡เช–เชพเชจเซเช‚ เชธเซเช•เซ‡เชš เช•เชฐเชตเซเช‚ เชนเช‚เชฎเซ‡เชถเชพ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡. เชคเซ‡ YAML เชธเชพเชฅเซ‡ เชธเชฎเชพเชจ เช›เซ‡. เชฎเซ‹เชŸเซ‡ เชญเชพเช—เซ‡, เชคเชฎเชจเซ‡ YAML เชซเชพเช‡เชฒเชฎเชพเช‚ เช•เชฏเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชฒเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชคเซ‡เชจเซ‹ เช–เซเชฏเชพเชฒ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เชคเซ‡ เช–เชฐเซ‡เช–เชฐ เชธเชฎเชœเซ€ เชถเช•เชคเชพ เชจเชฅเซ€. เชคเซ‡เชฅเซ€, YAML เชจเซ‡ เชถเชฟเชฒเซเชช เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ, เชธเซเชฏเซเชกเซ‹-เช•เซ‹เชจเซเชซเชฟเช—เชฐเซ‡ เชฆเซ‹เชฐเซ‹.

เชธเซเชฏเซเชกเซ‹-เช•เซ‹เชจเซเชซเชฟเช— เชธเซเชฏเซเชกเซ‹-เช•เซ‹เชก เชœเซ‡เชตเซเช‚ เชœ เช›เซ‡, เชœเซเชฏเชพเช‚ เชคเชฎเชพเชฐเซ‡ เชฌเช‚เชงเชพเชฐเชฃ เช…เชฅเชตเชพ เช‡เชจเซเชกเซ‡เชจเซเชŸเซ‡เชถเชจ, เชฎเชพเชคเชพเชชเชฟเชคเชพ-เชฌเชพเชณเช• เชธเช‚เชฌเช‚เชงเซ‹, เชตเชพเชฐเชธเซ‹ เช…เชจเซ‡ เชฎเชพเชณเช–เชพ เชตเชฟเชถเซ‡ เชšเชฟเช‚เชคเชพ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เชคเซ‡ เช…เชนเซ€เช‚ เชธเชฎเชพเชจ เช›เซ‡: เชคเชฎเซ‡ เชกเซ‡เชŸเชพเชจเชพ เชชเซเชจเชฐเชพเชตเซƒเชคเซเชคเชฟเช“ เชฆเซ‹เชฐเซ‹ เช›เซ‹ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชฅเชพเชฎเชพเช‚ เช‰เชฆเซเชญเชตเซ‡ เช›เซ‡.

YAML เชเซ‡เชจ เชฎเชพเชŸเซ‡ 10 เชชเช—เชฒเชพเช‚

เชธเซเชฏเซเชกเซ‹-เช•เซ‹เชจเซเชซเชฟเช— เชฒเชฟเชธเซเชŸเชฟเช‚เช— เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐเซเชธ (เชฎเชพเชฐเซเชŸเชฟเชจ เช…เชจเซ‡ เชคเชพเชฌเชฟเชฅเชพ) เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เช•เซเชถเชณเชคเชพ (เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเช“: เชชเชพเชฏเชฅเซ‹เชจ, เชชเชฐเซเชฒ, เชชเชพเชธเซเช•เชฒ เช…เชจเซ‡ เชฒเชฟเชธเซเชช, เชซเซ‹เชฐเซเชŸเซเชฐเซ‡เชจ, เชเชฐเซเชฒเชพเช‚เช—, เช…เชจเซเช•เซเชฐเชฎเซ‡).

เช•เชพเช—เชณเชจเชพ เชŸเซเช•เชกเชพ เชชเชฐ เชธเซเชฏเซเชกเซ‹-เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชฆเซ‹เชฐเซเชฏเชพ เชชเช›เซ€, เชคเซ‡เชจเซเช‚ เช•เชพเชณเชœเซ€เชชเซ‚เชฐเซเชตเช• เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‹ เช…เชจเซ‡, เชœเซ‹ เชฌเชงเซเช‚ เชตเซเชฏเชตเชธเซเชฅเชฟเชค เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชจเซ‡ เชฎเชพเชจเซเชฏ YAML เชซเชพเช‡เชฒเชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช•เชฐเซ‹.

6. เชŸเซ…เชฌเซเชธ เชตเชฟ. เชธเซเชชเซ‡เชธ เชฆเซเชตเชฟเชงเชพ

เชคเชฎเชพเชฐเซ‡ เชฎเซ‚เช‚เชเชตเชฃเชจเซ‹ เช‰เช•เซ‡เชฒ เชฒเชพเชตเชตเซ‹ เชชเชกเชถเซ‡ "เชŸเซ‡เชฌเซเชธ เช•เซ‡ เชธเซเชชเซ‡เชธ?". เชตเซˆเชถเซเชตเชฟเช• เช…เชฐเซเชฅเชฎเชพเช‚ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชซเช•เซเชค เชคเชฎเชพเชฐเซ€ เชธเช‚เชธเซเชฅเชพเชจเชพ เชธเซเชคเชฐเซ‡ เช…เชฅเชตเชพ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชเช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ. sed เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชธเชพเชฅเซ‡ เชชเซ‹เชธเซเชŸ-เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐเซ‹เชจเชพ เชฎเชถเซ€เชจเซ‹ เชชเชฐ เชŸเซ‡เช•เซเชธเซเชŸ เชเชกเชฟเชŸเชฐเซเชธ เชธเซ‡เชŸ เช•เชฐเชตเชพ เช…เชฅเชตเชพ เชฌเชฐเชคเชฐเชซเซ€เชจเซ€ เชงเชฎเช•เซ€ เชนเซ‡เช เชณ เชฒเชฟเชจเซเชŸเชฐเชจเซ€ เชธเซ‚เชšเชจเชพเช“เชจเซเช‚ เชธเช–เชค เชชเชพเชฒเชจ เช•เชฐเชตเชพเชจเซ€ เชฐเชธเซ€เชฆเซ‹ เชฒเซ‡เชตเชพเชฅเซ€ เช•เซ‹เชˆ เชซเชฐเช• เชชเชกเชคเซ‹ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเชฎเชพเชฐเซ€ เชŸเซ€เชฎเชจเชพ เชคเชฎเชพเชฎ เชธเชญเซเชฏเซ‹ เชœเซ‡เช“ เชเช• YAML เชธเชพเชฅเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชฐเซ€เชคเซ‡ เช…เชฅเชตเชพ เช…เชจเซเชฏ เชฐเซ€เชคเซ‡ เชฎเชพเชคเซเชฐ เชœเช—เซเชฏเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช (YAML เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃ เชฆเซเชตเชพเชฐเชพ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡).

เช•เซ‹เชˆเชชเชฃ เชธเชพเชฎเชพเชจเซเชฏ เชŸเซ‡เช•เซเชธเซเชŸ เชเชกเชฟเชŸเชฐเชฎเชพเช‚, เชคเชฎเซ‡ เชšเซ‹เช•เซเช•เชธ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชœเช—เซเชฏเชพเช“ เชชเชฐ เชธเซเชตเชคเชƒ-เชธเชพเชšเซ‹ เชŸเซ‡เชฌเซเชธเชจเซ‡ เช—เซ‹เช เชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡เชฅเซ€ เชฎเซเช–เซเชฏ เช…เชจเซเชฏเชพเชฏเซ€เช“เชจเซ‹ เชฌเชณเชตเซ‹ เชŸเซ…เชฌ เชคเชฎเชพเชฐเซ‡ เชกเชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.

เชœเซ‡เชฎ เช•เซ‡ เชฆเชฐเซ‡เช• YAML เชจเชซเชฐเชค เช•เชฐเชจเชพเชฐ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชœเชพเชฃเซ‡ เช›เซ‡, เชคเชฎเซ‡ เชธเซเช•เซเชฐเซ€เชจ เชชเชฐ เชŸเซ…เชฌ เช…เชจเซ‡ เชธเซเชชเซ‡เชธ เชตเชšเซเชšเซ‡เชจเซ‹ เชคเชซเชพเชตเชค เชœเซ‹เชˆ เชถเช•เชคเชพ เชจเชฅเซ€. เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เช•เซ‹เชˆ เชตเชธเซเชคเซ เชฆเซ‡เช–เชพเชคเซ€ เชจเชฅเซ€, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช›เซ‡เชฒเซเชฒเซ€ เชตเชธเซเชคเซ เช›เซ‡ เชœเซ‡ เชฒเซ‹เช•เซ‹ เชฏเชพเชฆ เชฐเชพเช–เซ‡ เช›เซ‡, เชคเซ‡เช“ เช…เชจเซเชฏ เชคเชฎเชพเชฎ เชธเช‚เชญเชตเชฟเชค เชธเชฎเชธเซเชฏเชพเช“เชจเซ‡ เช‰เช•เซ‡เชฒเซเชฏเชพ, เชคเชชเชพเชธเซเชฏเชพ เช…เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซเชฏเชพ เชชเช›เซ€. เชŸเซ‡เชฌเซเชฏเซเชฒเซ‡เชถเชจ เช•เชฐเซเชต เช…เชฅเชตเชพ เชธเซเชชเซ‡เชธเชจเชพ เชฌเซเชฒเซ‹เช•เชจเซ€ เชถเซ‹เชงเชฎเชพเช‚ เชตเชฟเชคเชพเชตเซ‡เชฒเซ‹ เชเช• เช•เชฒเชพเช• เชซเช•เซเชค เชšเซ€เชธเซ‹ เชชเชพเชกเซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชเช• เช…เชฅเชตเชพ เชฌเซ€เชœเชพเชจเชพ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชคเชพเช•เซ€เชฆเซ‡ เชจเซ€เชคเชฟ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเชพ เชชเชพเชฒเชจ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฌเชฒเชฟเชค เช•เซ‹เช‚เช•เซเชฐเชฟเชŸ เชšเซ‡เช•เชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ‹ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฆเซเชตเชพเชฐเชพ เชฒเซ€เช‚เชŸเชฐ เชฆเซเชตเชพเชฐเชพ เชคเซ‡เชจเซ‡ เชฆเชฌเชพเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช—เชฟเชŸ เชนเซ‚เช•).

7. เช“เช›เซเช‚ เชคเซ‡ เชตเชงเซ (เช…เชฅเชตเชพ เชตเชงเซ เช“เช›เซเช‚)

เช•เซ‡เชŸเชฒเชพเช• เชฒเซ‹เช•เซ‹ YAML เชฎเชพเช‚ เชฒเช–เชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชฌเช‚เชงเชพเชฐเชฃ เชชเชฐ เชญเชพเชฐ เชฎเซ‚เช•เซ‡ เช›เซ‡. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เชคเซ‡เช“ เชกเซ‡เชŸเชพเชจเชพ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชฐเชฟเชฏเชชเชฃเซ‡ เช‡เชจเซเชกเซ‡เชจเซเชŸเซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชธเซเชชเชทเซเชŸ เชธเซ€เชฎเชพเช‚เช•เช•เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชฎเชพเชฐเซเช•เช…เชช เชญเชพเชทเชพเช“เชจเซเช‚ เช…เชจเซเช•เชฐเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช† เชเช• เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เช•เซŒเชญเชพเช‚เชก เช›เซ‡.

เช…เชนเซ€เช‚เชฅเซ€ เช†เชตเซ€ เชฐเชšเชจเชพเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡ เชœเชตเชพเชฌเซ€ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ:

# Employee records
-  martin:
        name: Martin D'vloper
        job: Developer
        skills:
            - python
            - perl
            - pascal
-  tabitha:
        name: Tabitha Bitumen
        job: Developer
        skills:
            - lisp
            - fortran
            - erlang

เช•เซ‡เชŸเชฒเชพเช• เชฎเชพเชŸเซ‡, เช† เชตเชฟเช•เชฒเซเชช เชคเซ‡เชฎเชจเซ‡ เชคเซ‡เชฎเชจเชพ เชฎเชพเชฅเชพเชฎเชพเช‚ YAML เชฎเชพเชณเช–เซเช‚ เช—เซ‹เช เชตเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡; เช…เชจเซเชฏ เชฒเซ‹เช•เซ‹ เชฎเชพเชŸเซ‡, เชคเซ‡เชจเชพเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เชคเซ‡ เชคเซ‡เชฎเชจเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€, เชคเซ‡เชฎเชจเชพ เชฎเชคเซ‡, เช‡เชจเซเชกเซ‡เชจเซเชŸเซเชธเชฅเซ€ เชฌเชณเชคเชฐเชพ เช•เชฐเซ‡ เช›เซ‡.

เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเซ‡ YAML เชฆเชธเซเชคเชพเชตเซ‡เชœเชจเชพ เชฎเชพเชฒเชฟเช• เช›เซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชœเชพเชณเชตเชฃเซ€ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เช›เซ‹, เชคเซ‹ เชชเช›เซ€ เชคเชฎเซ‡ เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เชคเชฎเซ‡ เช‡เชจเซเชกเซ‡เชจเซเชŸเซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹ เชคเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เชฎเซ‹เชŸเชพ เชชเซ‡เชกเชฟเช‚เช—เชฅเซ€ เชจเชพเชฐเชพเชœ เช›เซ‹, เชคเซ‹ YAML เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃ เช…เชจเซเชธเชพเชฐ เชคเซ‡เชจเซ‡ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซเช‚ เชจเซเชฏเซ‚เชจเชคเชฎ เชฐเชพเช–เซ‹. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเชตเชพเชฌเซ€ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹เชฎเชพเช‚เชฅเซ€ เช‰เชชเชฐเซ‹เช•เซเชค เชซเชพเช‡เชฒเชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชจเซเช•เชถเชพเชจ เชตเชฟเชจเชพ เช† เชฐเซ€เชคเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเช–เซ€ เชถเช•เชพเชฏ เช›เซ‡:

---
- martin:
   name: Martin D'vloper
   job: Developer
   skills:
   - python
   - perl
   - pascal
- tabitha:
   name: Tabitha Bitumen
   job: Developer
   skills:
   - lisp
   - fortran
   - erlang

8. เช–เชพเชฒเซ€ เชœเช—เซเชฏเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹

เชœเซ‹ เชคเชฎเซ‡ YAML เชซเชพเช‡เชฒ เชญเชฐเชคเซ€ เชตเช–เชคเซ‡ เช เชœ เชญเซ‚เชฒเซ‹เชจเซเช‚ เชธเชคเชค เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชŸเชฟเชชเซเชชเชฃเซ€ เชคเชฐเซ€เช•เซ‡ เชคเซ‡เชฎเชพเช‚ เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เชฆเชพเช–เชฒ เช•เชฐเชตเชพเชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡. เชชเช›เซ€ เช†เช—เชฒเซ€ เชตเช–เชคเซ‡ เชคเชฎเซ‡ เช–เชพเชฒเซ€ เช† เชจเชฎเซ‚เชจเชพเชจเซ€ เชจเช•เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เชตเชพเชธเซเชคเชตเชฟเช• เชกเซ‡เชŸเชพ เชฆเชพเช–เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡:

---
# - <common name>:
#   name: Given Surname
#   job: JOB
#   skills:
#   - LANG
- martin:
  name: Martin D'vloper
  job: Developer
  skills:
  - python
  - perl
  - pascal
- tabitha:
  name: Tabitha Bitumen
  job: Developer
  skills:
  - lisp
  - fortran
  - erlang

9. เช•เช‚เชˆเช• เช…เชฒเช— เชตเชพเชชเชฐเซ‹

เชœเซ‹ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชคเชฎเชพเชฐเชพ เชชเชฐ เช•เซ‹เชˆ เช—เซ‚เช‚เชšเชตเชฃ เชงเชฐเชพเชตเชคเซเช‚ เชจเชฅเซ€, เชคเซ‹ เชคเซ‡ YAML เชจเซ‡ เช…เชฒเช— เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชฌเชฆเชฒเชตเชพ เชฏเซ‹เช—เซเชฏ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชธเชฎเชฏ เชœเชคเชพเช‚, เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเซ‹ เชชเซ‹เชคเชพเชจเซ‡ เช†เช—เชณ เชตเชงเชพเชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเซ‡ เชฒเซเช† เช…เชฅเชตเชพ เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เชธเชฐเชณ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเซเช‚ เชตเชงเซ เชธเชพเชฐเซเช‚ เช›เซ‡.

YAML เช เชเช• เชฎเชนเชพเชจ เชตเชธเซเชคเซ เช›เซ‡ เชœเซ‡ เช˜เชฃเชพ เชฒเซ‹เช•เซ‹ เชคเซ‡เชจเชพ เชฒเช˜เซเชคเซเชคเชฎเชตเชพเชฆ เช…เชจเซ‡ เชธเชฐเชณเชคเชพ เชฎเชพเชŸเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชคเชฎเชพเชฐเชพ เชถเชธเซเชคเซเชฐเชพเช—เชพเชฐเชจเชพ เชเช•เชฎเชพเชคเซเชฐ เชธเชพเชงเชจเชฅเซ€ เชฆเซ‚เชฐ เช›เซ‡. เชคเซ‡เชฅเซ€ เช•เซเชฏเชพเชฐเซ‡เช• เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชจเชพ เชชเชพเชกเซ€ เชถเช•เซ‹ เช›เซ‹. YAML เชฎเชพเชŸเซ‡ เชชเชพเชฐเซเชธเชฟเช‚เช— เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชถเซ‹เชงเชตเชพเชจเซเช‚ เชธเชฐเชณ เช›เซ‡, เชคเซ‡เชฅเซ€ เชœเซ‹ เชคเชฎเซ‡ เชธเชฐเชณ เชธเซเชฅเชณเชพเช‚เชคเชฐ เชตเชฟเช•เชฒเซเชชเซ‹ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชคเชฎเชพเชฐเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชชเซ€เชกเชพเชฐเชนเชฟเชค เชฐเซ€เชคเซ‡ เช† เชจเชฟเชทเซเชซเชณเชคเชพเชฎเชพเช‚เชฅเซ€ เชฌเชšเซ€ เชœเชถเซ‡.

เชœเซ‹ เชคเชฎเซ‡ YAML เชตเชฟเชจเชพ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เชคเซ‹ เช† 10 เชŸเชฟเชชเซเชธ เชฒเซ‹ เช…เชจเซ‡ YAML เชจเชพ เชคเชฎเชพเชฐเชพ เช…เชฃเช—เชฎเชพเชจเซ‡ เชเช•เชตเชพเชฐ เช…เชจเซ‡ เชฌเชงเชพ เชฎเชพเชŸเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‹!

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹