Linguagem YAML - Se você não conhece, uma hora vai conhecer.
Oi pessoal, tudo bem ?
Galera hoje eu vou falar do YAML ou Yet another markup language
Criada em 2001, o Yaml não é apenas uma linguagem de marcação, mas sim uma linguagem de serialização de dados.
O que é Serialização ?
Serialização, é a técnica que permite converter objetos em bytes. Com essa conversão, esses dados podem ser salvos em disco ou enviados através de stream via HTTP, Sockets e outros.
Ok, mas onde entra o YAML nisso ?
Com o Yaml é possível fazer essa serialização de forma simples, além da linguagem ter alguns benefícios.
O YAML foi criado com objetivo de :
- Ser lido facilmente por humanos
- Portátil
- Integrar facilmente com outras linguagens
- Fácil de implementar e usar
O Yaml é a linguagem principal para criar configurações em algumas aplicações feitas em Docker e Kubernetes. Por ser um arquivo leve, podemos colocar nele todas as configurações que nosso cluster Kubernetes necessita, subir ele e automaticamente o Kubernetes vai ler o arquivo e vai fazer o que for necessário sem a necessidade do desenvolvedor ficar mexendo no sistema dos containers.
Sintaxe
Essa é a sintaxe do Yaml, ela tem esse jeito meio estranho parecido com Python. Entretanto, enquanto o Python em 4 espaços o Yaml tem 2 espaços.
host: DigitalInnovationOne
datacenter:
location: São Paulo
router: 42
roules:
- web
- dns
O Yaml tem 2 estruturas. A de cima é chamada de estilo block e temos também o estilo flow logo abaixo.
host2: "geek"
datacenter: {location:
São Paulo, router: 42 }
roles: [ web, dns]
Se você vem do JavaScript talvez esteja começado a entender. host é uma chave valor, datacenter é um objeto e roles é um array.
O Yaml é forma por estrutura de chave valor que chamamos de mapeamento ou coleção. Ou seja, todo mapeamento é uma estrutura de chave e valor.
Aqui temos uma estrutura chave valor
chave : valor
host : Digital innovation one
datacenter : location : São Paulo
datacenter : router : 42
Neste caso, Location e router são valores de datascenter, porém eles também são chave dos valores São Paulo e 42. Dessa forma eu tenho um mapeamento dos dados a serem lidos.
host: DigitalInnovationOne
datacenter:
location: São Paulo
router: 42
Um outro ponto a ser dito são as listas. As listas também podem ser chamadas de sequências.
roules:
- web
- dns
Para o pessoal de Java ou .NET seria igual a isso
String[] roules = new String[] {web,dns}
ou
roules = [web, dns]
Quando queremos passar um passo a passo ou tags para a nossa aplicação, podemos utilizar as listas para fazer isso.
Valores escalares
Em Yaml somente os valores escalares são lidos, ou seja, os tipos primitivos como String, Bool, Int, float.
Tirando o 42, todos os campos são Strings e estou falando todos até as chaves.
- Quando você tem um valor que não será usado em processamento, devesse coloca-lo entre aspas para ser uma String
Podemos também imprimir certas mensagens de exceção em caso de erro no console. Para isso, podemos utilizar o | pipe ou o > maior que.
- O | respeita a quebra de linha colocado pelo desenvolvedor. Muitos escrevem código depois dele.
- O > escreve tudo em uma única linha, entretanto você pode criar uma hierarquia de texto com ele.
Estrutura
No Yaml, não é permitido chaves duplicadas no mesmo arquivo. Entretanto, se quisermos escrever uma nova configuração é possível haver a repetição de chaves se houver a adição dos 3 traços (---).
O primeiro Host é a configuração 1 e o segundo 2.
TAGS
É possível fazer uma tag para nossa configuração a fim de chamar ela na configuração.
Aqui criamos a tag DIO
Ancoras
As ancoras são como TAGS, mas podemos reaproveitar elas em todas as configurações durante o documento.
Usamos o & para pegar o valor e o símbolo de * para referenciar
Uma outra coisa que podemos fazer é o Casting. Podemos usar o !!str para transformar um valor em String e !!int para transformar um valor em inteiro.
Bom galera eu quis passar um Over view da Linguagem YAML
Até o próxima artigo. Fiquem com Deus e abraço!