martes, 26 de enero de 2010

Pequeños usos a nuestra simple libreria Ajax

Les traigo dos ejemplos pequeños de como usar nuestra simple librería Ajax.

ES necesario crear en un fichero javascript aparte para definir nuestras funciones complementarias entre ellas una para mostrar el contenido devuelto del servidor, y otra para mostrar un mensaje o imagen mientras se procesa la solicitud.
Lo creamos por ejemplo como funciones.js


function mostrar(texto) {
//sobre el componente html que posee el id "contenido" mostramos la respuesta del servidor
document.getElementById("contenido").innerHTML=texto;
}

function inicioEnvio()
{
//mostramos mientras tanto una imagen o mensaje de cargando.!!
document.getElementById("contenido").innerHTML='

';
}

Ahora nuestro script PHP que procesara las solicitudes enviadas mediante Ajax. renombrarlo por ejemplo como manejador.php


header('Content-Type: text/html; charset=UTF-8');
switch($_REQUEST['cod']){
case 1: echo "JAVA.- una tecnologia desarrollada por Sun Microsystems para aplicaciones software independiente de la plataforma, que engloba:Lenguaje de programacion Java, un lenguaje de programacion de alto nivel, orientado a objetos ";break;

case 2: echo "JAVASCRIPT.- es un lenguaje de programacion interpretado, es decir, que no requiere compilacion, utilizado principalmente en paginas web, con una sintaxis semejante a la del lenguaje Java y el lenguaje C.";break;

case 3: echo "JSP.- es una tecnologia Java que permite generar contenido dinamico para web, en forma de documentos HTML, XML o de otro tipo. ";break;

case 4: echo "ASP.- es una tecnolog�a de Microsoft del tipo lado servidor para paginas web generadas dinamicamente, que ha sido comercializada como un anexo a Internet Information Services (IIS). ";break;

default : require("presentacion.html");
}

Ahora nuestra pagina html donde tendremos unos links pesados cada uno efectuara un llamado Ajax al servidor y sera procesado por el script php.
Cada link genera una llamada Ajax mediante la función "doAjax" parte del código html:

JSP

El ejemplo completo lo anexo a continuación: descargar

Aquí también podemos ver el resultado de esta llamada Ajax
JSP

lunes, 25 de enero de 2010

Creando nuestra propia libreria Ajax, conociendo el objeto XMLHttpRequest

Que tal.
Justo hoy en mi clase de Sistemas Cliente/Servidor, el profesor hizo un comentario de lo importante que es el compartir información con los demás, y es que el conocimiento incrementa su validez cuando es pregonado y extensivo. La verdad es que pocas veces comparto información y conocimientos directamente con mis compañeros si es que ellos no me lo piden, así que el postear en este blog es la manera mas agradable y voluntaria para compartir conocimiento sin que muchos lo pidan XD

Para los que hablan el lenguaje de la web, por ahí les guste JavaScript (el manejo que tiene sobre el DOM me fascinó), pues para ellos aquí les muestro como es que JavaScript se convierte en el corazón de Ajax, que como sabemos Ajax no es una tecnología si no una sinergia o el uso asíncrono de varias tecnologías como JAvaScript, XML y algún lenguaje de servidor, entre ellos PHP,ASP.net, JSP,etc.

Bueno empezamos conociendo el objeto XMLHttpRequest, que es sobre el que gira el funcionamiento de Ajax, este objeto es necesario para realizar la comunicación con el servidor, está disponible como un objeto ActiveX en la pionera versión 5 de Internet Explorer. Un momento ¿qué es un ActiveX?, en brevísimas palabras es una tecnología desarrollada por Microsoft (por lo tanto tecnología propietaria) que le permite al desarrollador enriquecer el contenido de la página web con pequeñas aplicaciones o interacciones con el Servidor o el computador del usuario.

Para los que no conocen mucho las aplicaciones Ajax, pues corresponden a lo que se denomina la Web 2.0, antes cuando haciamos nuestras peticiones a un servidor web este nos devolvía una respuesta codificada en lenguaje HTML, la cual era recargada totalmente en el navegador, pero gracias a este Objeto XMLHttpRequest y al gran manejo que tiene JavaScript sobre el DOM hacen posible que la respuesta del servidor sea tratada, formateada y expuesta a disposición del programador para ser mostrada en cualquier bloque de la pagina, esto pues trae una mejor performance de las aplicaciones web.

Bueno empezamos creando nuestra libreria Ajax.

1.- Creamos un archivo de texto plano y lo renombramos con miAjax.js, utilizando cualquier editor de Textos, en mi caso uso SciTE, recomendable tambien notepad++ para los usuarios windows.Luego lo editamos...

