10 αž‡αŸ†αž αžΆαž“αž‘αŸ… YAML Zen

αž™αžΎαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαžŸαŸ’αžšαž‘αžΆαž‰αŸ‹ Ansible αž”αŸ‰αž»αž“αŸ’αžαŸ‚ Ansible αž‚αžΊ YAML αŸ” αž˜αžΆαž“αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž―αž€αžŸαžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ– αž”αž‰αŸ’αž‡αžΈαžαž˜αŸ’αž›αŸƒ αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš-αžαž˜αŸ’αž›αŸƒαž‚αžΌ αž―αž€αžŸαžΆαžš INI, YAML, JSON, XML αž“αž·αž„αž•αŸ’αžŸαŸαž„αŸ—αž‘αŸ€αžαŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž–αž½αž€αž‚αŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ YAML αžαŸ‚αž„αžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαž‡αžΆαž€αžΆαžšαž›αŸ†αž”αžΆαž€αž‡αžΆαž–αž·αžŸαŸαžŸαŸ” αž‡αžΆαž–αž·αžŸαŸαžŸ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αžšαžŸαŸ‹αžŸαŸ’αžšαžΆαž™αžαž·αž…αžαž½αž… αž“αž·αž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžαž˜αŸ’αž›αŸƒαž‹αžΆαž“αžΆαž“αž»αž€αŸ’αžšαž˜αž€αŸαžŠαŸ„αž™ αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ YAML αž’αžΆαž…αžšαŸ†αžαžΆαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŠαžΌαž… Python αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αžΌαž›αž”αž“αŸ’αž‘αžΆαžαŸ‹αŸ”

10 αž‡αŸ†αž αžΆαž“αž‘αŸ… YAML Zen

αž”αŸ’αžšαžŸαž·αž“αž”αžΎ YAML αžαžΉαž„αž’αŸ’αž“αž€ αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ αž αžΎαž™αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚! - αž’αž“αž»αžœαžαŸ’αžαž‡αŸ†αž αžΆαž“αž‘αžΆαŸ†αž„ 10 αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αžΆαžšαžαž€αž…αž·αžαŸ’αžαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαž›αŸ‹αž€αž˜αŸ’αžšαž·αžαžŠαŸ‚αž›αž’αžΆαž…αž‘αž‘αž½αž›αž™αž€αž”αžΆαž“ αž αžΎαž™αž’αŸ’αž›αžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αž’αž“αŸ’αž›αž„αŸ‹αžŸαŸ’αž“αŸαž αŸαž‡αžΆαž˜αž½αž™ YAML αŸ” αžŠαžΌαž…αžŠαŸ‚αž›αžŸαž˜αž“αžΉαž„αž”αž‰αŸ’αž‡αžΈαž“αŸαŸ‡ αž‚αž“αŸ’αž›αžΉαŸ‡αž‘αžΆαŸ†αž„αžŠαž”αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαžŠαŸ†αž”αžΌαž„ αž™αžΎαž„αž“αžΉαž„αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αžΆαž’αž· αž“αž·αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžαžΆαž„αžœαž·αž‰αŸ’αž‰αžΆαžŽαžαžΆαž˜αž†αž“αŸ’αž‘αŸˆ πŸ˜‰

0. αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

αžœαžΆαž˜αž·αž“αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αž’αžαŸ’αžαž”αž‘αž“αŸ„αŸ‡αž‘αŸ αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αžΆαž“αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ YAML αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αž˜αžΆαž“αž‘αŸ αžŸαžΌαž˜αžŸαŸ’αžœαŸ‚αž„αžšαž€ αž αžΎαž™αžŠαŸ†αž‘αžΎαž„αžœαžΆαž—αŸ’αž›αžΆαž˜αŸ—αŸ” αž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€ αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαž“αžΉαž„αž‘αžΌαž‘αžΆαžαŸ‹αž…αŸ’αžšαžΎαž“αžŠαž„ αžšαžΆαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› YAML αŸ”

