Geek & Roll » 2007 » November

Llamadas asíncronas (AJAX) con Ext

Cesar November 28th, 2007 javascript, programacion 2 comentarios

Ext (disponible en la Web Extjs) es una librería Javascript bastante completa con la que podemos hacer desde bonitos efectos para la interfaz gráfica, hasta llamadas asíncronas al servidor (AJAX) de una manera muy sencilla como veremos a continuación. Definitivamente la parte que más me gusta de Ext es la manera en la que se hace una petición de datos al servidor y cómo maneja estos datos una vez que llegan al cliente. Pero basta de palabras, vayamos al grano.

Ext Form Supongamos que tenemos un formulario como el que se muestra en la imagen y queremos llenarlo con datos proveniente de una base de datos pero de manera dinámica (con AJAX, sin hacer refresh). Pueden utilizar sólo Javascript y manejar todas las incompatibilidades de los navegadores por su cuenta, y pueden usar una librería como Prototype que también es muy buena (y de hecho Ext tiene la opción para usarla) o, podemos usar Ext y facilitar tanto el código del lado del cliente como del lado del servidor. En Ext se usa el concepto de Data Stores que son objetos que nos facilitan el acceso a datos con un formato específico, y que después podemos usarlos para llenar por ejemplo una tabla, o un combo, o cualquier cosa. Para crear un Data Store:


var marker_data = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url: 'marcadores.php?accion=obtMarc'}),
reader: new Ext.data.JsonReader({},[ 'id', 'nombre', 'direccion', 'latitud', 'longitud', 'descRed', 'descAmp', 'numCuartos', 'numBanos', 'tamano', 'colonia', 'precio', 'enlace']),
remoteSort: false
});

Dentro del Data Store estamos creando otros dos objetos: HttpProxy y JsonReader. El primero nos sirve para indicarle la URL que nos regresará los datos que necesitamos, y el segundo es un objeto que, como su nombre nos indica, nos sirve para consumir datos en formato JSON. Esto es muy conveniente ya que, al estar usando JSON, podremos evaluar la respuesta del servidor, convertirla a un objeto Javascript y accesar sus propiedades como lo hacemos con cualquier otro objeto (aunque Ext hace este trabajo por nosotros automágicamente).

Ya que tenemos el Data Store, ahora hay que indicar que pasa una vez que los datos llegan al cliente:


marker_data.on('load',function(){
fillForm(marker_data);
});

Aquí solamente estamos tomando el objeto marker_data que creamos anteriormente (el Data Store) y le asignamos un manejador de evento. El evento es “load”, es decir, cuando se cargan los datos, y le estamos asignando una función anónima que a su vez llama a otra función (fillForm) que no voy a mostrar aquí por motivos de espacio pero que simplemente toma los valores regresados por el servidor y llena el formulario. Por último hay que decirle al Data Store que haga la llamada y pida los datos:


marker_data.load();

Eso es todo. Al recibir todos los datos del servidor se ejecutará la función creada anteriormente. Donde esto brilla es en la parte del servidor, especialmente si antes utilizabas XML para regresar datos. Siguiendo el mismo ejemplo, el código del servidor en PHP quedaría de la siguiente manera:


