← Índice del curso

Para llevarse

🚩 Los ejercicios del curso

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ó.

🚩 10 ejercicios 🎓 1 ejercicio final 🐳 Corren con Docker 📝 No se califican

Cómo se corren

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.

Los diez ejercicios

Cada uno se puede hacer suelto: no hace falta haber resuelto los anteriores.

Clase 01

🚩 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

Clase 02

🚩 El pasante fantasma

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

Clase 03

🚩 La ruta que no lleva a ninguna parte

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

Clase 04

🚩 El formulario que confía

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

Clase 05

🚩 La base que no arranca

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

Clase 06

🚩 Los modelos que no se hablan

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

Clase 07

🚩 El controller que hace todo

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

Clase 08

🚩 La API que siempre dice que sí

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

Clase 09

🚩 El recibo del vecino

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

Clase 10

🚩 El error que nadie entiende

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

🎓 Tu propio Liquidador

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.

  • Se le entrega un documento a la IA que cada uno use —la que sea— y esa IA lo entrevista con cuatro preguntas, de a una.
  • Cada combinación de respuestas produce un sistema distinto: son 81 posibles.
  • Todos funcionan. Ninguno es perfecto. Cada uno sacrifica algo distinto, y de eso se debate en la última clase.
  • Lo único que se pide traer es la ficha de decisiones, con el porqué de cada elección.
Ver el ejercicio final → ⬇️ Descargar (.zip)
D · Delegación
¿cuánto le dejás a la IA?
E · Escala
¿para cuántos agentes lo construís?
I · Infraestructura
¿sobre qué lo vas a correr?
C · Código
¿dónde vive la lógica?
81 combinaciones
ninguna gana en todo