2.- Creamos el objeto XMLHttpRequest y devolvemos en una funcion


function doXmlHttpRequest(){
try {
req = new XMLHttpRequest(); /* p.e. Firefox */
}catch(err1) {
try {
req = new ActiveXObject('Msxml2.XMLHTTP'); /* algunas versiones IE */
}catch (err2) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP"); /* algunas versiones IE */
}catch (err3) {
req = false;
}
}
}
return req;

}


3.- Ahora las funciones que realizan las llamadas asíncronas al servidor por medio de los métodos GET y POST.

/*
* Este metodo recibe una url y una instancia objeto XmlHttpRequest y
* realiza la petición con el método GET.
*/
function requestGET(url, req) {

myRand=parseInt(Math.random()*99999999);//para el cache del navegador

req.open("GET",url+'&rand='+myRand,true);

req.send(null);

}



/*
* Este metodo recibe una url,los parametros de consulta y una instancia objeto XmlHttpRequest y * realiza la petición con el método POST.
*/
function requestPOST(url, query, req) {
req.open("POST", url,true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(query);

}


4.- Ahora el método que ejecuta una funcion recibiendo su nombre como parametro.

function doFuncion(funcion,item) {
eval(funcion + '(item)');
}


5.- Esta es la función principal a la cual llamaremos en nuestras aplicaciones. la cual recibe una url, una cadena de consulta,el nombre de una función de respuesta, el nombre de una función de espera ( evidentemente para nuestras imágenes de "cargando"), método de envío y un parámetro que designa el tipo de respuesta que queremos del servidor, ya sea texto plano o Xml.


//isXml: 0 si la respuesta es en texto..1 si la respuesta es en XML

/*
*Es imprescindible conocer los diferentes códigos de respuesta de parte del servidor.
*-El atributo readyState devuelve el estado actual del objeto XMLHttpRequest, cada vez que *cambia el valor de readyState se lanza la función indicada en onreadystatechange.
*
*-El atributo onreadystatechange asigna la función que se ejecutará cada vez que readyState *cambie de valor.
*
*-El atributo statusText devuelve el código del estado HTTP de la transmisión devuelto por el
* servidor web.
*
*-El atributo responseText devuelve el texto del documento descargado del servidor en una
* petición con XMLHttpRequest.
*/
function doAjax(url,query,funcionResp,funcionEspera,tipoReq,isXml) {
var myreq = doXmlHttpRequest();// crea la instancia del objeto XMLHTTPRequest
myreq.onreadystatechange = function() {
if(myreq.readyState == 4) {
if(myreq.status == 200) {
var item = myreq.responseText;
if(isXml==1) {
item = myreq.responseXML;
}
doFuncion(funcionResp, item);
}
}
else
doFuncion(funcionEspera,"");
}
if(tipoReq=='post') {
requestPOST(url,query,myreq);
} else {
requestGET(url,myreq);
}
}

Como sabemos cuando el estado que devuelve el servidor es 200, significa que todo esta Ok, la información ya la hemos capturado en la variable "item".
Les recomiendo leer algunas anotaciones del protocolo http para entender mejor de que va esto:
link

Anexo el código fuente: aqui

En el post de mañana doy unos ejemplos para usar esta sencilla librería.
Bueno para darse una idea pueden tener un resultado como este XD..visita Vicux..(Comunidad Piurana de Software Libre)

//Dudas o Sugerencias :
luisan_182@hotmail.com
luantoc182@extpiura.com

martes, 19 de enero de 2010

Añadir etiqueta Code en Blogger con Highlighter

Que tal,
Hoy estuve buscando la manera de poner código en mis entradas pero de una forma decente XD.
El primer link con el que me encontré fue este, mmm como 2 horas para llegar al resultado esperado y nada que aparecía la bendita apariencia del "code".
Luego llegaron otros link mas "sin ton ni son" hasta que llegue a la solución que ahora se las expongo:

Primero descargar la version mas actualizada del Highlighter desde aqui, Si no deseas descargar los archivos puedes utilizar los ya subidos en los links a continuación en el código:

Las hojas de estilos y scripts de Highlighter se encuentran también subidos a un servidor ahorrándonos el trabajo de descomprimir y subir a nuestro propio server

El siguiente código lo tendran que añadir a su plantilla actual de su respectivo blog (>Diseño>Edicion de Html).




















Al editar la plantilla, añadimos el código por supuesto dentro de la etiqueta "head", guardamos los cambios y listo!!



Es la hora de probar si todo va bien, si nos hemos dado cuenta en gran parte hay un lenguaje a presentar por cada script añadido, esos son los lenguajes con soporte en este librería por el momento. Los cuales los tenemos en esta lista (recomendable ver esta sintaxis).

El formato es el siguiente:


código con lenguaje especificado en el "Brush alias"



Ejemplo con PHP
Este es el codigo:


echo "Esto resulta factible, ya veo mas decencia XD, lastima que se habrán dado cuenta la lentitud de carga del blog";



Este es el resultado

echo "Esto resulta factible, ya veo mas decencia XD, lastima que se habrán dado cuenta la lentitud de carga del blog";

Instalando Mysql Workbench en Ubuntu 9.10

Que tal,
Bueno aquí les doy los pasos para instalar esta fabulosa herramienta de modelado de base de datos para Mysql, entre sus características resaltantes y utilitarias 100% es que permite la ingeniería en reversa y sincronización con múltiples esquemas, además de forma automática te genera los scripts de las tablas.
El trabajo resulta sencillo contando a la mano con esta herramienta, 100% recomendable, hasta ahora no me quejo de su funcionamiento, claro que en una pc con 256 de RAM, con gusto querras desaparecerlo XD.

- Instalamos la librería "libctemplate0_0.96-1_i386.deb" con:

sudo dpkg -i libctemplate0_0.96-1_i386.deb
nota: esto en caso de haber descargado tal librería, de otro modo podemos descargarla e instalarla del gestor de paquetes Synaptic o con apt-get install

-- Descargamos la librería libzip1 con:

sudo apt-get install libzip1

- Instalamos Mysql-Worbeanch con:

sudo dpkg -i mysql-workbench-oss-5.1.18-1ubu904-i386.deb

nota: Puedes descargar el paquete del MysqlWorbench desde aqui

Al ejecutarlo y conectarlos a la base de datos en ubuntu 9.10, aparece el siguiente error :

Couldn't load library libmysqlclient_r.so

Bastará con crear el siguiente enlace simbolico:

cd /usr/lib
sudo ln -s libmysqlclient.so.16 libmysqlclient_r.so

Para ejecutarlo vamos al menu «Applicaciones>Programación>” y seleccionamos «MySQL WorkBench” y listo ya podemos modelar bases de datos.

Mostrar "Lo que estoy escuchando" en Mercury Messenger y Songbird sobre Ubuntu Linux

Que tal!
Bueno les comento que hace un tiempo vengo usando una alternativa interesante, multiplataforma y muy configurable (->lo mejor) de cliente de mensajería instantánea llamado Mercury Messenger ( version 1.9.5 estable), sobre todo que es de la marca Java XD, la verdad dicen que "es el clon del Windows Live Messenger",mmm pues yo digo y porque diablos hay que comparar con Windows Live si a mi parecer el desarrollo de sus nuevas versiones han sido un desastre total.
Los usuarios linux suelen conectarse por pidgin(con muchas deficiencias), Empathy(5mentarios), mediante IRC, skype, e infinidad de clientes de mensajería libres, también tenemos a un grupo un tanto reducido usando Mercury, con la aclaración que este producto es freeware mas no opensource.

Este software nos trae muchas funciones,algo que si es un poco deficiente es que para visualizar el la web cam se necesita instalar la librería JMF.

Al grano...muchos usuarios tienen el "antojo" de mostrar algún tema musical que esta tocando en su reproductor y chismearle al resto de sus contacto XD, jugando un poco con una de las miles funciones que nos trae Mercury, lo configure para mostrar las susodichas canciones provenientes de mi reproductor musical preferido : SongBird. SongBird es un excelente reproductor, con muchas opciones, una interfaz realmente amigable...algo asi como un iTunes de Mac.

Si gustan conocer sus características,ventajas y desventajas de estos programas ...los invito a hacer que San Google haga su labor.

Paso 1:
En nuestro SongBird vamos a "Songbird Add-ons" y descargamos el plugin : LiveTweeter
Paso 2:
Configuramos el plugin en el Menú "Herramientas>Complementos", elegimos Live Tweeter y damos a "Preferences".

Creamos un archivo de texto en un lugar de preferencia con un nombre de preferencia.
Nos vamos a la pestaña "Messenger", activamos la opción "Activar archivo de texto" y le damos la ruta del archivo

Paso 3:
Ahora a configurar Mercury navegamos por "Opciones>Configuraciones de Cuenta>Nombre a mostrar", Activamos "Mostrar la canción actual reproduciéndose" y en "Comando de Consola" teclear lo siguiente "tail /ruta_archivo/nombre_archivo.txt", guardamos y listo, ahora reproduzcan alguna cancion desde el SongBird, el nombre y artista de esta se guardara mediante un flujo de salida en el archivo de texto, y desde Mercury lo tomaremos con el comando "tail" que lee un archivo de texto