$query = mysql_query("SELECT * FROM marcadores");
if(!$query){
die('No se pudo conectar a la base de datos:
'.mysql_error());
mysql_close();
}else{
$arr = array();
while($obj = mysql_fetch_object($query))
$arr[] = $obj;
Echo ''.json_encode($arr).'';
}

Bastante sencillo ¿no? aprovechando la función json_encode de PHP enviamos la respuesta con el formato que Ext la espera. Una vez en el cliente podemos utilizar estos datos así:


marker_data.getAt(0).data.colonia

Este objeto una vez que se invoca el método load contiene los datos regresados por el servidor. Utilizando el método getAt y la propiedad totalLength podemos iterar los resultados sin mucho esfuerzo. Y no hay más que decir del tema, Ext simplifica bastante el desarrollo de aplicaciones Web con Javascript y nos permite abstraer cosas como evaluar cadenas JSON o parsear respuestas en formato XML, así como también despreocuparnos por las incompatibilidades entre los diferentes navegadores. Por el lado malo, la documentación es bastante completa pero a mi ver le hacen falta más ejemplos para poder aprender a utilizar la librería de manera más rápida.

Video de Plasma en KDE 4.0

Cesar November 24th, 2007 FLOSS, aplicaciones, linux Haz un comentario

Un video después del salto sobre Plasma en KDE 4.0. Por si no lo saben, Plasma es una parte central de KDE 4.0 y podría describirse como un reemplazo del actual SuperKaramba pero en realidad es mucho más que eso. En esta ocasión las palabras no le hacen justicia a Plasma así que los dejo con el video de lo que será la próxima versión del mejor ambiente de escritorio del mundo: KDE. Leer el resto de este post.

Killer App

Cesar November 23rd, 2007 aplicaciones Haz un comentario

Una “killer app” se refiere a cualquier programa de computadora que es tan necesario o deseable que termina siendo de mayor valor que una tecnología más grande a la cual pertenece, como por ejemplo una consola de videojuegos, software, sistema operativo o una pieza de hardware. En este sentido, una “killer app” incrementa sustancialmente las ventas del hardware que la soporta.

¿Cuál es su killer app, aquella aplicación con la que simplemente no pueden vivir/trabajar/recrearse? Dejen su comentario.

(”Inspirado” por un post reciente en OSNews)

Parar a google

Axel November 23rd, 2007 Google, frases 4 comentarios

¿pero alguien podrá parar a google? Digo, con el valor que tiene puede salir a comprar, incluso agresivamente, cualquier posible competidor o tecnología que pueda amenazarlo; no tiene posibilidad de ser acusado de monopolio porque es un mercado de productos gratuitos y, encima, para muchos sigue siendo un “amigo” en vez de una corporación maligna como otras que crecieron tanto en tan poco tiempo. Mariano Amartino, uberbin.net

Aplicaciones grandes con Javascript

Cesar November 23rd, 2007 javascript, opinion, programacion 3 comentarios

Programar aplicaciones grandes (no triviales) con Javascript es un gran PITA. A aquellos que se dedican a hacer esto (por gusto, trabajo o masoquismo) ¿Cual es el principal problema de la dependencia de Javascript en las nuevas aplicaciones Web? ¿Que librería o framework prefieren (si es que usan una)? ¿Cual es la desventaja de otras tecnologías (GWT, Flash, Silverlight, Flex) frente a Javascript? y por último ¿Que debería tener el lenguaje para mejorar la experiencia del programador?

Mecánica para colaboraciones

Cesar November 21st, 2007 geekandroll Haz un comentario

A partir de la primera colaboración en Geek&Roll, hemos estado recibiendo varios correos en donde nos piden detalles sobre cómo colaborar como autores invitados. Primero que nada, quiero darles las gracias a todos por mostrar interés, en Geek&Roll estamos convencidos de que nuestros lectores tienen mucho que aportar y queremos ser la comunidad y la plataforma para que esto suceda.

Como todo en la vida, colaborar como autor invitado tiene ciertas reglas que debemos seguir para mantener la temática y la calidad que todos ustedes esperan de Geek&Roll. Hacer una colaboración como autor invitado es muy sencillo:

  1. Enviar un correo a la dirección ping@geekandroll.com indicando el nombre de usuario que deseas en el sitio, tus datos personales (nombre, email, website si tienes uno) y lo más importante: el tema del primer post con el que deseas contribuir y de ser posible un primer borrador del mismo
  2. Al recibir el correo, nosotros revisaremos el tema del post y el contenido. El tema del post debe ser algo sobre lo que escribimos en Geek&Roll, y debe ser original, es decir, no estamos interesados en que se haga copy/paste de algún otro blog o sitio de noticias. Te puedes dar un ejemplo de contenido original visitando los posts: Reliquias de la nueva era, XNA y el primer post colaborativo: Stallman en CD. Obregón
  3. Si todo está bien, te enviamos un correo de regreso con tu nombre de usuario y tu password con el cual podrás ingresar al blog como colaborador y publicar tu post

Esperamos contar pronto con sus contribuciones. Quien sabe, tal vez entre nuestros lectores se encuentre el siguiente Geek&Roll’er.

Pájaro Carpintero

Cesar November 19th, 2007 frases Haz un comentario

Si construyéramos casas de la misma manera en la que programamos, el primer pájaro carpintero que se acercara destruiría nuestra civilización.

Encontrado en el libro Applied Java Patterns.

5 Videojuegos que redefinieron lo que es un videojuego

Cesar November 19th, 2007 entretenimiento 10 comentarios

Phantasmagoria Phantasmagoria: Creado durante el “boom” de las películas interactivas, Phantasmagoria venía en un paquete de 7 CDs y era una aventura del tipo “point and click”. Aprovechando el “Full Motion Video”, este juego de terror contenía algunas de las escenas más escalofriantes que he visto hasta la fecha en un videojuego, particularmente se me viene a la mente una escena en donde a alguien le encajan una pala de jardinería por la boca, u otra en donde a otra persona le dan de comer las entrañas de varios animales por un embudo hasta que muere ahogado.

Mario64 Super Mario 64: La primera vez que jugué Super Mario 64 supe que algo había cambiado para siempre. Este juego definió lo que sería un juego de plataformas en 3D, y aunque no contaba con las gráficas más espectaculares, la jugabilidad y el entretenimiento que ofrecía este título hizo que pasara a la historia como uno de los juegos más memorables de la historia. Super Mario 64 introdujo muchos nuevos conceptos a los videojuegos, que serían utilizados por muchos otros después de él, como el uso de la cámara dinámica y el control analógico (el personaje corre o camina dependiendo de la presión en la palanca).

FFVII Final Fantasy VII: Simplemente uno de los mejores juegos de rol jamás hechos, y definitivamente el mejor de la serie Final Fantasy. Esta épica historia de justicia, amor y venganza tiene algo para todos. Originalmente sólo para la consola PlayStation, FFVII fue el primero de la serie en contar con una versión para PC, seguido por FFVIII el cual sería el último hasta la fecha (no contando al MMORPG FFXI). Lo mejor de este título es definitivamente la historia, que enterneció los corazones de más de un hardcore gamer con la trágica muerte de Aeris (si, Darth Vader es el Papá de Luke y Bruce Willis en el Sexto Sentido está muerto). Final Fantasy VII no fue mi primer RPG, pero si fue el que me enganchó al género en busca de aquel RPG que logre destronarlo, y hasta la fecha no lo he encontrado.

QuakeQuake: De mano de los creadores del género de primera persona (ID Software y John Carmack), Quake fue el primer videojuego de primera persona en contar con un mundo completamente en tres dimensiones. Juegos anteriores (como Doom y Duke Nukem 3D) simplemente simulaban un ambiente 3D, pero Quake fue el primero con contar con un motor completamente 3D. Por si eso no fuera poco, con Quake podías jugar contra tus amigos a través de Internet y así aventarte una retita de deathmatch. Rápidamente salieron mods (modificaciones no oficiales) del juego, como el excelente Team Fortress. Quake fue el responsable de inmortalizar el género, la empresa (ID Software) y a sus creadores (John Carmack, John Romero) como unos de los más influyentes de la industria.

OOTLegend of Zelda: Ocarina of Time: Frecuentemente mencionado como “el mejor juego de toda la historia”, y definitivamente el mejor de la serie Legend of Zelda, Ocarina of Time fue la primera entrega de Zelda para el Nintendo 64 y pasó a la historia por su historia elaborada, jugabilidad impecable, nivel de entretenimiento y gráficos preciosos. Las reseñas no se hicieron esperar, y Ocarina of Time fue el mejor calificado de toda la historia hasta hace poco (destronado por otro título de nintendo: Mario Galaxy). The Legend of Zelda: Ocarina of Time es un juego memorable, que cualquier fan de videojuegos debe permitirse experimentar. Aún en nuestros días de gráficos en HD y consolas superpoderosas, Ocarina of Time es un ejemplo de cómo un videojuego debe ser, para convertirse en leyenda.

Estoy consciente de que la elección de videojuegos es un poco extraña, y dejo muchos títulos por fuera que, a mi ver, fueron parte aguas en la historia de los videojuegos. Me gustaría mencionar brevemente dos títulos importantes: Street Fighter 2 en el género de peleas ya que a partir de él, tantos y tantos títulos copiaron su fórmula para ser exitosos y ayudó a cimentar el género de peleas. Otro que vale la pena mencionar es Duke Nukem 3D, otro FPS que por su contenido “para adultos” (shake it baby! you wanna dance?) causó shock.

WebKit en Ubuntu GNU/Linux

Cesar November 16th, 2007 FLOSS, aplicaciones, linux 1 comentario

WebKit WebKit es el programa que se encarga de interpretar código HTML y presentarlo en tu pantalla, es decir, es un rendering engine y es el que usa el navegador Safari. Además, WebKit es FLOSS.

¿Por qué alguien querría usar WebKit, cuando se tiene por ejemplo Firefox? Bueno, primero que nada, Firefox y WebKit son dos cosas distintas. Firefox es un navegador completo y WebKit es sólo un engine, lo más correcto sería comparar a WebKit con Gecko. Sin embargo, una buena razón para querer usar WebKit es porque no existe una versión de Safari para GNU/Linux y hasta la fecha no es posible ejecutarlo con Wine (o tan siquiera yo no he podido), entonces si queremos probar como se vería un sitio que estamos desarrollando en Safari tenemos que tener una mac a la mano o una instalación de Windows con Safari. Si esas dos opciones no son viables, continúa leyendo. Leer el resto de este post.

Reliquias de la nueva era

Axel November 16th, 2007 gadgets, nostalgia, tecnología 10 comentarios

La tecnología avanza muy rápido. Mucho. La primera computadora que tuve, que fué una pentium II de 350 Mhz, con disco duro de 3 GB y 32 Mb de RAM, hace 8 años. A estas alturas no sería (si existiera aún) más que una calculadora muy cara. En cambio, mi abuela tiene su tele de color comprada en los ochentas que funciona perfectamente y le da todas las funciones que necesita. Bueno, quizá no pueda conectar directamente un DVD, pero eso se soluciona con un adaptador de $50 pesos.

Pero bueno, además del clásico ejemplo de la obsolescencia de las computadoras, hay muchos otros. Por ejemplo, quien no recuerda haberse emocionado al usar, o por lo menos quien no deseó tener en sus manos estas reliquias, que en su tiempo fueron unas maravillas:

SONY MAVICA

¡Wow, una camara digital! ¡WOW, puedes guardar en diskettes! !WOW, 640×480 pixels!

mavica.jpg

La Sony MAVICA fue uno de mis primeros deseos geek. Era portatil, podías tomar todas las fotos que quisieras y además, borrar las que no te gustaban. Incluso podías tomar muchas fotos de X cosa, para después escoger las mejores. ¡Sin gastar en rollos de película! Además podías visualizar las fotos instantaneamente en su pantalla LCD. Un amigo la tenía y fue la primera cámara digital que utilicé. Todavía tengo fotos tomadas con ella, y me encantaba, siempre quise comprarme una para mí solito.

La realidad como ahora la veo, es que esa cámara era un pain in the ass. Tenías que andar cargando mínimo con una caja de disketes, hasta vendían unos estuches enormes para guardar la cajita. 10 imprácticos plásticos de 1.44 mb cada uno, que se dañaban sólo con verlos y donde podías guardar aproximadamente 10 fotos de 640×480 en buena resolución (y esto es un decir).

SUPER NES

Esto es, Super Nintendo Entertainment System. La consola de 16-bit que nunca pudo técnicamente contra el SEGA Génesis, pero que terminó matándolo de todos modos por medio de un impresionante arsenal de títulos.

snesdeck.jpg
Recuerdo cuando lo conecté por primera vez: WOW, se ve “bien real”, mira, mira, como en las maquinitas. Además, el Super NES no disponía de una pistola con la que mágicamente matabas patos o destruías discos de porcelana pixelados, sino de una bazooka con la que matabas (eliminabas, decían en las revistas de la época para no sonar tan rudos) a tus enemigos.

El acabose fué la salida del Street Fighter II de capcom para el Super NES. Un juego de gran éxito en las arcades, ahora en tu casa. Ha-do-ken y Sonic Boom, mas los calzones azules de Shun-Li en la comodidad de tu sillón. Amé esa consola.

En realidad los controles eran totalmente incómodos. Recuerdo jugar al street fighter cambiando de posición el control en mi mano, con lo que mi hermano sabía si iba a hacer un ha-do-ken, un sho-riu-ken o un combo “sinchero” con sólo ver cómo tenía tomado el control. Eso cuando lograbamos, después de dos años de uso, que el cartucho fuera aceptado por la consola después de echarle mucho aire con babas via bucal.

En fin, estos son sólo dos ejemplos, como estos hay muchos. A ver cuanto tarda el iPhone en ser una reliquia de la nueva era.

¿Cuál es tu reliquia favorita?

Posts anteriores