Расширение yaml что это

YAML за 5 минут: синтаксис и основные возможности

Авторизуйтесь

YAML за 5 минут: синтаксис и основные возможности

YAML — это язык для сериализации данных, который отличается простым синтаксисом и позволяет хранить сложноорганизованные данные в компактном и читаемом формате. Рассказываем, как это пригодится для DevOps и виртуализации.

Что такое YAML?

YAML — это язык для хранения информации в формате понятном человеку. Его название расшифровывается как, «Ещё один язык разметки». Однако, позже расшифровку изменили на — «YAML не язык разметки», чтобы отличать его от настоящих языков разметки.

Язык похож на XML и JSON, но использует более минималистичный синтаксис при сохранении аналогичных возможностей. YAML обычно применяют для создания конфигурационных файлов в программах типа Инфраструктура как код (Iac), или для управления контейнерами в работе DevOps.

Чаще всего с помощью YAML создают протоколы автоматизации, которые могут выполнять последовательности команд записанные в YAML-файле. Это позволяет вашей системе быть более независимой и отзывчивой без дополнительного внимания разработчика.

Всё больше и больше компаний используют DevOps и виртуализацию, поэтому YAML — это must have для современного разработчика. Кроме того, YAML легко интегрировать, благодаря поддержке Python (используя PyYAML библиотеку, Docker или Ansible) и других популярных технологий.

YAML vs JSON vs XML

YAML (.yml)

Применение: YAML лучше всего подходит для приложений с большим объемом данных, которые используют DevOps конвейеры или виртуальные машины. Кроме того, улучшение читаемости данных пригодится в командах, где разработчики часто с ними взаимодействуют.

Применение: JSON используется в веб-разработке — это лучший формат для сериализации и передачи данных через HTTP-соединение.

Применение: XML идеален для сложных проектов, которым требуется тонкий контроль над валидацией, схемой и пространством имён. Язык обладает плохой читаемостью, требует большей пропускной способности и ёмкости хранилища, но обеспечивает беспрецедентный контроль.

Характерные особенности YAML

Поддержка мультидокументов

Вы можете объединить несколько YAML-документов в один YAML-файл для облегчения организации файлов и парсинга данных.

Документы разделяются тремя дефисами (—):

Поддержка комментариев

YAML позволяет добавлять комментарии после символа #, как в Python:

Легко читаемый синтаксис

В синтаксисе YAML-файлов используется система отступов, как в Python. Необходимо использовать пробелы, а не табуляцию, чтобы избежать путаницы.

Это избавляет от лишних символов, которые есть в JSON и XML (кавычки, скобки, фигурные скобки).

В итоге читаемость файла значительно повышается.

Явная и неявная типизация

Отсутствие исполняемых файлов

YAML не содержит исполняемых файлов. Поэтому можно безопасно обмениваться YAML-файлами с третьей стороной.

Чтобы использовать исполняемые файлы, YAML нужно интегрировать с другими языками, например Perl или Java.

Синтаксис YAML

В языке есть несколько базовых концепций, которые позволяют обрабатывать большинство данных.

Пары ключ-значение

Большинство данных в YAML-файле хранятся в виде пары ключ-значение, где ключ — это имя пары, а значение — связанные данные.

Скаляры и маппинг

Скаляр представляет собой одно значение, которому соответствует имя.

YAML поддерживает стандартные типы: int и float, boolean, string и null.

Строки

Строка — это коллекция символов, которая может содержать слово или предложение. Можно использовать либо |, для отдельных строк, либо >, для параграфов.

Кавычки в YAML не нужны.

Последовательности

Последовательности — это структуры данных похожие на списки или массивы, которые хранят несколько значений под одним ключом. Они определяются с помощью отступов или [].

Однострочные последовательности выглядят лаконичнее, но хуже читаются.

Словари

Словари — это коллекции пар ключ-значение, которые хранятся под одним ключом. Они позволяют разделить данные на логические категории.

Словари могут содержать более сложные структуры, что позволяет хранить сложные реляционные данные.

Источник

Yaml vs. Json — что круче?

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Сегодня поговорим об интересном (и таинственном для фронтов) формате YAML. Он считается одним из наиболее популярных форматов для файлов конфигураций.

Цель этой статьи — познакомить вас со структурой YAML, помочь понимать, читать и изменять YAML-файлы. Для тех, кто уже знаком с форматом — напомнить про некоторые его особенности. И сравнить YAML с JSON.

Цели создания

