Symfony

47 entradas

Symfony manejando los bounces y complaints

Symfony: cómo evitar ser SPAM controlando los bounces y complaints de tus emails

Hoy traigo un codekata bien cargado, sobre Symfony y los emails. Este post, junto con el anterior sobre cómo enviar muchos emails.. te dará el poder de enviar infinitos emails gratis. Pero un gran poder conlleva una gran responsabilidad 😀 o serás marcado como el supervillano de los emails, el SPAMMER 😱 Fuera de bromas, este es un post de pruebas, un codekata usando la última versión 5 de Symfony, con Symfony Flex, y Swiftmailer para el envío de los emails. Con este codekata podemos controlar que los emails que enviamos, lleguen a destino correctamente, para que no nos marquen como SPAMMERS. Evitamos así que nuestro servidor entre en listas negras de bloqueo. He elegido Symfony, el framework PHP de referencia para grandes proyectos web. También Swiftmailer ya que quería invertir poco tiempo, y viene muy bien integrado con Symfony 😜 La misma teoría y lógica también serviría para cualquier otro lenguaje como Java o Python.

GNU/Linux: optimizando servidores

AWS & GNU/Linux: optimizando aplicaciones web

Aquí estoy de nuevo dejando mi granito de arena en todo esto de la informática. Hoy traigo un howto para la optimización de servidores web. Simplemente, son unas propuestas de configuraciones totalmente estándar y disponibles en las documentaciones oficiales. Pero que mejoran mucho el rendimiento de aplicaciones web, hechas en lenguajes como HTML, CSS, Javascript, PHP, Java, Python, SQL, DQL.. Este post es para optimizar aplicaciones web del tipo WordPress, Prestashop, Magento, Drupal, Symfony.. etcétera. Es una visión general de cómo funcionan las cosas a bajo nivel. Digo a bajo nivel, porque están muy de moda las arquitecturas server-less, o los servidores auto-administrados, que también necesitan su optimización. Pero aquí nos remangaremos la camisa, y nos embarraremos hasta el cuello mientras que vamos investigando, aprendiendo y aplicando, para cada proyecto en concreto. Este es un post para los que nos gusta trabajar los servidores, para los que nos gusta ponernos manos a la obra, para experimentar nosotros mismos con los proyectos, rascando cada milisegundo para conseguir que todo vaya lo más rápido posible..

Symfony, enviando muchos muchos emails

Symfony: cómo enviar muchos, muchos, muchos emails gratis

Ya estoy por aquí otra vez. Hoy traigo un code-kata muy divertido, también peligroso 😱 si lo ejecutas sin medida, o sin configurarlo bien 😀 Pero estos códigos fuentes pueden hacerte ahorrar mucho dinero, a tí o a la empresa donde trabajes 🤑 No es una tarea complicada, simplemente se trata de enviar muchos emails, muchos, del orden de miles o decenas de miles de emails al mes. Esta es una tarea tan antigua como programar el propio envío de los emails dentro de los servidores de correo electrónico. Es decir, en este post tienes el cómo hay que programar el envío de emails, lo más profesionalmente posible. No sólo en Symfony con PHP, sino también para otros lenguajes de programación, y en otro tipo de aplicaciones. En CMSs como Magento por ejemplo, esto ya viene incluso construido y listo para trabajar, simplemente hay que usarlo. Pero si lo estas construyendo tú mismo, este es tu post 😉

Symfony entidades con el modelo de datos EAV

Symfony & EAV: cómo diseñar una BD para no tener que modificarla después

Estoy haciendo una especie de experimento con Symfony, se trata de un codekata para usar el modelo EAV. No he encontrado en Internet nada hecho en Symfony que hiciera exactamente lo siguiente, todo desde un panel de control, y quería aprender a crearlo. Así que aquí estoy, jugando con la programación, y compartiendo este codekata 😉 Me explico, viendo cómo están hechas por dentro la gestión de productos en CMSs como Magento, Prestashop o Drupal.. o en ERPs como Odoo.. vemos que internamente, podemos dar de alta tantos atributos de producto como queramos desde el panel de control. ¡Podemos dar de alta tantos atributos como queramos sin modificar la base de datos! ¿Cómo es esto por dentro que funciona? ¿No te ha pasado que mientras desarrollabas una aplicación tenías que añadir más y más columnas a una tabla? Si la cantidad de atributos va a ser muy cambiante, la forma más profesional y eficiente para programarlo se consigue usando el modelo EAV.

