PHP Quick Profiler: librería para hacer debug en PHP

PHP Quick Profiler es una librería que nos puede ser muy útil cuando queramos realizar debug de nuestras aplicaciones PHP. Podemos integrar esta librería en cualquier código nuestro de forma muy sencilla, y los datos que nos devuelve, a parte de muy bien diseñados, son muy completos.
pqp.png
Podemos obtener datos del uso de memoria, includes de ficheros realizados, tiempos de ejecución, actividad de la base de datos o simples logs propios.
PHP Quick Profiler
Gracias David por el aviso (@dmnet)

Impresiones sobre el desarrollo web en España

Mientras que algunos de los que nos dedicamos al desarrollo web estamos cansados de oír hablar de la web2.0, otros que pertenecen al mismo mundo laboral ni saben qué es, ni les importa. El desarrollo web en España es como un iceberg, lo que se ve es nada comparado con lo que está debajo del agua.

Leyendo blogs sobre desarrollo web, parece que todo el mundo sabe, usa u opina sobre jQuery, frameworks, Ajax, JSON, RIA, estándares, usabilidad o el reciente cloud computing. Pero realmente somos una minoría los que estamos interesados en estos temas. Cada día aparecen proyectos web2.0 de los que se habla durante meses, evangelizadores de lo-que-sea 2.0 nos cansan los oídos sobre qué es lo que se hace o lo que se debe hacer y cuál es el futuro inminente. Pero realmente estos proyectos son un pequeño porcentaje y el adoctrinamiento 2.0 no cala hondo en la realidad laboral española.

Entonces, ¿qué es lo que pasa? Pues sinceramente, no tengo ni idea, ni creo estar capacitado para exponer la realidad de lo que ocurre. Tan solo tengo algunas ideas, pensamientos o suposiciones sobre cuales pueden ser algunos de los motivos que pueden causar la apatía 2.0.

Es un trabajo

Lo que para algunos es un entretenimiento, una pasión o un vicio, para la gran mayoría es sólo un trabajo. Muchos de lo que se dedican a este trabajo lo hacen porque “no había de lo suyo”: muchos químicos, matemáticos, biólogos… trabajan en una profesión que no les gusta, pero que desgraciadamente es de lo único que había trabajo cuando salieron de la universidad. Además hay que sumar el hecho de que los españoles tenemos una actitud negativa ante el trabajo: el que sea una obligación, se pague mal o se explote a la gente, son motivos suficientes para que muchos hagan lo justo en su jornada laboral, y eso implica no esforzarse un poco más en aprender.

Más de lo mismo

Me acuerdo que hace años, cuando cambié de proyecto, los antiguos compañeros me preguntaron qué tal el proyecto nuevo, y mi respuesta fue: “más de lo mismo, navegador → JSP → bean → BD → HTML”.

Si nos ponemos a pensar, casi todos los proyectos web que se realizan son muy parecidos: hacer consulta a la BD y mostrar datos. Esto provoca que la creación de páginas web sea algo muy monótono y mecanizado, donde la novedad suele escasear, por lo que la necesidad de aprender algo nuevo no abunda, ya que con los conocimientos básicos que se tienen, se puede hacer cualquier aplicación.

El copy/paste mató a la 2.0 star

Si al hecho de que la gente no está motivada o a lo de que es más de lo mismo, le añadimos el uso discriminado de copy/paste, nos encontramos con la situación de que la gente lo único que hace la mayor parte de su tiempo es copiar un html/script/css anterior, modificarlo para que te funcione y pasar al siguiente tema, y en muchos casos sin saber exactamente qué es lo que está cambiando.

En Java es muy típico encontrarte a personas que llevan años usándolo y que no se saben de memoria el public static void main(String args[]). ¿Para que sabérselo de memoria si siempre usan un script anterior para crear uno nuevo?. Yo personalmente no me sé de memoria el <!DOCTYPE html PUBLIC … > y no creo que me lo vaya a aprender en la vida (ni ganas que tengo).

Jefes de proyecto o analistas “mayores”

Seamos sinceros, normalmente la gente con más interés por aprender es la gente más joven, pero lógicamente, estas personas suelen ser las que más abajo del escalafón están y sólo se dedican a hacer lo que les mandan. Si quien decide qué se debe hacer, no tiene el conocimiento sobre las novedades que hay en el desarrollo web, ¿cómo se va a propagar el uso de la web2.0?.

Cuando empecé a aprender Ajax, me fue imposible ponerlo en práctica en el proyecto en estaba, los que estaban por encima mía ni sabían qué era, ni se les podía dejar por tontos. Después de mucha lucha conseguí que al menos se hiciera usando iframes ocultos, para ellos era un adelanto, para mí un atraso.

Clientes y otros politiqueos

El cliente tiene la razón, aunque te den ganas de abrirle la cabeza con un libro de O’Reilly. Esto suele llevar a la situación de peticiones imposibles y desarrollos chapuceros.

Una aplicación web no es una aplicación de escritorio, por mucho que le pese al cliente, el cual suele pedir cosas como:

  • que toda la aplicación se vea en la pantalla, que no haya scroll vertical o que haya varias capas (normalmente frames argggg) y cada capa con su propio scroll vertical (e incluso horizontal)
  • que se pretenda que se hagan uploads automáticos de ficheros, sin que el usuario haga nada en el navegador (da igual las veces que les expliques que los navegadores no lo permiten)
  • usar flash o applets porque el navegador no permite hacer algo y el cliente se empeña
  • que sea compatible con los navegadores más antiguos del mundo (alguien lo debe tener instalado y no le apetece actualizarse). Y no me refiero al IE6, sino a versiones como IE5 o Netscape 4.7 (sufrido en mis propias carnes hace no mucho)