Сообщество разработчиков устало от «зоопарка» различных форматов для конфигов, им хотелось упростить себе жизнь и прийти к единому понятному формату. И в 2001 году Кларк Эванс создал YAML 1.0.

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это
Рис.1. Определение из официальной документации

Сейчас последняя версия — YAML 1.2, и она в основном используется как формат для файлов конфигурации Ruby on Rails, Dancer, Symfony, GAE framework, Google App Engine и Dart. Также YAML является основным языком описания классов, ресурсов и манифестов для пакетов приложений OpenStack Murano Project и Swagger.io.

YAML vs. JSON

По сути YAML — это расширенная версия известного нам формата JSON.

Чтобы лучше разобраться в формате, давайте сначала рассмотрим пример JSON-конфига:

Этот файл очень легко читается, мы можем быстро определить, что к чему, но … нужно знать, что у JSON-формата есть некоторые ограничения:

Попробуем переписать наш пример в формате YAML. Пока рассмотрим только синтаксис, а остальные особенности чуть позже.

*Хабр не умеет подсвечивать YAML, так что пришлось разместить картинки
Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Как вам? Мне на первый взгляд показалось, что очень похоже на Python, но с какими-то опечатками.

Рассмотрим синтаксис подробнее.

Концепции, типы, синтаксис

Отступы

В YAML для разделения информации очень важны отступы. Нужно помнить, что используются только пробелы, табы не допускаются.

При отсутствии отступа перед первым объявлением YAML поймет, что это корень (уровень 0) вашего файла.

Если вы привыкли использовать tab-ы вместо пробелов, то можно использовать какой-нибудь плагин в вашей IDE, чтобы заменить все пропуски на пробелы (например, editorconfig).

Ключ/Значение

Как и в JSON/JS, в YAML есть синтаксис ключ/значение, и вы можете использовать его различными способами:

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Комментарии

Чтобы написать комментарий, вы можете использовать #, а затем ваше сообщение.

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Это круто, когда нужно задокументировать какое-то решение или сделать заметку в конфиге. К сожалению, мы не можем так сделать в JSON.

Списки

В YAML есть 2 способа написания списков:

Помните, что YAML — это расширенный JSON? Поэтому мы можем использовать его синтаксис

Наиболее распространенный и рекомендуемый

Числа

Тут все стандартно: целые числа и числа с плавающей точкой.

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Строки

Есть несколько способов объявить строку в YAML:

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Если вы хотите использовать какой-нибудь специальный символ, например, _ или @, то нужны будут кавычки.

Напомню, что в JSON у нас есть только один способ написания строк — двойные кавычки.

Якорь (переменная или ссылка)

Якорь — это механизм для создания переменных, на которые затем можно ссылаться.

Давайте представим, что вам нужно создать конфигурацию для вашего CI. Он будет иметь версию для production и development сред. Обе версии будут иметь почти одинаковые базовые настройки.

В JSON нам пришлось бы дублировать эти конфиги:

Копирование и вставка очень раздражают, особенно когда нужно что-то изменить во всех местах.

Якорь решает эту проблему. Для его создания используется символ якоря (&), а для вставки — алиас (*).

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это
Рис.2. Отсылка к фильму «Матрица»

Возможности YAML-а покоряют при его сравнении с JSON. Но если у вас довольно простой конфиг в пару-тройку строк, то нет смысла усложнять и использовать дополнительные возможности YAML, лучше выбрать JSON. А если же у вас довольно большой и витиеватый файл, то тут однозначно стоит рассмотреть YAML.

У YAML есть еще несколько интересных фишек таких как: многострочный ввод, мерж блоков, матрицы, наследование и другие.

Так как YAML — это расширенный JSON, то мы можем писать YAML-файл в JSON-формате, и он будет работать. Это отличная особенность, которая позволит легче начать изучение YAML.

Источник

Расширение файла YAML

YAML Document

Что такое файл YAML?

Программы, которые поддерживают YAML расширение файла

Следующий список содержит программы, сгруппированные по 3 операционным системам, которые поддерживают YAML файлы. Файлы с суффиксом YAML могут быть скопированы на любое мобильное устройство или системную платформу, но может быть невозможно открыть их должным образом в целевой системе.

Программы, обслуживающие файл YAML

Как открыть файл YAML?

Причин, по которым у вас возникают проблемы с открытием файлов YAML в данной системе, может быть несколько. С другой стороны, наиболее часто встречающиеся проблемы, связанные с файлами YAML Document, не являются сложными. В большинстве случаев они могут быть решены быстро и эффективно без помощи специалиста. Мы подготовили список, который поможет вам решить ваши проблемы с файлами YAML.

