martes, 30 de septiembre de 2008

Introduccion a Ajax Amonia

Buenos dias, a peticion de un amigo, voy a dar una pequeña introduccion a ajax. Buscando en internet he encontrado algunaos manuales muy buenos, donde te hablan de como funciona ajax, la capa intermedia entre el navegador y el servidor, etc... Pero la primera vez que lei uno de estos me quede con una pregunta ¿Como empiezo?. Asi que en este tutorial empezaremos un ejercicio desde cero, eso si, suponiendo que se tienen conocimientos previos de java, servlets y jsp.


Bueno empezare explicando que vamos a hacer.

Haremos un campo de entrada donde iremos escribiendo y conforme escribimos el sistema va a buscar en una lista los correos relacionados con los caracteres que se van tecleando y nos los mostrara en un div flotante(Como un autocompletar).


Lo primero que haremos es el jsp, con el input donde se van a teclear los datos:

input type="text" name="mail" id="mail" value="" size="100"
onkeyup="obtenMail(this, 'listaMails'); return false;"

Este es un simple input al cual le vamos a dar el id de mail, con este id vamos a identificar al elemento.Tambien hay que crear un div invisible en el cual se van a mostrar los correos.

div id="listaMails" style="display: none;"

A conticuacion creamos un archivo javascript, aqui vamos a crear 3 funciones importates. A la primera la llamaremos getXMLHTTPRequest() o como mejor les paresca. Esta funcionen la que nos va a regresar ul objeto con el cual nos vamos a comunicar con el servidor. La funcion quedaria de la siguiente manera:


function getXMLHTTPRequest(){
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
}

var http = getXMLHTTPRequest();

En esta funcion se valida dependiendo del tipo de navegador que se utilize.

Despues haremos una funcion que llamaremos cargaContenido() a la cual le vamos a pasar dos valores, el primero es el input donde se van a meter los datos, el segundo es el div, donde van a aparecer los valores que se traigan del servidor.


function obtenMail(inputObject, division) {
var url = 'BuscaMail?text=' + inputObject.value;
divisionValores = division;
http.open("GET", url, true);
http.onreadystatechange = muestraResultadoMail;
http.send(null);
}


En esta funcion se abre hace una peticion al servidor de tipo GET pasandole un url. Despues se le asigna la funcion que se va a ejecutar, y por ultimo le desimos que no le vamos a pasar ningun parametro.



Despues haremos la funcion la cual nos va a manejar la respuesta.


function muestraResultadoMail() {
if (http.readyState == 4) {
if (http.status == 200) {
var mails = http.responseXML.getElementsByTagName("mails")[0];
var mailList = mails.getElementsByTagName("mail");
var divListaMails = document.getElementById(divisionValores);
var html1 = "< table >";
for (i = 0; i < mailList.length; i++) {
var valor = mailList[i].childNodes[0].nodeValue;
html1 = html1 + "< tr id='row_" + i + "' onmouseover='seleccionarRenglon(" + i + ") ; return false;' ";
html1 = html1 + " onmouseout='deseleccionarRenglon(" + i + ") ; return false;'";
html1 = html1 + " onclick='seleccionarValor(\"" + valor + "\", \"mail\", \"" + divisionValores + "\")' ; return false;'";
html1 = html1 + " >";
html1 = html1 + "< td >" + valor + "";
}
html1 = html1 + "< / table >";
divListaMails.innerHTML = html1;
if (mailList.length == 0)
divListaMails.style.display = "none";
else
divListaMails.style.display = "block";
}
}
}

Esto es en cuanto a java script, ah este codigo se le pueden hacer mejoras utilizando json, pero por el momento lo dejaremos asi. Ahora pasaremos a la parte del revlet que se va a ejecutar

Primero creamos una clase a la cual vamos a llamar BuscaMail, y la extenderemos de la clase
javax.servlet.http.HttpServlet para que esta clase sea un servlet, no hay que olvidar dar de alta el servlet en el web xml.

Creamos la clase


public class BuscaMail extends HttpServlet implements
javax.servlet.Servlet {

public BuscaMail() {
super();
}

}

Ahora hay que crear el metodo doGet del serlet, el cual nos va a regresar la lista de correos

protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String text = request.getParameter("text");
// Buscamos en la BD o en memoria
double random = Math.random();
int numero = 0;
if (text != null && text.trim().length() != 0)
numero = (int) (random * 10);
response.setContentType("text/xml");
PrintWriter pw = response.getWriter();
pw.write("< ?xml version=\"1.0\" ? >");
pw.write("< meve >< mails >");
for (int i = 0; i < numero; i++)
pw.write("< mail >" + (text + i) + "@gmail.com< /mail >");
pw.write("< /mails >< /meve >");
pw.flush();
pw.close();
}

En este metodo nosotros creamos los correos, pero lo mejor es buscarlos en una base de datos o tenerlos en memoria y buscarlos ahi.

Y con esto se deberia de mostrar un inpun en el cual conforme vas tecleando se van mostrando los posibles correos.

Bueno eso es todo por el momento, espero no haberlos confundido mas, cualquier duda o comentario me pueden escribir a xgress2000@hotmail.com

lunes, 29 de septiembre de 2008

Hello moto, Hello Android!!


Cuando se presenta un SO mejor que el de la competencia y para colmo de males, gratuito, no es raro que alguno que otro fabricante se muestre interesado. Y para la gran 'G' tras el esperado lanzamiento del G1, ahora recibe una llamada de motorola, que tras el buen éxito cosechado por el G1, a decidido destinar 350 monitos al desarrollo de un nuevo contenedor para el Androd. dejemos que Motorola nos sorprenda con cosas raras y brillantes, pero en mi caso, me conformo con una terminal con un jack de 3,5mm.

jueves, 25 de septiembre de 2008

Queremos pastel, pastel, pastel!!! (El sugi canta)

hace ya mas de dos años que instale fedora en mi portátil. Desde aquellos años no he dejado aquel linux pese a que he usado de muchos colores y sabores.

Pero en fin, hoy nos pondremos los sombreros y sacaremos nuestras ganas de festejar por que hoy, si, hoy hace 5 años se abrió oficialmente el portal web de la comunidad Fedora. Esto gracias a la división de Red Hat Linux, si, ese que después pasaría a llamarse Red had Enterprice linux(O mejor dicho: No lo hagas tu mismo.). Fedora esta enfocado para ti, si pequeño amigito usuario de una portátil, de una maquina de escritorio, a todos ustedes que son usuarios del "hogar". Por ese motivo y por otros más, el objetivo de fedora es contener software libre y open source, así como el ser líder en tecnología al aplicar sus parches a los proyectos correspondietes y no solo a los de fedora.

Por eso y otras cosas más, feliz sapo verde Fedora linux!!! Yo quiero mi pastel y mi chocolatote pa' festejar a gusto.

martes, 23 de septiembre de 2008

Ajax... Y eso que diablos es??

Paseando como siempre, por aquellos bajos mundos del internet, me he encontrado un articulo algo viejo de Jesse James Garret que publico en referencia a Ajax y que vale la pena leer.

Así que para todos nosotros, vamos con la traducción de este articulo.

Ajax: Un Nuevo acercamiento a las Aplicaciones Web
Por Jesse James Garrett
February 18, 2005
Si algo del actual diseño de interacción puede ser llamado glamoroso, es crear Aplicaciones Web. Después de todo, ¿cuando fue la ultima vez que escuchaste a alguien hablar de diseño de interacción de un producto que no esté en la Web? (Okay, dejando de lado el iPod). Todos los nuevos proyectos cool e innovadores están online.

Dejando de lado esto, los diseñadores de interacción Web no pueden evitar sentirse envidiosos de nuestros colegas que crean software de escritorio. Las aplicaciones de escritorio tienen una riqueza y respuesta que parecía fuera del alcance en Internet. La misma simplicidad que ha permitido la rápida proliferación de la Web también crea una brecha entre las experiencias que podemos proveer y las experiencias que los usuarios pueden lograr de las aplicaciones de escritorio.

Esa brecha se está cerrando. Échenle una mirada a las Google Suggest. Mira la forma en que los términos sugeridos se van actualizando a medida que uno tipea casi instantáneamente. Ahora mire Google Maps. Hace zoom. Usen el cursor para agarrar el mapa y navegarlo un poco. Otra vez, todo sucede casi instantáneamente, sin esperar que las paginas se recarguen.

