= { ... }

lunes, mayo 29, 2006

Free Icons

En MaxPower, se han currado una lista, la cual actualizan con asiduidad, sobre sitios donde se pueden conseguir iconos gratis.

Por otro lado, os paso este enlace por si quereis ver cual es la pinta de vuestra web, en general de cualquier URL, en forma de grafo.

Aqui podeis ver la pinta que tiene helusinfa.blogspot.com, la verdad es que no se cual es el algoritmo que usan para pasar desde la página a grafo, pero sería interesante echarle un vistazo.

grafo

Actualizado:
En Pixel y Dixel, explican como se forma el grafo.

jueves, mayo 25, 2006

Firebug 0.4

Firebug es una extensión, en algunos casos completamente imprescindible, para Firefox (>1.5)

Funcionalidades:

  • Consola javascript, podrás lanzar codigo javascript o ver los posibles errores que se produzcan en tu código
  • Inspector de DOM, podrás acceder a las propiedades de cada nodo fácilmente simplemente seleccionando un elemento de la página
  • Debuger de javascript - añadido en la versión 0.4 :)
  • Captura de peticiones AJAX, podrás ver las invocaciones que se hacen de forma asíncrona al servidor y capturar el resultado devuelto

En este artículo se prufundiza sobre las capacidades para depurar código javascript con Firebug. El artículo está escrito usando las versiones pre-release de la 0.4.

Yo he usado esta extensión desde las primeras versiones, y puedo decir que es realmente útil en el desarrollo de cualquier página. Poder acceder a las propiedades (dom, estilo, caja ...) de cualquier elemento con un solo click, es realmente útil.

jueves, mayo 18, 2006

Sobre el oscuro abismo en que te meces

Dale, dale, dale y vuelve a darle.

Abismo

Tiene algún límite?

Y para completar este post categoria misc: Mil Novecientos Ochenta
Aunque en esa época era muy joven, de una forma u de otra muchos de los temas me vienen a la memoria como si fuese ayer mismo.

Como decia un amigo: ...una mala racha que habia que pasar...

miércoles, mayo 17, 2006

Esto no hay quien lo pare

Primero fue YAHOO, que con sus YUI demostraba el esfuerzo que están haciendo las grandes compañías de Internet por llegar a la tan mentada Web 2.0. Ahora Google presenta su framework AJAX-Java.

Espero que a nadie le quede duda alguna de que AJAX será este año la tecnologia más de moda, como lo fue el año pasado. Asi como lo será Javascript. En el enlace os dejo lo que según Mozilla tendría que ser la versión 2.0 de este lenguaje.

Web for every(one|thing|where)!

Actualizado:
Otro más que se sube al carro: Eclipse Ajax Toolkit Framewok. Nada más y nada menos que la IMHO mejor herramienta de desarrollo.

martes, mayo 16, 2006

No somos nada!

Siempre pensamos que La Tierra es inmensa, y lo es, pero si lo comparamos con el resto de planetas, ni que decir con el sol, nos damos cuenta de que nuestro planeta es diminuto!

Aqui dejo la siguiente comparativa, que sirve para hacerse una idea de las proporciones entre los distintos astros del Sistema Solar.

jueves, mayo 11, 2006

Zebra

Lo prometido es deuda, un ejemplo de como usar la notación JSON y la función addEvent para algo útil.

El grueso del script lo compone el objeto ZebraTable que haciendo uso de la función abreviatura $(), que es lo mismo que document.getElementById(), y de la función addEvent es capaz de rayar una tabla html, dándole un aspecto realmente profesional.

var ZebraTable = {
bgcolor: '',
classname: '',
stripe: function(el) {
if (!$(el)) return;
var rows = $(el).getElementsByTagName('tr');
for (var i=1,len=rows.length;i < len;i++) {
if (i % 2 == 0) rows[i].className = 'alt';
Event.add(rows[i],'mouseover',function()
{ ZebraTable.mouseover(this); });
Event.add(rows[i],'mouseout',function()
{ ZebraTable.mouseout(this); });
}
},
mouseover: function(row) {
this.bgcolor = row.style.backgroundColor;
this.classname = row.className;
row.className = 'over';
},
mouseout: function(row) {
row.className = this.classname;
row.style.backgroundColor = this.bgcolor;
}
}


