Шпаргалка по расширенному синтаксису YAML

Шпаргалка по расширенному синтаксису YAML Программирование и разработка

YAML (YAML Ain’t Markup Language) — это язык сериализации данных, используемый для создания файлов конфигурации пар ключ-значение и API приложений. Это надмножество JSON, форматируемое с использованием разрывов строк и пробелов для улучшения читаемости.

Хотя это не технология повседневного использования, она является важной основой для многих современных технологий, таких как Ansible, и, следовательно, является предпосылкой для более высокооплачиваемых ролей разработчика.

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

Валидатор и парсер YAML

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

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

Самый популярный валидатор — YAMLLint, бесплатный инструмент с открытым исходным кодом, доступный в вашем браузере или на Github. YAMLLint считается наиболее удобным линтером, поскольку он обеспечивает выделение ошибок, автоформатирование для копирования / вставки YAML и параметры автокоррекции.

Якоря и псевдоним YAML

Якоря и псевдонимы — это конструкции YAML, которые позволяют сократить синтаксис повторения и расширить существующие узлы данных. Вы можете разместить Anchors ( &) на объекте, чтобы отметить многострочный раздел. Затем вы можете использовать *вызов Alias ​​( ), который будет привязан позже в документе, для ссылки на этот раздел. Якоря и псевдонимы очень полезны для больших проектов, поскольку они устраняют визуальный беспорядок, вызванный лишними линиями.

Читайте также:  Динамическая визуализация с использованием Python

Псевдоним, по сути, действует как команда «см. Выше», которая заставляет программу приостанавливать стандартный обход, возвращаться к точке привязки, а затем возобновлять стандартный обход после завершения закрепленной части. Если вы знакомы с конструкциями объектно-ориентированного программирования, с Anchors вы будете чувствовать себя как дома.

Ниже build-testякорь начинается в строке 3 и вызывается псевдонимами в строках 13 и 15.

