El experto en SEO

diciembre 14, 2011 Deja un comentario

No podía evitar compartir con Ustedes esta imagen sobre de los expertos en CEO que ví en TheNextWeb.

Si lo traduzco se pierde el chiste :D .

Categorías:Internet, Webmasters

Los emotíconos ocultos de Google +

noviembre 21, 2011 Deja un comentario

Curiosos emotíconos para el Chat de Gooogle+ que ví hace algunos días en una página de Google +

Los emotíconos son:

:3
:(:)
:(|)
V.v.V
-<@%
~=[,,_,,]:3

Si los envías verás algo como:

Pero es más divertido si los ejecutas tú mismo, el gatito es el mejor :)

Categorías:Internet, Web 2.0 Etiquetas: , ,

Seguir la pila de construcción (Stack Trace) de un Script en PHP / JS

septiembre 11, 2011 Deja un comentario

Para los que no lo saben, el Seguimiento de Pila (Stack Trace) consiste en conocer la ruta que ha seguido un Script o Aplicación hasta llegar a un punto específico. Algo muy útil si en algún momento hemos deseado conocer el lugar desde donde se está llamando una función que genera problemas o saber qué Scritpt está inncluyendo otro….etc.

El Seguimiento de Pila se puede realizar con PHP o Javascript.

Para PHP usamos dos funciones, la primera es debug_print_backtrace() que lo que hace es imprimir la pila de construcción, y debug_backtrace() que retorna la pila para que manualmente sea impresa más adelante.

Veamos un Ejm, supóngase el siguiente código:

<?php

class Test
{	
	public function __construct(){
		echo "-- Constructor -- "."\n";
		$x = 4;
		$y = 7;
		$this->sumItems($x, $y);
	}
	
	public function sumItems($x = 0, $y = 0){
		echo "Suma: ".($x + $y)."\n\n";
		echo "Debug Print Backtrace:\n";
-		debug_print_backtrace();
		echo "\n";
		echo "Debug Backtrace:\n";
		print_r(debug_backtrace());
	}
}

$test = new Test;

Vemos en el Script, una clase llamada Test, con un Constructor, dentro del cual se hace un llamado a otra función llamada sumItems() que recibe dos parámetros ($x y $y) y luego los suma. Dentro de ésta función se efectúa la ejecución de las dos funciones de Seguimiento de Pila

Si ejecutamos el Script, tendremos un resultado como este:


-- Constructor --
Suma: 11

Debug Print Backtrace:
#0  Test->sumItems(4, 7) called at [/home/Yefb/Webdevel/Tests/posts/backtrace.php:9]
#1  Test->__construct() called at [/home/Yefb/Webdevel/Tests/posts/backtrace.php:22]

Debug Backtrace:
Array
(
    [0] => Array
        (
            [file] => /home/Yefb/Webdevel/Tests/posts/backtrace.php
            [line] => 9
            [function] => sumItems
            [class] => Test
            [object] => Test Object
                (
                )

            [type] => ->
            [args] => Array
                (
                    [0] => 4
                    [1] => 7
                )

        )

    [1] => Array
        (
            [file] => /home/Yefb/Webdevel/Tests/posts/backtrace.php
            [line] => 22
            [function] => __construct
            [class] => Test
            [object] => Test Object
                (
                )

            [type] => ->
            [args] => Array
                (
                )

        )

)

Fijémonos:
En el primer bloque encontramos las impresiones que se efectúan a lo largo del Script.
En el segundo bloque vemos el resultado de la función debug_print_backtrace() en el cual vemos cómo en dos pasos el Script llega hasta la función sumItems, especificando desde dónde se han llamado las funciones y qué parámetros se le han pasado.

En el tercer Bloque, vemos el resultado de imprimir con print_r() el resultado de la función debug_backtrace(). Como vemos es más detallado que el primero, ya dependerá de tus necesidades cuál usar.

Para hacer ésto con Javascript, tendremos que hacer uso de la consola de Firebug y/o Google Chrome, y ejecutar la función console.trace().

Veamos un Ejemplo:

function backtrace(){
	var item = 'Item';
	backtrace2(item);
}

function backtrace2(item){
	console.log(arguments);
	console.trace();
}

backtrace();

Dicho código hace casi lo mismo que el ejemplo en PHP.
Acá tenemos la respuesta:

["Item"]
backtracejs.js (línea 7)
backtrace()backtracejs.js (línea 3)
backtracejs.js()backtracejs.js (línea 11)

En la primera línea de la impresión (["Item"]) tenemos la respuesta de ejecutar console.log(arguments), y luego tenemos el resultado de ejecutar console.trace(), es decir la pila de construcción del Script.

En la Página de Nosotrasonline.com son muy penosos

julio 22, 2011 Deja un comentario

Estaba el otro día mi mujer navegando en la página de Nosotras y de repente resultó en la siguiente página:

Tranquilos, yo los perdono. :D

Categorías:Internet, Webmasters

Depurando Javascript en la Consola del navegador

julio 19, 2011 3 comentarios

Vamos con una serie de artículos explicando algunas técnicas que nos serán útiles a la hora de trabajar con lenguajes de lado Cliente, principalmente Javascript.
En éste artículo voy a cubrir algunas técnicas de depuración con Firebug de Firefox; más adelante veremos las características especiales del Inspector de Google Chrome/Chromium y Opera Dragonfly. Con Explorer también se puede, pero no pienso dedicarle un artículo teniendo en cuenta que casi ninguno de mis lectores tiene tan mal gusto o es tan masoquista como para usarlo ;) .

Los ejemplos que enseñaré funcionan casi Estándar en cualquier inspeccionador.

Comunicación con la Consola Javascript:

  • Logueo/Envío de variables a la consola:
    Podemos enviar variables a la consola usando las función console.log(), console.debug() también sirve.
    Por ejemplo, si tenemos un Objecto y queremos imprimirlo por pantalla, no lo podemos mostrar con  document.write() o window.alert() porque nos imprimirá algo como “[object Window]“.
    Usando la consola, escribimos console.log(window) y obtendremos algo como esto:

    Donde se muestra el objeto Window con su propiedad location.href, si haces Click sobre él, se abrirá la pestaña DOM mostrando todas las características del Objeto, sus métodos y propiedades con valor.
  • Logueo de Errors/Warnings/Infos por Consola:
    Puede resultar muy útil hacer logueos especiales por la consola de Firebug.
    Supongamos el siguiente código:
    var numero = window.prompt("Ingrese un número entre 1 y 3");
    
    if(numero){//Si se ha ingresado un numero
        //Ahora condicionamos el loggeo a mostrar
    	switch(numero){
    		case "1":{
    			console.debug("Valor 1 en Debug");
    			break;
    		}
    		case "2":{
    			console.warn("Valor 2 en Warning");
    			break;
    		}
    		case "3":{
    			console.info("Valor 3 en Info");
    			break;
    		}
    		default:{
    			console.error("Fuera de Rango o NAN");
    			break;
    		}
    	}
    
    }else{//Mostramos un error pues no se ha ingresado un valor
    	console.error("No se ha ingresado un número");
    }
    

    Este código lo que hace es solicitarle al usuario un número y mostrará un mensaje en la consola diferente dependiendo del número que se ingrese.
    Nótese que hago uso de los métodos Error, Warn, Debug e Info del Objeto Console.
    Para que sea “divertido” te recomiendo que pruebes tú mismo el Script, preferiblemente en Firefox con Firebug, pues Chrome/Chromium no diferencian el método Info y Opera DragonFly sólo reconoce el Log/Debug.

    Como puedes ver, es mucho mejor depurar variables por la consola, pues muestra más detalle sobre ésta, además de los condicionales  mensajes que podemos imprimir.
    Para terminar ésta primera parte vamos a ver el caso hipotético de que estemos tratando de ejecutar un scripts que llame al Objeto Console en navegadores que no lo tengan disponible/habilitado, en éste caso, el navegador tirará un error Javascript que detendrá el resto de la ejecución. Para evitar ésto, deberemos hacer uso del siempre útil try…catch:

    try{
    //Funciones que invoquen a la consola
    }catch(e){}//Capturamos el error pero no hacemos nada con él
    

    Ya veremos algunas otras cosas interesantes en los próximos artículos. De momento, por favor, deja de depurar con window.alert ;)

Fin del Blog [Actualizado]

abril 18, 2011 Deja un comentario
Actualizacion: Al parecer no puedo dejar morir mi amado Infornética, así que luego de la despedida, lo vuelvo a despertar para continuar con mis entradas de Desarrollo Web. Arrebatos existenciales que nos da a veces :) .

Hola estimados lectores.

Como dice el título del post, termino el blog de manera definitiva.

Porqué esto?

Es sencillo, la temática se estaba perdiendo poco a poco, lo que en un inicio era un Blog de noticias informáticas, fué tomando un sentido Técnico y mi audiencia ya se estaba llenando de integrantes del mundo Linuxero. No quiero que el Blog pierda su escencia, por lo que dejaré éste Blog de manera indefinida y seguiré escribiendo mis entradas en mi Blog Personal.

Para el que me quiera seguir o leer, en éste nuevo sitio, escribo artículo sobre GNU/Linux, Desarrollo Web y aplicaciones Open Source.

También, me pueden “seguir los pasos” vía Twitter.

Saludos!

Categorías:Sin categoría
Seguir

Get every new post delivered to your Inbox.