Google Suggest y Google Maps son dos ejemplos de un nuevo acercamiento a las aplicaciones Web, que nosotros en Adaptative Path hemos denominado AJAX. El nombre es una abreviación o acrónimo para Asynchronous JavaScript + XML, y ello representa un cambio fundamental en que es posible en la Web.

Definiendo Ajax
Ajax no es una tecnología. Es realmente muchas tecnologías, cada una floreciendo por su propio mérito, uniéndose en poderosas nuevas formas. AJAX incorpora:

- presentación basada en estándares usando XHTML y CSS;
- exhibición e interacción dinámicas usando el Document Object Model;
- Intercambio y manipulación de datos usando XML and XSLT;
- Recuperación de datos asincrónica usando XMLHttpRequest;
- y JavaScript poniendo todo junto.

El modelo clásico de aplicaciones Web funciona de esta forma: La mayoría de las acciones del usuario en la interfaz disparan un requerimiento HTTP al servidor web. El servidor efectúa un proceso (recopila información, procesa números, hablando con varios sistemas propietarios), y le devuelve una pagina HTLM al cliente. Este es un modelo adaptado del uso original de la Web como un medio hipertextual, pero como fans de “The Elements of User Experience” sabemos, lo que hace a la Web buena para el hipertexto, no la hace necesariamente buena para las aplicaciones de software.



Este acercamiento tiene mucho sentido a nivel técnico, pero no lo tiene para una gran experiencia de usuario. Mientras el servidor esta haciendo lo suyo, que esta haciendo el usuario? Exacto, esperando. Y, en cada paso de la tarea, el usuario espera por mas.

Obviamente, si estuviéramos diseñando la Web desde cero para aplicaciones, no querríamos hacer esperar a los usuarios. Una vez que la interfaz esta cargada, porque la interacción del usuario debería detenerse cada vez que la aplicación necesita algo del servidor? De hecho, porque debería el usuario ver la aplicación yendo al servidor?

Como es diferente AJAX
Una aplicación AJAX elimina la naturaleza “arrancar-frenar- arrancar-frenar” de la interacción en la Web introduciendo un intermediario -un motor AJAX- entre el usuario y el servidor. Parecería que sumar una capa a la aplicación la haría menos reactiva, pero la verdad es lo contrario.

En vez de cargar un pagina Web, al inicio de la sesión, el navegador carga al motor AJAX (escrito en JavaScript y usualmente “sacado” en un frame oculto). Este motor es el responsable por renderizar la interfaz que el usuario ve y por comunicarse con el servidor en nombre del usuario. El motor AJAX permite que la interacción del usuario con la aplicación suceda asincrónicamente (independientemente de la comunicación con el servidor). Así el usuario nunca estará mirando una ventana en blanco del navegador y un icono de reloj de arena esperando a que el servidor haga algo.




Cada acción de un usuario que normalmente generaría un requerimiento HTTP toma la forma de un llamado JavaScript al motor AJAX en vez de ese requerimiento. Cualquier respuesta a una acción del usuario que no requiera una viaje de vuelta al servidor (como una simple validación de datos, edición de datos en memoria, incluso algo de navegación) es manejado por su cuenta. Si el motor necesita algo del servidor para responder (sea enviando datos para procesar, cargar código adicional, o recuperando nuevos datos) hace esos pedidos asincrónicamente, usualmente usando XML, sin frenar la interacción del usuario con la aplicación.

Quien está usando Ajax
Google está haciendo una significativa inversión en el acercamiento Ajax. Todos los grandes productos que Google ha introducido en el ultimo año (Orkut, Gmail, la última versión de Google Groups, Google Suggest, y Google Maps ) son aplicaciones Ajax. (Para datos más técnicos de estas implementaciones Ajax, lean estos excelentes análisis de Gmail, Google Suggest, y Google Maps.) Otros están siguiendo la tendencia: muchas de las funciones que la gente ama en Flickr dependen de Ajax, y el motor de búsqueda de Amazon A9.com aplica tecnologías similares.

Estos proyectos demuestran que Ajax no es solo técnicamente importante, sino también prácticos para aplicaciones en el mundo real. Esta no es otra tecnología que solo trabaja en un laboratorio. Y las aplicaciones Ajax pueden ser de cualquier tamaño, de lo más simple, funciones simples como Google Suggest a las muy complejas y sofisticadas como Google Maps.