Lo que hace este objeto JSON es recorrer todas las filas del objeto tabla e ir asignandoles un estilo determinado dependiendo de si el indice de la fila es par o impar. A su vez asocia a cada fila dos funciones para dos eventos. Para el evento onmouseover le asocia la función ZebraTable.mouseover, encargada de resaltar la fila por la que pasamos el puntero del ratón. Para el evento onmouseout le asocia la función ZebraTable.mouseout, que devuelve a cada fila el estilo que tuviera.

Para asociar los eventos utilizá otro objeto JSON, Event. Event tiene dos métodos, que se encargan de ligar/desligar las funciones a los eventos. Es algo parecido a la función addEvent que os he comentado estos últimos dias, pero más eficiente. Además ambas funciones estan encapsuladas en el objeto Event.

OO power!

miércoles, mayo 10, 2006

Revisión

Dustin Diaz acaba de publicar la entrada número 11 en su podcast. En esta entrada hace una revisión de las mejores 10 funciones que propuso en Noviembre de 2005, que conforman su commons.js.

Lo estoy escuchando ahora, parece ser que se ha encariñado con las YUI de Yahoo.

Entre las funciones que se caen tras la revisión, esta precisamente addEvent, la cual os la he comentado en la entradas anteriores. No es que se caiga, pero se opta por usar la gestión de eventos de las YUI, o por lo menos recomienda usar la mejor implementación que se podría hacer, disponible aqui.

Os pego el código de la nueva forma de implementar la asociación de eventos:

function addEvent( obj, type, fn )
{
if (obj.addEventListener)
obj.addEventListener( type, fn, false );
else if (obj.attachEvent)
{
obj["e"+type+fn] = fn;
obj[type+fn] = function() {
obj["e"+type+fn]( window.event ); }
obj.attachEvent( "on"+type, obj[type+fn] );
}
}

function removeEvent( obj, type, fn )
{
if (obj.removeEventListener)
obj.removeEventListener( type, fn, false );
else if (obj.detachEvent)
{
obj.detachEvent( "on"+type, obj[type+fn] );
obj[type+fn] = null;
obj["e"+type+fn] = null;
}
}


Se ha simplificado el código y se ha añadido la función removeEvent para pode desligar un evento de un objeto.

La próxima entrada os presentaré, una aplicación real para JSON y el commons.js. Solo adelanto un poco : ZEBRA!

martes, mayo 09, 2006

Asociación de eventos

En la entrada anterior mencioné (y utilizé) una función para asociar eventos a objetos de JavaScript que saqué del common.js de Dustin Diaz. Hoy voy a explicar como funciona, en mayor profundidad.

Primero veamos el código completo de esta función:

/* addEvent: simplified event attachment */
function addEvent( obj, type, fn ) {
if (obj.addEventListener) {
obj.addEventListener( type, fn, false );
EventCache.add(obj, type, fn);
}
else if (obj.attachEvent) {
obj["e"+type+fn] = fn;
obj[type+fn] = function() {
obj["e"+type+fn]( window.event ); }
obj.attachEvent( "on"+type, obj[type+fn] );
EventCache.add(obj, type, fn);
}
else {
obj["on"+type] = obj["e"+type+fn];
}
}


La función recibe tres parametros:

  • obj: objeto al que le queremos asociar la función para un evento

  • type: tipo de evento al que asociamos la funcion

  • fn: función que se asocia al objeto para que se dispara en determinado evento

En resumen, lo que hace esta función es asociar para el objeto obj en el evento ontype la función fn.

Podemos notar que la función addEvent internamente utiliza un objeto EventCache, que se encarga de "apilar" y "desapilar" los eventos ligados a los objetos. Viendo el codigo completo en el common.js podemos ver lo que hace a pleno detalle. También hacer notar que mediante un método de EventCache se desligan los eventos que tuviesemos añadidos cuando se destruye el objeto window.

En la últimas entradas hemos hecho incapié en el operador this. En este caso, por estar trabajando con eventos, quiero recordar que this invocado desde la función de respuesta al evento, hace referencia al objeto que ha disparado el evento. De esta forma podremos tener acceso al objeto, para modificarlo según convenga.

