19 sept 2007

Patrones de diseño

Strategy Pattern


Define una familia de algoritmos, encapsulando cada uno de ellos, permitiendo ser intercambiados entre si. Permite que el algoritmo varie independientemiente de quien lo utiliza




Observer Pattern


Define una dependencia uno-a-muchos entre objetos. En la cual, cuando un objeto (subject) cambia de estado, todos los que dependen de el (observers) son notificados automaticamente





Decorator Pattern


Agrega funcionalidad a un objeto dinamicamente. Es una alternativa flexible a realiza sub-clases para extender funcionalidad.
Este patron de diseño es utilizado frecuentemente en conjunto con el FactoryMethod Pattern y el Builder Pattern.




Factory Method Pattern


Define la interfaz para crear un objeto, pero deja a las sub-clases determinar que clase instanciar. Permite delegar la instanciacion a las sub-clases


Firebird embebido - monousuario

Introducción


El motivo del presente post es comentar mi experiencia con Firebird, y algunas conclusiones a las que he llegado. No pretendo dar una clase de Firebird, sino comentar muy por encima algunas ventajas de trabajar con este motor de base de datos. Me enfocare principalmente en la utilización de Firebird embebido.


¿Que es Firebird?


Firebird es un potente motor de base de datos que implementa toda la funcionalidad que le podemos pedir a este tipo de sistemas (triggers, stored procedures, vistar, etc.). Es muy rápido y consume escasos recursos (muchos menos recursos que otros motores de base de datos mucho mas difundidos)


Firebird se caracteriza por poder ser utilizado de dos formas, como motor tradicional de base de datos que espera conexiones desde las computadoras clientes (similar aMySQL, Oracle, MS SQL Server, etc.), y como sistema de base de datos embebido en el cual solo una aplicación local puede acceder a la base de datos (similar a Access).



Firebird como servidor


Firebird instalado como servidor permite acceder concurrentemente a varios usuarios distribuidos de una manera muy eficaz a traves de una conexion TCP. La instalacion y puesta en marcha de un servidor Firebird es muy rápida, es decir, no nos obliga a tener que realizar una configuración exhaustiva del servidor (si noqueremos realizarlo).



Firebird embebido


Firebird embebido permite utilizar un archivo de base de datos local (de Firebird) sin necesidad de instalar el servidor de base de datos. Esto nos permite poder distribuir aplicaciones sin necesidad de instalar componente extras, solo debemos copiar el archivo con la base de datos y el driver para la conexion embebida (generalmente llamado fbclient.dll o fbembed.dll) y listo, ya tenemos una aplicacion con base de datos corriendo.
Las desventajas que tiene esta forma de operar con respecto al servidor son:



  • No permite conexiones remotas
  • Solo un usuario/aplicacion pueden estar accediendo a la base de datos (porque la misma queda bloqueada cuando es abierta).
  • No realiza la autenticación de usuarios (es decir, cualquier aplicación puede acceder a la base de datos sin necesidad de poseer usuario y passwords válidos)

Hasta hace un tiempo pensaba que una de las mejores formas de distribuir una aplicacion monousuario, y que no haga uso intensivo de la base de datos, era Access. Actualmente creo que Firebird es una muy buena alternativa, y en varios puntos mucho mas favorable (al menos nos evitamos varios dolores de cabeza en la distribución)


Encontre las siguientes ventajas desde que trabajo con Firebird:



  • Firebird no necesita tener instalado una serie de componentes, como pueden ser MDAC, JET, etc.
  • Firebird soporta todo lo que necesitamos de un motor de base de datos permitiendonos consultas mucho mas complejas.
  • Firebird tiene un muy buen manejo de datos aún cuando poseemos gran cantidad de datos.
  • Firebird es totalmente gratuito tanto para uso personal, como comercial.
  • Firebird funciona en linux.
  • Firebird surge de InterBase lo que nos permite utilizar los componentes de Interbase para acceder a bases de datos Firebird.

Si bien son varias las ventajas que nos plantea este motor de base de datos con respecto a otras alternativas, principalmente Access, tiene dos desventajas que he identificado para proyectos muy chicos:



  • No todos los programadores estan acostumbrados a trabajar con Firebird
  • Es recomendable instalar un "Manager" para administrar y probar ciertas consultas más rapidamente.

Mi conclusión


Yo siempre pienso que no existe una solución universal (una silver bullet) para resolver los problemas, es por eso que ante cada proyecto debemos decidir cual es la mejor alternativa para nuestros stakeholders. Firebird termina siendo una posibilidad interesante en el abanico de opciones a la hora de decidir donde guardaremos nuestros datos, tanto para aplicaciónes monousuario y que funcionen en una única computadora, o para aplicaciones distribuidas con un uso mucho más intensivo de la base de datos.

