YAML Zen рдорд╛ 10 рдХрджрдо

рд╣рд╛рдореА рд╕рдмреИрд▓рд╛рдИ Ansible рдорди рдкрд░реНрдЫ, рддрд░ Ansible YAML рд╣реЛред рддреНрдпрд╣рд╛рдБ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдврд╛рдБрдЪрд╛рд╣рд░реВ рдЫрдиреН: рдорд╛рдирд╣рд░реВрдХреЛ рд╕реВрдЪреА, рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░-рдорд╛рди рдЬреЛрдбреАрд╣рд░реВ, INI рдлрд╛рдЗрд▓рд╣рд░реВ, YAML, JSON, XML рд░ рдЕрдиреНрдп рдзреЗрд░реИред рдЬреЗ рд╣реЛрд╕реН, рддреА рд╕рдмреИ рдордзреНрдпреЗ рдзреЗрд░реИ рдХрд╛рд░рдгрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐, YAML рдкреНрд░рд╛рдп: рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдЧрд╛рд╣реНрд░реЛ рдорд╛рдирд┐рдиреНрдЫред рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдХ рдорд╛рдирд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕рдХреЛ рд╕реНрдлреВрд░реНрддрд┐рджрд╛рдпреА рдиреНрдпреВрдирддрд╛рд╡рд╛рдж рд░ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдХреНрд╖рдорддрд╛рд╣рд░реВрдХреЛ рдмрд╛рд╡рдЬреБрдж, YAML рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ рдпрд╕рдХреЛ рдкрд╛рдЗрдерди-рдЬрд╕реНрддреЛ рдЗрдиреНрдбреЗрдиреНрдЯреЗрд╕рдирдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрд╕рдБрдЧ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реБрди рд╕рдХреНрдЫред

YAML Zen рдорд╛ 10 рдХрджрдо

рдпрджрд┐ YAML рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкрд┐рд╕рд╛рдм рджрд┐рдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВ рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ тАФ рд░ рддрдкрд╛рдИрдВрд▓реЗ рдЧрд░реНрдиреБрдкрд░реНрдЫ! - рддрдкрд╛рдИрдВрдХреЛ рдирд┐рд░рд╛рд╢рд╛рд▓рд╛рдИ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрддрд░рдорд╛ рдХрдо рдЧрд░реНрди рд░ YAML рд╕рдБрдЧ рдкреНрд░реЗрдордорд╛ рдкрд░реНрди рдирд┐рдореНрди 10 рдЪрд░рдгрд╣рд░реВ рд▓рд┐рдиреБрд╣реЛрд╕реНред рдпрд╕ рд╕реВрдЪреАрд▓рд╛рдИ рдЙрдкрдпреБрдХреНрдд рднрдПрдорд╛, рд╣рд╛рдореНрд░рд╛ рджрд╕ рд╕реБрдЭрд╛рд╡рд╣рд░реВ рд╕реНрдХреНрд░реНрдпрд╛рдЪрдмрд╛рдЯ рдЕрдВрдХрд┐рдд рд╣реБрдиреЗрдЫрдиреН, рд╣рд╛рдореА рдзреНрдпрд╛рди рд░ рдЖрдзреНрдпрд╛рддреНрдорд┐рдХ рдЕрднреНрдпрд╛рд╕рд╣рд░реВ рдердкреНрдиреЗрдЫреМрдВ ЁЯШЙ

0. рдЖрдлреНрдиреЛ рд╕рдореНрдкрд╛рджрдХ рдХрд╛рдо рдЧрд░реНрдиреБрд╣реЛрд╕реН

рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдХреБрди рдкрд╛рда рд╕рдореНрдкрд╛рджрдХ рдЫ рдпрд╕рд▓реЗ рдлрд░рдХ рдкрд╛рд░реНрджреИрди, YAML рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХрдореНрддрд┐рдорд╛ рдПрдЙрдЯрд╛ рдкреНрд▓рдЧрдЗрди рдЫред рдпрджрд┐ рддрдкрд╛рдИрдВрд╕рдБрдЧ рдЫреИрди рднрдиреЗ, рдпрд╕рд▓рд╛рдИ рддреБрд░реБрдиреНрддреИ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН рд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рддрдкрд╛рдИрдВрд▓реЗ YAML рд╕рдореНрдкрд╛рджрди рдЧрд░реНрдиреБрдкрд░реНрджрд╛ рдЦреЛрдЬреА рд░ рд╕реЗрдЯрдЕрдк рдЧрд░реНрди рдмрд┐рддрд╛рдПрдХреЛ рд╕рдордп рдзреЗрд░реИ рдкрдЯрдХ рдЪреБрдХреНрддрд╛ рд╣реБрдиреЗрдЫред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕рдореНрдкрд╛рджрдХ рдПрдЯрдо рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ YAML рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ, рддрд░ GNU Emacs рдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдердк рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, yaml-рдореЛрдб.