αž§αž‘αžΆαž αžšαžŽαŸαž’αŸ’αž“αž€αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› ធអតូម αž‚αžΆαŸ†αž‘αŸ’αžš YAML αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ GNU Emacs αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαžŠαŸ†αž‘αžΎαž„αž€αž‰αŸ’αž…αž”αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž§αž‘αžΆαž αžšαžŽαŸ yaml-mode.

10 αž‡αŸ†αž αžΆαž“αž‘αŸ… YAML Zen

Emacs αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž” YAML αž“αž·αž„αž”αž„αŸ’αž αžΆαž‰αž…αž“αŸ’αž›αŸ„αŸ‡αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αžΌαž›αž…αž·αžαŸ’αžαž˜αž·αž“αž˜αžΆαž“αžšαž”αŸ€αž” YAML αž“αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ„αž™αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ‚αž’αžαŸ’αžαž”αž‘ GNOME αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš Gedit αž˜αž·αž“αž˜αžΆαž“αžšαž”αŸ€αž” YAML αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αžœαžΆαžšαŸ†αž›αŸαž…αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ YAML αž“αž·αž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αžΆαžšαž„αžΆαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αžΌαž›αž”αž“αŸ’αž‘αžΆαžαŸ‹αŸ–

10 αž‡αŸ†αž αžΆαž“αž‘αŸ… YAML Zen

αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαž…αžΌαž›αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Gedit αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž˜αž½αž™αŸ” αž…αž“αŸ’αž›αŸ„αŸ‡ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Gedit αž”αž„αŸ’αž αžΆαž‰αž…αž“αŸ’αž›αŸ„αŸ‡αž‡αžΆαž…αŸ†αž“αž»αž… αž”αŸ†αž”αžΆαžαŸ‹αž—αžΆαž–αž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž˜αŸ’αžšαž·αžαž…αžΌαž›αž”αž“αŸ’αž‘αžΆαžαŸ‹αŸ”

αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αž…αŸ†αžŽαžΆαž™αž–αŸαž›αžŸαž·αž€αŸ’αžŸαžΆαž’αŸ†αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αžΌαž›αž…αž·αžαŸ’αžαŸ” αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‚αžΆαžαŸ‹ αž¬αžŸαž αž‚αž˜αž“αŸαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ YAML αž αžΎαž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αž»αžαž„αžΆαžšαž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΆαž€αžŠαž‡αžΆαž˜αž·αž“αžŸαŸ„αž€αžŸαŸ’αžαžΆαž™αžœαžΆαž‘αŸαŸ”

1. αž”αŸ’αžšαžΎαž’αž»αž„αžŸαŸ†αžšαžΆαž˜

αžαžΆαž˜αž§αžαŸ’αžŠαž˜αž‚αžαž· αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž—αžΆαžŸαžΆαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž”αŸ’αžšαžΎαžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž’αžΆαž…αž–αŸ’αž™αžΆαž€αžšαžŽαŸαž”αžΆαž“αŸ” αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž‚αžΊαž›αŸ’αž’αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‘αžŸαŸ’αžŸαž“αŸαž‘αžΆαž™αžŠαŸ‚αž›αž‡αžΆαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž‚αŸ†αž“αž·αžαž“αŸƒ αž’αž€αŸ’αžŸαžšαžŸαž·αž›αŸ’αž”αŸ. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž› 40 αž†αŸ’αž“αžΆαŸ†αž“αŸƒαž’αžαŸ’αžαž·αž—αžΆαž–αžšαž”αžŸαŸ‹αžœαžΆ αžœαžΆαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž’αŸ’αž“αž€ αž αžΎαž™αž’αŸ’αž“αž€αž“αŸ…αžαŸ‚αž˜αž·αž“αž”αŸ’αžšαžΎαž’αž»αž„αžŸαŸ†αžšαžΆαž˜ YAML αž“αŸ„αŸ‡αžŠαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžŸαžΆαž€αž›αŸ’αž”αž„ yamllint αŸ”

αžŠαŸ†αž‘αžΎαž„ αž™αŸ‰αžΆαž˜αž›αžΈαž“ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹αž›αžΈαž“αž»αž…αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαŸ” αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ αž›αžΈαž“αž»αž…αžŸαž αž‚αŸ’αžšαžΆαžŸαž›αžΈαž“αž»αž…αž€αŸ’αžšαž αž˜αŸ” 8 αž¬αŸ” Fedora αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡:

