Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

El parser, de la línea al campo

4 tareas · 40 min · Principiante

Un parser convierte una línea de texto en campos con nombre y tipo, y de esos campos viven las detecciones. Su diseño importa más que el patrón: qué campos son obligatorios, qué tipo se guarda y, sobre todo, qué hace con la línea que no entiende. En el Ingenio Cañaduzal lees la definición de un parser de ejemplo para el proxy web, doce líneas de muestra y lo que el parser hizo con cada una. Todo es lectura; el patrón es solo una línea más de la definición.

0 de 4 · 0%

Objetivo de la sala

Un parser convierte una línea de texto en campos con nombre y tipo, y de esos campos viven las detecciones. Su diseño importa más que el patrón: qué campos son obligatorios, qué tipo se guarda y, sobre todo, qué hace con la línea que no entiende. En el Ingenio Cañaduzal lees la definición de un parser de ejemplo para el proxy web, doce líneas de muestra y lo que el parser hizo con cada una. Todo es lectura; el patrón es solo una línea más de la definición.

Un parser no es solo un patrón. Una definición completa dice de qué fuente es, cómo se parte la línea, qué campos son obligatorios, en qué zona horaria se interpreta la hora y qué se hace con lo que no casa. Lo del patrón (grupos, cuantificadores) se estudia en otro módulo; aquí se lee como una pieza más.

Abre el laboratorio y lee proxy-web-v1.yml. Fíjate en tres líneas: el patron, los campos_obligatorios y si_no_casa. Después lee muestras.txt y resultado.txt, que muestran el resultado de aplicar el parser a doce líneas reales del proxy.

El parser parte una línea solo si toda ella cabe en el patrón, de principio a fin. Una línea con un campo de más o con un valor de otra forma no se parte a medias: no se parte.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Escribe el porcentaje de las doce líneas de muestra que el parser dejó sin parsear.

Ver pista de ayuda

En resultado.txt cuenta las líneas con estado sin_parsear y divide entre doce.

Cuando una línea no casa hay que averiguar la causa antes de tocar el patrón: puede ser una variante legítima que el parser no previó, o un cambio del proveedor. Compara cada línea sin parsear con el patrón.

Dos de las tres líneas sin parsear comparten el mismo motivo: el campo del cliente trae un valor con una forma que el patrón no admite. La tercera falla por otra cosa.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Escribe el número de la línea sin parsear que trae un campo de más al final de la línea.

Ver pista de ayuda

Compara el final de cada línea sin parsear con el final del patrón, que termina en bytes.

Hay tres políticas posibles para una línea que no casa: descartarla, guardarla entera en un campo aparte o hacer que el parser falle. El parser de ejemplo guarda la línea entera en _sin_parsear. Es la política más segura, con una condición: alguien tiene que mirar ese campo.

Lo que se descarta en silencio no deja rastro. Una detección que lee cliente no sabe que existe una línea sin cliente: simplemente no la ve.

Responde para continuar

¿Por qué es preferible guardar la línea entera en un campo aparte que descartar la que no casa?

El parser también decide el tipo con que se guarda cada campo: texto, entero, fecha-hora, dirección. Un campo numérico guardado como texto parece correcto hasta que una detección intenta compararlo: con texto, «900» es mayor que «2000» porque se ordena letra a letra, no como cantidad.

Lee campos.txt.

Esta tarea se hace en el laboratorio

Un escritorio Linux con terminal, aquí en la página. No instalas nada y no puedes romper nada.

Preparando el escritorio…

Responde para continuar

Escribe el nombre del campo que representa una cantidad y el parser guarda como texto.

Ver pista de ayuda

Busca en la columna tipo_guardado un campo que sea un número por naturaleza y que diga texto.

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

Preparando el escritorio…

16:24
Terminal (user@whoami)
user@whoami:~$
Tab Autocompletar ↑/↓ Historial
bash 5.2.21
Whoami-Labs OS v3.0.1 LTS · build 733482

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