Geek & Roll » 2007 » February

Haciendo peticiones asíncronas entre distintos dominios (cross-domain) utilizando GWT

Cesar February 27th, 2007 javascript, programacion 3 comentarios

(o como hacer que el modo hosted se lleve bien con php)

Nota
Este tutorial es centrado en Linux, pero no veo porque no pueda ser aplicado a GWT bajo Windows o OSX. Después de todo, ¡es Java! También es importante notar que esta solución es para hacer que el modo hosted trabaje con una instalación local de php. Si lo que quieres es utilizar APIs populares como Google Maps o Yahoo! Search entonces esto no es para ti. De hecho se puede hacer que funcione pero solamente serviría para modo hosted ya que cuando la aplicación es emplazada, se pierde el contenedor tomcat (donde sucede la magia).

Introducción
GWT incluye en sus propias clases la clase HTTPRequest. Esta clase se utiliza para hacer peticiones HTTP asíncronas al servidor de origen. La clase HTTPRequest tiene 4 métodos estáticos que manejan tanto peticiones GET y POST y todos los 4 métodos regresan false si la petición falla.

El escenario típico del uso de HTTPRequest es comunicarse con una API remota (como Google Maps o Yahoo! Search) o con tus propios scripts del lado del servidor (php, asp, jsp, etc). En cualquier caso, el usar el modo hosted de GWT para hacer llamadas asíncronas NO será algo facil a menos que tu petición sea dirigida al mismo dominio (otro puerto cuenta como un dominio distinto y por lo tanto localhost y localhost:8888 se encuentran en dominios distintos). Para obscurecer el horizonte aún más, el modo hosted de GWT corre un servidor tomcat embebido y por lo tanto si tienes algunos scripts php locales y quieres llamarlos utilizando HTTPRequest va a fallar, ya que el servidor de origen (el servidor que tiene el script que hace la petición) es tomcat corriendo en un puerto distinto de tu servidor php (típicamente apache en el puerto 80).

Yo creo que la solución presentada aquí es la mejor opción de entre otras alternativas, dado que solo modifica el servidor tomcat embebido en GWT y no el servidor que mantiene los scripts o el servidor de emplazamiento. Además, también es posible hacerlo sin la necesidad de modificar la URL pedida. Pero suficiente teoría, pasemos al código.
Leer el resto de este post.

Herramientas de Diagramación UML

Adrian February 27th, 2007 UML, utilidades 6 comentarios

Si bien alguna vez como programador te ha tocado entrar en el bello mundo de la diagramación en UML -lo cual considero un reto llevar a cabo finamente y cubriendo el total de la información de requerimientos- talvez te has topado con la limitante o la incomodidad de trabajar con herramientas que consideras batallosas de usar o incompletas en su contenido. Porque algun día les tocara diagramar casos de uso, diagramas de secuencia, de colaboracion, de implementación, de flujo, etc.. Chequemos rapidamente algunas de las herramientas de las cuales me he apoyado y otras de las cuales he escuchado comentarios:

SMART DRAW: Esta herramienta es algo flexible, sirve para casi cualquier tipo de diagrama. A pesar de que esta herramienta nos dice que es facil el dibujar y diagramar se pueden encontrar con algunas dificultades pero generalizando podemo decir que es buena. Lo malo o sarra por decir así es que no es Freeware asi que si la pagan podran hacer uso de toda la funcionalidad como exportar en jpg y cosas asi.

http://www.smartdraw.com/

UMBRELLO: esta herramienta está muy bien (es solo para linux, de KDE, pero funciona sin problemas en otros escritorios, gnome, xfce, etc…). además este programa permite generar código a partir de los diagramas, bueno, claro que sólo las plantillas pero eso cuenta mucho. también tiene la funcionalidad de generar documentación exportando a HTML. en general tiene muy buena funcionalidad, la cual pueden consultar en la página de UMBRELLO

ArgoUML: es un entorno gráfico de diseño, desarrollo y documentación de software orientado a objetos. Aunque el programa todavía se encuentra en fase de desarrollo, ArgoUML soporta UML1.3 y permite crear y guardar la mayoría de los nueve diagramas UML estándar, así como generar diagramas UML a partir de código Java compilado. ArgoUML está en java, por lo tanto, funciona para windows como para linux.

http://argouml.tigris.org/

StarUML: sumamente completo diagramador de proyectos UML, de hecho es considerado la competencia al Rational Rose, y sinceramente no deja mal a los que asá piensan, es sumamente facil hacer los diagramas y lo mas importante es rápido.

Es Open Source y permite incluso exportar el diseño a codigo ya sea en Java o en C. Si tienen un proyecto al cual tienen que dedicarle esfuerzo y tiempo para que salga de lo mejor este es la herramienta.