YAML Zen рдорд╛ 10 рдХрджрдо

YAML рдореЛрдб рд░ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╕реНрдкреЗрд╕рдорд╛ Emacsред

рдпрджрд┐ рддрдкрд╛рдИрдВрдХреЛ рдордирдкрд░реНрдиреЗ рд╕рдореНрдкрд╛рджрдХрд╕рдБрдЧ YAML рдореЛрдб рдЫреИрди рднрдиреЗ, рдХреЗрд╣реА рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реЗрд░ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдорд╛рдирдХ GNOME рдкрд╛рда рд╕рдореНрдкрд╛рджрдХ Gedit рд╕рдБрдЧ YAML рдореЛрдб рдЫреИрди, рддрд░ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдпрд╕рд▓реЗ YAML рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░реНрджрдЫ рд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЗрдиреНрдбреЗрдиреНрдЯреЗрд╕рдирд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ:

YAML Zen рдорд╛ 10 рдХрджрдо

Gedit рдорд╛ рдЗрдиреНрдбреЗрдиреНрдЯрд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрджреИред

рдПрдХ рдкреНрд▓рдЧрдЗрди рдбреНрд░рд╕реНрдкреЗрд╕рд╣рд░реВ Gedit рдХреЛ рд▓рд╛рдЧрд┐, рдмрд┐рдиреНрджреБрдХреЛ рд░реВрдкрдорд╛ рдЦрд╛рд▓реА рдард╛рдЙрдБрд╣рд░реВ рджреЗрдЦрд╛рдЙрдБрджрдЫ, рдЗрдиреНрдбреЗрдиреНрдЯреЗрд╕рди рд╕реНрддрд░рд╣рд░реВрд╕рдБрдЧ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛рд╣рд░реВ рд╣рдЯрд╛рдЙрдБрджреИред

рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рдЖрдлреНрдиреЛ рдордирдкрд░реНрдиреЗ рд╕рдореНрдкрд╛рджрдХрдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕рд┐рдХреНрди рд╕рдордп рдЦрд░реНрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реНред YAML рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЙрд╕рд▓реЗ рд╡рд╛ рдЙрд╕рдХреЛ рд╡рд┐рдХрд╛рд╕ рд╕рдореБрджрд╛рдпрд▓реЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реЗрдХреЛ рдЫ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реН, рд░ рддреА рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рддрдкрд╛рдИ рдкрдХреНрдХреИ рдкрдирд┐ рдкрдЫреБрддрд╛рдЙрдиреБрд╣реБрдиреЗ рдЫреИрдиред

1. рдПрдХ рд▓рд┐рдиреНрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдЖрджрд░реНрд╢ рд░реВрдкрдорд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВ рд░ рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛рд╣рд░реВрд▓реЗ рдЕрдиреБрдорд╛рдирд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреНред рдХрдореНрдкреНрдпреБрдЯрд░рд╣рд░реВ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдЧрд░реНрдирдорд╛ рд░рд╛рдореНрд░реЛ рдЫрдиреН, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рдХреЛ рдЕрд╡рдзрд╛рд░рдгрд╛ linteraред рдпрджрд┐ рдпрд╕рдХреЛ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ 40 рд╡рд░реНрд╖ рдорд╛ рдпреЛ рддрдкрд╛рдИрдВ рджреНрд╡рд╛рд░рд╛ рдмрд┐рддрд┐рд╕рдХреЗрдХреЛ рдЫ рд░ рддрдкрд╛рдИрдВ рдЕрдЭреИ рдкрдирд┐ YAML linter рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрди, рддрдм рдпреЛ yamllint рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗ рд╕рдордп рд╣реЛред

рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН yamllint рддрдкрд╛рдИрдВ рдорд╛рдирдХ рд▓рд┐рдирдХреНрд╕ рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдорд╛ Red Hat Enterprise Linux 8 рд╡рд╛ рдлреЗрдбреЛрд░рд╛ рдпреЛ рдпрд╕реНрддреЛ рднрдпреЛ:

$ 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 рд▓реЗ рдлрд╛рдЗрд▓рдорд╛ рдХреБрдиреИ рддреНрд░реБрдЯрд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реЗрди, рд╕реНрдХреНрд░рд┐рдирдорд╛ рдХреЗрд╣реА рдкрдирд┐ рдЫрд╛рдкрд┐рдПрдХреЛ рдЫреИрдиред рдпрджрд┐ рдпрд╕реНрддреЛ рдореМрдирддрд╛рд▓реЗ рддрдкрд╛рдИрд▓рд╛рдИ рдбрд░рд╛рдЙрдБрдЫ рд░ рддрдкрд╛рдИ рдЕрд▓рд┐ рдмрдвреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдИрд▓реЗ рд╕рд╢рд░реНрдд рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдбрдмрд▓ рдПрдореНрдкрд░рд╕реЗрдиреНрдб (&&) рдорд╛рд░реНрдлрдд рд▓рд┐рдиреНрдЯрд░ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕реНрддреИ:

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

POSIX рдорд╛, рдПрдХ рдбрдмрд▓ рдПрдореНрдкрд░рд╕реЗрдиреНрдб рдлрд╛рдпрд░ рд╣реБрдиреНрдЫ рдпрджрд┐ рд░ рдЕрдШрд┐рд▓реНрд▓реЛ рдЖрджреЗрд╢рд▓реЗ реж рдлрд░реНрдХрд╛рдЙрдБрдЫ рднрдиреЗ рдорд╛рддреНрд░ред рд░ yamllint рд▓реЗ рдлреЗрд▓рд╛ рдкрд░реЗрдХреЛ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдорд╛рддреНрд░ рдлрд░реНрдХрд╛рдЙрдБрдЫ, рддреНрдпрд╕реИрд▓реЗ рдпреЛ рд╕рдореНрдкреВрд░реНрдг рд╕рд╢рд░реНрдд рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдЧрд░реНрджрдЫред

2. Python рдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН, YAML рд╣реЛрдЗрди

рдпрджрд┐ YAML рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рд╛рдБрдЪреНрдЪреИ рдкрд┐рд╕рд╛рдм рджрд┐рдпреЛ рднрдиреЗ, рддреНрдпрд╕рдорд╛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдкрдорд╛ рдирд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред рдпреЛ рд╣реБрдиреНрдЫ рдХрд┐ YAML рдорд╛рддреНрд░ рдврд╛рдБрдЪрд╛ рд╣реЛ рдЬреБрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдмреБрдЭреНрджрдЫред рддрд░ рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдкрдирд┐, рдпреЛ YAML рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рддрдкрд╛рдИрд▓рд╛рдИ рдордирдкрд░реНрдиреЗ рдХреБрд░рд╛рдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН рд░ рддреНрдпрд╕рдкрдЫрд┐ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдкрд╛рдЗрдерди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдорд╣рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЫ pyyaml рд░ рджреБрдИ рд░реВрдкрд╛рдиреНрддрд░рдг рд╡рд┐рдзрд┐рд╣рд░реВ: рд╕реНрд╡-рд░реВрдкрд╛рдиреНрддрд░рдг рд░ рд▓рд┐рдкрд┐рд╣рд░реВ рдорд╛рд░реНрдлрдд рд░реВрдкрд╛рдиреНрддрд░рдгред

рдЖрддреНрдо-рд░реВрдкрд╛рдиреНрддрд░рдг

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдбрд╛рдЯрд╛ рдлрд╛рдЗрд▓ рдкрдирд┐ 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 рд╕рдБрдЧ рдХрдард┐рдирд╛рдЗрд╣рд░реВ рдЫрдиреН, рддрд░ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдХреЛ рд╡рд░рд┐рдкрд░рд┐ рдкреБрдЧреНрдиреБ рднрдПрдХреЛ рдЫреИрди, рддрдм рдпреЛ рдЕрд╡рд╕реНрдерд╛ рд╕реБрдзрд╛рд░реНрдиреЗ рд╕рдордп рд╣реЛред рдЪрд╢реНрдорд╛ рд▓реЗрдЦреНрди рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдкрдорд╛ рд╕рдЬрд┐рд▓реЛ рдЫ, рд░ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдЪрд┐рддреНрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫред рдЧреНрд▓рд╛рдн рей.