Шаг 1. Получить gVim

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что этоНаиболее распространенной причиной таких проблем является отсутствие соответствующих приложений, поддерживающих файлы YAML, установленные в системе. Этот легкий. Выберите gVim или одну из рекомендованных программ (например, Adobe Dreamweaver, Windows Notepad, NotePad++ text editor) и загрузите ее из соответствующего источника и установите в своей системе. Полный список программ, сгруппированных по операционным системам, можно найти выше. Если вы хотите загрузить установщик gVim наиболее безопасным способом, мы рекомендуем вам посетить сайт и загрузить его из официальных репозиториев.

Шаг 2. Убедитесь, что у вас установлена последняя версия gVim

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что этоЕсли проблемы с открытием файлов YAML по-прежнему возникают даже после установки gVim, возможно, у вас устаревшая версия программного обеспечения. Проверьте веб-сайт разработчика, доступна ли более новая версия gVim. Разработчики программного обеспечения могут реализовать поддержку более современных форматов файлов в обновленных версиях своих продуктов. Это может быть одной из причин, по которой YAML файлы не совместимы с gVim. Самая последняя версия gVim обратно совместима и может работать с форматами файлов, поддерживаемыми более старыми версиями программного обеспечения.

Шаг 3. Свяжите файлы YAML Document с gVim

Если проблема не была решена на предыдущем шаге, вам следует связать YAML файлы с последней версией gVim, установленной на вашем устройстве. Следующий шаг не должен создавать проблем. Процедура проста и в значительной степени не зависит от системы

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Процедура изменения программы по умолчанию в Windows

Процедура изменения программы по умолчанию в Mac OS

Шаг 4. Убедитесь, что файл YAML заполнен и не содержит ошибок

Если вы выполнили инструкции из предыдущих шагов, но проблема все еще не решена, вам следует проверить файл YAML, о котором идет речь. Вероятно, файл поврежден и, следовательно, недоступен.

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

1. Проверьте YAML файл на наличие вирусов или вредоносных программ.

Если YAML действительно заражен, возможно, вредоносное ПО блокирует его открытие. Сканируйте файл YAML и ваш компьютер на наличие вредоносных программ или вирусов. Если файл YAML действительно заражен, следуйте инструкциям ниже.

2. Убедитесь, что структура файла YAML не повреждена

Если вы получили проблемный файл YAML от третьего лица, попросите его предоставить вам еще одну копию. В процессе копирования файла могут возникнуть ошибки, делающие файл неполным или поврежденным. Это может быть источником проблем с файлом. При загрузке файла с расширением YAML из Интернета может произойти ошибка, приводящая к неполному файлу. Попробуйте загрузить файл еще раз.

3. Проверьте, есть ли у вашей учетной записи административные права

Иногда для доступа к файлам пользователю необходимы права администратора. Переключитесь на учетную запись с необходимыми привилегиями и попробуйте снова открыть файл YAML Document.

4. Убедитесь, что ваше устройство соответствует требованиям для возможности открытия gVim

Если система перегружена, она может не справиться с программой, которую вы используете для открытия файлов с расширением YAML. В этом случае закройте другие приложения.

5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений

Регулярно обновляемая система, драйверы и программы обеспечивают безопасность вашего компьютера. Это также может предотвратить проблемы с файлами YAML Document. Возможно, что одно из доступных обновлений системы или драйверов может решить проблемы с файлами YAML, влияющими на более старые версии данного программного обеспечения.

Вы хотите помочь?

Если у Вас есть дополнительная информация о расширение файла YAML мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле YAML.

Источник

10 шагов к YAML-дзену

Мы все любим Ansible, но Ansible – это YAML. Для конфигурационных файлов существует масса форматов: списки значений, пары «параметр-значение», INI-файлы, YAML, JSON, XML и множество других. Однако по нескольким причинам из всех них YAML часто считается особенно трудным. В частности, несмотря на его освежающий минимализм и впечатляющие возможности для работы с иерархическими значениями, синтаксис YAML может раздражать своим Python-образными подходом к отступам.

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Если вас бесит YAML, вы можете – и должны! – предпринять 10 следующих шагов, чтобы снизить свое раздражение до приемлемого уровня и полюбить YAML. Как и положено настоящему списку, наша десятка советов будет нумероваться с нуля, медитацию и духовные практики добавляем по желанию 😉

0. Заставьте ваш редактор работать