http://www.staruml.com

Civilization Ajaxificado

Cesar February 26th, 2007 aplicaciones, javascript Haz un comentario

Listado en varios sitios especializados en videojuegos se encuentra “Vox Imperium“, un clon del juego Civilization. Lo realmente impresionante del asunto es que se encuentra hecho totalmente con JavaScript (AJAX).

Los bloggers de Ajaxian nos dicen que “te diviertas viendo el código fuente de la página principal del juego”.

Más aún, el primer torneo de Vox Imperium se encuentra abierto en estos momentos.

Debuggeando Código Generado por JavaScript

Axel February 26th, 2007 browsers, javascript, programacion, tips 3 comentarios

Al debuggear una página generada parcial o totalmente por javascript, como aquellas que llevan manipulación de elementos via DOM, y otras linduras por el estilo (no es sarcasmo, es que es lindo :P), muchas veces tenemos que hacerlo a prueba y error, pues el “mostrar código fuente” de los browsers no muestran los cambios en el documento hechos por JavaScript.

La solución: Internet Explorer y este script:

javascript:window.clipboardData.setData('Text', window.document.body.innerHTML)

¿Qué hacer? Al estar visualizando la página en el navegador, pegas esa linea decódigo en la barra de dirección y presionas enter.

El contenido de la página debe cambiar por un “true”. Si es así, la cosa ha funcionado, y el código generado está ahora en el portapapeles listo para pegarlo en tu editor favorito :)

De nada.

Encuentra las incoherencias

Cesar February 23rd, 2007 lol 2 comentarios

Mensaje incoherente
Encuentren las incoherencias en la siguiente captura del siempre atinado Windows…

La historia del comando PING

Cesar February 22nd, 2007 geekandroll Haz un comentario

Prácticamente todos los que hemos trabajado con sistemas en red alguna vez hemos utilizado el comando ‘ping’. Ya sea para verificar que una computadora puede “ver” a otra, o para determinar que tan rápida (o lenta) es la comunicación entre las dos computadoras. Sin importar si usamos Windows o algún sabor de UNIX, este comando se encuentra en nuestro sistema operativo por defecto.

Bueno como todo en esta vida, el comando UNIX ‘ping’ tiene su historia y una muy interesante. ¿Alguna vez se han preguntado porque se llama ping? (traducido de la historia del autor de ‘ping’)

El nombre viene del sonido que hace un sonar, inspirado por el principio de localización por eco. En universidad hice mucho modelado de sistemas de sonar y radar, por lo tanto la analogía de “ciberespacio” me pareció muy correcta. Es exactamente el mismo paradigma aplicado a un nuevo dominio del problema: ping usa paquetes ICMP ECHO_REQUEST y ECHO_REPLY enviados con cierta frecuencia para probar la “distancia” entre dos computadoras.

¿Pero como funciona ping?

Ping usa ICMP (Internet Control Message Protocol) el cual es un protocolo de la suite que forman a Internet. Se dice que ICMP se encuentra entre las capas de transporte (donde está TCP y UDP) y la de red (donde está IP). La peculiaridad de ICMP es que este protocolo no posee su propia unidad de datos, a diferencia de TCP que tiene sus paquetes, o IP que tiene sus datagramas. Los mensajes ICMP se envían embebidos en los datagramas IP.

La palabra ‘Control’ en ICMP indica que de alguna manera ICMP sirve para manejar algo, ¿pero que? ICMP se utiliza principalmente para notificar de errores ocurridos en el ruteo de paquetes. Digamos que es una manera de que el centro (core) de la red notifique alguna situación anómala como congestionamiento, o que algún host se encuentra caído en ese momento.

ICMP normalmente no es utilizado directamente por aplicaciones, pero una clara excepción a la regla es ‘ping’ (y traceroute también por cierto). De una manera bastante “hacky”, lo que hace ‘ping’ es construir datagramas IP con un TTL muy bajo, para que cuando el datagrama llegue al primer ruteador, este genere un mensaje ICMP del tipo “TTL excedido”. Cuando el mensaje ICMP llega al cliente (el comando ping) el ruteador ha descubierto su dirección IP y por medio de DNS se puede saber su nombre.

Y la historia de porque fue programado (también traducido del original):

Mi ímpetu original para programar PING para un sistema 4.2a BSD UNIX vino de un comentario del Dr. Dave Mills en Julio de 1983 mientras atendíamos una sesión de DARPA en Noruega, en la cual él describió un trabajo que había hecho en sus sistemas “Fuzzball” LSI-11 para medir el retardo de un camino utilizando paquetes eco ICMP regulares.

En Diciembre de 1983 me encontré con un comportamiento extraño de la red IP en BRL. Recordando los comentarios del Dr. Mills, rápidamente programé el programa PING, que consistía en abrir un socket Berkeley ICMP SOCK_RAW AF_INET. El código compiló bien, pero no funcionaba — ¡no había soporte del kernel para sockets ICMP crudos! Programé entonces el soporte para el kernel y terminé todo el trabajo antes del amanecer. Sin embargo, Chuck Kennedy (alias “Kermit”) había encontrado y arreglado el hardware de red problemático antes de que pudiera enviar mi primer paquete “ping”. Pero lo he usado algunas veces desde aquel entonces. Si hubiera sabido que ese programa sería mi más famoso trabajo en mi vida, probablemente hubiera trabajado en él por más tiempo y agregado algunas opciones extra.

Para más cosas ‘ping’, pueden visitar el sitio del autor de esta imprescindible herramienta de red. Además de la historia original y el código fuente para ‘ping’, se encontrarán con una reseña del libro para niños: “La historia sobre PING” que trata de un pato (nada que ver con redes) pero aún así un cliente de Amazon hizo un comentario bastante gracioso sobre el libro.

Así que ya lo saben. La próxima vez que usen ‘ping’, piensen en su lado humano. :)

¡Hasta la proxima!

ESR se deshace de Fedora a favor de Ubuntu

Cesar February 21st, 2007 FLOSS, linux 1 comentario

Con la novedad de que Eric S. Raymond publica que tuvo demasiado con Red Hat / Fedora y se cambia a Ubuntu. ¿La razón? lo siguiente es en sus propias palabras (traducido al español):

Después de trece años como un usuario leal de Red Hat y Fedora, hoy alcancé mi límite, cuando un intento de actualizar un (1) paquete me lanzó a un maratón de cuatro horas de cazar dependencias, del que al final tratando de sacarle la vuelta a un problema trivial de conflictos de archivos dejó mi sistema inutilizable.

El señor Raymond después habla de la experiencia de instalar Ubuntu Edgy Eft:

Esta tarde, instalé Edgy Eft en mi computadora principal de desarrollo — de un CD, no cinco. En menos de un trabajo de tres horas me fue posible recrear las características clave de mis herramientas de uso diario. La actualización en masa después de la instalación, un proceso siempre temido en Fedora, se realizó sin problema alguno.

Y eso, amigos míos, son las ventajas de un administrador de paquetes bien pensado (y bien programado) además de una arquitectura sólida como la roca. Estoy hablando de apt y Debian por supuesto.

¿Que quien es ESR? nada más y nada menos que el autor de “The Cathedral and the Bazaar”, programador de fetchmail, una figura política controversial, autoproclamado embajador del Software Libre.

Compilador para Visual Basic .NET en Linux

Cesar February 20th, 2007 FLOSS, linux, noticias, programacion Haz un comentario

El proyecto Mono ha anunciado el día de hoy 20 de Febrero que han desarrollado un compilador para Visual Basic .NET. Lo anterior significa que es posible tomar aplicaciones desarrolladas en Windows, compilarlas y ejecutarlas en Linux.

Por más que exprese mi desagrado por Visual Basic (en todas sus variantes), una parte importante de la población de programadores solo tienen experiencia en este lenguaje y muchas empresas desarrollan sus programas también en Visual Basic, por lo que tener un compilador en Linux posibilita la migración (algo muy bueno).

La nota completa en DesktopLinux.com

Tux en Ciudad Obregón y FLOSS en las primarias

Axel February 20th, 2007 FLOSS, eventos 2 comentarios

Esta es una noticia un tanto local, lo que no le quita el caracter de muy buena. Resulta que el profesor del ITSON Humberto Cabada estuvo en la Tercera Conferencia Internacional de Software Libre, en Badajoz España, y este miércoles 21 de Febrero (o sea mañana) a las 6 p.m. estará dando una plática en el Aula Magna del ITSON campus náinari, en donde expondrá sus experiencias.

Nos comenta también que en la plática se anunciarán las siguientes cosas:

  1. La creación del grupo de usuarios de linux de Ciudad Obregón
  2. El programa de prácticas profesionales basadas en software libre en escuelas primarias

Más información en el Blog LSIA

Parte del staff de geek & roll estará presente en el evento. Ahí nos vemos.

La OpenCoquita

Cesar February 19th, 2007 noticias Haz un comentario

Si te gusta la Coca Cola, pero cada vez que te tomas una sientes que estas cometiendo una aberración contra ti (no por el azúcar, sino porque la receta de la Coca Cola no es libre) no te preocupes más.

En este blog proponen la receta para un refresco de Cola, totalmente free, libre, gratis bajo la licencia GPL.

Ya son las 5, hora de la OpenCoquita!

(Vía VivaLinux!)

Posts anteriores