PHP

PHP es el lenguaje de programación de mayor aceptación entre las aplicaciones web. La gran mayoría de los CMS orientados al mundo de la web están desarrollados sobre PHP.

Preparado para correr sobre un servidor web, aunque en mucha menor medida también se puede utilizar en entorno de terminal. Tiene una curva de aprendizaje muy baja, es muy permisivo con los errores, es interpretado, no compilado y orientado a objetos, entre otras cosas.

Aunque sea un lenguaje muy aceptado por los principiantes, es muy atacado por muchos experimientados en la programación. No obstante es uno de mis lenguajes preferidos. Y sobre todo, al desarrollar para la web, siendo prácticos, es una de las primeras y mejores soluciones balanceando entre el conjunto de lenguajes disponibles.

AWS & GNU/Linux: optimizando aplicaciones web

2020-01-28 - Categorías: Amazon Web Services / Drupal / GNU/Linux / Magento / PHP / Prestashop / Symfony / WordPress
GNU/Linux: optimizando servidores
GNU/Linux: optimizando servidores

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, aunque también necesiten 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..

Continuar leyendo..

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

2020-01-18 - Categorías: General / GNU/Linux / PHP / Symfony

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 😉

Continuar leyendo..

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

2019-11-20 - Categorías: General / PHP / Symfony

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.

Continuar leyendo..

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

2019-09-15 - Categorías: PHP / Symfony
Trabajando las entidades de Doctrine con el maker de Symfony..

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.

Continuar leyendo..

Magento 2: cómo crear un módulo propio

2019-06-14 - Categorías: Magento / PHP
Magento funcionamiento interno

Ahora es mucho más sencillo arrancar un nuevo módulo para Magento 2. Aquí que dejo unos sencillos pasos para crear un módulo propio. Luego es cuestión de ir añadiendo las configuraciones que quieras, menús en backend, zonas en frontend, plantillas, controladores, tareas programadas, y un largo etcétera..

La idea es la misma que en muchos otros CMS, al modo de Vendor/Modulo que vamos a seguir estructurando los códigos.

Continuar leyendo..

Raspberry Pi: utilizando los GPIOs desde PHP y Symfony

2019-06-12 - Categorías: GNU/Linux / PHP / 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 construir.

Continuar leyendo..

Magento 1: auto-activar la caché

2019-06-09 - Categorías: Magento / PHP
Magento funcionamiento interno

Aquí estoy de nuevo compartiendo un truco sobre Magento 1. Magento 1 es un proyecto Open Source, con lo que navegando por el código fuente, o preguntando por foros por Internet que podemos llegar a encontrar cómo hacer esto.

Pero aquí que lo dejo porque me ha costado un poco encontrar cómo hacerlo, y ha sido útil como técnica de mejora de proyectos en Magento 1. Digo que me ha sido útil ya que a veces, me he encontrado los proyectos sin activar la caché. Esto hacía que los proyectos corrieran mucho más lento, ya que Magento en general, sin la caché activada, es realmente lento.

Continuar leyendo..

PHP y SEO: detectando contenidos duplicados

2019-05-23 - Categorías: General / PHP / SEO
SEO PHP duplicados

Hoy traigo un howto o code-kata, para comenzar a hacer nuestra propia herramienta de detección de duplicados. Puede ser una tarea más o menos compleja, depende mucho de hasta dónde queramos llegar, pero sólo mediante scripting en PHP podemos implementarlo.

Es decir, podemos recorrer toda una web de la que estamos encargados, guardar los contenidos de sus URLs, y chequearlos para ver si tiene contenidos duplicados. Me remito a un post de hace un par de años para recorrer una web en anchura, o en profundidad, mediante un sencillo script en PHP: https://jnjsite.com/yo-robot-ii-white-gray-black-hat-seo/

Continuar leyendo..

Magento 2: haciendo scripts externos en PHP

2019-04-06 - Categorías: Magento / PHP
Haciendo scripting de Magento 2 para línea de comandos..

Estar participando en grandes proyectos con Magento 2 es todo un privilegio, un honor. Con esto, que últimamente estoy investigando sobre cómo programar en Magento 2. Así que antes de entrar al tajo con el desarrollo de los módulos, programación de la plantilla (frontend), o programación para el panel de control (backend).. podemos empezar a juguetear con scripts externos a Magento que bootstrapean toda la aplicación para tenerlo todo disponible.

Me explico, el hacer scripts externos a Magento es la mejor manera de comenzar a probar los fragmentos de código que vamos a necesitar después en módulos, frontend y/o backend. Es decir, si vamos a necesitar una sección, que te liste ciertos tipos de productos/pedidos/categorías/usuarios.. lo mejor es probar estos listados en otra parte. Mejor probamos en estos scripts externos, para luego incluirlos con toda su cáscara de frontend o backend, según proceda.

Continuar leyendo..

Magento 2: automatizando el despliegue continuo

2019-03-31 - Categorías: GNU/Linux / Magento / PHP / Symfony
Magento 2 y el despliegue contínuo..

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

Continuar leyendo..

Symfony: subiendo todo tipo de ficheros al servidor

2019-02-27 - Categorías: PHP / Symfony
Editando en Atom el controlador de subida de ficheros..

Hoy traigo un pequeño CODEKATA sobre una consulta que me ha hecho un lector. Se trata de unos códigos fuentes en Symfony 4 para subir ficheros al servidor, pero sin usar ningún componente extra en el proyecto.

Se trata de unas pocas modificaciones que le he hecho al código fuente de ejemplo de la documentación oficial. Así el código dejará de chequear la extensión, el mime type del fichero, y además de que no renombra los ficheros con un identificador único. Esto puede tener doble filo porque puedes acabar machacando los ficheros en nuevas subidas, pero siempre se le puede añadir después la lógica necesaria para comprobar si el fichero ya existía.. 😉

Continuar leyendo..

Datatables y Symfony: cargando tablas con cantidades ingentes de datos

2019-02-19 - Categorías: JavaScript / PHP / Symfony
Symfony y Datatables, cargando cantidades ingentes de datos mediante AJAX.

Continuando con un post anterior sobre mostrar tablas de datos interactivas, traigo hoy otro CODE-KATA, hecho en Symfony 4 para probar el Datatables más a fondo. En aquel post empecé a testear el Datatables con pocos datos. Datatables es un plugin de jQuery con el que en poco tiempo, listas, ordenas y filtras tablas de datos de forma muy profesional.

Ahora estoy probando cómo funciona sobre un proyecto con ingentes cantidades de datos, en concreto con una tabla con 622,001 registros. Llegado a éste extremo, no puedes cargar el 100% de los datos en el servidor, enviarlos al navegador, y pintarlos. Si lo haces, el navegador se sobrecargará, no podrá pintar la tabla, o irá muy muy lento.

Continuar leyendo..

© 2021 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.