Неважно, какой у вас текстовый редактор – для него наверняка существует хотя бы один плагин для работы с YAML. Если у вас такого нет, немедленно найдите и установите. Потраченное на поиск и настройку время будет многократно окупаться каждый раз, когда вам придется редактировать YAML.

Например, редактор Atom поддерживает YAML по умолчанию, а вот для GNU Emacs придется установить дополнительные пакеты, например, yaml-mode.

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Emacs в режиме YAML и отображения пробелов.

Если в вашем любимом редакторе нет режима YAML, то часть проблем можно решить, поработав с настройками. Например, штатный для GNOME текстовый редактор Gedit не имеет режима YAML, но по умолчанию подсвечивает синтаксис YAML и позволяет настроить работу с отступами:

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Настройка отступов в Gedit.

А плагин drawspaces для Gedit отображает пробелы в виде точек, устраняя неясности с уровнями отступа.

Иными словами, потратьте время на изучение своего любимого редактора. Выясните, что он сам или его сообщество разработки предлагают для работы с YAML, и используйте эти возможности. Вы точно об этом не пожалеете.

1. Используйте линтер (linter)

В идеале языки программирования и языки разметки используют предсказуемый синтаксис. Компьютеры хорошо справляются с предсказуемостью, поэтому еще в 1978 году возникла концепция линтера. Если за 40 лет своего существования она прошла мимо вас и вы до сих пор не пользуетесь YAML-линтером, то самое время попробовать yamllint.

Установить yamllint можно с помощью штатного менеджера пакетов Linux. Например, в Red Hat Enterprise Linux 8 или Fedora это делается так:

Затем вы просто запускаете yamllint, передавая ему YAML-файл для проверки. Вот как это выглядит, если передать линтеру файл с ошибкой:

Цифры слева – это не время, а координаты ошибки: номер строки и столбца. Описание ошибки может вам ни о чем не говорить, зато вы точно знаете, где она находится. Просто посмотрите на это место в коде, и, скорее всего, все станет ясно.

Когда yamllint не находит ошибок в файле, на экран ничего не выводится. Если вас пугает такая тишина и хочется немного больше обратной связи, то можно запускать линтер с условной командой echo через двойной амперсанд (&&), вот так:

В POSIX двойной амперсанд срабатывает тогда и только тогда, когда предшествующая команда возвращает 0. А yamllint как раз возвращает количество найденных ошибок, поэтому вся эта условная конструкция и работает.

2. Пишите на Python, а не на YAML

Если вас реально бесит YAML, просто не пишите на нем, в буквальном смысле. Бывает, что YAML – это единственный формат, который воспринимается приложением. Но и в этом случае необязательно создавать YAML-файл. Пишите на том, что вам нравится, а потом конвертируйте. Например, для Python есть отличная библиотека pyyaml и целых два способа конвертирования: самоконвертирование и конвертирование через скрипты.

Самоконвертирование

В этом случае файл с данными заодно является и Python-скриптом, который генерирует YAML. Этот способ лучше всего подходит для небольших наборов данных. Вы просто пишите JSON-данные в переменную Python, предваряете это директивой import, а в конце файла добавляете три строчки для реализации вывода.

Теперь запускаем это файл на Python-е и на выходе получаем файл output.yaml:

Конвертирование через скрипты

В этом случае сначала пишем на JSON-е, а затем запускаем конвертор в виде отдельного Python-скрипта, который на выходе дает YAML. По сравнению с предыдущим этот способ лучше масштабируется, поскольку конвертирование отделено данных.

Для начала создадим JSON-файл example.json, например, его можно взять на json.org:

Затем создадим простой скрипт-конвертор и сохраним его под именем json2yaml.py. Этот скрипт импортирует оба модуля — YAML и JSON Python, а также загружает указанный пользователем файл JSON, выполняет конвертирование и пишет данные в файл output.yaml.

Сохраните этот скрипт в system path и запускайте по мере необходимости:

3. Парсите много и часто

Иногда на проблему полезно взглянуть под другим углом. Если вам трудно представить взаимосвязи между данными в YAML, можно временно преобразовать их в нечто более привычное.

Например, если вам удобно работать со словарными списками или с JSON, то YAML можно преобразовать в JSON всего двумя командами в интерактивной оболочке Python. Допустим, у вас есть YAML-файл mydata.yaml, тогда вот как это будет выглядеть:

На эту тему можно найти массу других примеров. Кроме того, в наличии множество онлайн-конвертеров и локальных парсеров. Так что не стесняйтесь переформатировать данные, когда видите в них только непонятную мешанину.

