jueves, 19 de agosto de 2010

Acerca de los WebSockets

Websockets es una de las tecnologías más interesantes de HTML5, mediante esta tecnología se termina uno de los grandes problemas de las aplicaciones web la falta de estado! Un desarrollador a partir de ahora podrá crear conexiones persistentes con el servidor de aplicaciones y realizar toda clase de cosas convirtiendo a la página web en un cliente común y corriente!

Por ello el desarrollador web deberá comenzar a pensar de otra forma, perderá sentido pensar en "el tiempo de request", la sesión web con su famosa cookie, no mas arquitectura mvc (tal cual la conocemos ahora y la usamos en la web) en pocas palabras, una revolución total. Hoy podemos utilizar esta tecnología si disponemos de dos cosas:
  • Un browser compatible (como chrome o safari).
  • Un servidor compatible.
Existen varias implementaciones del protocolo websockets (aunque todavía está en desarrollo), como muchos se lo estarán esperando, si vas a probar esto en java, podrás usar mi framework "websockets4j" disponible para descarga en jar en websockets4j.googlecode.com.

Bueno, ahora sin mas preámbulos, a lo importante. Para conectarnos al servidor desde Javascript necesitamos conocer dos cosas:
  • La url de conexión.
  • El subprotocolo a utilizar. (opcional)
La url de conexión indica a que servidor nos conectaremos, y tiene la siguiente forma:
ws (o wss) ://:puerto/recurso.

Si utilizamos ws, la conexión será sobre un canal desencriptado, y si utilizamos wss la conexión será utilizando "Transport Layer Security" o TLS. (de momento mi framework de websockets no soporta wss).

El subprotocolo, es para ser utilizado por terceros, usualmente se utilizará con una librería de javascript y un servidor del mismo vendedor.

La conexión puede tener tres estados posibles: Connecting, Opened y Closed. El siguiente código muestra la interfaz de WebSocket.

interface WebSocket {
readonly attribute DOMString URL;

// ready state
const unsigned short CONNECTING = 0;
const unsigned short OPEN = 1;
const unsigned short CLOSED = 2;
readonly attribute unsigned short readyState;
readonly attribute unsigned long bufferedAmount;

// networking
attribute Function onopen;
attribute Function onmessage;
attribute Function onclose;
boolean send(in DOMString data);
void close();
};
WebSocket implements EventTarget;
Los mensajes al cliente serán recibidos por eventos, una función javascript será invocada cuando un mensaje llegue.

La trama tiene forma de caracteres unicode UTF-8 y se recibirá en forma de mensajes que pueden tener longitud variable.

Para realizar la conexión, basta con la siguiente línea Javascript:

var socket = new WebSocket("ws://some.host:10123/resource", [subprotocol]);

Una vez realizado esto, podemos setearle funciones para los cambios de estado:

socket.onopen = function() { alert("Opened!") };
socket.onmessage = function (e) { alert("Message: "+e.data); };
socket.onclose = function() { alert("Closed!") };
socket.onerror = function() { alert("Error!") };

Para enviar un mensaje, simplemente podremos utilizar la función "send" del socket.
Para cerrar la conexión, podremos utilizar la función "close" del socket.

Con esto concluyo esta guía sobre esta tecnología que va a cambiar a la web para siempre.

Saludos!

martes, 17 de agosto de 2010

Pesadilla Microsoft: Internet Explorer

Esta entrada va a ser con el contenido en una página especial de mi sitio web donde explica por qué los usuarios no deberían utilizar internet explorer de una forma muy sutil:


Internet explorer es por lejos el peor navegador del mundo y aún así el mas utilizado, gracias Bill por tanta magia!

domingo, 8 de agosto de 2010

Framework de WebSockets: websockets4j

Este fin de semana he estado trabajando duro en un framework para WebSockets que sea conectable a Glassfish 3 y Tomcat 7. Aunque no es solamente conectable a eso, sino que mientras el servidor tenga permitida la creación de hilos y levantar ServerSockets, esto va a andar. El framework es open source con licencia Apache 2, bien permisiva!!.

