Limpiar un objecto javascript sin perder la referencia al mismo

Aquí dejo un simple ejemplo de como limpiar un objecto javascript sin perder la referencia al mismo, esto es especialmente necesario en frameworks tipo angularjs en el cual si realizamos una asignación del tipo myObject = {} para limpiar el objecto estamos creando un objeto nuevo, por lo que el bindeo deja de funcionar ya que está referenciado a otro objecto, como solución simple se puede hacer algo así:

    clearObject = function(obj){
        var keys = Object.keys(obj);
        for (var i = 0; i < keys.length; i++) {
            delete obj[keys[i]];
        }
    }

Simple y rápido.

Configuración rápida de Xdebug

Para configurar rápidamente Xdebug hay que seguir estos pasos:
Entrar en http://xdebug.org/wizard.php y poner el html generado por la función phpinfo().
Bajarnos la dll que nos dice y ponerla en el directorio indicado.
Modificar el php.ini donde pone [XDebug] poner lo siguiente:

[XDebug]
zend_extension = C:\xampp\php\ext\php_xdebug-2.2.0-5.3-vc9.dll
xdebug.remote_enable=1
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"


Reiniciar el servidor Apache.


'Invalid Character exception' problemas al deserializar XML

La serialización, deserialización de objetos utilizando un archivo xml para almacenarlos o transferirlos es una herramienta muy útil. El problema es que en los archivos xml no están permitidos todos los caracteres. Si somos cuidadosos serializando nos podremos evitar este tipo de problemas. El verdadero problema se presenta cuando estos xml no los generamos nosotros, sino que nos los proporciona una organización externa a nuestra empresa, y no existe la posibilidad o la voluntad, de cambiarlos. En este caso el peor problema es que el xml nos venga con caracteres inválidos, dándonos una excepción de "Invalid Character".

ListView delayed, controlando la sobrecarga de eventos en un VistView

Tenemos el siguiente escenario: Una aplicación con dos ListViews, al dispararse el evento OnSelectedIndexChanged de uno de ellos, el otro se actualiza. Esto provoca que cuando el usuario recorre las distintas entradas, hace una multiselección o en general interactúa con la aplicación, los ListView implicados, van a parpadear de manera bastante molesta, e indicando una sobrecarga de trabajo producida por nuestra aplicación, que, en el peor de los casos, podría llegar a bloquearla, dependiendo de que tipo de actualización se lleve a cabo en el ListView que está enlazado. Si este realizara un acceso a base de datos, podríamos llegar a bloquear al resto de usuarios que estén ejecutando esta aplicación en otras máquinas. Esto se puede evitar de múltiples maneras, y hoy voy a describir una bastante sencilla que he desarrollado.

Desarrollo de plugins para wordpress (II)

En la entrada anterior vimos como dar los primeros pasos en la creación de un plugin para Wordpress. Entre otras cosas, hablamos de cómo podían interactuar los plugins con la plataforma Wordpress.
Haciendo un poco de memoria recordaremos que vimos  los métodos add_filter y add_action, por lo que nos quedarían por ver los template tags y los shortcodes.
¿Cual es la diferencia entre los template tags y los shortcodes? La mayor diferencia es que un shortcode es una marca que ponemos en un post o una página, mientras que un template code es una función que ha de colocarse en el template que estemos utilizando.
¿Cuales debo utilizar?, depende exclusivamente de desde donde tenemos pensado utilizarlos, si los queremos para modificar el template utilizaremos template tags, si lo que queremos es poder utilizarlo desde cualquier sitio y cuando nos venga en gana --Lo cual dicho así parece el mejor método-- utilizaremos shortcodes, que es exactamente lo que vamos  a ver a continuación.


Cacheando con PHP

Precisamente hoy terminaba una aplicación web que conecta a un servicio web pidiéndole una serie de datos sobre apuestas deportivas, sobre esos datos se realiza un tratamiento, que sin ser demasiado pesado, ralentiza algo más de la cuenta la página, si ademas tenemos en cuenta que en caso de que el tráfico sea alto podemos sobrecargar excesivamente el servidor, al final he optado por un modelo de cache bastante sencillo.

Cuando se utiliza PHP como un módulo de Apache se pueden cambiar ciertos ajustes de configuración usando directivas en los ficheros de configuración de Apache, como por ejemplo los ficheros .htaccess
En este caso las directivas que nos interesan son auto_prepend_file y auto_append_file, cito textualmente:

Conocer el origen de las visitas a nuestra página

A la hora de conocer el impacto que está teniendo una web determinada es necesario recurrir a los informes de google analytics. Estos informes son una poderosa herramienta que nos informa de manera exhaustiva de casi todos los parámetros que pueden resultar de cierto interés para el responsable del sitio. A continuación pongo el ejemplo de informe personalizado que utilizo para medir los orígenes del tráfico.

Desarrollo de plugins para wordpress (I)

Worpress es un potente gestor de contenidos con una flexibilidad que le permite hacer casi cualquier cosa. Esa versatilidad se la debe a la capacidad de extender sus funcionalidades básicas mediante un potente sistema de plugins. Es en el desarrollo de estos plugins en lo que nos vamos a centrar de aquí en adelante, ya que conociendo este sistema podremos lograr que nuestro wordpress baje a pasear al perro, o casi.

Como no, como en cualquier tutorial que se precie, vamos a desarrollar nuestro primer plugin mientras vamos explicando los conceptos que nos interesan, los archivos que se vayan creando, estarán disponibles para descarga.