Alpha's Manifesto

A black and white figure's thought-hive

PHP: Un fractal de mal diseño

O mil y un razones para alejarse de PHP

Durante mucho tiempo utilicé PHP, y de hecho, lo sigo utilizando. Sin embargo, siempre sentí como que algunas cosas no encajaban, y aunque varias veces me propuse aprender un paradigma de PHP de forma seria, nunca lo logré. Mucho tiempo después me enteré del gran odio generalizado a PHP y los problemas que ha tenido y leyendo esos artículos me encontré el que voy a traducir a continuación. PHP: A fractal of Bad Design es una recopilación de Eevee, quien muy amablemente accedió a que yo lo traduzca. La elegí porque es exageradamente detallada y certera.

Debería aclarar que no estoy de acuerdo con todos los puntos mencionados como negativos o siquiera problemas, pero respeto el artículo original del autor sin interrupciones.

Sin más, los dejo con el artículo. Si pueden leer el original, lo recomiendo.

(Read more →)

Alpha’s Manifesto ahora tiene menú configurable

Y cómo agregar propiedades a menús

Menu configurable

Como parte del proceso de dejar el theme listo para publicar, estuve trabajando en el WordPress Theme Testing. El proceso es largo y detallado, y la documentación también, pero yo estoy trackeando mi progreso en este issue en Github. Una de las partes es lograr que los menúes de navegación sean configurables, y es algo que se cumplió hoy para Alpha’s Manifesto.

(Read more →)

Link del día: Adaptive Images (mobile)

Nuevamente de la gente de CSS Tricks me llega un dato de una librería muy útil. En este caso es Adaptive Images, es una librería en PHP que nos permite servir imágenes con el tamaño justo dependiendo del tipo de cliente. No sólo se hace la diferenciación del tipo de cliente, sino del tamaño de la pantalla real.

Cómo es que funciona? Básicamente al momento de cargar la página un javascript se ejecuta antes de que ejecute el cuerpo. Este javascript carga una cookie en nuestro navegador con esa información de tamaño de pantalla, y cuando nuestro navegador procede a buscar las imágenes, ese cookie viaja también y el servidor puede devolver una imagen del tamaño justo.

Por supuesto que posee varias opciones de configuración para servir imágenes de la mejor forma para nuestra necesidad, y por supuesto, podemos servir una imagen de baja resolución si la ventana del navegador tenía poco espacio y luego se amplió. Pero hay workarounds para todo, de forma que sigue siendo una herramienta útil.

Soy un zorrinito adaptativo.

Link del día: Minify

Tratando de retomar la periodicidad de los links del día, hoy quiero hablar de Minify. Minify es una librería PHP de código abierto autocontenida que podemos utilizar para minimizar, unificar, cachear y definir nombres propios para recursos que queremos utilizar y mejorar la performance de nuestro sitio.

La librería no sólo soporta el trabajo con CSS, JS y HTML, minimizándolo completamente, sino que además puede ser utilizado para minimizar recursos bajo un solo nombre, y mejor aún, también es extensible para que podamos servir cualquier tipo de contenido de cualquier otra fuente. De hecho, lo probé cacheando y sirviendo recursos desde un sitio propio cuando los recursos en realidad son leídos de un lugar ajeno. Las ventajas de eso son el poder servir todo el JavaScript/CSS junto incluso aunque no nos pertenezcan, y ahorramos pedidos, y evitamos que el cliente deba acceder a múltiples dominios.

Y lo mejor, ni siquiera tenemos que andar haciendo referencia a los nombres de los archivos (aunque es la forma más fácil), ya que podemos definir grupos con nombres y utilizarlos. Eso nos brinda la ventaja de poder jugar mucho con eso y con el dinamismo de nuestra aplicación.

Pero en fin, lo interesante es la forma en la que minimiza, y lo simple que es de usar. ¡Dénle un intento!

Soy un zorrinito minimizado.

Link del día: CSS Crush

Siguiendo con la seguidilla de links sobre CSS, hoy les traigo CSS Crush. En este caso en particular, se trata de una librería php que muy gentilmente se encarga de extender nuestras capacidades sobre CSS para evitar la repetición de código, mientras que la información que se envía al cliente es totalmente distinta.

El artículo que lo explica lo compara con otros pre-procesadores CSS que se han probado, y aparentemente CSS Crush sería el más completo de todos ellos. Debe ser server-side, debe tener la posibilidad de cachear, de utilizar variables a gusto, y CSS Crush provee todo eso y un poco más, permitiendo una generación de código muy consistente.

Soy un zorrinito preprocesado.

Link del día: Consejos de base de datos

Gracias a @smashingmag y a @breakingdev me entero de una serie de consejos para programadores sobre bases de datos. Es muy buena esta aproximación, ya que por lo general los programadores se enfocan más del lado de la lógica de una aplicación, quizá en cuanto a la arquitectura o al diseño de un sistema, y no tanto a la forma en la que se almacenan los datos para el mismo. Y cabe destacar, que muchas veces esta puede ser una diferencia enorme en cómo se comporta el sistema.

