10 แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ YAML Zen-แƒ›แƒ“แƒ”

แƒฉแƒ•แƒ”แƒœ แƒงแƒ•แƒ”แƒšแƒแƒก แƒ’แƒ•แƒ˜แƒงแƒ•แƒแƒ แƒก Ansible, แƒ›แƒแƒ’แƒ แƒแƒ› Ansible แƒแƒ แƒ˜แƒก YAML. แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒคแƒแƒ แƒ›แƒแƒขแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก: แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ”แƒ‘แƒ˜, แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ -แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒฌแƒงแƒ•แƒ˜แƒšแƒ”แƒ‘แƒ˜, INI แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜, YAML, JSON, XML แƒ“แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒกแƒฎแƒ•แƒ. แƒ—แƒฃแƒ›แƒชแƒ, แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜แƒ“แƒแƒœ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜แƒก แƒ’แƒแƒ›แƒ, YAML แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒ แƒ—แƒฃแƒšแƒแƒ“. แƒ™แƒ”แƒ แƒซแƒแƒ“, แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒ’แƒ แƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒ˜แƒ–แƒ›แƒ˜แƒกแƒ แƒ“แƒ แƒ˜แƒ”แƒ แƒแƒ แƒฅแƒ˜แƒฃแƒš แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒจแƒ—แƒแƒ›แƒ‘แƒ”แƒญแƒ“แƒแƒ•แƒ˜ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒกแƒ, YAML แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒ’แƒแƒ›แƒแƒฆแƒ˜แƒ–แƒ˜แƒแƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒ— แƒฉแƒแƒฆแƒ แƒ›แƒแƒ•แƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—.

10 แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ YAML Zen-แƒ›แƒ“แƒ”

แƒ—แƒฃ YAML แƒ’แƒแƒฆแƒ˜แƒ–แƒ˜แƒแƒœแƒ”แƒ‘แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— - แƒ“แƒ แƒฃแƒœแƒ“แƒ! โ€“ แƒ’แƒแƒ“แƒแƒ“แƒ’แƒ˜แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ 10 แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜, แƒ แƒแƒ—แƒ แƒจแƒ”แƒแƒ›แƒชแƒ˜แƒ แƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ˜แƒ›แƒ”แƒ“แƒ’แƒแƒชแƒ แƒฃแƒ”แƒ‘แƒ แƒ›แƒ˜แƒกแƒแƒฆแƒ”แƒ‘ แƒ“แƒแƒœแƒ”แƒ–แƒ” แƒ“แƒ แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒ แƒแƒ— YAML. แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ› แƒกแƒ˜แƒแƒก แƒจแƒ”แƒ”แƒคแƒ”แƒ แƒ”แƒ‘แƒ, แƒฉแƒ•แƒ”แƒœแƒ˜ แƒแƒ—แƒ˜ แƒ แƒฉแƒ”แƒ•แƒ แƒ“แƒแƒœแƒแƒ›แƒ แƒ˜แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒœแƒฃแƒšแƒ˜แƒ“แƒแƒœ, แƒฉแƒ•แƒ”แƒœ แƒกแƒฃแƒ แƒ•แƒ˜แƒšแƒ˜แƒกแƒแƒ›แƒ”แƒ‘แƒ  แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒ›แƒ”แƒ“แƒ˜แƒขแƒแƒชแƒ˜แƒแƒก แƒ“แƒ แƒกแƒฃแƒšแƒ˜แƒ”แƒ  แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒก ๐Ÿ˜‰

0. แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ” แƒจแƒ”แƒœแƒ˜ แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒ˜ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก

แƒแƒ  แƒแƒฅแƒ•แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒ แƒ แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒ˜ แƒ’แƒแƒฅแƒ•แƒ—, แƒแƒšแƒ‘แƒแƒ— แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ“แƒฃแƒšแƒ˜ YAML-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ—แƒฃ แƒแƒ  แƒ’แƒแƒฅแƒ•แƒ—, แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ˜แƒžแƒแƒ•แƒ”แƒ— แƒ“แƒ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ—. แƒซแƒ˜แƒ”แƒ‘แƒแƒกแƒ แƒ“แƒ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒแƒฎแƒแƒ แƒฏแƒฃแƒšแƒ˜ แƒ“แƒ แƒ แƒ‘แƒ”แƒ•แƒ แƒฏแƒ”แƒ  แƒแƒœแƒแƒ–แƒฆแƒแƒฃแƒ แƒ“แƒ”แƒ‘แƒ แƒงแƒแƒ•แƒ”แƒš แƒฏแƒ”แƒ แƒ–แƒ”, แƒ แƒแƒชแƒ YAML-แƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒ—.

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒ˜ Atom แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒแƒ“ แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก YAML-แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› GNU Emacs-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒ— แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, yaml- แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜.