En Adaptive Path, estuvimos haciendo nuestro propio trabajo con Ajax en los últimos meses, y estamos descubriendo que solo raspamos la superficie de la rica interacción y respuesta que que las aplicaciones Ajax puede proveer. Ajax es un desarrollo importante para las aplicaciones Web, y su importancia solo va a crecer. Y como hay tantos desarrolladores que ya conocen como usar estas tecnologías, esperamos ver mas empresas y organizaciones siguiendo el liderazgo de Google en explotar la ventaja competitiva que Ajax provee.

Mirando adelante
Los mayores desafíos al crear aplicaciones Ajax no son técnicas. Las tecnologías centrales son maduras, estables y bien conocidas. En cambio, los desafíos son para los diseñadores de estas aplicaciones: olvidar lo que creemos saber sobre las limitaciones de la Web, y comenzar a imaginar un rango más amplio y rico de posibilidades.
Va a ser divertido.

Hola soy Xgress

Hola buenas tardes, es la primera vez que escribo en una cosa de estas, asi que me presentare primero.

Pueden llamarme Xgress, tengo 25 años, soy programador de una consultoria que desarrolla aplicaciones web. Llevo como año y medio desarrollando con java, y en este tiempo he aprendido a utilizar tecnologias como Ajax, Struts, Struts 2, jasperReports , XML y otras que no recuerdo ahorita. Me falta mucho por aprender, pero siempre estoy dispuesto a escuchar a las personas que tengan algo que enseñarme y las que no tambien.

Tambien he programado en otros lenjuages como Visual Basic(no muy de mi agrado), C y Visual Fox Pro.

Bueno estare por aqui escribiendo principalmente sobre java.

Resuelve tus problemas de espacio.


Siempre he dicho que mi cuarto es demasiado pequeño y mis muebles demasiado grandes y eso de poner cosas en el techo no es muy bueno, en especial cuando tu duermes bajo ellas... Mejor nos mudamos de casa o buscamos cosas mas pequeñas como un kit de campamento.

Así que como yo, tenemos una nueva solución. Kenchikukagu Mobile Furniture es una serie de muebles diseñados por Atelier OPA, empresa japonesa que nos ahorra las molestias de mover esos pesados y estorboso muebles en un espacio donde entras tu o tu alma... No más... El kit incluye una cocina, una oficina y una cama plegables. Lo malo es que su precio es solo de unos USD$7.483. Esperemos que algún buen amigo que se dedique a construir muebles, se vea totalmente inspirado y nos saque la versión economica.

fuente: LikeCool

IBM desvela iniciativa para afrontar flujos de datos


IBM ha anunciado su mayor lanzamiento hasta la fecha de hardware de almacenamiento, software y servicios como parte de una gama de infraestructura de información. Esta nueva oferta de la compañía está diseñada para facilitar el paso de los datos estáticos gestionados en compartimentos estancos, a una información dinámica que “sigue" a las personas a donde quiera que vayan en un entorno de “cloud computing".


El lanzamiento de IBM supone:
- El mayor lanzamiento en soluciones de almacenamiento con más de 30 tecnologías y servicios de infraestructura de información diseñados para afrontar el crecimiento y dinamismo de los datos.

- Una inversión de 2.000 millones de dólares (unos 1.380 millones de euros); tres años de desarrollos y la participación de más de 2.500 investigadores de IBM de nueve países diferentes, además de ocho adquisiciones en los últimos dos años, claves en la estrategia.

- El desarrollo de nuevas tecnologías que se están gestando en los laboratorios de IBM, que permitirán el archivo y lectura de la información a largo plazo.