Symfony internacionalizando i18n traducciones

Symfony: tutorial 19: idiomas, internacionalizando, el Locale

Aquí estoy de nuevo con otro code-kata sobre Symfony. Este post es un repaso en Symfony Flex con respecto a la traducción de idiomas. Es decir, en este post voy a tratar de ser conciso, sin demasiados detalles, para tratar el tema de tener una página traducida en varios idiomas. Es decir, una vez más, siguiendo la planificación sobre el repaso a Symfony, que llegamos a un tema un poco complicado, la internacionalización, que abreviado es I18N. Con este post, si lo sigues mientras construyes tu proyecto, en cuestión de minutos podrás tener el esqueleto de una web multidioma totalmente funcional. Doy por sentado que llevamos bien el resto de temas como Doctrine, los controladores, el maker, diseño de bases de datos, etc.. Abordar la internacionalización de una página no es trivial.

Symfony Process lanzando procesos del sistema operativo

Symfony: tutorial 18: trabajando con el sistema operativo, Process

Continuando con la serie de tutoriales de iniciación a Symfony, aquí que vengo con el siguiente que me planifiqué repasar. Este tutorial trata sobre cómo lanzar programas del sistema operativo desde un proyecto Symfony. Es decir, si estamos en un sistema operativo GNU/Linux no hay nada que no podamos hacer en un servidor. O por lo menos no se me ocurre nada que no se pueda lanzar desde un proyecto Symfony. Me explico, si en un servidor GNU/Linux todo lo podemos hacer desde línea de comandos.. si todo lo podemos copiar, mover, lanzar procesos de todo tipo desde línea de comandos.. también podemos desde PHP con las funciones exec, shell_exec, passthru y system. Así mismo, tenemos también en Symfony un componente para usar estas funciones más fácil todavía. Es decir, este componente Process es un wrapper vitaminado para usar estas funciones de PHP.

Diseñando BDs con el creador de entidades de Symfony para Doctrine

Un lector me ha escrito sobre un tema muy interesante de Symfony. Así que aquí estoy de nuevo añadiendo material académico. Este post va sobre un post anterior, sobre Symfony, los modelos y entidades, de la serie de tutoriales de iniciación a Symfony Flex. Voy a tratar de explicarme mejor sobre el día a día con los comandos de consola mientras que vamos creando o editando una base de datos. Symfony te convierte en un programador web muy productivo, gracias en gran medida a los comandos de consola. Así que es muy recomendable conocerlos bien, practicar mucho, y saber usarlos. Es muy recomendable para sacarle provecho a este post el tener los conocimientos teóricos sobre diseño de bases de datos. Así pasarás del esquema de la base de datos, a crearla, en muy poco tiempo gracias al maker de entidades de Symfony. Pero es necesario que tengas claro cómo establecer las relaciones entre entidades, y de qué forma deben ser: de una a una, de una a muchas o de muchas a muchas.

Symfony, tutorial 17, sesiones y variables de sesión.

Symfony: tutorial 17: las variables de sesión

Aquí traigo otro minitutorial sobre Symfony. Siguiendo con los tutoriales de iniciación a Symfony Flex, llegamos a las variables de sesión. Es decir, en este post trato de explicar cómo en Symfony podemos gestionar las visitas individualmente, identificando a los usuarios que visitan una web, personalizando los contenidos o mensajes aún más que les mostraremos. Es decir, al poder seguir las sesiones de los usuarios, podemos estar seguros de quién es el que está viendo cierta sección. Así podremos mostrarle los contenidos que le corresponden, personalizando y adecuando los contenidos mejor. En estas sesiones podremos almacenar variables o mensajes. Es decir, estas sesiones son unos espacios individuales para cada usuario en donde podremos almacenar dichas variables. Además de que Symfony te añade una utilidad muy práctica que son las bolsas de mensajes flash. Todo comienza cuando recién llega un usuario a la web. Symfony lo identifica como usuario anónimo, y también queda identificado unívocamente aunque sea anónimo. Así luego podremos guardar variables asociadas a cada usuario, cada vez que abra un usuario una sesión, incluso si se trata de un usuario anónimo.

Symfony: seguridad, inyección SQL, XSS, autenticación y autorización

