Contenido

Menús contextuales con MooTools

17 mar

+ 5

Si estás pensando en añadir un menú contextual a tu aplicación web, esta opción desarrollada en MooTools es de las más bonitas que he visto. Con una gran cantidad de opciones podrás ajustar este menú a tu aplicación e integrarlo perfectamente.[Demo][Descargar]

Usando la caché interna de WordPress

16 mar

+ 9

Desde la versión 2.0 de WordPress, este tiene la fácultad de almacenar datos en caché que podemos usar en nuestros plugins/themes. Esta caché no es la misma que los plugins que cachéan la salida por pantalla usan.

Caché interna

La caché interna de WordPress, no es más que una forma enmascarada de usar $GLOBALS para almacenar datos con el fin de evitar peticiones innecesarias. Mediante el uso de una serie de funciones (que veremos más adelante) esta tarea es realmente sencilla.

Activar caché interna

Para activar la caché interna de nuestro WordPress, deberemos editar el fichero wp-config.php y añadir o modificar la línea siguiente:

define('WP_CACHE', true);

Funciones de la caché interna

Las funciones con las que podremos trabajar con dicha funcionalidad, se encuentran en el fichero cache.php de la carpeta wp-includes/ de nuestro WordPress.

wp_cache_add()

Función que se encarga de almacenar en caché un dato. Este dato irá referenciado por una llave y un flag para agruparlas.

wp_cache_add($key, $data, $flag = '', $expire = 0)
  • $key: Llave a la que irán referenciados los datos.
  • $data: Datos que queremos almacenar en caché.
  • $flag: Agrupación de elementos en caché, pueden ser almacenados en los mismos directorios.
  • $expire: Segundos de duración en memoria (por defecto son 900seg).

wp_cache_delete()

Función para eliminar de caché.

wp_cache_delete($id, $flag = '')
  • $id: ID o llave con la que hemos introducido los datos previamente.
  • $flag: Agrupador.

wp_cache_get()

Función que nos devuelve un dato alojado en caché.

wp_cache_get($id, $flag = '')
  • $id: ID o llave introducida previamente.
  • $flag: Agrupador.

wp_cache_replace()

Función encargada de reemplazar datos de la caché. Antes de reemplazarlos, nos devuelve los valores antiguos.

wp_cache_replace($key, $data, $flag = '', $expire = 0)
  • $key: Llave indentificatoria.
  • $data: Datos a almacenar
  • $flag: Agrupador.
  • $expire: Segundos de duración de los datos en caché.

wp_cache_set()

Función que sobreescribe los datos ya almacenados en caché.

wp_cache_set($key, $data, $flag = '', $expire = 0)
  • $key: Llave indentificatiorias.
  • $data: Datos a guardar.
  • $flag: Agrupador.
  • $expire: Segundos de vida de los datos en caché.

Otras funciones

  • wp_cache_init(): Inicializamos un nuevo objeto de caché.
  • wp_cache_flush(): Borramos todos los datos almacenados en caché.
  • wp_cache_close(): Guardamos los datos de caché. Esta función es ejecutada al cerrar la sessión de WordPress.

Ejemplo de uso

$news = wp_cache_get('news');
if($news == false) {
	$news = fetch_rss("http://www.anieto2k.com/feed/");
	wp_cache_set('news', $news);
}

Eyes en Javascript

16 mar

+ 3

La famosa aplicación  Xeyes de Linux tambien ha sido portada a Javascript. Esta graciosa herramienta que nos persigue el puntero por nuestra pantalla como un supervisor que vigila nuestros movimientos ha sido migrada a Javascript en algo más de 70 líneas. No es una novedad, pero siempre es interesante ver estas curiosidades en las que la gente pierde el tiempo :D

Mapas vectoriales de los municipios de España

16 mar

+ 4

Marc Palau, me envia un enlace para mostrarme el lo que ha estado trabajando estas semanas, y menudo trabajazo. Se trata de una vectorización de todos los municipios de España que podemos descargar en FLA, SWF y SQL para usas en nuestras aplicaciones. Podemos verlo funcionando y descargarlo diréctamente desde aquí. Gracias Marc!.

Internet Explorer 8 más rápido que Firefox y Chrome

15 mar

+ 19

Microsoft publicó hace unos días esta gráfica que nos muestra el tiempo de renderizado de 25 de las páginas más conocidas de Internet.

tabella_bench

