Cómo tratar archivos comprimidos con PHP

Cómo tratar archivos comprimidos con PHP

Cómo hacer para...
Recientemente me tocó realizar una modificación a un sistema que había desarrollado para recibir un único archivo comprimido, en lugar de un conjunto de archivos en forma individual. Dejando de lado los ajustes hechos en el front-end (No fue gran cosa realmente, se trató de cambiar un formulario con 5 inputs por uno solo y, como lo había hecho usando el framework Symfony esa parte fue simple, ni tuve que tocar HTML), la parte interesante fue cómo procesar el archivo comprimido. Para empezar, algo que tuve que acordar con el usuario era el formato de compresión que íbamos a utilizar. Obviamente no es lo mismo descomprimir un archivo .rar que un .zip (Diferentes formatos, diferentes algoritmos de compresión, etc...). En mi caso no tuve problema porque tenía la posibilidad de definir…
Leer más
Cómo interactuar con MailChimp usando PHP

Cómo interactuar con MailChimp usando PHP

Cómo hacer para...
Uno de mis SaaS favoritos es MailChimp (El que uso para el envío de mis campañas de e-mail marketing y para algunos clientes también). Si bien su interface es algo rústica (A veces cuesta encontrar el modo de realizar ciertas tareas, sobre todo al comienzo cuando no se conoce bien), es sumamente funcional (Hasta tiene workflows automatizados). Pero, como siempre, las posibilidades que brinda de fábrica son más limitadas de lo que a un desarrollador le gustaría... afortunadamente, cuenta con una API muy buena que permite manipular todos los objetos del sistema y lograr algunas cosas que desde la interfaz web son complejas (o directamente imposibles). Algo que me sucedió recientemente (y que dio origen a este post) fue la necesidad de realizar un mismo envío (el cual incluyera el disparo de nuevos…
Leer más
Cómo generar archivos PDF con PHP

Cómo generar archivos PDF con PHP

Cómo hacer para...
Una necesidad bastante común en el desarrollo de aplicaciones basadas en web (Especialmente las que se usan dentro de ambientes corporativos) es la de emitir reportes. Una forma simple de resolver este problema es la generación de páginas html cuyo único objeto es ser impresas y dejar al usuario la decisión de guardarlas en lugar de imprimirlas. Si bien esta solución puede ser suficiente cuando se trata de emitir un reporte a un usuario, ciertamente no es lo ideal cuando se trata de intercambiarlo con algún otro sistema. Particularmente en este artículo voy a mostrarte algunas formas de generar archivos pdf usando PHP. Librería PDF de PHP Existe una extensión de PHP llamada PDF, la cual está basada en la librería PDFlib (Desafortunadamente, una librería propietaria). Esta librería debe ser instalada como una…
Leer más
Cómo determinar la versión de PHP de un sistema

Cómo determinar la versión de PHP de un sistema

Cómo hacer para...
Una de las primeras tareas que debemos encarar cuando realizamos una auditoría de código de un sistema es detectar la versión de PHP que se está utilizando. Es importante saberlo para darnos una idea de qué tanto mantenimiento se ha realizado sobre el código y hasta cuánto se puede mejorar apalcándonos en las últimas características disponibles (O qué tan costoso será incorporarlas debido a refactors y demás). Hay diversas formas de encarar esta tarea. Nombraré algunas: Qué nos dice el webserver Una forma muy sencilla es realizar una petición al servidor web y analizar los encabezados de la respuesta. Ejemplo: No hace falta ser muy perspicaz... si el webserver tiene instalada la versión 5.3.29... el código a lo sumo está desarrollado usando esa versión. Si bien no es una información 100%…
Leer más
Cómo hacer backups con MySQL

Cómo hacer backups con MySQL

Cómo hacer para...
Cuando una aplicación entra en producción (si no antes), resulta clara la necesidad de realizar backups. Por más que uno esté usando hostings virtualmente irrompibles (Como Digital Ocean), nunca se puede ser demasiado precavido. Por otro lado, seguro que el código de la aplicación que hiciste es una obra de arte digna del Louvre, pero, lo realmente importante son los datos que el cliente genera con ella (¡al menos para él!). Hay varias formas de resolver este problema, voy a nombrar algunas en orden de simplicidad decrecreciente (Es decir, empiezo por la más fácil :) ): Usando MySQL WorkBench Desde la pantalla principal (Una vez conectado a un servidor) Arriba a la izquierda encontramos el menú "Management": De ahí tenemos la opción "Data Export": Eso nos lleva a la pantalla…
Leer más
Cómo pasar una variable PHP a JavaScript

