symfony

Recursos de programación de symfony
Desde hace varios meses en Bodaclick estamos trabajando para cambiar la antigua plataforma (un monolito PHP 4 que abarca varias aplicaciones internas aparte de la web) por una nueva plataforma basada en Symfony 2. Esta ponencia hablará cómo hemos pulido las asperezas de la convivencia de dos aplicaciones diametralmente diferentes utilizando: * RabbitMQ * Diseño Orientado a Servicios * Lazy migration * Mapeo parcial de bbdd * Eventos asíncronos (en Symfony 2) * Redis Y otras más junto con los trucos que hemos encontrado para resolver el manejo de hasta 5 bases de datos diferentes.
Basándonos en la aplicación PadelLeague que ganó el concurso de Mucho+Symfony veremos algunas de las buenas prácticas que se usaron mediante ejemplos. Los managers son usados para gestionar los objetos de dominio, quitando responsabilidades al controlador. Se suelen usar en combinación con los eventos para ofrecer una funcionalidad más completa. El uso de eventos nos permite extender una aplicación o bundle y desacoplar servicios unos de otros, relacionado con los bundles FOSCommentBundle es un buen ejemplo de extensión mediante eventos y FOSUserBundle ha dejado de usar Form handlers a favor de los eventos. También se hará un repaso a las buenas prácticas con los formularios viendo el uso de DataTransformers, models, custom Types y eventos para generar formularios dinámicos.
Symfony aparte de un framework full-stack es una genial librería de componentes desacoplados. Aunque no uses el framework MVC tienes a tu disposición una serie de componentes de una alta calidad listos para su uso. Uno de estos componentes es el Contenedor de Inyección de Dependencias que, además de formar parte del corazón de Symfony, podemos usarlo de una manera muy sencilla como una dependencia externa más en nuestros proyectos PHP con Composer. En esta charla hablaremos sobre Inyección de Dependencias como patrón de diseño y sobre Contenedores de Inyección en PHP. Mas de sobre "que son" hablaremos sobre su "porque" y sobre que nos aportan al usarlos en nuestros proyectos PHP, así como ejemplos de como implementar todo esto usando el componente de Symfony.
Guzzle es un cliente HTTP que facilita de forma increíble el crear, consumir e interactuar con servicios web, como por ejemplo, la api REST de un servicio web como Twitter, Amazon AWS, Github, entre otros. Nos ofrece completo control del estándar HTTP para la generación de un Request y nos permite de forma organizada manejar el Response y definir modelos sobre las respuestas para actuar mas facilmente sobre ellas. En esta charla se introducirá como configurar la libreria de forma independiente en menos de 10 minutos, y como integrarlo en un proyecto de Symfony2 y Silex, para empezar a atacar APIs, se explicaran sus usos mas comunes, se hablara de proyectos que ya lo tienen incorporado (como Drupal, el Amazon AWS SDK para PHP, y la libreria Goutte, para hacer Webscraping, de Fabien Potencier, entre otras). Se terminara con un ejemplo practico en dos proyectos de Acilia, para atacar a un servicio web (emailvision), para envíos de emails transaccionales y masivos de dos aplicaciones y posterior recopilación de reportes de dichos envíos, todo mediante llamadas y respuestas HTTP a una API REST.
El ritmo de desarrollo de Symfony es tan alto que en muchas ocasiones cuesta estar al corriente de todo lo que está ocurriendo en el proyecto. A lo largo de la charla se presentarán las novedades que están por venir en Symfony 2.3.
En esta charla se pretenden tocar todas las cosas que debemos tener en cuenta para sacar el máximo rendimiento y poder escalar usando Symfony2. Se tocará desde parámetros de configuración de PHP y APC, optimización de Composer, dónde optimizar, quick wins varios, cómo hacer profiling correctamente, BBDD NoSQL vs SQL y por supuesto lecciones aprendidas en Ulabox, SocialPoint y espero tener cosas que contar de Brighttalk!
Cada vez más programadores de Symfony2 utilizan Silex para sus proyectos pequeños y medianos. Silex es muy ágil y se puede aprender a utilizarlo en menos de una hora. El problema sucede cuando la aplicación crece en tamaño y complejidad, ya que para Silex no existen tantos recursos y documentación como para Symfony2. Esta charla trata varios de los conceptos más avanzados de Silex: * Creación de proveedores de servicios propios. * Creación de backends y proyectos multi-aplicación. * Integración del ORM de Doctrine2. * Escalar el código de la aplicación. * Pequeños trucos para mejorar el rendimiento en producción.
En esta charla práctica se presentará un pequeño proyecto hecho en Symfony2, totalmente funcional aunque con algunas cosas por mejorar. Primero se crearán algunos tests, que servirán para comprobar que la aplicación sigue funcionando después de cada refactorización. Después, se irá refactorizando el código paso a paso, explicando primero el patrón y después aplicándolo al código.
Annotations es una forma de configurar Symfony y los componentes que lo rodean que está en auge. Y ya que estamos podemos crear nuestras propias anotaciones para configurar nuestros Bundles, componentes, servicios, etc. La idea es mostrar las anotaciones que nos proporciona Symfony y hacer un pequeño workshop de como crear nuestras propias anotaciones.
En esta sesión daremos nuestra idea de qué hay que vigilar para anticiparnos a fallos, o tener un tiempo de respuesta mínimo ante cualquier imprevisto. Jugaremos a tres niveles: infraestructura, logs/código y aspectos funcionales, revisando según diferentes casos de error que se nos han presentado (curiosidades sobre ESI, entre otros) y en qué punto han sido detectados. Antes de esto, situaremos al asistente dando razones de por qué hay que monitorizar, y sobre todo, por dónde se puede empezar, presentando una serie de alternativas o herramientas que hacen muy buenas migas con nuestro querido Symfony, como pueden ser: * Infraestructura: Cacti, Nagios, New Relic... * Logs/código: New Relic (que se puede integrar con symfony), la propuesta de Ofertix, la pareja symfony/monolog... * Funcional: Pingdom, el siempre necesario factor humano, Behat en el servidor... Resumiendo, lo que pretendemos con esta charla, es compartir nuestra experiencia de este último año, comentando anécdotas de errores que hemos tenido/sufrido, cómo los hemos detectamos, la solución y cómo los tenemos acorralados para que no nos vuelvan a pasar, a parte de lo detallado más arriba.