Para comenzar con un link cortito, comencemos con el Top 10 MySQL Mistakes Made by PHP Developers, que como su nombre lo indica, es un listado de errores comúnmente realizados por programadores web, y ciertamente son comunes. No todos están 100% directamente relacionados con la base de datos en sí, pero de alguna forma siempre impactan sobre ella.

Para continuar con un listado más detallado y explicado, Database development mistakes made by application developers, una discusión que en Stack Overflow surgió con la pregunta: qué cosas nuestros DBAs no nos perdonarían? Cabe destacar que esta pregunta está muy relacionada con What are the most common SQL anti-patterns?, que también se relaciona con errores comúnmente cometidos.

Ambas discusiones tienen una buena extensión y una buena cantidad de respuestas, muchas de ellas detalladas y explicadas con la razón de la equivocación y la forma de evitarlo.

¿Se encuentran culpables de alguno de estos errores?

Soy un zorrinito equivocado.

Link del día: Ahora hay que reaprender PHP

Gracias a @Analton llegué a un artículo llamado Never user $_GET again, que habla de cómo ya no deberíamos utilizar más las archi-conocidas variables globales de GET y POST al programar en PHP. No sólo eso, sino que explicando los conceptos de validación y sanitización nos deja como paso siguiente ir al manual de PHP, y explorar una sección que quizá muchos ya no tengamos del todo frescas.

Esta sección es la de Filtering, en donde nos vemos introducidos a distintas funciones que ya efectúan validaciones de determinados tipos de entrada en particular, y nos permiten filtrar el resto de lo ingresado para obtener valores correctos, o al menos, lo suficientemente corregidos como para que no dañen nuestro código.

“¿Desde cuando está eso ahí?”, algunos preguntarán. Desde PHP 5.2, de forma que ya tiene un ratito ahí, no sé como a muchos se nos pasó de largo. Aprovechen a reaprenderlo y será más fácil programar la entrada de datos!

Soy un zorrinito preprocesado.

Link del día: Datos, todos en uno

Quizá muchos sepamos que existen varios agregadores de datos para la vida web. Lo que hacen es coleccionar datos de distintos lugares y mostrarlos en uno solo. Muy bueno para poder mantener toda nuestra actividad web concentrada, y poder mostrarnos de alguna forma en ese lugar en particular.

Ha habido varios intentos de esto, pero uno de los más interesantes para probar es Pubwich, una aplicación web open source creada en PHP que nos permite incorporar varios servicios. Según parece, tiene actividad muy reciente, por lo que de a poco iremos encontrando mejores funcionalidades, más integraciones y menos bugs. Los servicios que actualmente son soportados son Delicious, Dribble, Facebook, Flickr, Github, Goodreads, LastFM, Readernaut, Reddit, Slideshare, StatusNet, Twitter, Vimeo, Youtube, y pronto estarán sumados Digg, Ffffound, y Foursquare. Como extra, podemos integrar cualquier feed RSS o Atom, con lo que incluso si nuestro servicio no se encuentra definido, de alguna forma podemos darle más funcionalidad.

Y este servicio solo requiere Apache y PHP5. Podemos bajar el código para usarlo desde su repositorio en Github, o ver un demo online. Personalmente, creo que estaría mucho mejor si es que guardara datos viejos y nos permitiera visualizarlos.

Alguno lo utiliza? Qué opinan ustedes?

Soy un zorrinito integrador.

Link del día: Consejitos jQuery, MySQL, AJAX y PHP

Sabemos que los cuatro componentes mencionados (jQuery, MySQL, AJAX y PHP) deben de ser unos de los más comunes para generar aplicaciones web. Cada uno tiene una gran variedad de tutoriales o aproximaciones, podemos buscar y encontrar manuales, libros, ejemplos en abundancia.

Sin embargo, hay algo que resulta muy atractivo, que es lograr buenas aproximaciones, y con “buenas” me refiero a atractivas, usables y novedosas. Ya varios lo han logrado, como es el caso de Facebook, Twitter, Digg y tantos otros servicios con conceptos como el scroll infinito, la manipulación inline del contenido, interfaces avanzadas, etc. Muchos ejemplos pueden servirnos para hacer nuestra propia versión, y como ya alguien me dijo “fijate cómo lo hizo alguien que ya lo haya hecho”.

Para eso el artículo de hoy nos viene muy bien, es jQuery, Ajax, PHP and MySQL projects, de 9Lessons, un compilado de muchos artículos de sus blogs que muestran ejemplos de cosas comunes que querremos lograr, y que, por supuesto, podemos adecuar a nuestras necesidades particulares. Una suerte de cheatsheet pero algo extenso y complejo.

Soy un zorrinito web.