10 แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ YAML Zen-แƒ›แƒ“แƒ”

Emacs YAML แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜ แƒ“แƒ แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒ”แƒ‘แƒก.

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒแƒงแƒ•แƒแƒ แƒ”แƒš แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒก แƒแƒ  แƒแƒฅแƒ•แƒก YAML แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒ—. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, GNOME-แƒ˜แƒก แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒš แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ  แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒก Gedit-แƒก แƒแƒ  แƒแƒฅแƒ•แƒก YAML แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒ˜แƒก แƒฎแƒแƒ–แƒก แƒฃแƒกแƒ•แƒแƒ›แƒก YAML แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒก แƒ“แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒฉแƒแƒฆแƒ แƒ›แƒแƒ•แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ—:

10 แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ YAML Zen-แƒ›แƒ“แƒ”

แƒจแƒ”แƒฌแƒ”แƒ•แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ Gedit-แƒจแƒ˜.

แƒ›แƒแƒ“แƒฃแƒšแƒ˜ แƒ’แƒแƒ—แƒแƒ›แƒแƒจแƒ”แƒ‘แƒ˜แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒ”แƒ‘แƒ˜ Gedit-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒ”แƒ‘แƒก โ€‹โ€‹แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—, แƒแƒฆแƒ›แƒแƒคแƒฎแƒ•แƒ แƒ˜แƒก แƒ’แƒแƒฃแƒ แƒ™แƒ•แƒ”แƒ•แƒšแƒแƒ‘แƒแƒก แƒฉแƒแƒฆแƒ แƒ›แƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ”แƒ‘แƒ˜แƒ—.

แƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ“แƒแƒฃแƒ—แƒ›แƒ”แƒ— แƒ“แƒ แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒงแƒ•แƒแƒ แƒ”แƒšแƒ˜ แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒแƒก. แƒ’แƒแƒแƒ แƒ™แƒ•แƒ˜แƒ”แƒ—, แƒ แƒแƒก แƒกแƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒก แƒ›แƒแƒก แƒแƒœ แƒ›แƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ–แƒแƒ’แƒแƒ“แƒแƒ”แƒ‘แƒแƒก YAML-แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒ”แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜. แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒแƒ  แƒ˜แƒœแƒแƒœแƒ”แƒ‘แƒ—.

1. แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒšแƒ˜แƒœแƒขแƒ”แƒ แƒ˜

แƒ˜แƒ“แƒ”แƒแƒšแƒฃแƒ  แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒแƒ แƒ™แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ แƒžแƒ แƒแƒ’แƒœแƒแƒ–แƒ˜แƒ แƒ”แƒ‘แƒแƒ“ แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒก. แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒแƒ แƒ˜แƒแƒœ แƒžแƒ แƒแƒ’แƒœแƒแƒ–แƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒแƒ‘แƒแƒจแƒ˜, แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒช แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ แƒšแƒ˜แƒœแƒขแƒ”แƒ แƒ. แƒ—แƒฃ แƒ›แƒ˜แƒกแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก 40 แƒฌแƒšแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒ›แƒแƒœ แƒ’แƒแƒ’แƒ˜แƒแƒ แƒ แƒ“แƒ แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒแƒ  แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— YAML แƒšแƒ˜แƒœแƒขแƒ”แƒ แƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒ“แƒ แƒแƒ แƒกแƒชแƒแƒ“แƒแƒ— yamllint.

แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ แƒ˜แƒแƒ›แƒšแƒ˜แƒœแƒขแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜ Linux แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, in 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. แƒ“แƒแƒฌแƒ”แƒ แƒ”แƒ— แƒžแƒ˜แƒ—แƒแƒœแƒจแƒ˜ แƒ“แƒ แƒแƒ แƒ YAML-แƒจแƒ˜