El framework puede ser descargado de: http://websockets4j.googlecode.com y tiene como interesante que soporta la versión 75 y 76 del borrador del estándar de WebSockets, trataré de irlo actualizando a medida que los browsers vayan soportando versiones nuevas del estándar. Por ahora Google Chrome soporta la versión 75 y Safari 5 la versión 76.
Les dejo acá un videito de una aplicación de chat de ejemplo que hice para demostrar el funcionamiento del framework. Está en inglés porque pertenece al sitio de mi proyecto.
Dicen.. que se puede ver en hd.




Un dato curioso es que el framework no está hecho para funcionar con servlets incluso cuando el handshaking del protocolo es parecido a una solicitud http, bien, la especificación de servlets dice claramente que los servlets son para protocolos de solicitud y respuesta, como el HTTP, pero los websockets se comportan de forma muy distinta. Espero que le sirva a alguno, y pronto estaré trabajando en agregarle soporte para TLS.

Saludos!!

sábado, 7 de agosto de 2010

Pesadilla Microsoft: FAT32


Comienzo esta sección del blog digamos, este tag llamado Pesadilla Microsoft donde pienso escribir en la medida de lo posible como microsoft arruina el progreso de la computación simplemente por ser el sistema operativo que más se usa.

Para empezar, voy a hablar de un problema que debe ser común en muchas personas y que no deben saber que pasa. ¿Qué pasa cuando queremos grabar en un flash drive archivos de 4 gigas o mas? La respuesta puede ser variada, me dice que el pen está lleno, me tira error, etc, pero la realidad es muy simple FAT 32 no admite archivos de 4 gigas o mas.

El gran problema es que hoy en dia los archivos pesan mucho mas que eso. Por ejemplo, podría ser una película en alta definición que queremos grabar en un pendrive para enchufarla a nuestro dvd y verla en la tele. Bueno amigos, lamento decepcionarlos, pero los flash drives se formatean en FAT 32 porque sino no pueden ser capaces de reproducir música (si es que son mp3) o el dvd ni los va a leer.

¿Por que eligieron FAT 32 los tontos fabricantes?
La respuesta a esta pregunta por parte de un adepto a microsoft podría ser "porque el sistema NTFS le sobra por todos lados al dispositivo" y es válido, una respuesta de criterio, pero los adeptos a otros sistemas operativos me dirán "existen un montonaso de sistemas de archivos" y si, totalmente cierto, pero olvidamos el detalle de que para fabricar un dispositivo que sea rentable, tiene que poder usarse en windows "out of the box" (o sea, de movida) porque sino se venden muy pocos, y windows actualmente soporta sólo 2 sistemas de archivos (excluyendo a ISO 9660 y UDF que son para cd/dvd), NTFS y FAT 32. Entonces finalmente aplicando el criterio los diseñadores de los dispositivos llegaron a la única opción: FAT 32.

Claro está que podrían haber utilizado un sistema de archivos apropiado y escalable pero escribir un driver de sistema de archivos para windows no es una tarea trivial (y a veces resulta imposible), porque sino podríamos disfrutar de drivers para sistemas de archivos buenos como reiserfs, ext4 y HFS.

Conclusión: Por malas decisiones en el diseño de windows, nosotros no podemos grabar archivos de 4 gigas o mas en nuestros pendrives. Y esto habría sido muy fácil de evitar si en windows se pudieran instalar fácilmente drivers de sistemas de archivos como pasa en mac o en linux (con Fuse o MacFuse).

Esto es una de las formas en que microsoft nos fastidia la vida.

Saludos!

viernes, 6 de agosto de 2010

Por qué son tan malos los productos de Microsoft?

Hace algún tiempo conocí la consola xbox 360, realmente es muy mala, hace un ruido de ventiladores infernal y se cuelga a cada rato, y yo me pregunto:
¿No está harta ya la gente de lidiar con productos de mala calidad?
Realmente, en serio y no jodo, siendo usuario de linux o de mac, una persona básicamente puede hacer lo que quiere en su computadora sin tener que preocuparse cosas como: virus, formateadas, pantallas azules, lentitud en la operación, ver mal los sitios web, tener un sistema operativo innecesariamente pesado que ni siquiera se adapta bien a las pantallas de las netbooks.

