En ocasiones, necesitamos ejecutar funciones javascript al cargarse una página (validaciones, autocompletados...).
Lo típico es hacerlo en el evento onload del body o poniendo las llamadas a nuestras funciones javascript dentro del código para que se vayan ejecutando mientras se carga la página, ésta sería la forma intrusiva de hacerlo, la forma no intrusiva sería utilizar window.onload.
window.onload = mifuncion();
Hay un problema que fácilmente nos puede surgir, cuando tenemos varias asignaciones a window.onload, ya que se ejecutará sólo la última.
En un principio se me ocurrió solucionarlo con una asignación común para toda la web, el problema es evidente, para una web más o menos grande llegaría a ser una macro-función, además de ser una solución nada elegante.
Al final a googleando un poco, acabé encontrando la solución en el blog de Robert Hahn, donde plantea tres formas de hacerlo para "que funcione", y una solución que al parecer es la ideal, simplemente es asignar a window.onload ésta función que nos devuelve una función anónima:
function makeDoubleDelegate(function1, function2) {
return function() {
if (function1)
function1();
if (function2)
function2();
}
}
Para probarlo simplemente con éste código, podemos ver que funcina correctamente:
window.onload = makeDoubleDelegate(window.onload, alert('1'));
window.onload = makeDoubleDelegate(window.onload, alert('2'));
window.onload = makeDoubleDelegate(window.onload, alert('3'));
Éste fin de semana (17 y 18 de Noviembre), se celebra aKademy'07, el encuentro de desarrolladores de KDE a nivel nacional, en el local de Hispalinux en Zaragoza. Está orientado a perfiles técnicos, se puede ver el programa en su web, y la entrada es libre hasta llenar el aforo del local.
Una lástima que no pueda asistir, tiene pinta de ser interesante.
Lo anuncia Aitor, en el blog de Linking Paths:
"Linking Paths empezará en breve a colaborar con Peepcode en material formativo en castellano sobre Rails"
Peepcode es una web dónde se puede encontrar material para formarse en Ruby on Rails. Los materiales son de pago aunque tienen precios muy asequibles y, por lo que cuentan, de mucha calidad.
Viendo lo que han hecho ya, tanto Alberto como Aitor, por la comunidad java en español desde javaHispano y JavaConGanas, los materiales que vayan creando tienen toda mi confianza y seguro que ayuda mucho también a la comunidad hispana de RoR. Vamos, que si vuelvo a sacar tiempo para trastear RoR, no dudaré en pagar por tener material de calidad y en castellano.
Hoy es el World Usability Day, en muchas ciudades del mundo se han programado actividades alrededor de éste día.
Aquí en Zaragoza, como todos los meses, se realiza otro cocktail del grupo cadius zaragoza. Aunque éste año no organizan ninguna actividad en especial, se comenta que va a haber más gente de la habitual en estas reuniones. Parece un buen día para pasarse por primera vez a un cocktail, ver cómo funcionan éstas reuniones y fijarnos un poco más en los usuarios de nuestros desarrollos.
Si en tu ciudad también hay grupo cadius, es muy probable que también organicen algo entorno a este día.
Para conocer el número de usuarios conectados en nuestra web, existe un sencilla forma de hacerlo que nos da el mismo API de Servlets de java.
Simplemente tenemos que crear un listener que implemente la interface HttpSessionListener, dónde implementaremos los métodos sessionCreated, donde incrementaremos el contador total de usuarios, y sessionDestroyed, dónde lo decrementaremos. Por último deberemos declarar el listener en el web.xml, así ya tendremos implementado nuestro contador de usuarios online.
También hay ocasiones, que nos puede interesar conocer el número de usuarios autentificados que están conectados en un momento dado en nuestra aplicación web. Esto lo podemos hacer también de una forma muy sencilla, gracias a la interface HttpSessionBindingListener, que causa que el objeto que implementa ésta interface sepa cuando se le está añadiendo y quitando de la sesión. Ésto se consigue a partir de los métodos valueBound y valueUnbound, el valueBound será llamado al establecer en sesión el objeto que implementa la interface(incementar) y el valueUnbound al quitarlo de la sesión(decrementar).
Por último, con el número de usuarios autentificados y el total disponible, tenemos también disponible la cantidad de usuarios anónimos.