แƒ—แƒฃ YAML แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒ’แƒแƒฆแƒ˜แƒ–แƒ˜แƒแƒœแƒ”แƒ‘แƒ—, แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ  แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒ›แƒแƒกแƒจแƒ˜, แƒกแƒ˜แƒขแƒงแƒ•แƒแƒกแƒ˜แƒขแƒงแƒ•แƒ˜แƒ—. แƒ”แƒก แƒฎแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ› YAML แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ“แƒ”แƒ แƒ—แƒ˜ แƒคแƒแƒ แƒ›แƒแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ”แƒกแƒ›แƒ˜แƒก. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜แƒช แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ YAML แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ. แƒ“แƒแƒฌแƒ”แƒ แƒ” แƒ แƒแƒช แƒ›แƒแƒ’แƒฌแƒแƒœแƒก แƒ“แƒ แƒ›แƒ”แƒ แƒ” แƒ’แƒแƒ“แƒแƒแƒ™แƒ”แƒ—แƒ”. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ แƒžแƒ˜แƒแƒ›แƒšแƒ˜ แƒ“แƒ แƒ™แƒแƒœแƒ•แƒ”แƒ แƒขแƒแƒชแƒ˜แƒ˜แƒก แƒแƒ แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜: แƒ—แƒ•แƒ˜แƒ—แƒ™แƒแƒœแƒ•แƒ”แƒ แƒขแƒแƒชแƒ˜แƒ แƒ“แƒ แƒ™แƒแƒœแƒ•แƒ”แƒ แƒขแƒแƒชแƒ˜แƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—.

แƒ—แƒ•แƒ˜แƒ—แƒ’แƒแƒ“แƒแƒฅแƒชแƒ”แƒ•แƒ

แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒคแƒแƒ˜แƒšแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒ˜แƒก แƒžแƒ˜แƒ—แƒแƒœแƒ˜แƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฅแƒ›แƒœแƒ˜แƒก YAML-แƒก. แƒ”แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒแƒ“ แƒจแƒ”แƒ”แƒคแƒ”แƒ แƒ”แƒ‘แƒ แƒ›แƒชแƒ˜แƒ แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ”แƒ‘แƒก. แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฉแƒแƒฌแƒ”แƒ แƒ— JSON แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก Python แƒชแƒ•แƒšแƒแƒ“แƒจแƒ˜, แƒฃแƒกแƒ•แƒแƒ›แƒ— แƒ›แƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒกแƒ˜แƒขแƒงแƒ•แƒแƒแƒ‘แƒแƒก แƒ˜แƒ›แƒžแƒแƒ แƒขแƒ˜แƒก แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒ˜แƒ•แƒ˜แƒ— แƒ“แƒ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ‘แƒแƒšแƒแƒก แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒกแƒแƒ›แƒ˜ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜ แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒšแƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒšแƒแƒ“.

#!/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-แƒ˜แƒก แƒซแƒ”แƒ แƒฌแƒ•แƒแƒ›แƒ“แƒ”, แƒ“แƒแƒฎแƒแƒ–แƒ”แƒ— แƒคแƒกแƒ”แƒ•แƒ“แƒ-แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ.

แƒคแƒกแƒ”แƒ•แƒ“แƒ-แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜แƒ แƒคแƒกแƒ”แƒ•แƒ“แƒ แƒ™แƒแƒ“แƒ˜แƒก, แƒกแƒแƒ“แƒแƒช แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ˜แƒœแƒ”แƒ แƒ•แƒ˜แƒฃแƒšแƒแƒ— แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒ–แƒ” แƒแƒœ แƒฉแƒแƒฆแƒ แƒ›แƒแƒ•แƒ”แƒ‘แƒแƒ–แƒ”, แƒ›แƒจแƒแƒ‘แƒ”แƒš-แƒจแƒ•แƒ˜แƒšแƒ˜แƒก แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒแƒ‘แƒ”แƒ‘แƒ–แƒ”, แƒ›แƒ”แƒ›แƒ™แƒ•แƒ˜แƒ“แƒ แƒ”แƒแƒ‘แƒแƒ–แƒ” แƒ“แƒ แƒ‘แƒฃแƒ“แƒ”แƒ–แƒ”. แƒแƒฅแƒแƒช แƒ˜แƒ’แƒ˜แƒ•แƒ”แƒ: แƒ—แƒฅแƒ•แƒ”แƒœ แƒฎแƒแƒ–แƒแƒ•แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ—แƒแƒ•แƒจแƒ˜.

10 แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ YAML Zen-แƒ›แƒ“แƒ”

