Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Las trampas de tipos del YAML

5 tareas · 36 min · Principiante

En YAML un valor sin comillas no es texto: el analizador decide su tipo según cómo se vea, y esa decisión cambia con la versión del lenguaje que implementa. Con un archivo de configuración de Alambique Logística, la salida de un analizador en modo YAML 1.1 y la nota de lo que el autor quiso decir, aprendes a ver qué valores dejaron de ser lo que parecían. Todo es lectura de archivos de ejemplo; la consola no ejecuta nada.

0 de 5 · 0%

Objetivo de la sala

En YAML un valor sin comillas no es texto: el analizador decide su tipo según cómo se vea, y esa decisión cambia con la versión del lenguaje que implementa. Con un archivo de configuración de Alambique Logística, la salida de un analizador en modo YAML 1.1 y la nota de lo que el autor quiso decir, aprendes a ver qué valores dejaron de ser lo que parecían. Todo es lectura de archivos de ejemplo; la consola no ejecuta nada.

En YAML un escalar sin comillas se interpreta: el analizador intenta reconocerlo como booleano, número, fecha o nulo antes de aceptarlo como cadena. La versión 1.1 del lenguaje acepta como booleanos varias palabras en inglés (yes, no, on, off y sus variantes en mayúsculas); la versión 1.2 los reduce a true y false. Muchas bibliotecas siguen implementando la 1.1, o una mezcla, y por eso el mismo archivo se lee distinto según el programa que lo cargue.

El caso clásico es una lista de códigos de país en la que Noruega, cuyo código de dos letras coincide con la palabra inglesa para la negación, deja de ser texto y pasa a ser un booleano falso. Nada falla al cargar: el error aparece después, cuando el programa recibe un booleano donde esperaba una cadena.

Abre entorno.yaml y compara la lista de países con la columna de valor evaluado de salida-analizador.txt.

Responde para continuar

¿Qué le pasa a un código de país escrito sin comillas cuando coincide con una palabra booleana de YAML 1.1?

Ver pista de ayuda

Mira la lista paises en la salida del analizador y qué hay en la tercera posición.

Un número con decimales sin comillas es un decimal para el analizador, y un decimal no conserva ceros finales: la versión 3.10 y la versión 3.1 son el mismo número. Para una versión de lenguaje o de paquete eso es un error silencioso, porque 3.10 es posterior a 3.9 pero el decimal 3.1 es anterior.

La nota del autor dice cuáles claves debían ser texto. Cruza esa nota con la columna de tipo de la salida del analizador.

Responde para continuar

Escribe la clave de entorno.yaml cuya versión de dos decimales el analizador entregó como un decimal con un solo decimal.

Ver pista de ayuda

Busca en la salida del analizador el tipo decimal.

La versión 1.1 define también enteros en base 60, pensados para grados y tiempos: un valor con partes separadas por dos puntos se evalúa sumando cada parte multiplicada por una potencia de sesenta. Así, una hora del día escrita como horas y minutos deja de ser una hora y pasa a ser un número de minutos.

Los ceros iniciales tienen una trampa parecida: un número que empieza por cero se lee en octal. Es lo que se quiere en un permiso de archivo y lo que no se quiere en un código postal.

Responde para continuar

Escribe el entero que el analizador entregó para ventana_corte.

Ver pista de ayuda

Es la columna de valor evaluado de esa clave.

TOML se diseñó para que el tipo de un valor se vea en cómo se escribe: los textos van siempre entre comillas, los booleanos son solo true y false en minúscula, y un número entero decimal no admite ceros a la izquierda, mientras que el octal se escribe con un prefijo explícito. Una palabra sin comillas que no es un tipo reconocido no se convierte en otra cosa: es un error de lectura.

Eso no hace a TOML mejor en todo (para estructuras anidadas y largas YAML suele ser más cómodo) pero elimina esta familia de trampas. Compara entorno.toml, la propuesta de migración, con el archivo YAML.

Responde para continuar

¿Cuál afirmación sobre TOML es correcta?

Ver pista de ayuda

Fíjate en cómo aparece paises en entorno.toml.

Revisar un archivo de configuración como auditor es comparar dos cosas: lo que el autor quiso y lo que el analizador evaluó. Una clave cuenta como discrepancia cuando el tipo evaluado no es el que la nota dice.

Cruza notas/intencion.txt con la salida del analizador. Una lista cuenta como una sola clave aunque solo uno de sus elementos esté mal.

Responde para continuar

¿Cuántas claves de entorno.yaml tienen un valor evaluado de un tipo distinto del que el autor quiso?

Ver pista de ayuda

Recorre las siete claves y compara el tipo de la nota con el tipo de la salida.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad