Vídeos de programación

Vídeos sobre programación y desarrollo de software.
¿Es React.js una librería o es un framework? En cualquier caso es una nueva forma de trabajar que, de la mano de Facebook, está revolucionando la forma de hacer proyectos web. Tiene unas características muy particulares que nos permiten, por ejemplo, renderizar código de React desde Symfony, e incluir componentes de React desde etiquetas Twig. En esta charla haremos una introducción, veremos cómo sacarle partido desde proyectos Symfony y daremos respuesta a problemas prácticos como ¿podemos generar formularios React.js desde Symfony?
En esta charla se explican algunos secretos sobre cómo crear bundles de mejor calidad para nuestros proyectos. Veremos pequeños detalles que no se explican ni en manuales ni en la documentación oficial. También se verán ejemplos y estrategias utilizadas en proyectos de gran magnitud para dotar de cierta comprensión aquellas partes más tediosas y incomprensibles.
Desde un punto de vista de mercado, WordPress es una opción muy utilizada a la hora de empezar un proyecto. Pero en ocasiones, se trata una elección forzada que no dispone de una estructura y buenas prácticas como Symfony posee. El objetivo de esta charla es mostrar cómo aplicar buenas prácticas de desarrollo cuando trabajemos con WordPress, implementando PSRs y desacoplando nuestro código para poder migrarlo en un futuro a otras opciones sin esfuerzo y dotarle de una buena cobertura de tests. Veremos cómo podemos desarrollar y mantener plataformas basadas en WordPress utilizando cosas como inyección de dependencias, rutas en anotaciones y controladores; cómo utilizar composer para plugins, themes y sus dependencias; cómo montar los despliegues y qué opciones tenemos para utilizar WordPress desde nuestros Bundes.
En los micro-servicios modernos, los cuales se basan en eventos, comunicación bidireccional, stream multiplexing y otras formas de sincronización de los datos, la arquitectura clásica basada en HTTP/REST no siempre es la mejor opción. Algunas veces las aplicaciones requieren servicios donde es necesario mantener una comunicación asíncrona de eventos fluyendo en ambas direcciones, por ejemplo, un cliente conectado por Websocket. ¿Qué hacer en estos casos si tenemos la gran mayoría de nuestros servicios implementados con Symfony o Silex y queremos tener comunicación en real time con un cliente? ¿Qué opciones tenemos, qué soluciones podemos aplicar y con qué trade-offs? El objetivo de la charla es dar respuestas a estas preguntas, basándonos en casos de usos reales en producción, comparar las distintas alternativas existentes y ver ejemplos prácticos de integración Silex/Symfony.
¿Te has preguntado alguna vez cómo estos conceptos de CQRS/ES se pueden aplicar en un proyecto PHP/Symfony? Para ello, echaremos un vistazo al código de nuestro último proyecto: un sistema de gestión de almacén. La charla mostrará cómo entendemos el DDD y cómo lo aplicamos en Ulabox, cómo cambia la arquitectura y el código de la aplicación cuando aplicamos CQRS y cómo tratar con Event Sourcing, cuando no hay entidades persistidas, solo eventos que generan proyecciones que se usan en el modelo de lectura. Es un proyecto con arquitecturas nuevas (CQRS-ES), con la mentalidad DDD-Arquitectura hexagonal, pero con una base muy importante de Symfony.
En Ulabox tenemos código de hace 6 años y nuestra aplicación principal está atrapada bajo el paradigma CRUD. Nuestro dominio cada vez es más complejo y al ritmo que crecemos no es sostenible seguir trabajando bajo esas premisas. Nos encanta Symfony, pero lo más importante es nuestra lógica de dominio. Seguimos usando Symfony, pero perseguimos liberar dependencias, huyendo de un modelo anémico y tomando una mentalidad más DDD. En la charla trataremos como mejorar nuestro código y orientarlo más a dominio. Concretamente: - Mejorar nuestro código es nuestra responsabilidad - ¿Cómo mejorar nuestros controllers? - Desacoplar nuestras entidades de Symfony Forms - Aplicar DDD y separar modelo de lectura y escritura (CQRS) - Identificar agregados raíz
A primera vista Sonata parece un monstruo (y lo es), y tiene una documentación que deja un poco que desear, pero lo cierto es una vez te haces con él, te permite hacer lo que quieras y te facilita mucho la vida. Especialmente en proyectos grandes y complejos que consisten fundamentalmente en un panel de administración gigante, se le puede sacar mucho partido. Por un lado te ahorra bastante trabajo y te permite desarrollar de una forma consistente y sólida, y al mismo tiempo te deja implementar lo que necesites a tu aire allá donde te haga falta. Explicaremos cómo utilizarlo de la forma más "estándar" (para hacer un CRUD "normal"), y progresivamente iremos introduciendo los trucos y métodos de personalizar cada elemento del sistema para adaptarlo a las necesidades del proyecto en los puntos en los que se requiera.
¿Quieres saber más? Haz este breve test y descúbrelo: https://www.google.com/url?q=https %3A%2F%2Fwww.paradigmadigital.com%2Fdtma%2F&sa=D&sntz=1&usg=AFQjCNGb7ufz2douFixyPIP-qjSh0ZmixQ
El componente de seguridad de Symfony lo usamos prácticamente a diario. Normalmente usamos algún bundle que nos aporta alguna funcionalidad como OAuth o simplemente nos simplifica la gestión como pueda ser el FOSUserBundle. Pero al final puede convertirse en una caja negra de la que ignoramos que a veces con poco esfuerzo podemos implementar nuestras soluciones de forma sencilla. La última incorporación para ayudarnos ha sido Guard, un componente que nos simplifica la implementación de sistemas de autenticación. Para comprenderlo primero haremos un repaso rápido del componente de seguridad, sus partes y el flujo que se realiza para determinar si una petición está autenticada y tiene autorización. Después revisaremos básicamente cómo implementar un sistema de autenticación clásico, los elementos que intervienen y los pasos a dar. Por último implementaremos el mismo sistema pero con el nuevo componente Guard. De esta forma no sólo aprenderemos el cómo, si no con qué corresponde en cada elemento del componente de seguridad.
Es muy fácil comenzar a crear nuestros primeros containers de Docker en local, y facilitarnos la vida durante el desarrollo. Pero, ¿y si queremos compartir nuestros containers con nuestros compañeros de equipo o con otros equipos? ¿E introducirlos dentro del flujo de integración continua? ¿Cómo escalamos Docker dentro de nuestra organización? En esta charla explicaremos las lecciones aprendidas durante nuestra aventura intentando conseguir utilizar containers en todas las fases del desarrollo del producto: desde la máquina del programador hasta producción. Y veremos qué patrones y buenas prácticas podemos adoptar para que la creación, distribución, y el despliegue de containers de Docker no sea una utopía.