แƒคแƒกแƒ”แƒ•แƒ“แƒ-แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ”แƒ‘แƒ˜ (แƒ›แƒแƒ แƒขแƒ˜แƒœแƒ˜ แƒ“แƒ แƒขแƒแƒ‘แƒ˜แƒขแƒ) แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒฃแƒœแƒแƒ แƒ”แƒ‘แƒ˜ (แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒ”แƒ‘แƒ˜: Python, Perl, Pascal แƒ“แƒ Lisp, Fortran, Erlang, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“).

แƒคแƒฃแƒ แƒชแƒ”แƒšแƒ–แƒ” แƒคแƒกแƒ”แƒ•แƒ“แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒฎแƒแƒขแƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ’แƒฃแƒšแƒ“แƒแƒกแƒ›แƒ˜แƒ— แƒ’แƒแƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ— แƒ˜แƒ’แƒ˜ แƒ“แƒ, แƒ—แƒฃ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ แƒ˜แƒ’แƒ–แƒ”แƒ, แƒ“แƒแƒแƒคแƒแƒ แƒ›แƒแƒขแƒ”แƒ— แƒ˜แƒ’แƒ˜ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ˜ YAML แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—.

6. Tabs vs. Spaces แƒ“แƒ˜แƒšแƒ”แƒ›แƒ

แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒ— แƒ“แƒ˜แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒญแƒ แƒ "แƒฉแƒแƒœแƒแƒ แƒ—แƒ”แƒ‘แƒ˜ แƒ—แƒฃ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒ”แƒ‘แƒ˜?". แƒแƒ แƒ แƒ’แƒšแƒแƒ‘แƒแƒšแƒฃแƒ แƒ˜ แƒ’แƒแƒ’แƒ”แƒ‘แƒ˜แƒ—, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก, แƒแƒœ แƒ—แƒฃแƒœแƒ“แƒแƒช แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ–แƒ”. แƒแƒ  แƒแƒฅแƒ•แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒ”แƒก แƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒแƒ‘แƒก sed แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ› แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก, แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ–แƒ” แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก, แƒ—แƒฃ แƒกแƒแƒงแƒแƒ•แƒ”แƒšแƒ—แƒแƒแƒ“ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒš แƒฅแƒ•แƒ˜แƒ—แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒแƒก แƒšแƒ˜แƒœแƒขแƒ”แƒ แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ™แƒแƒชแƒ แƒ˜ แƒ“แƒแƒชแƒ•แƒ˜แƒก แƒกแƒแƒคแƒ แƒ—แƒฎแƒ˜แƒก แƒฅแƒ•แƒ”แƒจ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ’แƒฃแƒœแƒ“แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒฌแƒ”แƒ•แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ›แƒ แƒ—แƒฃ แƒ˜แƒ› แƒ’แƒ–แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒฎแƒ”แƒ‘แƒ YAML-แƒก, แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒ”แƒ‘แƒ˜ (แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ›แƒแƒก แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก YAML แƒกแƒžแƒ”แƒชแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ).

แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ  แƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ  แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒจแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒจแƒ”แƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ แƒฉแƒแƒœแƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒš แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒ–แƒ”, แƒแƒกแƒ” แƒ แƒแƒ› แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒ”แƒ‘แƒ˜ แƒแƒฏแƒแƒœแƒงแƒ“แƒ”แƒ‘แƒ˜แƒแƒœ. Tab แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒ”แƒจแƒ˜แƒœแƒแƒ“แƒ”แƒก.