Según IBM, el espacio ocupado por la información de cada individuo (la llamada “huella de información") –la digitalización del ocio, la asistencia sanitaria, la seguridad o las preferencias de compra– crecerá del actual volumen actual, 1 terabyte al año (equivalente al papel impreso de unos 50.000 árboles), a más de 16 terabytes en 2020.

IBM señala tres elementos críticos para conseguir una buena infraestructura de la información, como parte de su estrategia en torno al centro de datos de la empresa del futuro: disponibilidad, consolidación y retención, y seguridad.

Disponibilidad escalable según la demanda de Internet:
La infraestructura actual no está diseñada para gestionar a los dos mil millones de personas que estarán en la Web en 2011 ni el billón de dispositivos y objetos que se espera que estén conectados. Las empresas tienen que estar preparadas para la homogeneización de entornos (´cloud computing´), ofreciendo a los consumidores acceso remoto a los datos y sistemas desde cualquier dispositivo y lugar gracias a soluciones escalables y que permitan ahorrar costes.

Consolidación y retención:
Según los analistas, el 50% de los centros de datos se quedará sin energía o sin espacio en 2008 y la energía consumida por los centros de datos de EE.UU. crecerá del 1,5% al 2,5% del consumo total del país en los próximos cinco años.

Seguridad:
Garantizar que la información del centro de datos esté protegida y con acceso restringido es una de las principales preocupaciones de las empresas. Por otro lado, la disponibilidad y la autentificación de los datos, desde las enormes bases de datos de empresas y gobiernos hasta los 1.000 millones de personas que se estima que usarán la Web móvil este año, es una prioridad clave.


Fuente: DiarioTI

lunes, 22 de septiembre de 2008

Un Hash qué?

Vagando por los bajos mundos del internet y viendo algunos sistemas RIAD de 6 teras (Yo quiero!!), me he topado con un nuevo problema que ya disqué resolví. El terrible llenado de un listbox desde una base de datos usando un hashtable. Ustedes se han de preguntar que demonios es un hash table o hash map. es una matriz o colección de datos relacionados en par por una clave.

Teoria... Aburrida y practica. Pasemos a lo que de verdad entendemos, código!!!!

'Creamos una colección del tipo hashtable y un data table. Bueno, tambien crea la conexion y los comandos.
'Ojo, yo uso clases de conexión.
Dim testHashmap as new HashTable
Dim dt as new DataTable

cn = conecta() 'Esta una función de mi clase conexion
cmd.CommandText = "select id, nombre from cliente" 'Consulta
cmd.Connection = cn
da.SelectComand = cmd 'Dando al dataAdapter la consulta.
da.fill(dt)

'Llenado del hashtable
for i as integer = 0 to dt.Rows.Count()
dim id as integer
id = dt.Rows(i)("id")
dim nom as String
nom = dt.Rows(i)("nombre")
testHashmap.add(id, nom)
next

list1.dataSource = testHashmap
list1.DataValueField = "key"
list1.DataTextField = "Value"
list1.DataBind()

Y eso es todo para llenar la list desde una base de datos usando un HashTable.

Mas adelante publicare mis clases de conexion.

besitos!!

Un día de aquellos.



Los viejos son sabios al decir que nunca digas nunca a aquellas cosas de las cuales no te gustan, por que podrías terminar programando en ellas. Y eso fue algo de lo que me paso a mi.

Recordando viejas ideas y días de gloria, un día conocí a un singular pingüino que me robo el corazón. Desde esos días de la escuela particione mi maquina e instale un segundo sistema que en principio fue secundario y que después paso a ser el principal. Desde aquellos días que me he adentrado a un mundo que gran parte de mi carrera era completamente desconcido y que una ves dentro de el, te obliga a estar informado. Actual mente mi lap esta tomando unas vacaciones medio largas, por lo cual he dejado un linux con su gnome y kde algo quietos y por el momento, estables. Ahora uso vista, cosa que no me tiene muy contento, programo en visual basic, del cual no sabia nada.

De aquí en adelamte es de lo que hablaremos, visual basic, java, ruby y otras cosas que por demás y por definición son divertidas!!

Bienvenidos al espacio de Sugizo!!

Pasen y vean!!!

Hola amiguitos, niños y niñas, mounstros y mounstras!!! La función va a comenzar.!!!

Alguien me dijo no hace mucho, no hace poco, has un blog y comparte tu vida con los demás, en el momento le conteste: No tengo nada en contra de los demás, de verdad que me caen bien como para hacerles algo tan cruel y vil como eso. Pero Ahora he encontrado de que hablar.

Bienvenidos a este blog donde hablaremos de tecnología, programación, café, maquinas, café, algoritmos, café, sistemas operativos y demás cosas relacionadas con el maravilloso mundo del café, sus colados y anexos.

Así que aquí comienza nuestro viaje. Una guía casi espiritual con gurús y otros iluminados de los cuales, yo no entro. Viaje con nosotros a mil y un lugar y disfrute del gusto que da, antes de que los segundos duren un siglo y el fin del mundo sea mañana a las 10.

<> La orquesta Mondragon.