definitions
  steps:
    - step: &build-test
        nameBuild and test
        script:
          - mvn package
        artifacts:
          - target/**

pipelines:
  branches:
    develop:
      - step: *build-test
    master:
      - step: *build-test

Переопределения и расширения

Вы также можете настроить якорь при вызове, введя его <<:перед псевдонимом. Ниже вы можете написать любые желаемые изменения. Сопоставления переопределяются, если новое сопоставление имеет то же имя, или добавляется позже, если оно отличается.

definitions
  steps:
    - step: &build-test
        nameBuild and test
        script:
          - mvn package
        artifacts:
          - target/**


pipelines:
  branches:
    develop:
      - step: *build-test
    master:
      - step
          <<: *build-test
          nameTesting on Master #override
          ongoingfalse #extension

Схемы YAML

Схемы — это наборы правил в YAML 1.2, которые сообщают загрузчику / парсеру, что каждая часть вашего файла YAML преобразуется в фактические команды. По сути, они представляют собой набор операторов if / then для обработки удобочитаемых тегов YAML. Например, в схеме YAML Core указано, что оба !!str my stringи my stringэквивалентны и должны анализироваться для одного и того же действия.

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

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

---
# Ruby Psych
dice!ruby/Object:Dice [3, 6]

---
# perl YAML::XS, YAML.pm, YAML::Syck (Dump and Load)
dice!!perl/array:Dice [3, 6]

---
# perl YAML.pm, YAML::Syck (Load)
dice!perl/array:Dice [3, 6]

---
# Pyyaml
dice!!python/object/new:__main__.Dice
  - !!python/tuple [3, 6]

Для YAML есть три схемы по умолчанию:

  • Failsafe Schema: минималистичная схема, которая поддерживает только теги String ( !!str), Map ( !!map) и Sequence ( !!seq). Failsafe гарантированно работает с любым документом YAML из-за его простоты, но он не поддерживает никаких сложных тегов.
  • Схема JSON: базовая схема, предназначенная для надежного синтаксического анализа эквивалентных файлов YAML и JSON для получения одного и того же конечного результата. Это наиболее часто используемая схема и отправная точка для большинства схем. Он поддерживает все отказоустойчивые теги, а также Boolean ( !!bool), null ( !!null), Integer ( !!int) и Float ( !!float).
  • Базовая схема: схема YAML по умолчанию, которая расширяет критерии соответствия на стороне YAML. По сути, это менее самоуверенная версия схемы JSON. Например, JSON принимает логические значения, соответствующие критерию «Соответствие: true| false». Для сравнения, вот логический критерий Core: » true| True| TRUE| false| False| FALSE«.

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

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

YAML предлагает escape-последовательности, чтобы вы могли указать, следует ли интерпретировать символ как специальный символ или как часть скаляра. Например, вы можете избежать одного пробела, используя &#x20;для создания строки со значением.

Последовательности побега бывают трех типов:

  • Экраны сущностей, которые позволяют использовать другие синтаксически важные символы с помощью пробела ( &#x20;), двоеточия ( :), амперсанда ( &).
  • Экраны Unicode, которые позволяют добавлять пробел ( \u0020), одинарную кавычку ( \u0027) или двойную кавычку ( \u0022) путем вызова их уникального ключа непосредственно из списка пар ключ-значение Unicode.
  • Quoted Escapes, которые позволяют отображать цитируемые предложения с использованием дополнительных кавычек. Например, двойные кавычки могут быть показаны внутри одинарных кавычек («цитата») или вложены в другой набор двойных кавычек («abc» quote «cba») и с вложенными одинарными кавычками («цитата»).

Примечание. Полный список управляющих последовательностей YAML можно найти в официальной спецификации YAML.

Разделители и директивы YAML

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

Еще один более продвинутый разделитель -…это конец документа. За разделителем конца документа должен следовать либо разделитель начала документа ( —), либо набор директив. Директивы — это определенные настройки, помеченные значком, %который стоит перед документом и сопровождается —.

Это означает…и —необходимо для обозначения границ директивного пространства. Две текущие директивы — это %YAML, которая позволяет вам установить версию YAML для будущего документа, и %TAGSкоторая позволяет вам создавать собственные сокращения для тегов, которые вы будете использовать в документе.

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

doc 1 
... 
 
%TAG !foo! !foo-types/ 
 
--- 
 
doc 2

Отметка времени YAML

Отметка времени — это полезный тип данных, который позволяет хранить время как единицу, а не как набор различных чисел. Он помечен !!timestampтегом данных и может содержать различные уровни специфичности, например простой yyyy/mm/ddили до долей секунды 2001-12-15T2:59:43.10. Вы также можете разделить дату и время, используя пробелы, чтобы сделать отметку времени более читаемой, например2001-12-15 2:59:43.10

Все временные метки записываются как всемирное координированное время (UTC), если в конце временных меток не указан другой часовой пояс. Вы определяете часовой пояс, указав, на сколько часов он опережает или отстает от UTC.

Например, я мог бы установить метку времени как стандартное тихоокеанское время (PST) с символом −8в конце.

2001-12-15 2:59:43.10 -8`. 

Это похоже на DateTime, используемое в популярных языках программирования, таких как JavaScript или Python, за исключением того, как он обрабатывает часовой пояс. DateTime по умолчанию записывает время, указанное в часовом поясе хост-сервера.

Это может привести к проблемам при работе с сетями за пределами их часового пояса. Компьютер должен преобразовывать в UTC, а затем в часовой пояс места назначения каждый раз, когда вызывается дата, что замедляет процессы.

Заключение

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

Чтобы помочь вам поразить рекрутеров своими навыками YAML, Educative создал Introduction to YAML. Этот курс охватывает синтаксис и методы на уровне от новичка до эксперта в сжатом практическом формате. К концу курса вы сможете уверенно использовать YAML и будете иметь собственный сертификат YAML, который можно будет разместить в своем резюме.

Оцените статью
bestprogrammer.ru
Добавить комментарий