5. рдЫрджреНрдо рдХрдиреНрдлрд┐рдЧрд╣рд░реВ

рдкреБрд╕реНрддрдХ рд╡рд╛ рд▓реЗрдЦ рд▓реЗрдЦреНрджрд╛, рдХрдореНрддрд┐рдорд╛ рд╡рд┐рд╖рдпрд╡рд╕реНрддреБрдХреЛ рддрд╛рд▓рд┐рдХрд╛рдХреЛ рд░реВрдкрдорд╛, рдкрд╣рд┐рд▓реЗ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд░реВрдкрд░реЗрдЦрд╛ рд╕реНрдХреЗрдЪ рдЧрд░реНрди рд╕рдзреИрдВ рдЙрдкрдпреЛрдЧреА рд╣реБрдиреНрдЫред YAML рдХреЛ рд╕рд╛рде рдкрдирд┐ рддреНрдпрд╕реНрддреИ рдЫред рд╕рдореНрднрд╡рддрдГ, рддрдкрд╛рдЗрдБрд╕рдБрдЧ YAML рдлрд╛рдЗрд▓рдорд╛ рдХреБрди рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдЫ, рддрд░ рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдПрдХ рдЕрд░реНрдХрд╛рд╕рдБрдЧ рдХрд╕рд░реА рдЬрдбрд╛рди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╡рд╛рд╕реНрддрд╡рдореИ рдмреБрдЭреНрдиреБрд╣реБрдиреНрдиред рддрд╕рд░реНрде, YAML рдХреЛ рдореВрд░реНрддрд┐ рдмрдирд╛рдЙрдиреБ рдЕрдШрд┐, рдЫрджреНрдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдХреЛрд░реНрдиреБрд╣реЛрд╕реНред

рд╕реНрдпреВрдбреЛ-рдХрдиреНрдлрд┐рдЧ рд╕реНрдпреВрдбреЛ-рдХреЛрдбрд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЫ, рдЬрд╣рд╛рдБ рддрдкрд╛рдИрдВрд▓реЗ рд╕рдВрд░рдЪрдирд╛ рд╡рд╛ рдЗрдиреНрдбреЗрдиреНрдЯреЗрд╕рди, рдЕрднрд┐рднрд╛рд╡рдХ-рдмрдЪреНрдЪрд╛ рд╕рдореНрдмрдиреНрдз, рд╡рд┐рд░рд╛рд╕рдд рд░ рдиреЗрд╕реНрдЯрд┐рдЩрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЪрд┐рдиреНрддрд╛ рд▓рд┐рдиреБ рдкрд░реНрджреИрдиред рдпреЛ рдпрд╣рд╛рдБ рдЙрд╕реНрддреИ рдЫ: рддрдкрд╛рдИрдВрд▓реЗ рдбрд╛рдЯрд╛рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рд╣рд░реВ рдХреЛрд░реНрдиреБрд╣реЛрд╕реН рдЬрдм рддрд┐рдиреАрд╣рд░реВ рддрдкрд╛рдИрдВрдХреЛ рдЯрд╛рдЙрдХреЛрдорд╛ рдЙрдареНрдЫрдиреНред

YAML Zen рдорд╛ 10 рдХрджрдо

рд╕реНрдпреВрдбреЛ-рдХрдиреНрдлрд┐рдЧрд┐рдЩ рд╕реВрдЪреАрдмрджреНрдз рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВ (рдорд╛рд░реНрдЯрд┐рди рд░ рддрд╛рдмрд┐рдерд╛) рд░ рддрд┐рдиреАрд╣рд░реВрдХрд╛ рд╕реАрдкрд╣рд░реВ (рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВ: рдкрд╛рдЗрдерди, рдкрд░реНрд▓, рдкрд╛рд╕реНрдХрд▓ рд░ рд▓рд┐рд╕реНрдк, рдлреЛрд░рдЯреНрд░рд╛рди, рдПрд░реНрд▓рд╛рдВрдЧ, рдХреНрд░рдорд╢рдГ)ред

