Artículos

Cómo armar una tabla pivot con PHP y MySQL

Cómo armar una tabla pivot con PHP y MySQL

Cómo hacer para...
Hurgando en las profundidades de la Internet me encontré con una pregunta muy interesante. El autor comentaba que tenía una tabla con esta pinta: Y quería, mediante una consulta a MySQL, obtener un resultado de este tipo: Básicamente el desafío era transformar datos horizontales (los valores de la columna "endpoint" para cada fila) en verticales, es decir, columnas de la respuesta. No es algo que se vea todos los días, cierto, pero... ¿cómo rechazar un desafío semejante? :) Inmediatamente me vino a la mente el concepto de Tabla Pivot que manejan las planillas de cálculo. Así que me arremangué y escribí este SQL: SELECT FROM_UNIXTIME(FLOOR((UNIX_TIMESTAMP(fecha_hora))/60)*60) as fecha_hora, SUM( CASE WHEN endpoint = 50 THEN numero_personas ELSE 0 END ) as suma_personas_ep50, SUM( CASE WHEN endpoint = 51 THEN numero_personas ELSE…
Leer más
Cómo usar Docker en proyectos PHP

Cómo usar Docker en proyectos PHP

Cómo hacer para..., Herramientas
Hace tiempo que vengo usando (¡y abogando por su uso!) máquinas virtuales para mis proyectos PHP. Hasta ahora me venía manejando con Vagrant y debo decir que me ha dado unas cuantas satisfacciones. Sin embargo, hay algunos problemas derivados de su uso: Las VM se pueden volver muy pesadasOcupan mucho espacio en el discoSon lentas de levantarNo es sencillo tener muchas corriendo a la par (Consumen muchos recursos de hardware)No es fácil asegurarme de que en Producción y en Desarrollo tengo exactamente el mismo software instalado. Investigando un poco y, hay que decirlo también, por consejo de algunos colegas me metí con docker. Qué es Docker Docker es una herramienta de virtualización basada en un concepto algo diferente al que usa Vagrant: los contenedores. No me voy a meter acá…
Leer más
Cuándo usar una clase abstracta y cuándo una interface

Cuándo usar una clase abstracta y cuándo una interface

Buenas prácticas
Un lector de mi libro sobre Programación Orientada a Objetos con PHP me envía esta pregunta a través de LinkedIn: Empecé a responderle a su mensaje pero luego se me ocurrió que sería mejor aprovechar y contestarlo en público así que aquí voy. Empecemos por comprender de qué se trata cada uno. Qué es una clase abstracta En su definición más cruda una clase se dice abstracta si no es posible utilizarla para crear objetos (instancias). Suena un poco raro, ¿no? ¿Para qué quiero tener una clase si no es para crear instancias? La explicación viene asociada al concepto de Herencia (Tema para otro artículo en todo caso). Una clase abstracta puede usarse como base de una jerarquía. Se define de esta forma: <?php abstract class Abstracta { public function…
Leer más
Cómo usar URLs amigables con el Servidor Web Incorporado a PHP

Cómo usar URLs amigables con el Servidor Web Incorporado a PHP

Cómo hacer para...
Es muy común, desde la versión 5.4 de PHP, usar el servidor que viene incorporado mientras estamos en un ambiente de desarrollo (¿Para qué negarlo? ¡Es sumamente cómodo!). Un problema que sucede a menudo al utilizarlo es cómo usar URLs amigables. Por ejemplo, a un sitio web productivo no vas a querer que se acceda mediante algo como: https://misitio.com/index.php?fecha=2019-06-25&slug_categoria=top10 Más bien vas a preferir algo como: https://misitio.com/articulos/2019-06-25/top10 ¿O no? El problema es que, en el caso de PHP, las variables que se reciben a través de la URL son accesibles a los scripts a través de la variable $_GET. Claro que, para que esto suceda, estas URLs deben estar escritas respetando el formato canónico: La separación entre URLs y parámetros se marca con el caracter "?"La separación entre nombre del…
Leer más
Cómo pasar una variable de JavaScript a PHP

Cómo pasar una variable de JavaScript a PHP

Cómo hacer para...
Si estás programando algún sistema web medianamente complejo, es muy probable que te hayas enfrentado a este problema alguna vez. En muy resumidas cuentas, lo que estás intentando hacer es algo como: var variable_js = 2; $variable_php = variable_js; Sería lindo que todo funcionara de esa forma, ¿no? Lamentablemente, la cosa no es tan fácil (Pero tampoco es tan difícil en realidad). Por qué no se puede pasar directamente un valor de Js a PHP Esta pregunta esconde un poco de confusión respecto de cómo funcionan las aplicaciones web. Algo parecido a lo que comentaba en este artículo. El punto es que PHP y JavaScript se ejecutan en lugares y momentos diferentes. Es como si estuvieses leyendo un libro y te encontraras con algo que no comprendés del todo y…
Leer más
¿Cuánto cobra un desarrollador PHP por hora?

¿Cuánto cobra un desarrollador PHP por hora?

Reflexiones
Es una pregunta que está en boca de la gran mayoría de los desarrolladores que inician su trayectoria en forma freelance (y algunos que ya tienen varias horas de vuelo también). La respuesta requiere un análisis un poco más profundo: lo primero que hay que saber es quién pagará por esas horas. Otra variable que puede afectar (positiva o negativamente) el valor hora es el seniority. Y por último, está el punto de quién determina las horas que insume una tarea o proyecto. Vamos al caso más clásico que es el que la mayoría de quienes hacen esta pregunta ve como (muchas veces única) posibilidad: Voy a vender mis horas de trabajo a $X la hora. Para vender mis horas necesito alguien que quiera comprarme horas (¿Te parece una obviedad...…
Leer más
¿Hay trabajo en PHP?

¿Hay trabajo en PHP?

Misceláneos
Una pregunta que escucho muy a menudo cuando digo que me dedico a la formación en PHP es: ¿hay todavía demanda para PHP en la industria de IT? Podría dar mis argumentos, pero me parece más fácil mostrar hechos que, pienso, hablan por sí mismos: Como podrás ver, no sólo hay demanda para desarrolladores PHP, si no que además, los beneficios que ofrecen las empresas son sumamente atractivos... Claro que nada es gratis en esta vida, je... todos esos grandes trabajos están disponibles para programadores PHP Sr. ¿Qué puede hacer un PHP Jr. para mejorar su seniority? Practicar. Practicar. Practicar. Y después de haber practicado, seguir practicando un poco más. Pero, claramente, el recruiter difícilmente vaya a estar ahí con vos mientras practicás... tenés que hacerte notar. Una excelente forma…
Leer más
Un dashboard en tiempo real basado en PHP y Bootstrap

Un dashboard en tiempo real basado en PHP y Bootstrap

Ejemplos
Algo que está muy de moda por estos días es la creación de tableros de comandos (Dashboards) que se mantengan actualizados en tiempo real. Si bien la definición de tiempo real es algo vaga (Formalmente se trata de sistemas en los cuales el tiempo de respuesta es crítico), hay una suerte de conocimiento en común respecto de lo que quiere decir: que los cambios se vean en forma inmediata (o casi). En lo que hace a aplicaciones web, de lo que se trata es de permitir al visitante recibir novedades sin tener que recargar la página. Para lograr este efecto se necesitan dos partes coordinadas: Una aplicación front-end con la que el usuario interactuará en forma directaUn servidor que mantenga la información actualizada en todo momento Un frontend para el…
Leer más
Cómo hacer un autocomplete con PHP

Cómo hacer un autocomplete con PHP

Cómo hacer para...
Es muy común hoy en día encontrarnos con formularios que deben completarse mediante alguna opción pre-existente en el sistema. Si las opciones son pocas, lo más usual es utilizar un dropdown (un objeto basado en el tag select de HTML), pero si la cantidad de opciones es grande, esto puede volverse un fastidio para el usuario. Una forma mejor es dejar que el usuario ingrese el texto que quiera y dejar que el sistema autocomplete el resto. Para lograr este efecto se requiere una combinación de factores: Un servicio que pueda tomar el texto introducido por el usuario y devuelva una lista de opciones disponibles que coincidan.Una página capaz de tomar la entrada del usuario, interactuar con el servicio y presentar las opciones al usuario. Un servicio que busque opciones…
Leer más
Cómo instalar librerías de composer en un hosting compartido

Cómo instalar librerías de composer en un hosting compartido

Cómo hacer para...
Una pregunta que me han hecho en repetidas oportunidades es cómo usar composer en un ambiente de hosting compartido. Personalmente, siempre prefiero usar mis propios servidores tipo VPS, precisamente para evitar este tipo de problemas, pero... si no queda otra, veamos qué se puede hacer. Cómo instalar dependencias si tenemos acceso ssh Existen algunos hostings compartidos que permiten algún tipo de acceso vía ssh (o similar). Si este es el caso, puede que hasta tengamos composer ya instalado... claro que la versión que podremos encontrar puede ser algo añeja y, como el servidor lo administra otro, tendremos que poner un ticket de soporte y rogar para que se actualice. Si tenemos suerte, podremos ejecutar composer y actualizar nuestras dependencias directamente en el servidor como si estuviéramos en un ambiente controlado…
Leer más