Sobre el politiqueo, poco que decir que no conozcamos todos. Decisiones en altas esferas nos obligan a usar productos o programas que poco favor hacen al desarrollo web, y menos aún a los desarrolladores. Estas ordenes suelen estar dadas normalmente por comerciales, que de humo y motos saben mucho, pero que de desarrollo no saben nada. Resumiendo, aquellos que no saben de desarrollo web, obligan a que se haga de tal forma, imposibilitando el camino hacia la web.20.

Negocio, negocio, negocio

Al final todo es negocio y lo que realmente importa es ganar dinero, y cuanto más dinero mejor. Esto suele conllevar varias situaciones:

  • recurrir a menos gente de la necesaria
  • reducir tiempos de entrega
  • contratar gente menos cualificada y más barata, la cual suele necesitar mucha ayuda o revisión
  • reutilizar desarrollos anteriores, aunque tengan poco que ver

Debido a esto, los desarrolladores se encuentran con que tienen poco tiempo para mucho trabajo, y las prisas no son amigas de las florituras, algo de lo que la web2.0 está llena.

Conclusiones

Está claro que todo lo dicho anteriomente no es algo generalizado, existen empresas que realizan desarrollos impresionantes, jefes amantes de la web2.0 y programadores interesados en aprender más cada día. De todas formas, al final lo que importa es que seguimos haciendo las cosas mal, bueno, mal no, pero si deprecated. Y ahora con el tema de la crisis, cuando nuestra mayor ventaja puede ser la calidad de lo que ofrecemos, nos encontramos que hacemos lo mismo que el resto de los países y en algunos casos más caro, por ejemplo la India es mucho más barata y mil veces más eficiente que nosotros.

Que nadie se sienta ofendido, porque no va dirigido a nadie este post. Y si se siente ofendido, que se ponga las pilas.

QueryPath: maneja HTML con PHP como si fuera jQuery

QueryPath es una librería PHP que permite trabajar con HTML, XML o web services de forma muy sencilla y parecida a la que se usa en jQuery, permitiendo usar métodos encadenados.

Puede usarse para importar documentos XML en una base de datos SQL, o pasar los resultados del SQL a un XML o HTML. Se pueden escribir documentos en HTML o convertir XML en HTML. Abrir documentos y buscar mediante selectores CSS3 o XPath.

qp('sample.html')->find('title')->text('Hello World')->writeHTML();

QueryPath

Vía / Developer Works

Importar RSS en WordPress sin usar un plugin

Buen tutorial que explica cómo importar los contenidos de un RSS en nuestro blog sin tener que usar un plugin, que sinceramente, hace bastante busqué un plugin que lo hiciera y no encontré nada que me llegara a gustar.
El tutorial es bastante completo, dividido en tres partes: importar usando WP de forma sencilla y de forma más avanzada, para lo cual utiliza las funciones de WP que hacen uso de Magpie. O utilizando SimplePie, para lo cual no es necesario WP.
Import and Display RSS Feeds in WordPress
Vía / Script & Style

Plugin WordPress para usar Sphinx

Interesante plugin que nos permite usar Sphinx en nuestro WordPress, aunque siendo realistas, dudo mucho que el 5% de los blogs que usen WordPress puedan necesitar el potencial de Sphinx.

Ofrece todas las características propias de Sphinx (entre ellas su rapidez) y además añade las siguientes:

  • Permite buscar en páginas, posts y comentarios
  • Permite excluir posts, comentaios o páginas de las búsquedas
  • Muestra los comentarios en la página de resultados
  • Busca en páginas no protegidas con contraseña
  • Busca unicamente en comentarios aprobados
  • Modifica el title de la página de resultados según la búsqueda
  • Muestra el top de palabras buscadas
  • Muestra las ultimas palabras buscadas

WordPress Sphinx Plugin

Librerías Javascript para mostrar información de imagenes y añadir efectos

Dos interesantes y currados scripts que te permiten manipular imágenes. Uno de ellos te devuelve la información EXIF de la imágen: formato, versión, ancho, alto, bits por pixel, alpha, mimeType, tamaño en bytes e información EXIF (solo para JPEG).
La otra librería Javascript te permite realizar efectos en las imágenes, usando canvas o lo propio de IE (no todos los efectos los permite IE): flip horizontal, flip vertical, invertir, desaturacización, blur, sharpen, edges, emboss, laplace, ruido, brillo, sepia e histograma.
Librerías muy interesantes para proyectos que permitan subir o manipular imágenes (tipo fotolog).
Javascript Image Effects e ImageInfo
Vía / @rafabayona

Calcular la distancia entre dos direcciones usando Google Maps

Interesante script que puede ser bastante útil en muchas aplicaciones2.0 en la que el se requiere conocer la distancia entre dos direcciones, por ejemplo buscar usuarios que se encuentre cerca de donde tú vives.
El script accede a Google Maps (es necesario tener una key) y mediante las dos direcciones introducidas obtiene la latitud y la longitud de ambas, luego mediante la teoría del gran círculo obtiene la distancia entre ambas coordenadas.
How to calculate distance with javascript and Google Maps API
Vía / @quenerapu

Ejecutar PHP en Google App Engine

Google App Engine es un hosting gratuito de aplicaciones con 500MB de almacenamitno y bando de ancha para 5 millones de páginas vistas, pero centrado en Java. Aquellos que deseen ejecutar sus aplicaciones PHP en GAE deberán hacerlo mediante Quercus, una implementación Java de PHP.
El el post que referencio explican paso a paso qué hacer para poder ejecutar nuestras aplicaciones PHP en GAE.
Run PHP on the Google App Engine