Symfony: tutorial 16: la seguridad

La seguridad no es una de las asignaturas difíciles en Symfony. Puede ser difícil en otras aplicaciones web hechas a medida, pero en Symfony, siguiendo unas pocas directrices, conseguiremos aplicaciones web muy seguras. Symfony nos provee de mecanismos fáciles de configurar, de métodos de programación para usar allí donde necesitemos estas capas de seguridad. Además de que hay componentes, hechos por expertos en seguridad, para nuestros proyectos. Este es un post muy teórico, en donde dejo las pinceladas principales para luego ahondar más en cada tema. Es decir, usando en Symfony los componentes recomendados, y unas pocas directrices, conseguiremos aplicaciones web muy seguras sin ser necesariamente expertos en seguridad web.

PHP y Symfony en la Raspberry Pi

Raspberry Pi: utilizando los GPIOs desde PHP y Symfony

Hoy traigo un howto para instalar PHP 7.2 en la Raspberry Pi.. luego un proyecto Symfony 4, con Symfony Flex.. y finalmente un code-kata para lanzar algunos comandos para encender unos LEDs conectados a unos pines del chip GPIO de la Raspberry Pi. Simplemente es un post de arranque para controlar desde PHP, con acceso casi directo a hardware, el chip de los GPIOs. Así de paso con Symfony, que aunque no es necesario, ayuda mucho en cualquier proyecto por los todos los extras que aporta. Por si no lo conoces, Raspberry Pi es un pequeño ordenador de propósito general de apenas 30 €, que la última versión a fecha de hoy trae HDMI, USBs, Wifi, Gigabit Ethernet, GPIOs, etcétera. Siempre ha hecho furor entre los programadores, y en la comunidad maker de dispositivos electrónicos. Una de las tareas para las que puede servir, es como servidor de páginas web, y en paralelo, puede controlar cualquier dispositivo que se ocurra conectar a los GPIOs. La última versión que es la Raspberry Pi 3B+ tiene 1 GB de RAM, con un procesador de 4 núcleos, más que suficiente para darle la potencia lógica a casi cualquier dispositivo que quieras probar de […]

Symfony 4 tests unitarios y funcionales

Symfony: tutorial 15: los tests automáticos, funcionales y unitarios

Hay personas que estáis siguiendo los tutoriales sobre Symfony, escribiéndome, consultándome, sobre Entidades, Doctrine Query Language, y otras cosas.. ¡Gracias! Esto me anima a seguir escribiendo, a terminar con la planificación que hice de puesta al día con Symfony 4. Así que, aquí estoy de nuevo con otro howto o tutorial, sobre éste framework tan cojonudo. Hoy llegamos a cómo automatizar las pruebas de tu aplicación web. Es decir, este post va sobre Test Drive Development (TDD para los amigos). Imagina que vas a entregar una web, la pruebas y pruebas pensando que todo va bien. Pero llega el día de la puesta en producción, pero como no has leído este post y no has automatizado las pruebas.. 😉 empieza a romperse por los rincones que menos habías pensado. No automatizar las pruebas es bastante habitual en el mundo de las webs, pero no debería de ser así. Así que con este post, repasaremos dando pinceladas a las principales herramientas que nos provee Symfony. Así sí que dormiremos tranquilos cada vez que entreguemos una nueva versión de nuestras aplicaciones web hechas en Symfony.

Magento 2 y el despliegue contínuo

Magento 2: automatizando el despliegue continuo

¡Hola de nuevo! Últimamente estoy jugueteando mucho con Magento 2, poniéndome al día con todas las nuevas mejoras que trae. Cierto es que la gente por los foros habla de muchos problemas con las versiones 2.0, 2.1, 2.2.. Pero pienso que es normal, ya que se ha hecho un remake total de todo el código fuente de Magento. Magento es un CMS para eCommerce enorme, tiene una gran cantidad de funcionalidades ya incorporadas de casa. Por otro lado, necesitas de un servidor potente para hacerlo correr. Pero tienes un punto de partida muy muy bueno, comparado por ejemplo con Prestashop, Sylius o WordPress con Woocommerce. Quizá incluso te puedes evitar un desarrollo a medida o la instalación de muchos módulos con sus correspondientes personalizaciones si es que Magento 2 ya dispone de las funcionalidades que necesitas.