Frameworks para Java

Frameworks para Java


Algunas conclusiones recogidas sobre la experiencia en los frameworks


Struts


A favor


Bastante probado, mucha documentacion, muchos ejemplos, aun se siguen desarrollando aplicaciones, ampliamente probado. Se debe tener un conocimiento, aunque sea basico, de sesiones, y http.


En contra


Los DTO (Data Transfer Objects) son un dolor de cabeza. Se deben mapear algunos tipos de datos a string. Muchas veces se termina teniendo los objetos de negocio replicados, pero con Strings. Lo cual implica un trabajo extra por cada objeto. El codigo html generado es muy dependiente de struts. Todos las etiquedas son propias de struts. No se desarrolla mas sobre el mismo.


Spring MVC


Aun no he relizado pruebas exhaustivas sobre el mismo, solo algunos ejemplos muy sencillos para probarlo. Parece ser muy potente y esta en constante desarrollo. No me gusta que es bastante similar a struts como maneja las acciones. Se incorporan constantemente nuevas funcionalidades. Facil de exportar el contenido a diferentes formatos. Me parece util para integrarlo con tapestry en algunos puntos.


Tapestry


Hasta ahora es el framework que mas me ha convencido en cuanto a su arquitectura. Como se dice por alli, para usar Tapestry hay que "desaprender" todo lo que se conoce sobre otros frameworks como struts.


Ventajas


Muy buena arquitectura. Errores muy bien detallados. El codigo html es muy facil de leer, y si se utilizan componentes, casi ni se nota que hay algo mas en el. Muy buena separacion de capas. No es necesario conocer demasiado de http (aunque es recomendable cuando se avanza). Hay muchos componentes.


Desventajas


La documentacion no es demasiado buena. Hay que probar mas que leer. Pocos ejemplos al respecto (Este quizas es el mayor problema). Lleva un tiempo adaptarse al framework. El testing no es tan facil (aunque ya hay objetos que permiten realizar el testing de las clases abstractas con las cuales trabaja).


Conclusión


Por el momento me parece que la mejor opcion es utilizar Tapestry, ya que me parece una muy buena alternativa, la cual esta en crecimiento. En unos años sera junto con spring mvc, a mi entender, una de las opciones mas fuertes (quizas tanto como es hoy struts). Para la union es aconsejable utilizar spring (no el mvc), y para la persistencia hibernate. Estos tres frameworks traen muchas ventajas a los proyectos. Los dolores principales de cabeza se presentan con Hibernate y la perdida de las sesiones, y/o los objetos que se inicializan de manera "lazy".

11 sept 2007

Rokr e2

Motorola Rokr E2



El Rokr E2 es el sucesor que ha lanzado al mercado Motorola, para suplir ciertas "desventajas" del su antecesor el Rokr E1. El nuevo equipo trae ciertas mejoras y tiene caracteristicas muy interesantes, como el MotoID (que nos permite identificar un tema de musica que estemos escuchando en cualquier lado) y su sistema operativo Linux.

Características técnicas más relevantes


  • Display de 240x320 pixels de 256.000 colores
  • Sistema operativo Linux
  • Memoria ampliable del tipo SD
  • Bluetooth
  • GPRS
  • Camara de 1.3MP

Algunos detalles


En uno de los laterales del teléfono se dispone de botones para bajar y subir el volumen, reproducir y pausar un tema, y atrasar y adelantar los temas. Esto lo hace muy comodo al momento de escuchar musica, no hace falta que miremos la pantalla y usemos el selector para hacer estas operaciones, simplemente usamos la botonera lateral. Estos botones laterales hacen que sea similar a un mp3 player.

Quisiera detenerme en el sistema operativo que trae el teléfono, no en si por que sea Linux (a pesar que me guste), sino porque nos permite realizarle modificaciones al sistema operativo, compilar el código fuente modificado, y incorporarselo al telefono. Es decir podemos "tunear" el sistema operativo que utilizamos. Es mas existen muchas opciones de sistemas operativos basados en la versión original, con diferentes caracteristicas, overclocking, más funciones, nuevas aplicaciones, etc. Realmente es muy interesante para poder experimentar.
El teléfono tiene la opción de conectarlo a una computadora por el cable USB y que la conexión sea detectada como una conexión de red, esto nos permite poder acceder al telefono por TELNET, y SAMBA.

Para experimentar es un muy buen equipo. Tiene muchas opciones para poder adaptarlo a nuestras necesidades y "tunearlo".

Ya en estos dias uno termina hablando mas de las funcionalidades extras que trae el equipo y se termina olvidando que es un telefono, por lo tanto, si funciona como telefono. La señal es bastante buena, pero la autonomía de la bateria podría ser mejor. En un uso normal (para mi) la bateria dura 1,5 dias a 2.