Cómo pasar una variable PHP a JavaScript

Cómo hacer para...
Un problema muy común es cómo hacer para utilizar información que se tiene en PHP en la ejecución de código JavaScript. Detrás de esta inocente pregunta sin embargo, se esconde un error conceptual similar al que tratamos en este artículo: no se domina por completo el esquema de ejecución de una aplicación web. Es entendible: la confusión se produce porque en muchas ocasiones se escribe un único texto que se ejecutará en diferentes lugares y momentos. Es un poco como jugar a este juego: Para entenderlo bien veamos un ejemplo simple: <table> <?php for ( $i = 0; $i < 5; $i++ ) { ?> <tr> <td><?php echo $i; ?></td> </tr> <?php } ?> </table> Este código está mezclando puro código HTML con PHP, pero el PHP se ejecuta en el…
Leer más
Un redimensionador de imágenes eficiente hecho con PHP

Un redimensionador de imágenes eficiente hecho con PHP

Ejemplos
Un proyecto interesante que tuve la oportunidad de realizar hace unos años fue un sistema de procesamiento de imágenes. El desafío era lograr un servicio simple que permitiera escalar y rotar imágenes velozmente. Lo diseñé como un componente separado de la aplicación principal (Una red social de viajes) para poder instalarlo sin inconvenientes en un servidor diferente (y eventualmente poder vincularlo a otros proyectos). Por entonces me pareció una buena idea montarlo sobre una arquitectura RESTFul y, como era un proyecto muy simple y acotado (y tenía ganas de aprender algo nuevo de paso) decidí usar un framework especialmente diseñado para estos efectos: Tonic. Lo más importante como siempre: ¿qué nombre ponerle a una aplicación como esta? Mucho de fotografía no sé, pero buscando un poco me pareció que Bresson podía…
Leer más
Cómo ser el primero en enterarse de los errores de tu aplicación web

Cómo ser el primero en enterarse de los errores de tu aplicación web

Cómo hacer para...
Cuántas veces te pasó que te mande un mail un cliente (o peor, te llame por teléfono) para decirte que la aplicación que pusiste en producción hace más de una semana acaba de dar uno de esos errores inentendibles: Y vos, estando en cualquier otro tema tenés que buscar en lo más recóndito de la memoria para recordar de qué se trataba y contestar algo medianamente coherente... ¿No sería genial poder decirle a tu cliente apenas atender: "Sí, ya sé, hubo un problema con la app, ya lo estoy viendo y enseguida lo tenés solucionado"? (Obviamente mejor sería que el problema nunca hubiese sucedido, pero bueno... sabemos cómo es esto de desarrollar aplicaciones :)). Hay varios puntos para señalar en este escenario: Más allá de que "queda feo" que un…
Leer más

Cómo consumir un WebService REST con PHP

Cómo hacer para...
Un poco de background como para asegurarnos de que hablamos de lo mismo Qué es un webservice Un webservice (o servicio web) es una forma de integrar aplicaciones web. Básicamente se trata de un servidor que expone parte de su funcionalidad para que sus clientes (que generalmente son otros servidores de diferentes aplicaciones) puedan utilizarlas. Las principales ventajas de usar web services son: La posibilidad de valernos de la capacidad instalada (¡y mantenida!) por terceros La facilidad para extender la funcionalidad de nuestra aplicación (Basta con realizar las llamadas al servicio web que deseamos) La principal desventaja de usar este enfoque es que dependemos de servicios de terceros que, salvo en casos muy puntuales, no podemos controlar. Ejemplos de webservices: Autenticación de usuarios vía Facebook, Google, Twitter, etc... Generación de…
Leer más
Qué es un CDN y por qué deberías usarlo

Qué es un CDN y por qué deberías usarlo

Herramientas
CDN significa Content Delivery Network o Red de Distribución de Contenidos. Se trata de conjuntos (por lo general bastante grandes) de servidores sincronizados entre sí y preparados para servir contenido estático desde diversos puntos del planeta. Su objetivo principal es el de disminuir el tiempo de carga de una página web (Algo que siempre viene bien). Este objetivo se logra combinando varios factores. Entre ellos: Aprovechando el paralelismo de los pedidos HTTP: Al tener el contenido distribuido en diversos servidores (en lugar de tener el código php y los archivos estáticos en el mismo) el cliente puede lanzar varias peticiones en paralelo por un lado y, por el otro, el pobre servidor al que llegan todos los visitantes de tu sitio puede delegar parte de la carga, lo cual a…
Leer más