notifications Notificaciones

Marcar todas como leídas

Ver más

lightbulb_outline

263 veces ha sido leído este artículo

Utiliza ficheros Yaml para la configuración de tus aplicaciones

Lo lees en 2 Min.

En todas las aplicaciones sean del tipo que sean es necesario utilizar parámetros de configuración. Pero, ¿como accedemos a ellos y dónde podemos colocarlos?

En muchos lenguajes de programación se nos facilita esa tarea e incluso se integra con el editor de código. En otros tenemos más libertad, o dicho de otro modo, tenemos que preocuparnos por ello.

En una clasificación totalmente personal distingo dos tipos de variables configuración:

  • Las que son relevantes para la instalación, despliegue y funcionamiento de la aplicación.
  • Las que son importantes para la aplicación en aspectos como la visualización, textos, interacción con el usuario...

Las primeras claramente son variables de entorno, sensibles y que no deben aparecer en un repositorio. Nos centramos en las segundas y vamos a verlo con un ejemplo claro.

Caso de uso

En una página web de una campaña de publicidad queremos que haya una serie de parámetros que no estén dentro de ninguna base de datos, pero deben ser accesibles por parte del programador o técnico de forma sencilla.

Así queremos que pueda ajustar:

  • El texto y un parámetro de URL para el acceso al formulario de petición.
  • El correo electrónico que recibe el formulario.
  • Tres mensajes aleatorios de formulario enviado correctamente.
  • Si deben aparecer o no esos mensajes de confirmación.

Podríamos incluir estas alternativas directamente en el código. O usar un fichero de tipo JSON para configurarlo.

Ejemplo de configuración en fichero Yaml

Vamos a intentarlo con Yaml y ya verás que sencillo es. Este es el código:

mail: pepeexample.com
link:
  text: Envía tu petición
  href: campaign=peticion
messages:
  - Gracias por escribirnos
  - ¡Muchas gracias!
  - |
    Nuestros corazones 
    se sienten muy alegres
    por tu mensaje
show_messages: true

Algunas cosas interesantes que vemos aquí:

  • Las variables se asignan en el formato clave: valor
  • Creamos datos anidados utilizando la identación, tal y como ves en el caso de link
  • Un diccionario o array utiliza el formato de lista como lo que está por debajo de messages
  • Podemos crear un valor multilínea utilizando el caracter |
  • Los booleanos son reales y así se van a utilizar. La palabra true asignada a una variable será lo que esperamos.

Puedes ver más detalles en la especificación oficial.

Analizar el fichero de configuración en PHP

Veremos luego un ejemplo con python. El resultado es muy similar en cualquier lenguaje de programación, hay soporte para Java, Haskell, Go, Perl, JavaScript...

Guardamos la configuración en el fichero config.yml.

Cargamos la dependencia de la librería de Symfony que nos permite agilizar el parse del fichero Yaml.

composer require symfony/yaml

Creamos un fichero con este código.

<?php
include  'vendor/autoload.php';

use Symfony\Component\Yaml\Yaml;

var_dump(Yaml::parseFile('config.yml'));

Simplemente utilizamos el método parseFile que se encarga de leer el contenido y ponerlo a disposición del analizador.

El resultado obtenido será este array:


     "mail" => "pepeexample.com",
     "link" => [
       "text" => "Envía tu petición",
       "href" => "campaign=peticion",
     ],
     "messages" => [
       "Gracias por escribirnos",
       "¡Muchas gracias!",
       "Nuestros corazones \n
         se sienten muy alegres\n
         por tu mensaje\n
        ",
     ],
     "show_messages" => true,
   ]

Analizar el fichero de configuración en Pyhton

De la misma forma añadimos la dependencia de la librería PyYaml para que se encarge de leer el formato.

pip install pyyaml

Unas líneas para capturar la información del fichero y lanzarlo por pantalla.

import yaml
import pprint

with  open("config.yml",  'r')  as stream:
    pprint.pprint(yaml.load(stream))

Y aquí está nuestra estructura de datos.

{'link': {'href': 'campaign=peticion', 'text': 'Envía tu petición'},
 'mail': 'pepeexample.com',
 'messages': ['Gracias por escribirnos',
              '¡Muchas gracias!',
              'Nuestros corazones \nse sienten muy alegres\npor tu mensaje\n'],
 'show_messages': True}

Como ves es un formato muy cómodo. Encuentra implementaciones para tu lenguaje favorito en la web de Yaml.

Espero que te haya gustado, nos leemos en el próximo artículo 😉

Recomendaciones

Trabajando desde casa. Siendo productivo.

Lo lees en 4 Min.

Trabajando desde casa. Siendo productivo. Introducción Trabajar desde casa no indica mejor rend...

 

¿Qué son los microservicios?

Lo lees en 4 Min.

En esta ocasión estaremos hablando de microservicios, una tendencia de desarrollo que ha surgido ...

 

Cómo detectar caras usando PHP

Lo lees en 2 Min.

Me crucé con una pregunta muy interesante en un foro de PHP: ¿Cómo detectar caras en imágenes? ...

 

¿Qué tan felices somos los profesionales que desarrollamos software en México?

Lo lees en 1 Min.

Hola a todos estoy realizando un estudio para saber el nivel de satisfacción laboral de los desa...

 

Comunidad