$ sudo dnf install yamllint

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš yamllint αžŠαŸ„αž™αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž―αž€αžŸαžΆαžš YAML αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αŸ” αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αžœαžΆβ€‹αž˜αžΎαž›β€‹αž‘αŸ…β€‹αžŠαžΌαž…β€‹αž‡αžΆβ€‹αž”αŸ’αžšαžŸαž·αž“β€‹αž”αžΎβ€‹αž’αŸ’αž“αž€β€‹αž αž»αž…β€‹αž―αž€αžŸαžΆαžšβ€‹αž˜αž½αž™β€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αž€αŸ†αž αž»αžŸβ€‹αž‘αŸ…β€‹αž“αžΉαž„ linterαŸ–

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

αž›αŸαžαž“αŸ…αžαžΆαž„αž†αŸ’αžœαŸαž„αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž–αŸαž›αžœαŸαž›αžΆαž‘αŸαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΌαž’αžšαžŠαŸ„αž“αŸαž“αŸƒαž€αŸ†αž αž»αžŸ: αž›αŸαžαž‡αž½αžšαžŠαŸαž€αž“αž·αž„αž‡αž½αžšαžˆαžšαŸ” αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž€αŸ†αž αž»αžŸαž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αžŠαžΉαž„αž…αŸ’αž”αžΆαžŸαŸ‹αžαžΆαžœαžΆαž“αŸ…αž‘αžΈαžŽαžΆαŸ” αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž˜αžΎαž›αž€αž“αŸ’αž›αŸ‚αž„αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ αž αžΎαž™αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž‘αŸ†αž“αž„αž‡αžΆαž’αŸ’αžœαžΈαŸ—αž“αžΉαž„αž…αŸ’αž”αžΆαžŸαŸ‹αŸ”

αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› yamllint αžšαž€αž˜αž·αž“αžƒαžΎαž‰αž€αŸ†αž αž»αžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž›αžΎαž’αŸαž€αŸ’αžšαž„αŸ‹αž‘αŸαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž—αžΆαž–αžŸαŸ’αž„αŸ€αž˜αžŸαŸ’αž„αžΆαžαŸ‹αž”αŸ‚αž”αž“αŸαŸ‡αž’αŸ’αžœαžΎαž±αŸ’αž™αž’αŸ’αž“αž€αž—αŸαž™αžαŸ’αž›αžΆαž… αž αžΎαž™αž’αŸ’αž“αž€αž…αž„αŸ‹αž”αžΆαž“αž˜αžαž·αž€αŸ‚αž›αž˜αŸ’αž’αž”αž“αŸ’αžαž·αž…αž‘αŸ€αžαž“αŸ„αŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš linter αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž’αŸαž€αžΌαžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαžαžΆαž˜αžšαž™αŸˆ ampersand αž‘αŸ’αžœαŸ (&&) αžŠαžΌαž…αž“αŸαŸ‡αŸ–

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

αž“αŸ…αž€αŸ’αž“αž»αž„ POSIX αž’αŸ†αž–αŸ‚αžšαž‘αŸ’αžœαŸαž“αžΉαž„αž”αžΆαž‰αŸ‹αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αž»αž“αžαŸ’αžšαž‘αž”αŸ‹ 0 αŸ” αž αžΎαž™ yamllint αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαž‘αž”αŸ‹αž…αŸ†αž“αž½αž“αž“αŸƒαž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αžƒαžΎαž‰ αžŠαŸ‚αž›αž‡αžΆαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹αžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž‘αžΆαŸ†αž„αž˜αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

