phc: compilador PHP

phc es un compilador de PHP (un poco verde aún) que nos permite crear ejecutables con el código de un script PHP.

Para los desarrolladores de PHP nos ofrece las siguientes posibilidades:

  • Compilar código PHP en ejecutables optimizados
  • Compliar aplicaciones web en extensiones optimizadas
  • Formatear el código PHP de forma “bonita”
  • Ofuscar el código PHP
  • Combinar varios scripts PHP en uno solo
  • Optimizar el código PHP usando optimizaciones de complicación (experimental)

Ahora tengo dos dudas, si todo fuera optimizado y no se tratara de una versión inicial (por ahora no admite programación orientada a objetos):

  • ¿En Apache se pueden ejecutar los compilados en el cgi-bin?, juraría que sí pero no lo tengo muy claro.
  • ¿Qué es más eficiente: Apache preparado para interpretar PHP o ejecutar un compilado? siempre es más eficiente ejecutar que interpretar, pero no estoy tan puesto en Apache para saber qué puede ser más rápido.

phc

Monitorizar la subida de ficheros en PHP

Algo que echo en falta de PHP es la posibilidad de saber en qué porcentaje se ha subido un fichero (por ejemplo para mostrar una barra de progreso), algo que si permiten otros lenguajes de programación.
Para poder realizarlo en PHP es necesario tener instalado APC, que mediante el parámetro APC_UPLOAD_PROGRESS permite monitorizar el progreso del upload.
El tutorial explica muy detalladamente cómo realizar un file uploader en PHP, explicando los siguientes aspectos: instalación de APC, cómo monitoriza APC, clases de PHP básicas, implementación del uploader y ampliación de las clases para mostrar el progreso.
Monitoring File Uploads using Ajax and PHP

Tutorial para crear un plugin jQuery

En varias ocasiones he mencionado plugins para jQuery, pero en esta ocasión se trata de cómo hacer un plugin para jQuery.

Independientemente de la complejidad propia del plugin, crear un plugin para jQuery es bastante sencillo, y en el tutorial nos indican paso a paso cómo desarrollarlo:

  • Primeros pasos
  • Propiedades de configuración
  • Constructor
  • Métodos adicionales

The Definitive Guide to Creating a Practical jQuery Plugin

Curiosidades sobre TIMESTAMP en MySQL

Interesante lo que descubre uno sobre el TIMESTAMP en MySQL:

  • Por defecto TIMESTAMP es NOT NULL, insertar un NULL hace que se almacene el DATETIME actual
  • TIMESTAMP puede tener un valor entre ‘1970-01-01 00:00:01′ y ‘2038-01-19 03:14:07′
  • Solo la primera columna con NOT NULL puede tener por defecto la propiedad CURRENT_TIMESTAMP
  • Cuando CURRENT_TIMESTAMP se indica como ON UPDATE esa columna no se actualiza si no hay cambios significativos (por ejemplo al hacer dos updates iguales)

Interesting things about TIMESTAMP data type in MySQL

SUP: Simple Update Protocol

SUP (Simple Update Protocol) es un sistema que permite a las webs que ofrecen contenidos avisar a los consumidores de sus feeds de qué feeds han sido modificados. Esto permite que no se tenga que comprobar los feeds cada poco tiempo para saber si se actualiza el feed o no (como hace Google Reader) o tener que enviar pings a muchos servicios.
SUP trabaja con ids (SUP-ID) que representan cada feed, el “consumidor” de feeds deberá almacenar los ids, acceder a una URL que ofrece los SUP-IDs actualizados y así saber cual de los feeds que le interesa debe actualizar.
SUP es cacheable, ocupa muy poco y no expone información comprometida como usernames o URL privadas. Muy útil para webs de blogs, microblogging, … pero no tiene sentido para blogs propios.
Simple Update Protocol
Gracias JL por el aviso

Métodos encadenados en PHP

Algo que se usa mucho en jQuery es el method chaining, encadenar la llamada de métodos en una misma sentencia. Para realizar esto en PHP lo que hay que hacer es devolver $this en cada método:

class obj {
function accion1() {
// Lo que sea
return $this;
}
function accion2() {
// Lo que sea
return $this;
}
}
$o = new obj();
$o->accion1()->accion2();

Method chaining with PHP

FireUnit: extensión para pruebas unitarias de Javascript

FireUnit es un plugin para Firefox que permite realizar pruebas unitarias de Javascript y mostrar los logs en una pestaña de Firebug. El plugin está desarrollado entre otras personas por John Resig, desarrollador de jQuery.

Se pueden realizar pruebas como las siguientes:

// Simular eventos del navegador
var input = document.getElementsByTagName("input")[0];
fireunit.mouseDown( input );
fireunit.click( input );
fireunit.focus( input );
fireunit.key( input, "a" );

FireUnit

Vía / John Resig

Consejos para jQuery

Últimamente hablo mucho de jQuery, y no es para menos, ya que este framework de Javascript es muy bueno y la gente realiza grandes plugins que nos ayudan en nuestros desarrollos. En este caso se trata de varios consejos que nos serán muy útiles a la hora de desarrollar:

  • Carga la librería desde Google Code
  • Almacena en variables los selectors que vayas a usar en varias ocasiones
  • Evita la manipulación DOM lo máximo que puedas, es mejor realizar una llamada “gorda” que varias pequeñas
  • Usa preferiblemente IDs en vez de nombres de clase cuando realices búsquedas
  • Realiza la captura de eventos correctamente, muchas capturas suele ser ineficiente
  • Usa los nombres de clase para guardar el estado de un objeto
  • Incluso mejor que el anterior, usa el método data() para guardar datos en un objeto
  • Aprende a crear tus propios selectores
  • Usa noConflict() para renombrar el objeto jQuery y no tener problemas con otras librerías
  • Aprende a controlar cuando se cargan las imágenes
  • Usa .lenght en un selector para saber si un objeto existe
  • Añade una clase al objeto HTML para modificar elementos por CSS cuando el documento se haya cargado

Improve your jQuery – 25 excellent tips

Vía / Intenta

Groogle: revisor de código web

Groogle es una aplicación web que permite revisar código de varios lenguajes y que además se permite conectar con Subversion.

Entre las opciones que ofrece nos encontramos con:

  • Resaltar código de varios lenguajes
  • Comparación de ramas enteras del repositorio para encontrar ficheros y directorios añadidos, borrados o modificados.
  • Representación gráfica de ficheros
  • Notificaciones por email cuando el estado de una revisión cambia

Groogle