En la siguiente entrada, trataré de profundizar en this cuando se invoca desde funciones disparadas por eventos. Se puede llegar a cambiar el objeto al que apunta this para este tipo de funciones.

lunes, mayo 08, 2006

Un modelo para objetos JSON

Una vez introducidos a lo que es JSON, lo que resultaría de utilidad es saber como usarlo para el desarrollo de nuestros scripts.

Siguiendo este modelo nuestro código quedara ordenado por objetos. Dentro de cada objeto primero añadimos los campos que necesitemos, seguido la función init que inicializa todos los campos que lo necesiten, y por último el grueso del funcionamiento asociado al objeto.

A continuación se muestra un posible modelo para trabajar con esta notación:

var obj = {
a : Object,
b : Array,
c : false,
d : null,
init : function() {
// inicializar las variables del objeto
a = document.getElementById("estado");
this.run();
},
run : function() {
// ejecutar el codigo que queramos
}
}
function initializer() {
obj.init();
// añadir el resto de inicializadores de otros objetos aqui
}
//se puede usar cualquier codigo, body.onload,
//YAHOO.event, Prototype.js para asociar
//la función initializer al evento de carga.
addEvent(window,'load',inializer);



Hay que hacer notar que podemos pasar de nuestro scripts ordenados por funciones a JSON de forma rápida. En general los cambios son minimos. Además tenemos la ventaja de que las funciones declaradas dentro de un objeto solo seran visibles desde el objeto o a partir del objeto. De esta forma podemos tener dos objetos distintos con la misma función en su interior y comportamientos distintos. Hemos conseguido scope o ámbito o visibilidad para nuestras funciones!

Un pequeño apunte sobre la función addEvent, esta función se encarga de asociar al objeto window, en el evento onload la funcion initializer. Esta extraida del common.js de dustindiaz.com. También se recomienda echar un vistazo a las librerias que ha publicado YAHOO, para la gestión de eventos, son simplemente espectaculares! Pero si quereis un script ligero y fácil de usar os recomiendo el common.js de Dustin Diaz, donde tambien podreis encontrar varias funciones muy útiles. Tengo pendiente otro post en el que destripar este pequeño compendio de funciones JavaScript.

viernes, mayo 05, 2006

JSON - JavaScript Object Notation

JSON es el acrónimo de JavaScript Object Notation, y es un subconjunto de este lenguaje. Es un formato de texto independiente del lenguaje. La mayoria de los lenguajes de programación tienen soporte para trabajar con este tipo de notación, los podemos encontrar todos listados en json.org.

JSON es un formato de intercambio de información, algo parecido a XML, pero más ligero. Es facilmente legible por humanos, a la vez que es fácil aprender su sintáxis para cuando queramos escribirlo.

Al ser JSON un subconjunto de la notacion de objetos de JavaScript, hacer uso de esta notación desde JavaScript es bien sencillo. Por lo tanto otro uso para esta notación es simular la orientación a objetos tradicional desde JavaScript. Veamos el siguiente objeto en notación JSON:


var objetoJSON = {
a: "soy un string",
b: ["soy", "un", "array", "de", "strings"],
c: function(){
alert("soy una funcion" + this.a + this.b[0]);
}
}


Sencillo y limpio. Una de sus principales ventajas es el uso "racional" de la palabra reservada this, que en JavaScript da tantos quebraderos de cabeza.
Una vez definido el objeto objetoJSON, podemos acceder a sus atributos y funciones usando la notación ".".

Con esta primera introducción a JSON en JavaScript, quiero sentar las bases de las siguientes anotaciones, que haran uso de este tipo de notación.

Naked=0

CSS level: 5 of 5

Tenia ganas de darle un cambio al blog. Tanto blanco no me gustaba. Quedan algunos retoques. Pero la base ya esta. Espero que os guste.

Naked--

CSS level: 3 of 5;

Mola ,no?

jueves, mayo 04, 2006

Naked--

CSS: ON
CSS level: 1 of 5

miércoles, mayo 03, 2006

Naked

CSS : off

newuni @ delicious