Hoy en día la vida de una persona normal pasa detrás de un browser, y tanto en linux como en mac tenemos a nuestra disposición los mejores browsers que puede ofrecer el mercado: Chrome, Safari y Firefox. En este sentido, un aspecto indignante es que gracias a microsoft es que la web evoluciona tan lentamente, ya que la mayoría de las personas utilizan internet explorer y éste evoluciona muy lentamente y de una forma super inestándar.

Por otro lado, a la gente le gusta tener sus configuraciones, fondo de pantalla, correo y documentos organizados perfectamente y realmente después de cada formateada, es un fastidio tener que volver a dejar todo como estaba, realmente ¿quién puede querer eso?

La única cosa "buena" que ha hecho microsoft en su existencia ha sido su planilla de cálculo, y le pongo comillas porque es tán versátil que la gente lo termina usando para cosas que no tienen sentido, pero bueno, la mitad de la información del mundo, si no es que más, está guardada en esa maldita planilla.

Otra cosa que me molesta es que los programas de microsoft son innecesariamente difíciles de usar, la interfaz de usuario de windows por ejemplo no le da ninguna facilidad a las personas que saben que quieren y quieren llegar rápido, además no entienden que las personas hacen muchas cosas con las ventanas, y no proveen ninguna forma útil de cambiar entre ellas. Además tratar de encontrar algo en el bendito panel de control es una pesadilla.

El set básico de aplicaciones de windows es super apestoso, en efecto, las aplicaciones básicas no sirven absolutamente para nada desde el browser hasta el editor de texto. El paint ha pasado por tantas versiones y no ha ganado un miserable feature, solo han cambiado las barras de herramientas de sheridan toolbars a Ribbon! PUAJ!! Sólo sirve para pintarle bigotes a la gente de las fotos.

Otra cosa apestosa son sus herramientas de desarrollo, sólo sirven para lograr productos de gama baja y encima hay que pagarlas y salen carísimas. Realmente si nos ponemos a comparar con linux en donde tenemos todo un set de lenguajes y frameworks multiplataforma con los que podemos hacer todo tipo de aplicaciones, de todas formas y colores y escalables a todos los mercados. Un buen programador .net es como los gatos esos que los chinos meten en un frasco y los mantienen vivos, además obligan a sus usuarios a usar productos de microsoft. Apple, si bien hace esto, al menos nos da gratis el kit de desarrollo.

En cuanto a hardware, las cosas de microsoft andan bien... al principio, pero se deterioran rápidamente y pronto hay que tirarlas a la basura, ¿quien no se acuerda del famoso teclado ergonómico que venía en ángulo?

Finalmente la suite de oficina, que engorroso de usar es por dios!! uno no es capaz de concentrarse en lo que está haciendo porque lo que uno quiere hacer está siempre como a 20 clicks de distancia, por dios!! Y encima de eso, si grabamos nuestros documentos en su formato no los vamos a poder ver bien en ninguna herramienta de oficina como la gente, lo peor de estas "herramientas" son su super inestabilidad, no vaya a ser que estemos haciendo algo importante y el programa se cierre cuando queremos guardar, pero si! esas cosas pasan en el mundo de bill. Otra cosa que es impresentable es la aplicación web "Sharepoint" por dios!! es una planilla de excel hecha web y que encima no anda en otro browser que no sea internet explorer, el cual es la peor basura que puede haber tocado una pc.

Bueno, eso es todo por ahora, jajaja seguro me deben estar imaginando como si fuera violencia rivas. Quieranse y no usen productos de microsoft, van a ver como llega la felicidad, al acto!

Saludos!!

Encuesta de Sistemas Operativos

Hace tiempo ya cerró la encuesta de sistemas operativos que hice en el blog, realmente los resultados no fueron tan sorprendentes salvo porque la mayoría utilizaba linux, lo cual no es tan raro ya que la mayoría de mis amigos usan linux. De todas formas, es un mensaje de esperanza de que algún día, se dejen de usar los productos de microsoft.

Les dejo acá la imágen.

Saludos!

Mañana Nevada en Mendoza

Acá dejo cómo se veía mi jardín la mañana nevada del 15 de Julio, la verdad que daba fiaquita salir de Casa.