рдХрд╛рдЧрдЬрдХреЛ рдЯреБрдХреНрд░рд╛рдорд╛ рдЫрджреНрдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдХреЛрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рдпрд╕рд▓рд╛рдИ рдзреНрдпрд╛рдирдкреВрд░реНрд╡рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░, рдпрджрд┐ рд╕рдмреИ рдХреБрд░рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЫ рднрдиреЗ, рдпрд╕рд▓рд╛рдИ рд╡реИрдз YAML рдлрд╛рдЗрд▓рдХреЛ рд░реВрдкрдорд╛ рдврд╛рдБрдЪрд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

6. рдЯреНрдпрд╛рдмрд╣рд░реВ рдмрдирд╛рдо рд╕реНрдкреЗрд╕реЗрд╕ рджреБрд╡рд┐рдзрд╛

рджреБрд╡рд┐рдзрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреБ рдкрд░реНрдиреЗрдЫ "рдЯреНрдпрд╛рдмрд╣рд░реВ рд╡рд╛ рдЦрд╛рд▓реА рдард╛рдЙрдБрд╣рд░реВ?"ред рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЕрд░реНрдердорд╛ рд╣реЛрдЗрди, рддрд░ рдХреЗрд╡рд▓ рддрдкрд╛рдИрдВрдХреЛ рд╕рдВрдЧрдардирдХреЛ рд╕реНрддрд░рдорд╛, рд╡рд╛ рдХрдореНрддрд┐рдорд╛ рдПрдЙрдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ред рдпрд╕рд▓реЗ sed рд╕реНрдХреНрд░рд┐рдкреНрдЯрдХреЛ рд╕рд╛рде рдкреЛрд╕реНрдЯ-рдкреНрд░реЛрд╕реЗрд╕рд┐рдЩ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВрдХреЛ рдореЗрд╕рд┐рдирдорд╛ рдкрд╛рда рд╕рдореНрдкрд╛рджрдХрд╣рд░реВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ, рд╡рд╛ рдЦрд╛рд░реЗрдЬреАрдХреЛ рдЦрддрд░рд╛рдорд╛ рд▓рд┐рдиреНрдЯрд░рдХреЛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдХреЛ рдХрдбрд╛ рдЕрдиреБрдкрд╛рд▓рдирдХреЛ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рд░реВрдкрдорд╛ рд░рд╕рд┐рджрд╣рд░реВ рд▓рд┐рдиреЗ рдХреБрд░рд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджреИрди, рддрд░ рддрдкрд╛рдИрдВрдХреЛ рдЯреЛрд▓реАрдХрд╛ рд╕рдмреИ рд╕рджрд╕реНрдпрд╣рд░реВ рдЬрд╕рд▓реЗ рдПрдХ рддрд░рд┐рдХрд╛ рд╡рд╛ рдЕрд░реНрдХреЛ YAML рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЦрд╛рд▓реА рдард╛рдЙрдБрд╣рд░реВ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫ (YAML рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдЕрдиреБрд╕рд╛рд░ рдЖрд╡рд╢реНрдпрдХ рдЫ)ред

рдХреБрдиреИ рдкрдирд┐ рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рда рд╕рдореНрдкрд╛рджрдХрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдкреЗрд╕рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛рдорд╛ рд╕реНрд╡рдд: рд╕рд╣реА рдЯреНрдпрд╛рдмрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдХреБрдЮреНрдЬреА рдЕрдиреБрдпрд╛рдпреАрд╣рд░реВрдХреЛ рд╡рд┐рджреНрд░реЛрд╣ рдЯреНрдпрд╛рдм рддрд┐рдореА рдбрд░рд╛рдЙрдиреБ рдкрд░реНрджреИрдиред

