100 Days of Code - Días 31 a 40

  • Time to read 4 minutes
100 Days Of Code - Dias 31 a 40

Día 31 - 02/05/20

He continuado con el desarrollo de mi despliegue. Estoy yendo muy poco a poco, porque estoy leyendo toda la documentación de Jenkins para intentar hacer las cosas lo mejor que pueda. Ahora mismo ya me compila y me ejecuta los tests unitarios. Tengo pendiente de revisar la parte del despliegue, que aún me va a llevar algo más de tiempo. De momento no voy a utilizar ningún repositorio de artefactos, y voy a desplegar directamente la versión que genere al vuelo.

Me he encontrado con algunos problemas, puesto que en mi RasPi no tengo configurados todos los SDKs necesarios, y me ha costado bastante instalar el de .Net Core compatible con Arm64, puesto que se debe instalar manualmente. Poco a poco, pero voy avanzando...

Día 32 - 06/05/20

Hablar de "día 32" quizás sea un poco injusto. Sé que las normas de 100 Days of Code hablan de reportar diariamente, pero he preferido hacerlo así para ser un poco más fiel a la realidad de mi avance, asimilando "día" a "avance" o a "fracaso absoluto". En este caso, han sido días de consultar muchas webs y foros para entender lo que me estaba pasando y por qué el layout de mi frontend no estaba funcionando como esperaba. El dichoso CSS. Por fin lo he conseguido.

Voy a tener que plantearme seriamente el hacer un curso de CSS. Es mi tarea pendiente desde hace muchos años, y sé que debo empezar a dominarlo, porque hoy en día "todo es web" y "todo lleva algo de CSS". Conozco bien las bases, pero con el paso de los años se ha evolucionado muchísimo y se ha vuelto algo complejo y denso. Y necesito dedicarle más atención.

Día 33 - 08/05/20

Hoy he podido completar la parte de despliegue de frontend de mi pipeline de CI/CD. Resulta muy satisfactorio ver cómo las cosas poco a poco se van solucionando y van funcionando. Poco a poco voy entendiendo la filosofía de los pipelines, su estructura, y las decenas de opciones de configuración que proporciona Jenkins.

Únicamente me falta el despliegue del backend para dar por terminada esta primera parte de la configuración del pipeline. Me llevará unos días, puesto que debo configurar correctamente mi VPS para poder alojar el artefacto. Deberé decidir si utilizar Docker, o configurarlo como servidor para APIs .NET Core.

Por lo pronto, mi web www.boringames.com ¡ya hace cosas!

Día 34 - 09/05/20

Ha tocado avanzar un poco más en el desarrolo del frontend. He creado el display para los jugadores y el marcador. Estos dos componentes van a ser comunes para todos los juegos que desarrolle. Voy a iniciar una versión muy básica para dar únicamente la funcionalidad que necesito, pero mi idea es ir mejorándolos poco a poco a medida que vaya creando otros juegos. 

Día 35 - 10/05/20

He estado retocando algunas cuestiones del CSS de mi display de jugador. Tengo que pegarle un repaso a fondo al comportamiento de la aplicación en distintas resoluciones. Quizás no sea este el momento, y tendría que centrarme más en el funcionamiento interno a nivel de servicios y de lógica de la aplicación. Pero esa parte quizás sea la más sencilla para mi, y quería enfrentarme primero a todo lo que me pueda costar un poco más de trabajo de la cuenta. Estos próximos días me centraré en las partes menos visuales de la web.

Día 36 - 11/05/20

He seguido con la implementación de la lógica de mis componentes. He arrancado la capa de servicio para comunicación con el backend. No obstante, en un principio voy a mockear las llamadas. No hay mucho más a destacar, a partir de ahora toca combinar otra vez código con despliegue. Estoy bastante cerca de tener ya una primera versión completa funcional de la aplicación. Lo siguiente será meterme con los test unitarios del frontend, para los que tengo que repasar aún cómo desarrollarlos correctamente utilizando Jasmine y Karma.

Día 37 - 12/05/20

He tenido que refactorizar parte de los componentes para mejorar la comunicación de datos entre ellos. He refactorizado también el modelo de datos de jugador, y he añadido ya la pantalla para poder introducir los nombres de los jugadores. Me está costando un poco familiarizarme con el funcionamiento de los componentes de Ionic, pero poco a poco me voy haciendo a ello, especialmente gracias a la extensa documentación de que dispone.

Día 38 - 13/05/20

He añadido y empezado a implementar la infraestructura necesaria para la comunicación con el backend. Quiero leer bien toda la documentación relacionada con HttpClient, interceptores y otros conceptos, porque quiero hacer una implementación lo más sólida posible, con una gestión de errores correcta.

Día 39 - 14/05/20

Hoy ha sido un día horrible. He tenido muchísimos problemas para gestionar el CORS en el backend. A pesar de haber seguido todas las instrucciones proporcionadas por Microsoft, no me terminaba de funcionar y no sabía por qué. Consultando más documentación y foros, lo estaba haciendo todo correctamente. Al final, ha resultado ser que el orden de las líneas en el startup.cs importa, y mucho. El orden en que se ejecutan los distintos componentes del middleware afecta al funcionamiento entre ellos. 3 horas después, por fin he conseguido que funcione. Lo bueno de todo esto es que solucionar este tipo de incidencias produce una enorme satisfacción personal. Y es la mejor forma de aprender.

Día 40 - 15/05/20

Las cosas han ido mejor que ayer. He implementado la comunicación con el backend para la correcta inicialización de los datos de los jugadores, y todo ha ido bien. Me ha costado un poco entender el workflow del framework async/await en combinación con el ciclo de vida de los componentes Angular, pero ya está todo funcionando correctamente. El paradigma de programación web reactiva cambia bastante con respecto al paradigma de programación backend. Aún me queda mucho por aprender.

Listado de Commits en Github
Dia Commit
32 https://github.com/ramoncarrascom/BoringGames/commit/f26d7a7
34 https://github.com/ramoncarrascom/BoringGames/commit/6d3c6c4
35 https://github.com/ramoncarrascom/BoringGames/commit/f824922
36 https://github.com/ramoncarrascom/BoringGames/commit/a0cce62
37 https://github.com/ramoncarrascom/BoringGames/commit/64aa59c
38 https://github.com/ramoncarrascom/BoringGames/commit/6e31adb
40 https://github.com/ramoncarrascom/BoringGames/commit/eb02de6