Mi conclusión


El Rokr E2 es un muy buen teléfono, que esta muy equipado, el sonido es de los mejores (supera el Sony W300, W800, y al Nokia 6131. Estos datos son tomados de un estudio que se realizo en EEUU). Para todos aquellos que quieren un teléfono equipado de gama media, esta es una muy buena opción. Tiene camara, muy buen sonido, bluetooth, y posibilidad de adaptar y desarrollar software especifico.

14 may 2007

Noticia alarmante sobre cifras de SPAM en Argentina

"En Argentina, 93% de correos electrónicos son “spams”" así se titula una nota de la revista Mercado que leí hoy. Creo que es un porcentaje bastante preocupante, quiere decir que casí todo el ancho de banda que utiliza el correo electrónico nacional (Argentina) esta dedicado a SPAM.

¿Cuales son las desventajas del SPAM?

Los defensores del SPAM dicen que el mismo no molesta a nadie, y que si uno no quiere verlo, lo borra y listo, pero se olvidan de varios puntos, como son:
  • El SPAM o correo masivo no solicitado, consume recursos que pagamos todos. Tomando el porcentaje anterior puedo decir que estoy financiando el negocio de los que hacen SPAM al tener que pagar una conexión a internet, al igual que usted que esta leyendo este post.
  • Gracias a los que hacen SPAM en muchos paises el dominio .ar esta bloqueado. ¿Por qué? porque están cansados de recibir SPAM de direcciones de correo de Argentina.
  • Las personas que defienden el SPAM nos dicen "si no querés ver el e-mail, lo borras y listo", esto sería logico y facilmente practicable si recibieramos uno o dos e-mails por día de SPAM, por desgracia no es así (al menos no en mi caso). Recibo unos cuantos e-mails por día de SPAM, quizás uno de cada uno de esos que dicen "si no querés ver el e-mail, lo borras y listo". Además que muchos de ellos uno los tiene que abrir para detectar si es SPAM o no (porque tienden a hacer que los títulos nos confundan).
  • Las personas que no hacemos SPAM tenemos que estar rogando que nuestros e-mails lleguen a nuestros amigos o clientes, porque muchas veces quedán en el camino por los filtros ANTI-SPAM.

¿Como lo podemos combatir?

Es un fenomeno que cada día tiene mayor crecimiento, para la desgracia de aquellos que nos molesta. Pero aún nos quedan ciertas alternativas para luchar contra ellos:
  • Gracias a la ley de protección de datos personales 25.326 (Habeas Data) podemos solicitar que nos remuevan de su lista de SPAM y eliminen todos los datos que tengan nuestros. Gracias a dicha ley, ellos están imposibilitados de vender nuestra información a otros que hacen SPAM.
  • No contratemos empresas que se dediquen a realizar SPAM, diciendonos que es la forma más económica de realizar publicidad. No comprometamos la imagen de nuestra empresa.
  • Cuando realizamos un forward/re-envío de un e-mail eliminemos las direcciones de e-mail a las cuales anteriormente estaba dirigido, no le proporcionemos direcciones de e-mail a los que hacen SPAM. Generalmente utilizan nuestra buena fé diciendonos que si enviamos un e-mail a 50 personas nos ganamos XXXX, o que por cada e-mail una empresa XXX ayudará a una persona con YYY problema (si tiene dudas, llame a la empresa YYY y verifiquelo usted mismo).
  • Si enviamos un e-mail a varios destinatarios, no pongamos las direcciones de e-mail en el TO, utilicemos el BCC que tiene el mismo efecto, pero los destinatarios no conocen todas las direcciones de e-mail a las cuales fue enviado el mensaje.

Conclusión

Intentemos todos juntos aportar nuestro granito de arena, para que podamos ver un artículo que se titule "En Argentina, menos del 20% de los correos electrónicos son SPAM". Piense que si logramos esto podremos decir que la mayoría de la información que viaja por la red es de utilidad. Así ayudamos que las empresas prestadoras de internet (ISP) tengan menos motivos para subirnos las tarifas.

1 may 2007

Teclado Microsoft Natural Ergonomic 4000


En este primer post de tecnología decidí comenzar por el último dispositivo que llego a mis manos, el teclado Microsoft Ergonomic 4000. Un teclado especialmente diseñado para aquellos que pasamos mucho tiempo escribiendo en la computadora (al menos así lo venden). Es sorprendente el buen diseño estético y funcional que lograrón con este dispositivo.


¿Que hay dentro de la caja?