4. Читайте спеки

Возвращаясь к YAML после долгого перерыва, полезно зайти на yaml.org и перечитать спецификации (спеки). Если у вас трудности с YAML, но до спецификации руки так и не дошли, то пора эту ситуацию исправлять. Спеки на удивление легко написаны, а требования к синтаксису иллюстрируются большим количеством примеров в Главе 6.

5. Псевдоконфиги

При написании книги или статьи всегда полезно сперва набросать предварительный план, хотя бы в виде оглавления. Так же и с YAML. Скорее всего, вы представляете, какие данные надо записать в файл YAML, но не очень понимаете, как связать их друг с другом. Поэтому прежде чем ваять YAML, нарисуйте псевдоконфиг.

Псевдоконфиг похож на псевдокод, где не надо заботиться о структуре или отступах, отношениях «родитель-потомок», наследовании и вложенности. Так и здесь: вы рисуете итерации данных по мере того, как они возникают у вас в голове.

Расширение yaml что это. Смотреть фото Расширение yaml что это. Смотреть картинку Расширение yaml что это. Картинка про Расширение yaml что это. Фото Расширение yaml что это

Псевдоконфиг с перечислением программистов (Martin и Tabitha) и их навыков (языков программирования: Python, Perl, Pascal и Lisp, Fortran, Erlang, соответственно).

Нарисовав псевдоконфиг на листе бумаги, внимательно проанализируйте его и, если все в порядке, оформите в виде валидного YAML-файла.

6. Дилемма «табуляция или пробелы»

Вам придется решить дилемму «табуляция или пробелы?». Не в глобальном смысле, а лишь на уровне вашей организации, или хотя бы проекта. Неважно, будет ли при этом использоваться пост-обработка скриптом sed, настройка текстовых редакторов на машинах программистов или же поголовное взятие расписок о строгом соблюдении указаний линтера под угрозой увольнения, но все члены вашей команды, которые так или иначе касаются YAML, в обязательном порядке должны использовать только пробелы (как того требует спецификация YAML).

В любом нормальном текстовом редакторе можно настроить автозамену табуляции на заданное количество пробелов, поэтому бунта приверженцев клавиши Tab можно не бояться.

Как хорошо известно каждому ненавистнику YAML, на экране не видно разницы между табуляцией и пробелами. А когда чего-то не видно, об этом, как правило, вспоминают в последнюю очередь, после того, как перебрали, проверили и устранили все остальные возможные проблемы. Час времени, убитый на поиск кривой табуляции или блока пробелов, просто вопиет о том, что вам над срочно создать политику использования того или другого, а затем реализовать железобетонную проверку ее соблюдения (например, через Git-хук для принудительного прогона через линтер).

7. Лучше меньше да лучше (или больше – это меньше)

Некоторые люди любят писать на YAML, поскольку он подчеркивает структуру. При этом они активно используют отступы, чтобы выделять блоки данных. Это такое своего рода жульничество для имитации языков разметки, в которых используются явные разделители.

Вот пример такой структурированности из документации Ansible:

Кому-то такой вариант помогает разложить в голове структуру YAML, других он наоборот раздражает массой ненужных, на их взгляд, отступов.

Но если вы являетесь владельцем YAML-документа и отвечаете за его сопровождение, то вы и только вы должны определять, как использовать отступы. Если вас раздражают большие отступы, сведите их к минимуму, который только возможен согласно спецификации YAML. Например, вышеприведенный файл из документации Ansible без каких бы то ни было потерь можно переписать вот так:

8. Используйте заготовки

Если при заполнении файла YAML вы постоянно повторяете одни и те же ошибки, имеет смысл вставить в него шаблон-заготовку в виде комментария. Тогда в следующий раз можно будет просто скопировать эту заготовку и вписать туда реальные данные, например:

9. Используйте что-то другое

Если приложение не держит вас мертвой хваткой, то, возможно, стоит сменить YAML на другой формат. Со временем конфигурационные файлы могут перерастать себя и тогда лучше преобразовать их в простые скрипты на Lua или Python.

YAML – отличная штука, которую многие любят за минимализм и простоту, но это далеко не единственный инструмент в вашем арсенале. Так что иногда от него можно отказаться. Для YAML легко найти библиотеки парсинга, поэтому, если вы предложите удобные варианты миграции, ваши пользователи относительно безболезненно переживут такой отказ.

Если же без YAML никак не обойтись, то возьмите на вооружение эти 10 советов и победите свою неприязнь к YAML раз и навсегда!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *