🚩 El recibo en cero
El liquidador calcula todos los netos en cero. Hay que encontrar por qué — y ojo con el concepto que no es ni haber ni descuento.
Practicás: Tipos, arrays, funciones y el redondeo del dinero
Para llevarse
Uno por clase, para resolver por cuenta propia después de cada encuentro. Cada uno es un mini-proyecto con una pieza rota o faltante: hay que leer el código, encontrar el problema y arreglarlo. Cuando funciona, el programa entrega una bandera que prueba que se resolvió.
Todos igual. Se entra a la carpeta del ejercicio y se ejecuta un comando.
cd clases/clase-05/ejercicio docker compose run --rm ejercicio
El programa muestra qué pasos están en verde y cuáles no. Con todos en verde aparece
la bandera, con el formato ipap{cNN-xxxxxxxxxx}.
La bandera no está escrita en ningún archivo: se calcula a partir de lo que
produce tu código, así que leer el verificador sirve para entender qué se evalúa,
pero no para saltearse el ejercicio.
Cada uno se puede hacer suelto: no hace falta haber resuelto los anteriores.
El liquidador calcula todos los netos en cero. Hay que encontrar por qué — y ojo con el concepto que no es ni haber ni descuento.
Practicás: Tipos, arrays, funciones y el redondeo del dinero
Falta una clase. Hay que crearla en la ruta exacta que dicta PSR-4, o el autoload no la encuentra nunca.
Practicás: POO, herencia, clases abstractas, namespaces y PSR-4
Una petición entra y no llega al controller. El programa imprime los 8 pasos del ciclo de vida para ver dónde se corta.
Practicás: Router, middleware y el ciclo de vida de una petición
El alta acepta cualquier cosa, y un nombre con <script> termina ejecutándose en la pantalla del que mira el listado.
Practicás: Blade, escapado, validación, old() y mensajes flash
Migraciones que corren en el orden equivocado, una clave foránea que no protege nada y una consulta que no dice lo que pidió RRHH.
Practicás: Migraciones, seeders, integridad referencial y Query Builder
Las tablas están, los modelos también, pero no se conocen. Y cada corrida CUENTA LAS CONSULTAS: el N+1 se ve en números.
Practicás: Eloquent, relaciones 1-1/1-N/N-N y eager loading
Cada corrida dibuja el árbol de dependencias que arma el contenedor. Verifica el desacople inyectando un service impostor.
Practicás: Service Container, inyección de dependencias y Service Layer
Una API que contesta 200 para todo, y un cliente HTTP falso al que se le puede provocar una caída, una demora o una respuesta basura.
Practicás: Códigos de estado, API Resources y consumo de APIs externas
El verificador ATACA: se loguea como un empleado común y trata de leer el recibo de otro cambiando un número en la URL.
Practicás: Hashing, 401 vs 403, Policies, roles y revocación de tokens
El usuario ve el SQLSTATE completo y el log guarda su contraseña. El verificador LEE el archivo de log que dejó tu código.
Practicás: Reglas propias, manejo de excepciones y niveles de log
El cierre
El ejercicio final es de otra naturaleza: no tiene una solución. Se entrega en la Clase 11 y se pone en común en la Clase 12.