Cuando abrimos la caja del teclado nos encontramos con un resumido manual, y un CD con los drivers para realizar la instalación. El manual solo cuenta con la información necesaria para realizar la instalación del dispositivo en nuestra computadora. Realmente esperaba un poco más de información de las características del producto, funciones, etc.

Igualmente se complementa con la documentación digital que se instala junto con los drivers, en la cual se detalla como debe ser la postura para utilizar el teclado (y la computadora en general), aunque es la misma información que podemos encontrar en cualquier sitio de internet que explique ergonometría y los trastornos de usar la computadora (y más cuando lo hacemos de manera indebida).

Características generales


El teclado viene con conexión USB (como la mayoría de los dispositivos de hoy en día). Funciona tanto para Windows, como para MAC OS-X (por lo que debo intuir que funciona en Linux también).

A pesar de ser un dispositivo USB he tenido inconvenientes al intentar instalarlo sin otro teclado conectado previamente. En el manual, y en los cables indica que primero deben instalarse los drivers y luego conectar el teclado. Consejo: sigan esos pasos. Es decir, para conectarlo a una computadora que ya esta funcionando deben utilizar otro teclado hasta poder realizar la instalación de los drivers. No se si esto mismo se aplicará a instalaciones nuevas del sistema operativo.

Muchas teclas de acceso


El teclado viene con la tecla f-lock, para activar las teclas de funcion (F1..F12) standard, o para utilizar atajos a ciertas tareas comunes. Es decir, cuando f-lock esta activada, podemos usar las teclas F1 a F12 del teclado normalmente, pero cuando f-lock esta desactivada, las teclas F1 a F12 toman otras funciones (ayuda, deshacer, rehacer, nuevo, abrir, cerrar, responder, reenviar, ortografía, guardar imprimir) en ese orden.

También tiene un grupo de teclas en la parte superior que nos permiten, abrir un explorador de internet, abrir la búsqueda, abrir el cliente de correo electrónico, abrir mis favoritos, silenciar el sonido, bajar el volumen del sonido, subir el volumen del sonido, pausar/reproducir, y abrir la calculadora.

Además tiene 5 teclas para que asignemos cada una de ellas a la apertura de distintos programas.

El punto más importante de las teclas de acceso es que todas ellas son configurables por nosotros. Vienen muchas funciones predefinidas para que asignemos a cada tecla, y si esto no nos basta, podemos lanzar aplicaciones o algún programa que ejecute una macro para expandir la funcionalidad del dispositivo a cualquier necesidad que tengamos.


Descanso con ergonometría


El teclado tiene un diseño bastante inovador, con una forma que es la primera vez que la veo en un teclado. El teclado tiene pendiente hacia los lados (izquierdo y derecho, dando una sensación bastate agradable al tipear)

Tiene un ángulo mayor en la separación de las manos que su predecesor (de la familia Microsoft). El ángulo de los conjuntos de teclas es de 12° cada uno desde el centro, es decir si trazamos una linea vertical cortando el teclado, las teclas de la derecha estan a 12° y la de las de la izquierda a -12° (o 348° como prefieran).

También las teclas tienen una distribución pseudo circular, lo que nos permite llegar a ellas de manera bastante fácil con todos los dedos. Algo peculiar que tiene este teclado es que no todas las teclas tienen el mismo tamaño, las teclas T, G, H, N y 7 son más anchas de lo normal. En un principio pense que introduciría bastantes errores de tipeo al tener teclas de diferente tamaño, pero no fué así, no me he dado cuenta en el uso de esta característica.

Otro punto interesante de remarcar es que el teclado viene con un soporte que se incorpora en la parte frontal del mismo, dandole una pendiente ligeramente hacía el lado posterior. Lo que nos termina obligando a tomar una postura mucho mejor para el uso del mismo. Me dí cuenta que con esta pendiente "inversa" las manos están casi obligadas a tomar una buena postura con respecto al eje Y, es decir NO tienden a estar más arriba o por debajo de la línea del brazo.

Creo que el punto más comodo del teclado (más allá de su distribución) es el apoya-muñecas acolchado que trae incorporado. Realmente es muy comodo y relaja bastante las manos (recuerden que solo debería usarse cuando no se esta tipeando).

Mi conclusión


Microsoft me sorprendio con este teclado, hoy puedo decir que realmente vale lo que cuesta, ahh, no les mencione que no es de lo más barato, pero vale la pena. Les recomiendo este teclado si tienen que tipear bastante o estan mucho tiempo delante de la computadora, siempre y cuando no sea jugando, porque en esas condiciones termina siendo incomodo. Antes de comprarlo les recomiendo que lo vean y en lo posible que lo prueben, es muy comodo, pero siempre está el gusto de cada uno (y más si uno no esta acostumbrado a teclados ergonométricos).