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
Un motor de sugerencias en PHP

Un motor de sugerencias en PHP

Ejemplos
Otro desafío interesante que me tocó encarar junto a mi equipo en el desarrollo de una red social de viajes fue el Sugeridor de Opinables. Una de las características que tenía el sitio en que estaba trabajando era la posibilidad de que los usuarios dejaran opiniones (o reseñas mejor dicho) sobre lugares que habían visitado (en general hoteles, restaurantes, atractivos, etc...). En un determinado momento, para el negocio se volvió sumamente importante incrementar la cantidad de reseñas (obviamente debían ser auténticas, no inventadas por robots ni plagiadas de otros sitios). Una idea que tuvimos junto con el equipo de producto fue la de intentar "adivinar" sobre qué otros lugares podría un usuario dejar su reseña, sabiendo qué lugares había visitado. Lo que debíamos lograr era algo similar a esto: Pero había una…
Leer más
Un ejemplo de uso del patrón strategy en PHP

Un ejemplo de uso del patrón strategy en PHP

Ejemplos
Hace poco, trabajando en una mejora para un sistema que desarrollé para un cliente de Leeway me pasó lo siguiente: Una parte del trabajo de la aplicación era obtener información financiera de diferentes fuentes (básicamente se trataba de obtener precios históricos de bonos). Existían diferentes fuentes de consulta debido a que la información no siempre estaba disponible en todos los sitios (más allá de no disponer de APIs, pero esa es otra historia). El punto es que, en la primera versión de la aplicación (que obviamente estaba desarrollada sobre el framework Symfony), simplemente creamos un método dentro del Controlador: private function fetchBondPrice($symbol, \DateTime $date) { try { if ($price = $this->fetchBondPriceFromQuoteNet($symbol, $date)) { return $price; } if ($price = $this->fetchBondPriceFromMorningStar($symbol, $date)) { return $price; } } catch (Exception $e) { } return null; }…
Leer más
Un sistema de caché distribuido usando callbacks de PHP

Un sistema de caché distribuido usando callbacks de PHP

Ejemplos
Hace un tiempo, cuando trabajaba para una gran .com del rubro turismo, surgió un escenario muy interesante que teníamos que resolver junto con mi equipo: Teníamos un servidor de bases de datos que daba soporte a siete servidores que hacían de FrontEnd. Nuestra aplicación era php puro (con un "framework" desarrollado in-house... muy mala idea) y todos los frontends corrían el mismo código (Todo detrás de un balanceador de carga, obvio). El problema que teníamos era que el sitio tenía bastante tráfico y la base de datos se nos convertía en un cuello de botella bastante a menudo. La solución que implementamos consistía en tener ciertas partes de las respuestas pre-calculadas. Ahora, como te imaginarás, mantener una experiencia de navegación consistente teniendo varios servidores diferentes tiene sus complicaciones, en nuestro…
Leer más

Un ejemplo de máquina virtual lista para PHP+Symfony2+XDebug

Ejemplos
Charlando con algunos amigos desarrolladores php surgió un tema que les estaba resultando complicado, así que decidí poner mi pequeño granito de arena (para ellos y para otros que tal vez estén pasando por lo mismo). Ya habíamos hablado del por qué usar una máquina virtual para proyectos PHP. Ya estaba claro que usar un framework es más conveniente que no usarlo (independientemente de cuál fuera) y les había comentado sobre mis herramientas favoritas de automatización (Ansible y Vagrant). Todos estábamos de acuerdo "en la teoría", pero a la hora de pasar a la práctica se veían algo frustrados por no poder lograr tener una máquina virtual que fuese fácil de usar y que soportara, entre otras cosas, el uso de XDebug. Lo que te voy a mostrar a continuación son los archivos…
Leer más