แƒ แƒแƒ’แƒแƒ แƒช แƒงแƒ•แƒ”แƒšแƒ YAML-แƒ˜แƒก แƒ›แƒแƒซแƒฃแƒšแƒ” แƒ˜แƒชแƒ˜แƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ•แƒ”แƒ  แƒฎแƒ”แƒ“แƒแƒ•แƒ— แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒแƒก แƒฉแƒแƒœแƒแƒ แƒ—แƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒ”แƒ‘แƒก โ€‹โ€‹แƒจแƒแƒ แƒ˜แƒก แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ”. แƒ“แƒ แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ แƒแƒฆแƒแƒช แƒแƒ  แƒฉแƒแƒœแƒก, แƒ”แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ‘แƒแƒšแƒแƒ, แƒ แƒแƒช แƒฎแƒแƒšแƒฎแƒก แƒแƒฎแƒกแƒแƒ•แƒก, แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ แƒแƒช แƒ“แƒแƒšแƒแƒ’แƒ“แƒ”แƒ‘แƒ, แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒ“แƒ แƒแƒฆแƒ›แƒแƒคแƒฎแƒ•แƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒกแƒฎแƒ•แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก. แƒขแƒแƒ‘แƒฃแƒšแƒฃแƒ แƒ˜ แƒ›แƒ แƒฃแƒ“แƒ˜แƒก แƒแƒœ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒ”แƒ‘แƒ˜แƒก แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒซแƒ˜แƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒแƒฎแƒแƒ แƒฏแƒฃแƒšแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒกแƒแƒแƒ—แƒ˜ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒงแƒ•แƒ˜แƒ แƒ˜แƒก, แƒ แƒแƒ› แƒกแƒแƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒ แƒ”แƒ แƒ—แƒ˜แƒก แƒแƒœ แƒ›แƒ”แƒแƒ แƒ”แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒแƒ— แƒ แƒ™แƒ˜แƒœแƒแƒ‘แƒ”แƒขแƒแƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ แƒ›แƒแƒกแƒ—แƒแƒœ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, Git Hook, แƒ แƒแƒ› แƒซแƒแƒšแƒ˜แƒ— แƒ’แƒแƒ˜แƒแƒ แƒแƒก แƒ˜แƒ’แƒ˜ แƒšแƒ˜แƒœแƒขแƒ”แƒ แƒจแƒ˜).

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 แƒกแƒžแƒ”แƒชแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ–แƒ”แƒ›แƒแƒ— แƒ›แƒแƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜ Ansible แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒ“แƒแƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ“แƒแƒ˜แƒฌแƒ”แƒ แƒแƒก แƒแƒกแƒ” แƒงแƒแƒ•แƒ”แƒšแƒ’แƒ•แƒแƒ แƒ˜ แƒ“แƒแƒœแƒแƒ™แƒแƒ แƒ’แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”:

---
- 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-แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒคแƒแƒ แƒ›แƒแƒขแƒจแƒ˜ แƒจแƒ”แƒชแƒ•แƒšแƒ. แƒ“แƒ แƒแƒ—แƒ แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ›แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒแƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ—แƒแƒ•แƒ˜ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒฏแƒแƒ‘แƒก แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ“แƒแƒงแƒ•แƒแƒœแƒ แƒ›แƒแƒ แƒขแƒ˜แƒ• แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒแƒ“ Lua-แƒจแƒ˜ แƒแƒœ Python-แƒจแƒ˜.

YAML แƒแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜ แƒ แƒแƒ›, แƒ แƒแƒช แƒ‘แƒ”แƒ•แƒ แƒก แƒฃแƒงแƒ•แƒแƒ แƒก แƒ—แƒแƒ•แƒ˜แƒกแƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒ˜แƒ–แƒ›แƒ˜แƒกแƒ แƒ“แƒ แƒกแƒ˜แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒก แƒจแƒแƒ แƒก แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ“แƒ”แƒ แƒ—แƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒกแƒ’แƒแƒœ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒแƒ แƒกแƒ”แƒœแƒแƒšแƒจแƒ˜. แƒแƒกแƒ” แƒ แƒแƒ›, แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฃแƒแƒ แƒ˜ แƒ—แƒฅแƒ•แƒแƒ— แƒ›แƒแƒกแƒ–แƒ”. YAML-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒ›แƒแƒกแƒแƒซแƒ”แƒ‘แƒœแƒ˜แƒ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜, แƒแƒกแƒ” แƒ แƒแƒ›, แƒ—แƒฃ แƒจแƒ”แƒ›แƒแƒ’แƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ• แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒก, แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒแƒ› แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒฃแƒ›แƒขแƒ™แƒ˜แƒ•แƒœแƒ”แƒฃแƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒฃแƒ แƒฉแƒ”แƒ‘แƒ˜แƒแƒœ.

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— YAML-แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ›แƒแƒจแƒ˜แƒœ แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ— แƒ”แƒก 10 แƒ แƒฉแƒ”แƒ•แƒ แƒ“แƒ แƒ’แƒแƒ“แƒแƒšแƒแƒฎแƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ–แƒ˜แƒ–แƒฆแƒ˜ YAML-แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒ แƒ— แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒ“แƒ แƒกแƒแƒ›แƒฃแƒ“แƒแƒ›แƒแƒ“!

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