рдкреНрд░рддреНрдпреЗрдХ YAML рдШреГрдгрд╛ рдЧрд░реНрдиреЗрд▓рд╛рдИ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдерд╛рд╣рд╛ рдЫ, рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдХреНрд░рд┐рдирдорд╛ рдЯреНрдпрд╛рдмрд╣рд░реВ рд░ рд╕реНрдкреЗрд╕рд╣рд░реВ рдмреАрдЪрдХреЛ рднрд┐рдиреНрдирддрд╛ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдиред рд░ рдЬрдм рдХреЗрд╣рд┐ рджреЗрдЦрд┐рдБрджреИрди, рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЕрдиреНрддрд┐рдо рдЪреАрдЬ рд╣реЛ рдЬреБрди рдорд╛рдирд┐рд╕рд╣рд░реВрд▓реЗ рд╕рдореНрдЭрдиреНрдЫрдиреН, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХреНрд░рдордмрджреНрдз рдЧрд░реЗрдкрдЫрд┐, рдЬрд╛рдБрдЪ рдЧрд░реЗ рд░ рдЕрдиреНрдп рд╕рдмреИ рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╣рдЯрд╛рдПред рдЯреНрдпрд╛рдмреБрд▓реЗрд╢рди рдХрд░реНрдн рд╡рд╛ рд╕реНрдкреЗрд╕рдХреЛ рдмреНрд▓рдХ рдЦреЛрдЬреНрди рдмрд┐рддрд╛рдПрдХреЛ рд╕рдордпрдХреЛ рдПрдХ рдШрдгреНрдЯрд╛ рдорд╛рддреНрд░ рдЪрд┐рдЪреНрдпрд╛рдЙрдЫ рдХрд┐ рддрдкрд╛рдИрд▓реЗ рддреБрд░реБрдиреНрддреИ рдПрдХ рд╡рд╛ рдЕрд░реНрдХреЛрдХреЛ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдиреАрддрд┐ рдмрдирд╛рдЙрдиреБ рдкрд░реНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдпрд╕рдХреЛ рдЕрдиреБрдкрд╛рд▓рдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдмрд▓рд┐рдд рдареЛрд╕ рдЬрд╛рдБрдЪ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдорд╛рд░реНрдлрдд рдПрдХ рд▓рд┐рдиреНрдЯрд░ рдорд╛рд░реНрдлрдд рдмрд▓ рдЧрд░реНрди рдПрдХ Git рд╣реБрдХ)ред

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 рдПрдЙрдЯрд╛ рдареВрд▓реЛ рдЪреАрдЬ рд╣реЛ рдЬреБрди рдзреЗрд░реИ рдорд╛рдирд┐рд╕рд╣рд░реВрд▓реЗ рдпрд╕рдХреЛ minimalism рд░ рд╕рд╛рджрдЧреАрдХреЛ рд▓рд╛рдЧрд┐ рдорди рдкрд░рд╛рдЙрдБрдЫрдиреН, рддрд░ рдпреЛ рддрдкрд╛рдИрдВрдХреЛ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░рдХреЛ рдПрдХ рдорд╛рддреНрд░ рдЙрдкрдХрд░рдгрдмрд╛рдЯ рдЯрд╛рдврд╛ рдЫред рддреНрдпрд╕реИрд▓реЗ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рддрдкрд╛рдИрдВ рдпрд╕рд▓рд╛рдИ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкрд╛рд░реНрд╕рд┐рдЩ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрд╣рд░реВ YAML рдХреЛ рд▓рд╛рдЧрд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕рдЬрд┐рд▓реЛ рдорд╛рдЗрдЧреНрд░реЗрд╕рди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рдпрд╕ рдЕрд╕рдлрд▓рддрд╛рд▓рд╛рдИ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдкреАрдбрд╛рд░рд╣рд┐рдд рд░реВрдкрдорд╛ рдмрд╛рдБрдЪреНрдиреЗрдЫрдиреНред

рдпрджрд┐ рддрдкрд╛рдИрдВ YAML рдмрд┐рдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдпреА 10 рд╕реБрдЭрд╛рд╡рд╣рд░реВ рд▓рд┐рдиреБрд╣реЛрд╕реН рд░ YAML рд▓рд╛рдИ рдПрдХ рдкрдЯрдХ рд░ рд╕рдмреИрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреНрдиреЛ рдорди рдирдкрд░рд╛рдЙрдиреЗрд▓рд╛рдИ рдЬрд┐рддреНрдиреБрд╣реЛрд╕реН!

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди