Browse > Home /

| Subcribe via RSS

Debug en Javascript con la consola de Firebug

August 18th, 2008 | No Comments | Posted in Javascript, Programación, Recursos web

Tras un tiempo sin actividad alguna, espero volver al mismo ritmo que los dos primeros meses de blog. Ahora que estoy trabajando bastante con Javascript/AJAX, creo que puede resultar útil escribir sobre cómo utilizar Firebug para realizar un buen debug de una aplicación web.

El modo más simple para saber qué está haciendo una aplicación en cada momento sería una función parecida a esta:

[-]?View Code JAVASCRIPT
function printTestInfo( msg )
{
    var container = document.getElementById("systemInfo");
    container.innerHTML += msg + "
";
}

Muy simple y muy limitada, lo mismo puedes hacer llenando de alerts tu código. Para cuando tienes unas pocas líneas de código puede estar bien, pero cuando tiener muchas llamadas AJAX y trabajas mucho con el DOM no es suficiente.

Firebug se ha hecho indispensable para cualquier desarrollador web, te ahorra mucho tiempo y poco a poco están saliendo plugins que lo hacen mucho más potente. En mi caso lo que más utilizo es: HTML y CSS inspector, inspeccionar el árbol DOM, la extensión FireCookie, YSlow de vez en cuando, el debug y profile de Javascript, y por último el motivo de este post, la consola.

La consola aparte de incorporar un command line muy potente y toda la información necesaria sobre llamadas AJAX realizadas, dispone de una API que hace que la función anterior no la vuelvas a utilizar. Es un objeto que dispone de una serie de métodos muy útiles para mostar información en la consola de Firebug.

Tenéis el listado completo de métodos en la documentación de Firebug, que recomiendo echarle un vistazo porque hay muchas opciones que no sabes ni que existen. No se le puede pedir más, pero sinceramente hecho en falta que el método group lleve un identificador para poder agrupar mensajes de distintos módulos y no correlativamente cómo lo hace actualmente.

Aquí tenes un ejemplo de uso:

[-]?View Code JAVASCRIPT
var callbackDasSources = {
 
    success: function(o){
         console.info('DAS REGISTRY: Success ajax request to retrieve das registry');
 
         console.log('DAS REGISTRY: Parsing ...');
         dasSources._parseDasSources(o.responseXML);
 
         console.log('DAS REGISTRY: Generating select form...');
         dasSources._printDasSources();
    },
 
    failure: function(o){
        console.error('DAS REGISTRY: Failure retrieving DAS sources..');
    }
};

Y a la consola en funcionamiento (con la extensión FireCookie):

Ahora bien, todo esto esta muy bien pero sólo sirve para Firefox. Si ejecutas tu sitio web en Internet Explorer deja de ser funcional mostrando un mensaje que no conoce el objeto console (con suerte te muestra el error, porque es algo bastante frustante el mensaje “Runtime error”). Los de Firebug han hecho un pequeño script en el que definen el objeto con los métodos vacíos, pero bueno si le añades un par de líneas usando la función printTestInfo anterior puede llegar a resultar algo útil:

[-]?View Code JAVASCRIPT
if (!window.console || !console.firebug)
{
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
                 "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
 
    window.console = {};
    for (var i = 0; i < names.length; ++i)
        window.console[names[i]] = function() {
            for ( var j = 0; j < arguments.length; ++j)
                printTestInfo(arguments[j])
        }
}

El post iba a ser más largo, pero entonces no sabía que poner de título por lo que lo dejo para unos días más tarde : )

Tags: , , , , , ,

Optimiza la carga de tu sitio web

June 9th, 2008 | No Comments | Posted in Javascript, Programación

Un estudio de Yahoo revela que en los sitios web más populares el tiempo de carga total de una página viene condicionado por un 20% del lado del servidor y un 80% del cliente. Esto no quiere decir que dejemos de optimizar el servidor, pero sí que tengamos en cuenta consejos o buenas prácticas para que tu sitio web cargue más rápido.

El tiempo de respuesta de una página es muy importante de cara al usuario, no suelen tener mucha paciencia ( yo tampoco… ), por lo que la primera carga se debe tener muy en cuenta (sin ningun elemento cacheado en el navegador) . En Yahoo han creado una serie de pautas para que tengamos en cuenta a la hora de analizar el rendimiento de nuestro sitio:

Han añadido muchos consejos más que podéis ver en la página
para desarrolladores de Yahoo, me acuerdo que hace poco sólo estaban éstas 13 y ahora ya van sobre las 40. Cito sólo éstas, porque existe una extensión para Firefox en la que comprueban las trece pautas puntuándolas y con la teoría necesaria para poder solucionarlas. Se llama YSlow y la derecha podéis ver una captura evaluando mi sitio web, parece que no tengo muy buena puntación…

Ésta extensión se basa en FireBug, para los que no la conozcan es una extensión impresionante que te ayuda a depurar tu sitio web. Puedes controlar el HTML y CSS en tiempo real, analizar las peticiones que se realizan e incorpora un completo debugger de JavaScript.

Una de las prácticas importantes es reducir las peticiones HTTP, los navegadores sólo aceptan dos peticiones concurrentes del mismo dominio, por lo que a mayor número de archivos mayor número de peticiones y por consecuencia, mayor tiempo de carga.

Sitios web con mucho tráfico como Google y Yahoo reducen el número de peticiones HTTP para los iconos, botonos, pequeñas imágenes con una técnica basada en la propiedad de CSS background-image y background-position, en la que combinan las imágenes en una para después mostrar sólo el segmento adecuado.

En un principio no había encontrado una aplicación web en la que subier mis imágenes a combinar y me devolviera las propiedades CSS necesarias para cada imagen. Ya me había apuntado contento otra cosilla a hacer en mi libreta, para aprender un poco de la librería para gráficos GD de PHP. Pero me resultaba un poco raro que no lo hubiera hecho nadie por lo que buscando un poco más, me he encontrado con que un desarrollador de Yahoo ya la había implementado. La verdad es que la aplicación funciona muy bien, y está disponible hasta el código fuente, otra vez será ; )

Tags: , ,

Cheat sheets para desarrollo web

May 27th, 2008 | 3 Comments | Posted in CSS, Javascript, PHP, Programación

Cuando desarrollas cualquier aplicación en cualquier lenguaje, siempre viene bien tener documentación a mano, ya sea por si no te acuerdas de alguna función, no dominas la sintaxis perfectamente o simplemente, porque no te apetece buscar en google : )

Voy a hacer una pequeña recopilación de cheat sheets ordenados por diversas temáticas, la mayoría de ellas sobre desarrollo web . Es una selección de las chuletas que tenía en mi pc, en mis favoritos, y alguna otra que he encontrado en google. Al fin y al cabo, es una forma de organizarme un poco y si le sirve a alguien mejor.

HTML/XHTML

CSS

Javascript

PHP

MySQL

Expresiones regulares:

SEO:

Subversion:

Otros:

Tags: , , , , , , , , ,