La codificación del pato
Si camina como un pato, nada como un pato, y hace cuack, entonces puedes tratarlo como un pato.
En programación, no sólo utilizamos los patos en técnicas de depuración de baja tecnología, sino que además, basados en el método de deducción por inducción del Test del Pato, nos permitimos, en sistemas de tipificación dinámica, declarar variables sin avisar al sistema de qué tipo de datos estamos utilizando.
Si parpa como un float, entonces el sistema lo tratará como un float. De cajón.
5 addons para Firefox esenciales en mi día a día
Pese al protagonismo que va tomando Google Chrome, que se ha convertido a pulso en el favoritísimo de los navegadores, yo sigo utilizando Firefox para desarrollar. Manías que conserva uno. Y para hacerlo me ayudo, sobre todo, de cinco plugins, algunos de ellos imprescindibles en mi día a día, otros no tan importantes aunque he querido tenerlos en cuenta porque forman parte de algunas etapas del ciclo de trabajo.
Cito sólo cinco plugins para Firefox porque la gracia está en que cada uno utilice los que mejor se adapten a su forma de trabajo, y estos cinco van en una dirección muy concreta: el desarrollo web.
Firebug: Es seguramente la estrella de los plugins para Firefox. Imprescincible en cualquier sesión de trabajo, Firebug nos permite conocer en cada momento que sucede tanto en el DOM como en el motor JavaScript de una página web y por qué sucede.
Web Developer: Seguramente el punto de partida para depurar una web. Es especialmente útil para detectar errores de sintaxis en HTML y en CSS y además nos provee de enlaces a las herramientas de validación del W3C.
MeasureIt: Tan simple como tener una regla integrada en nuestro navegador para medir ciertas zonas en pixels.
SEO Quake: Se trata de un sencillo plugin de optimización para buscadores que nos dará bastante juego como primer checklist SEO para comprobar que funciona correctamente nuestro rotbots.txt, nuestro sitemap, y hacer un recuento de palabras clave.
ColorZilla: Selector de color. Es prescindible si tienes algún otro (personalmente me gusta utilizar el color picker de KDE)
Dejo el post abierto en forma de “encuesta”. ¿Cuáles son tus complementos esenciales para firefox?
Un navegador en 42 líneas de código
Vía Área Linux, he encontrado este código fuente en Python para lanzar un navegador web ultraligero que tira de las librerías gtk y webkit.
Se le nota cierta querencia al cuelgue (es normal), pero eso sí, mientra funciona, corre que se las pela. De hecho este post está escrito desde ese navegador.
Seguridad en PHP y MySQL
Aunque poco se ha hablado en estas páginas de programación web del lado del servidor, hace unos meses descubrimos algunas funciones de PHP que, aunque poco frecuentes, nos pueden ser muy útiles a la hora de programar ciertos procedimientos.
Esta semana, en Security By Default, nos recordaban varias recomendaciones para securizar nuestras aplicaciones web a nivel de programación en PHP, evitando inyecciones SQL, XSS, CSRF, RFI, y problemas de seguridad en sesiones. Ya nos habían hablado anteriormente de una vulnerabilidad RFI en el sitio web de AT&T que dejaba el /etc/password del server vendido.
Hoy además han incidido con un artículo muy interesante en las inyecciones de código SQL mediante caracteres de escape.
Para empezar con la seguridad en PHP, es recomendable empezar a practicar comprobaciones de sesión como las que nos enseñan en DesarrolloWeb.com, válidas para programaciones procedurales pero que en POO pueden resultar en exposición de datos ya que el motor de PHP pre-interperta ciertos objetos (ojo con FPDF).
Un buen paso es seguir una checklist de seguridad en PHP muy completa como que la que publica skq89q.com
Siesta
Prueba con una siesta reparadora, hace milagrosEs uno de esos consejos de los que todos hemos oído hablar pero que rara vez ponemos en práctica para combatir el bloqueo mental. Los anglosajones la llaman Powernap, nosotros la llamamos “siesta reparadora” o “siesta” a secas. Si tu jornada o tu día te lo permiten, no lo dudes, echa una cabezada de unos minutos y disfrutarás de sus muchos beneficios. Hablo de 10, 15 ó 18 minutos a lo sumo. Más es peor y su efecto puede ser justo el contrario. Es sorprendente lo beneficioso de esta receta casera. No sólo te cargará las pilas para poder continuar con energía lo que queda de jornada, sino que refrescará y “reseteará” tu proceso creativo.Si puedes hacerlo, no lo dudes. Funciona. Personalmente lo hago todos los días de la semana.Berto Pena, Eres productivo vol. 1
Llevo muchos años defendiendo unos veinte minutos de siesta (yo soy partidario de llegar incluso a la hora), y mucha gente lo veía como un síntoma del tópico de la perrez andaluza. Me alegra saber que gente como Berto Pena defiende la siesta como forma de productividad (yo gano entre dos y cuatro horas de trabajo o vida con esos veinte minutos de siesta)
TCPDF: Convierte tu código HTML a PDF
Llevaba mucho tiempo una solución libre para generar documentos PDF en PHP de una forma rápida y dinámica. FPDF, seguramente la biblioteca maś conocida, se me había quedado muy pequeña para lo que yo necesitaba concretamente, se hacía muy costoso el mantenimiento de los documentos para ciertos cambios.
Vía Jesús Nieto he descubierto TCPDF, una biblioteca que, entre otras cosas, hace exactamente lo que yo necesitaba: exportar HTML a un documento PDF sin la necesidad de servidores de terceros.
El código es de una implementación muy sencilla como podéis ver en la página de ejemplos (para mí el maś interesante fue el sexto (Write HTML and RTL support), donde podemos ver cómo volcar código HTML al documento es tan sencillo como esto:
$html = "<h1 style='text-align:center'>Hola, Mundo</h1>";
$pdf->writeHTML($html, true, 0, true, 0);
Entre las características por descubrir tenemos la posibilidad de dibujar gráficas o maquetar y formularios de forma sencilla. Además de las funcionalidades me parece muy interesante, por cuestiones de privacidad, el hecho de que no necesita llamar a una aplicación externa -como requieren otras bibliotecas de pago-.
Las pegas: la sintaxis HTML por supuesto no es tan flexible como la que puede interpretar un navegador web y su generación es ligeramente lenta y costosa a nivel de recursos, por lo que en algunos servidores compartidos podría no funcionar.
El método de depuración del Pato de Goma (the Rubber Duck method of debugging)
Vía Smashingmag me encuentro con el Rubber Duck Method of Debugging, que os traduzco a continuación:
Hay una completa metodología de desarrollo (cuyo nombre ahora no recuerdo) que hace uso de este fenómeno.
La llamamos el Método de Depuración del Pato Goma. Y funciona así:
1. Pide, suplica, roba, compra, fabrica, o búscate la forma de conseguir un pato de goma (de esos de la bañera).
2. Ponlo en el escritorio y explícale que vas a repasar un bloque de código con él, si no le importa.
3. Explícale al pato lo que tu código debe hacer y cuéntaselo en detalle, línea por línea.
4. En algún momento, le dirás al pato lo que el siguiente paso debe hacer y entonces te darás cuentas de que no es lo que está haciendo en realidad. El pato permanecerá sentado tranquilamente, feliz de saber que te ha ayudado en tu camino.
Funciona siempre. En realidad, si te ves en el apuro de no tener a mano un pato de goma puedes pedirle a algún programador o a algún ingeniero que se siente en el escritorio.
Lo cierto es que yo siempre la he utilizado de una forma u otra y siempre, quienes mejores ideas dan, son las personas que más alejadas están del desarrollo que se está realizando.
Foto: Alex France
JQuery 1.4
JQuery 1.4 vio la luz la semana y traía debajo del brazo el portal jquery14.com en el que durante los 14 días posteriores a su publicación se irán mostrando diferentes demostraciones de las novedades de esta versión.
Andres Nieto ha realizado un análisis del rendimiento de JQuery 1.4, que ciertos métodos para trabajar con el DOM, com html(), ha mejorado hasta en un 300%.
Cinco funciones PHP que (quizás) nunca usarás
Vía @smashingmag encontré en Infinity-Infinity el artículo 10 PHP functions you (probably) never use, una recopilación de diez funciones de PHP de uso poco o nada frecuente que yo reduzco a cinco:
- sys_getloadavg() - Mide la carga de procesos del sistema.
- pack() – comprime una cadena en MD5 a 16 bytes, ideal para ahorrar espacio almacenando contraseñas utilizando: pack(md5(‘mipassword’));
- debug_print_backtrace() – para realizar trazas de un programa escrito en PHP (al descubrirla me pregunto ¿dónde has estado todo este tiempo?).
- natsort() – Ordena un array (como la función sort() de PHP de siempre), pero con un criterio natural.
- glob() – Busca rutas de ficheros siguiendo un patrón, ideal para hacer algo como foreach (glob(*.php) AS $archivo){}
Se menciona también la función levenshtein(), que mide la distancia de Levenshtein entre una cadena y otra (siempre me pareció muy potente, aunque nunca la he utilizado).
Después de haber leído la utilidad de cada una, varias de estas funciones PHP me parecen muy útiles.