2. αžŸαžšαžŸαŸαžšαž€αŸ’αž“αž»αž„ Python αž˜αž·αž“αž˜αŸ‚αž“ YAML αž‘αŸαŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎ YAML αž–αž·αžαž‡αžΆαž’αŸ’αžœαžΎαž±αŸ’αž™αž’αŸ’αž“αž€αžαžΉαž„ αžŸαžΌαž˜αž€αž»αŸ†αžŸαžšαžŸαŸαžšαžœαžΆαžαžΆαž˜αž“αŸαž™αžαŸ’αžšαž„αŸ‹αŸ” αžœαžΆαž€αžΎαžαž‘αžΎαž„αžαžΆ YAML αž‚αžΊαž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž™αž›αŸ‹αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αžœαžΆαž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžš YAML αž‘αŸαŸ” αžŸαžšαžŸαŸαžšαž›αžΎαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αžΌαž›αž…αž·αžαŸ’αžαž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αž˜αŸ’αž›αŸ‚αž„αŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž˜αžΆαž“αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Python pyyaml αž“αž·αž„αžœαž·αž’αžΈαž”αŸ†αž”αŸ’αž›αŸ‚αž„αž–αžΈαžšαŸ– αž€αžΆαžšαž”αŸ†αž”αŸ’αž›αŸ‚αž„αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž“αž·αž„αž€αžΆαžšαž”αŸ†αž”αŸ’αž›αŸ‚αž„αžαžΆαž˜αžšαž™αŸˆαžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ”

αž€αžΆαžšαž”αŸ†αž”αŸ’αž›αŸ‚αž„αžαŸ’αž›αž½αž“αž―αž„

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž―αž€αžŸαžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αŸαž‡αžΆαžŸαŸ’αž‚αŸ’αžšαžΈαž” Python αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαž 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 αž“αžΉαž„αž–αŸ’αžšαž˜αžΆαž“αž’αŸ’αž“αž€αžαžΆαžœαžΆαž˜αž·αž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™ -. αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹ αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŠαŸ„αž™αžŠαŸƒ αž¬αž€αŸ‚αž”αŸ’αžšαŸ‚αž”αž“αŸ’αžαž·αž…αž”αž“αŸ’αžαž½αž…αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž” Python αŸ”

αž€αžΆαžšαž”αŸ†αž”αŸ’αž›αŸ‚αž„αžαžΆαž˜αžšαž™αŸˆαžŸαŸ’αž‚αŸ’αžšαžΈαž”

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αžŸαžšαžŸαŸαžšαž‡αžΆ JSON αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž˜αŸ’αž›αŸ‚αž„αž‡αžΆαžŸαŸ’αž‚αŸ’αžšαžΈαž” Python αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ αžŠαŸ‚αž›αž•αž›αž·αž 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 αžŠαŸ„αž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž–αžΈαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ‚αž› Python αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αŸ” αž…αžΌαžšαž“αž·αž™αžΆαž™αžαžΆαž’αŸ’αž“αž€αž˜αžΆαž“αž―αž€αžŸαžΆαžš 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 αž αžΎαž™αž’αžΆαž“αž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž›αž€αŸ’αžαžŽαŸˆαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸ (Specs)αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αžΆαž“αž€αžΆαžšαž›αŸ†αž”αžΆαž€αž‡αžΆαž˜αž½αž™ YAML αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž‘αžΆαž“αŸ‹αž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž‘αŸ αž“αŸ„αŸ‡αžŠαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸαŸ‡αŸ” αž›αž€αŸ’αžαžŽαŸˆαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž‚αžΊαž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαžšαžŸαŸαžšαž‚αž½αžšαž±αŸ’αž™αž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž› αž αžΎαž™αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„ αž’αž·αž› ៣.

5. Pseudo-configs