En la gráfica, que recordemos la publicó Microsoft, muestra como Internet Explorer 8 supera en velocidad a Firefox y a Google Chrome. Sin duda, estos resultados son orientativos y difíciles de contrastar ya que intervienen muchos factores que podrían cambiar los resultados obtenidos. Pero el que se pueda comparar con estos navegadores es una muy buena noticia y un motivo más para fomentar el movimiento NOIE6Day.

Personalmente creo que debemos ir preparándonos para su llegada que según se rumorea (a falta de confirmación por parte de Microsoft) podría llegar el día 19 de este mismo mes. Aunque creo que falta poco tiempo para tal día y Microsoft aún no se ha pronunciado.

Al parecer el día se ha concretado el día 23 de este mes como día de lanzamiento de Internet Explorer 8.

via (Gracias Luigi
)

Se busca gurú.

13 mar

+ 7

Buenas, estoy preparando un test de frameworks JS y me gustaría encontrar un gurú (o alguien que se defienda) con alguno de los siguientes frameworks:

  1. MooTools 1.2.1
  2. Dojo 1.2.3
  3. Prototype 1.6.3
  4. Ext 2.2.1

Es bastante sencillo, tengo un script en jQuery con una serie de funciones que me gustaría migrar de la forma más optima a cada uno de los frameworks indicados arriba. Si alguien puede, y quiere, echarme una mano.

He dejado un mensaje en foro.

Muchas gracias a todos!!!

Tutorial sobre transiciones en Javascript

12 mar

+ 3

Todos conocemos los efectos que aportan movimiento a los elementos de nuestros scripts, todos los frameworks tienen una o varias implementaciones para conseguir que nuestras estáticas páginas se vean un poco más vivas. Pero pocos son los que saben lo que realmente hay debajo de esas líneas de código, si quieres aprender como conseguirlas sin tener que usar un framework javascript, este tutorial te ayudará. Gracias Jose Antonio ;)

Orientación a Clases para jQuery

12 mar

+ 5

jQuery, al contrario que MooTools, no ofrece la posibilidad por defecto de generar Clases como opción para desarrollar nuestros scripts. Pero es lo suficientemente flexible como para que alguien lo adaptase y mediante un pequeño script podamos usar dicha funcionalidad.

Micah Snyder, de Digg.com, ha desarrollado una implementación que nos proporciona dicha funcionalidad y que podemos extender con los métodos propios de jQuery.

var MyClass = Class.create({
    init: function(){
        console.log('You instantiated a Class!');
    },
    myFunc: function(){},
    myProp: 'foo'
}, {
	someFunc: function(){
		.....
	}
});

var foo = new MyClass();
foo.someFunc();

$.extend(MyClass, {
  bar: Class.create(true);
});

Via

Chatino: Chat de tan solo 7KB con Pseudo comet

11 mar

+ 5

Mi tocayo, Andrés Fernandez me avisa de que ha desarrollado Chatino. Un Chat desarrollado en javascript usando una técnica de pseudo comet para conseguir un ajax de larga duración en tan solo 7kb (en el usuario). Una buena herramienta para los que necesiten un chat potente y funcional.

Detección de caras en Javascript con canvas

11 mar

+ 6

Detectar caras ya no es solo cosa de Google Images. Ahora tu mismo puedes implementarlo en tu sitio web usando Javascript y las propiedades de canvas.

caras_canvas

¿Como funciona?

Para hacerlo funcionar únicamente necesitamos definir 2 ficheros en nuestro <head />.

<script type="text/javascript" src="dat.js"></script>
<script type="text/javascript" src="detector.js"></script>

El fichero dat.js indica la forma a detectar y el fichero detector.js es el que tiene la lógica del script capaz de detectar caras en cualquier foto.

Podemos detectar 1 o varias caras en las fotos, el proceso se convierte más lento dependiendo de cual elegimos (lógico).

1 cara

face_detect_one( document.getElementById("my_canvas") );

Multiples Caras

face_detect_multi( document.getElementById("my_canvas") , progress_callback, result_callback );
function progress_callback( steps_completed, total_steps){
....
}

Respuesta

En la respuesta que las funciones nos devuelve obtenemos los valores de un rectángulo en el que contendremos la cara de la persona.

var my_canvas = document.getElementById("my_canvas");

var result = face_detect_one( my_canvas );
if (result) draw_rect(result, my_canvas);

function draw_rect(r, my_canvas){
	var canvas_context = my_canvas.getContext("2d");
 	canvas_context.strokeRect( r.x, r.y, r.w, r.w );
}