āĻāĻŽāĻ°āĻž āĻ¸āĻŦāĻžāĻ Ansible āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°āĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ Ansible āĻšāĻ˛ YAMLāĨ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻ āĻ°āĻ¯āĻŧā§āĻā§: āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž, āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°-āĻŽāĻžāĻ¨ āĻā§āĻĄāĻŧāĻž, INI āĻĢāĻžāĻāĻ˛, YAML, JSON, XML āĻāĻŦāĻ āĻāĻ°āĻ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋā§ˇ āĻ¯āĻžāĻāĻšā§āĻ, āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻžāĻ°āĻŖā§, āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻāĻ˛ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§, YAML āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ āĻŦāĻŋāĻļā§āĻˇāĻāĻžāĻŦā§ āĻāĻ āĻŋāĻ¨ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§, āĻāĻ° āĻ¸āĻ¤ā§āĻāĻāĻ° āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽāĻ¤āĻž āĻāĻŦāĻ āĻ āĻ¨ā§āĻā§āĻ°āĻŽāĻŋāĻ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻ¤ā§āĻ¤āĻžāĻāĻ°ā§āĻˇāĻ āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻž āĻĨāĻžāĻāĻž āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§āĻ, YAML āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸āĻāĻŋ āĻāĻ¨ā§āĻĄā§āĻ¨ā§āĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻžāĻāĻĨāĻ¨ā§āĻ° āĻŽāĻ¤ā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻ°āĻā§āĻ¤āĻŋāĻāĻ° āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ¯āĻĻāĻŋ YAML āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻŋāĻ°āĻā§āĻ¤ āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ - āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻŋāĻ¤! - āĻā§āĻ°āĻšāĻŖāĻ¯ā§āĻā§āĻ¯ āĻ¸ā§āĻ¤āĻ°ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻā§āĻŦāĻžāĻ˛āĻž āĻāĻŽāĻžāĻ¤ā§ āĻāĻŦāĻ YAML āĻā§ āĻāĻžāĻ˛āĻŦāĻžāĻ¸āĻ¤ā§ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ 10āĻāĻŋ āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻ¨āĻŋāĻ¨āĨ¤ āĻāĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ° āĻāĻĒāĻ¯ā§āĻā§ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻĻāĻļāĻāĻŋ āĻāĻŋāĻĒāĻ¸ āĻ¸ā§āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻĨā§āĻā§ āĻ¨āĻŽā§āĻŦāĻ° āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻŦā§, āĻāĻŽāĻ°āĻž āĻāĻā§āĻāĻžāĻŽāĻ¤ā§ āĻ§ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ āĻāĻ§ā§āĻ¯āĻžāĻ¤ā§āĻŽāĻŋāĻ āĻ
āĻ¨ā§āĻļā§āĻ˛āĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻŋ đ
0. āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ āĻāĻžāĻ āĻāĻ°ā§āĻ¨
āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§ āĻā§āĻ¨ āĻĒāĻžāĻ ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ āĻāĻā§ āĻ¤āĻž āĻŦāĻŋāĻŦā§āĻā§āĻ¯ āĻ¨āĻ¯āĻŧ, āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻĒāĻā§āĻˇā§ āĻāĻāĻāĻŋ YAML āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻž āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻā§āĻāĻā§āĻ¨ āĻāĻŦāĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻŦāĻ āĻāĻžāĻ¸ā§āĻāĻŽāĻžāĻāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°ā§āĻ¨ āĻ¤āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° YAML āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻ¨ā§āĻāĻŦāĻžāĻ° āĻĒāĻ°āĻŋāĻļā§āĻ§ āĻāĻ°āĻŦā§āĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ
YAML āĻŽā§āĻĄā§ Emacs āĻāĻŦāĻ āĻ¸ā§āĻĒā§āĻ¸ āĻĻā§āĻāĻžāĻā§āĻā§āĨ¤
āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻā§āĻ° āĻ¯āĻĻāĻŋ YAML āĻŽā§āĻĄ āĻ¨āĻž āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, GNOME, Gedit-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻĒāĻžāĻ ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻā§āĻ° YAML āĻŽā§āĻĄ āĻ¨ā§āĻ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ āĻāĻāĻŋ YAML āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ¨ā§āĻĄā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻāĻžāĻ¸ā§āĻāĻŽāĻžāĻāĻ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ:
Gedit-āĻ āĻāĻ¨ā§āĻĄā§āĻ¨ā§āĻ āĻ¸ā§āĻ āĻāĻ°āĻžāĨ¤
āĻāĻāĻāĻŋ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨
āĻ āĻ¨ā§āĻ¯ āĻāĻĨāĻžāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ āĻļāĻŋāĻāĻ¤ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻŋāĻ¨āĨ¤ YAML āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¤āĻŋāĻ¨āĻŋ āĻŦāĻž āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧ āĻā§ āĻ āĻĢāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻž āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻ āĻ¸ā§āĻ¯ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻĻā§āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻāĻŋ āĻ āĻ¨ā§āĻļā§āĻāĻ¨āĻž āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž.
1. āĻāĻāĻāĻŋ āĻ˛āĻŋāĻ¨ā§āĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨
āĻāĻĻāĻ°ā§āĻļāĻāĻžāĻŦā§, āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻžāĻˇāĻž āĻāĻŦāĻ āĻŽāĻžāĻ°ā§āĻāĻāĻĒ āĻāĻžāĻˇāĻžāĻā§āĻ˛āĻŋ āĻ
āĻ¨ā§āĻŽāĻžāĻ¨āĻ¯ā§āĻā§āĻ¯ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻāĻŦāĻŋāĻˇā§āĻ¯āĻĻā§āĻŦāĻžāĻŖā§āĻ¤ā§ āĻāĻžāĻ˛, āĻ¯ā§ āĻāĻžāĻ°āĻŖā§ 1978 āĻ¸āĻžāĻ˛ā§ āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻāĻ¤ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛
āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž
$ sudo dnf install 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 āĻĄā§āĻāĻž āĻ˛āĻŋāĻā§āĻ¨, āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻāĻŽāĻĻāĻžāĻ¨āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻž āĻ¸āĻš āĻāĻĒāĻ¸āĻ°ā§āĻ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻāĻĒā§āĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻļā§āĻˇā§ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻ˛āĻžāĻāĻ¨ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨āĨ¤
#!/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
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻĒāĻžāĻāĻĨāĻ¨ā§ āĻāĻ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻ°āĻžāĻ¨ āĻāĻ°āĻŋ āĻāĻŦāĻ 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, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋ āĻĨā§āĻā§ āĻ¨āĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
{
"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-āĻ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž, āĻā§āĻ āĻāĻāĻ āĻāĻ°āĻž āĻ¸āĻšāĻžāĻ¯āĻŧāĻ
5. Pseudoconfigs
āĻāĻāĻāĻŋ āĻŦāĻ āĻŦāĻž āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻ°ā§āĻĒāĻ°ā§āĻāĻž āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¸ā§āĻā§āĻ āĻāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻžāĻ˛ āĻ§āĻžāĻ°āĻŖāĻž, āĻ āĻ¨ā§āĻ¤āĻ¤ āĻāĻāĻāĻŋ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ¸āĻžāĻ°āĻŖā§ āĻāĻāĻžāĻ°ā§ā§ˇ YAML āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĨ¤ āĻ¸āĻŽā§āĻāĻŦāĻ¤, YAML āĻĢāĻžāĻāĻ˛ā§ āĻā§ āĻĄā§āĻāĻž āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻŦā§ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻāĻā§, āĻ¤āĻŦā§ āĻā§āĻāĻžāĻŦā§ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻž āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻā§āĻ¨ āĻ¨āĻžāĨ¤ āĻ āĻ¤āĻāĻŦ, YAML āĻāĻžāĻ¸ā§āĻāĻ°ā§āĻ¯ āĻāĻ°āĻžāĻ° āĻāĻā§, āĻāĻāĻāĻŋ āĻāĻĻā§āĻŽ-āĻāĻ¨āĻĢāĻŋāĻ āĻāĻāĻā§āĻ¨āĨ¤
Pseudoconfig āĻšāĻ˛ pseudocode āĻāĻ° āĻŽāĻ¤ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ āĻ¨ āĻŦāĻž āĻāĻ¨ā§āĻĄā§āĻ¨ā§āĻā§āĻļāĻ¨, āĻĒāĻŋāĻ¤āĻž-āĻŽāĻžāĻ¤āĻž-āĻ¸āĻ¨ā§āĻ¤āĻžāĻ¨ā§āĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ, āĻāĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻāĻŦāĻ āĻ¨ā§āĻ¸ā§āĻāĻŋāĻ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻŋāĻ¨ā§āĻ¤āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ āĻāĻāĻŋ āĻāĻāĻžāĻ¨ā§: āĻāĻĒāĻ¨āĻŋ āĻĄā§āĻāĻžāĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻāĻāĻāĻŦā§āĻ¨ āĻ¯ā§āĻŽāĻ¨ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻŽāĻžāĻĨāĻžāĻ¯āĻŧ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤
Pseudoconfig āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻā§āĻā§āĻ¤ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻžāĻ° (āĻŽāĻžāĻ°ā§āĻāĻŋāĻ¨ āĻāĻŦāĻ āĻ¤āĻžāĻŦāĻŋāĻĨāĻž) āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻĻāĻā§āĻˇāĻ¤āĻž (āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻžāĻˇāĻž: Python, Perl, Pascal āĻāĻŦāĻ Lisp, Fortran, Erlang, āĻ¯āĻĨāĻžāĻā§āĻ°āĻŽā§)āĨ¤
āĻāĻžāĻāĻā§āĻ° āĻā§āĻāĻ°ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻĻā§āĻŽ-āĻāĻ¨āĻĢāĻŋāĻ āĻāĻāĻāĻ˛ā§, āĻ¸āĻžāĻŦāĻ§āĻžāĻ¨ā§ āĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ, āĻ¯āĻĻāĻŋ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ āĻŋāĻāĻ āĻžāĻ āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻŦā§āĻ§ YAML āĻĢāĻžāĻāĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻ āĻāĻ°ā§āĻ¨āĨ¤
6. āĻā§āĻ¯āĻžāĻŦ āĻŦāĻž āĻ¸ā§āĻĒā§āĻ¸ āĻĻā§āĻŦāĻŋāĻ§āĻž
āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻĻā§āĻŦāĻŋāĻ§āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§
āĻ¯ā§āĻā§āĻ¨ā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻā§āĻā§āĻ¸āĻ āĻāĻĄāĻŋāĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻāĻā§āĻ¯āĻ āĻ¸ā§āĻĒā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ¯āĻžāĻŦāĻā§āĻ˛āĻŋāĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¤āĻžāĻ āĻā§āĻāĻŋāĻ° āĻ āĻ¨ā§āĻāĻžāĻŽā§āĻĻā§āĻ° āĻŦāĻŋāĻĻā§āĻ°ā§āĻš āĻā§āĻ¯āĻžāĻŦ āĻāĻĒāĻ¨āĻŋ āĻāĻ¯āĻŧ āĻĒāĻžāĻŦā§āĻ¨ āĻ¨āĻž.
āĻ¯ā§āĻšā§āĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ 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