αž“αŸ…αž–αŸαž›αžŸαžšαžŸαŸαžšαžŸαŸ€αžœαž—αŸ… αž¬αž’αžαŸ’αžαž”αž‘ αžœαžΆαžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž‚αžΌαžŸαžœαžΆαžŸαž…αŸαž‰αž“αžΌαžœαž‚αŸ’αžšαŸ„αž„αž”αž‹αž˜ αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαžαžΆαžšαžΆαž„αž˜αžΆαžαž·αž€αžΆαŸ” αžœαžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™ YAML αžŠαŸ‚αžšαŸ” αž—αžΆαž‚αž…αŸ’αžšαžΎαž“ αž’αŸ’αž“αž€αž˜αžΆαž“αž‚αŸ†αž“αž·αžαž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαžŸαžšαžŸαŸαžšαž‘αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš YAML αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž–αž·αžαž‡αžΆαž˜αž·αž“αž™αž›αŸ‹αž–αžΈαžšαž”αŸ€αž”αž—αŸ’αž‡αžΆαž”αŸ‹αžœαžΆαž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αž‘αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž˜αž»αž“αž“αžΉαž„αž†αŸ’αž›αžΆαž€αŸ‹ YAML αžŸαžΌαž˜αž‚αžΌαžšαžšαžΌαž” pseudo-config αŸ”

Pseudo-config αž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„ pseudo-code αžŠαŸ‚αž›αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž–αŸ’αžšαž½αž™αž”αžΆαžšαž˜αŸ’αž—αž’αŸ†αž–αžΈαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž¬αž€αžΆαžšαž…αžΌαž›αž”αž“αŸ’αž‘αžΆαžαŸ‹ αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αžͺαž–αž»αž€αž˜αŸ’αžαžΆαž™ αž“αž·αž„αž€αžΌαž“ αž˜αžšαžαž€ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αžŸαŸ†αž”αž»αž€αŸ” αžœαžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ– αž’αŸ’αž“αž€αž‚αžΌαžšαž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž‘αž·αž“αŸ’αž“αž“αŸαž™ αžŠαžΌαž…αžŠαŸ‚αž›αž–αž½αž€αžœαžΆαž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αž”αžΆαž›αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ”

10 αž‡αŸ†αž αžΆαž“αž‘αŸ… YAML Zen

αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž”αžΆαž“αž…αž»αŸ‡αž”αž‰αŸ’αž‡αžΈ Pseudo-config (αž˜αŸ‰αžΆαž‘αžΈαž“ αž“αž·αž„αžαžΆαž”αŸŠαžΈαžαžΆ) αž“αž·αž„αž‡αŸ†αž“αžΆαž‰αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ (αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ– Python, Perl, Pascal αž“αž·αž„ Lisp, Fortran, Erlang αžšαŸ€αž„αž‚αŸ’αž“αžΆ)αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‚αžΌαžšαžšαžΌαž” pseudo-config αž“αŸ…αž›αžΎαž€αŸ’αžšαžŠαžΆαžŸαž˜αž½αž™ αžŸαžΌαž˜αžœαž·αž—αžΆαž‚αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“ αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αžœαžΈαŸ—αž˜αžΆαž“αžŸαžŽαŸ’αžαžΆαž”αŸ‹αž’αŸ’αž“αžΆαž”αŸ‹ αžŸαžΌαž˜αž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αžœαžΆαž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž―αž€αžŸαžΆαžš YAML αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ”

6. The Tabs vs. Spaces Dilemma

αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαž·αž”αžαŸ’αžαž· "αž•αŸ’αž‘αžΆαŸ†αž„ αž¬αž…αž“αŸ’αž›αŸ„αŸ‡?". αž˜αž·αž“β€‹αž˜αŸ‚αž“β€‹αž€αŸ’αž“αž»αž„β€‹αž“αŸαž™β€‹αžŸαž€αž›β€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž˜αžΆαž“β€‹αžαŸ‚β€‹αž€αž˜αŸ’αžšαž·αžβ€‹αž“αŸƒβ€‹αžŸαŸ’αžαžΆαž”αŸαž“β€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€ αž¬β€‹αž™αŸ‰αžΆαž„β€‹αž αŸ„αž…β€‹αžŽαžΆαžŸαŸ‹β€‹αž‚αž˜αŸ’αžšαŸ„αž„β€‹αž˜αž½αž™αŸ” αžœαžΆαž˜αž·αž“αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαžαžΆαžαžΎαžœαžΆαž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαžΎαž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αžšαŸ„αž™αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ’αž‚αŸ’αžšαžΈαž” sed αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αž’αžαŸ’αžαž”αž‘αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž¬αž‘αž‘αž½αž›αž™αž€αž€αžΆαžšαž‘αž‘αž½αž›αž‡αžΆαžŸαž€αž›αž“αŸƒαž€αžΆαžšαž’αž“αž»αž›αŸ„αž˜αžαžΆαž˜αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžšαž”αžŸαŸ‹ linter αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž‚αŸ†αžšαžΆαž˜αž€αŸ†αž αŸ‚αž„αž“αŸƒαž€αžΆαžšαž”αžŽαŸ’αžαŸαž‰αž…αŸαž‰ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αžΆαž‡αž·αž€αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž€αŸ’αžšαž»αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž“αŸ…αž€αŸ’αž“αž»αž„ αžœαž·αž’αžΈαž˜αž½αž™ αž¬αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„ YAML αžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ’αžšαžΎαžαŸ‚αž…αž“αŸ’αž›αŸ„αŸ‡ (αžαžΆαž˜αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŠαŸ„αž™αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž”αžŸαŸ‹ YAML)αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αž·αž–αž“αŸ’αž’αž’αžαŸ’αžαž”αž‘αž’αž˜αŸ’αž˜αžαžΆαžŽαžΆαž˜αž½αž™ αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ‚αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‘αŸ…αž…αŸ†αž“αž½αž“αž…αž“αŸ’αž›αŸ„αŸ‡αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αžΆαžšαž”αŸ‡αž”αŸ„αžšαž“αŸƒαž’αŸ’αž“αž€αž”αŸ’αžšαž€αžΆαž“αŸ‹αžαŸ’αž‡αžΆαž”αŸ‹αž‚αž“αŸ’αž›αžΉαŸ‡ αžαŸαž” αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž—αŸαž™αžαŸ’αž›αžΆαž…αž‘αŸαŸ”

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αžŸαŸ’αž’αž”αŸ‹ YAML αž‚αŸ’αžšαž”αŸ‹αžšαžΌαž”αžŠαžΉαž„αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹ αž’αŸ’αž“αž€αž˜αž·αž“αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžšαžœαžΆαž„αž•αŸ’αž‘αžΆαŸ†αž„ αž“αž·αž„αž…αž“αŸ’αž›αŸ„αŸ‡αž“αŸ…αž›αžΎαž’αŸαž€αŸ’αžšαž„αŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž αžΎαž™αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αž˜αžΎαž›αž˜αž·αž“αžƒαžΎαž‰ αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαžœαžΆαž‡αžΆαžšαžΏαž„αž…αž»αž„αž€αŸ’αžšαŸ„αž™αžŠαŸ‚αž›αž˜αž“αž»αžŸαŸ’αžŸαž…αž„αž…αžΆαŸ† αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž–αž½αž€αž‚αŸαž”αžΆαž“αžαž˜αŸ’αžšαŸ€αž” αž–αž·αž“αž·αžαŸ’αž™ αž“αž·αž„αž›αž»αž”αž”αŸ†αž”αžΆαžαŸ‹αž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž’αžΆαž…αž€αžΎαžαž˜αžΆαž“αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž˜αž½αž™αž˜αŸ‰αŸ„αž„αž“αŸƒαž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αžαŸ’αžŸαŸ‚αž€αŸ„αž„αžαžΆαžšαžΆαž„ αž¬αž”αŸ’αž›αž»αž€αž“αŸƒαž…αž“αŸ’αž›αŸ„αŸ‡αž˜αž½αž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŸαŸ’αžšαŸ‚αž€αžαžΆαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž”αž“αŸ’αž‘αžΆαž“αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž‚αŸ„αž›αž€αžΆαžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αž½αž™ αž¬αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αŸαžαž»αž„αžŠαŸ‚αž›αž”αžΆαž“αž–αž„αŸ’αžšαžΉαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž“αž»αž›αŸ„αž˜αžαžΆαž˜αžœαžΆ (αž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž˜αžšαž™αŸˆ αž‘αŸ†αž–αž€αŸ‹ Git αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αžαŸ†αžœαžΆαžαžΆαž˜αžšαž™αŸˆ linter) αŸ”

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

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