jueves 28 de febrero de 2008

IDEs y plugins para desarrollar con GWT

Plugins para eclipse:

  • GWT Tooling. Construido a partir del antiguo Googlipse. Tampoco es un editor visual.
Construido sobre eclipse:
Plugin para IntelliJ IDEA:
Para NetBeans:
Para JDeveloper:

Esto tiene que mejorar... ¿no?

Ver otras herramientas en onGWT.com.

Herramientas web de creación de formularios

Ahí van algunas:

  • pForm. En un primero paso seleccionas el juego de colores, en el segundo indicas el título, una descripción del formulario y añades los campos de diferentes tipos (definiendo sus propiedades y las listas de valores de forma estática). En el tercer paso puedes previsualizarlo y decargarlo en forma de página html estática.
  • JotForm. Similar a pForm, aunque permite definir algunas propiedades más específicas de cada uno de los campos.
  • icebrrg. Similar a pForm, pero permite además definir bloques de campos (p.e. para datos de contacto), identificar elementos obligatorios, etc.
  • FormLogix. Herramienta muy versátil, con una barra de herramientas muy completa, que permite definir la posición exacta de los elementos, incluye herramientas para alinear e igualar tamaños, etc.
  • Wufoo. Herramienta bastante flexible y muy estética, para el diseño de formularios que no sean demasiado complejos.
  • formsite. Permite definir cuestionarios sencillos, publicarlos y analizar resultados.
  • questionform. Otra herramienta para crear cuestionarios de forma sencilla.
  • FormAssembly. De forma sencilla pueden crearse formularios relativamente complejos. La herramienta muestra un árbol de secciones y elementos en el lateral, de forma que puedan editarse sus atributos a la vez que se van previsualizando.

Mis favoritos: FormLogix para formularios complejos, Wufoo para formularios más sencillos y estéticos, y pForm para los más sencillos y rápidos de realizar.

Ver más en "Creación de formularios" de wwwhatsnew.com.

¿Conoces alguna otra herramienta interesante?

Mapas estáticos de Google

Es muy sencillo: basta indicar la latitud y longitud del punto central, el nivel de zoom, el tamaño de la imagen, el tipo de mapa (actualmente mobile o roadmap), los marcadores que se quieran situar y tu clave de GoogleMaps.

Ahí va un ejemplo:

http://maps.google.com/staticmap?center=36.0128,-5.603
&zoom=17
&size=512x512
&maptype=roadmap
&markers=36.0126,-5.6044,bluep
&key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI7xSosDVG8KKPE1-m51RBrvYughuyMxQ-i1QfUnH94QxWIa6N4U6MouMmBA




Para más información consultar Google Static Maps API.

martes 26 de febrero de 2008

Construyendo servicios web

Soluciones Open Source para implementar servicios web (ver la filosofía y los objetivos de diseño en InfoQ):


Algunos recursos interesantes, sobre Axis2, de Julio Cesar Pérez Arques:

sábado 23 de febrero de 2008

Guía rápida de instalación de Apache Continuum

La forma más rápida de instalar Continuum, para gestionar la integración contínua de tus proyectos, es mediante la instalación standalone, que ya viene preconfigurada con un contenedor Plexus y base de datos Derby.

Pasos:

1. Descárgate el fichero zip (p.e. apache-continuum-1.1.zip) y descomprímelo en tu disco (p.e. en c:\tools\continuum).

2. En Windows, ejecuta $CONTINUUM_HOME/bin/windows-x86-32/InstallService.bat para instalarlo como un servicio (por defecto en el puerto 8080).

3. Con esto ya podrás acceder a tu servidor http://localhost:8080 y a tu continuum http://localhost:8080/continuum.

4. Para cambiar la configuración (puerto, base de datos, proveedor de correo, etc), ver el fichero C:\tools\continuum\conf\plexus.xml.


NOTAS:
- Para los proyectos que utilicen Maven, debe asociarse el servicio creado a un usuario concreto de la máquina, para que tome el repositorio Maven correspondiente (.m2).
- Si utilizas Subversion, debes tener un cliente subversion instalado previamente, que se ejecute como "svn" en la línea de comandos (debe estar incluido en la ruta del path previamente). En mi caso tengo instalado el propio subversion.

domingo 17 de febrero de 2008

Este punto pálido azul

"Se ha dicho que la astronomía es una experiencia constructora de carácter y humildad. Quizá no exista mayor demostración de la locura de la presunción humana que esta imagen distante de nuestro diminuto mundo."


De Cosmos, de Carl Sagan.

(Vía Maikelnais).

28/02/2008:
La música es del album Heaven and Hell, de Vangelis, del año 1975. Un gran año.

martes 12 de febrero de 2008

10 formas de arruinar la fiabilidad y la escalabilidad de un sistema Java

Ahí van...

10. Optimizar el rendimiento suponiendo que se traducirá en escalabilidad/Ignorar el potencial impacto del rendimiento en la escalabilidad (y viceversa).
El rendimiento tiene que ver con mejorar los tiempos de respuesta a un usuario. La escalabilidad está relacionada con soportar muchos usuarios simultáneos.

9. Suponer que eres más listo que la infraestructura/seguir las reglas a ciegas.
Esto incluye no pensar en las implicaciones transaccionales al utilizar ficheros, construir tu propia función de pool de conexiones o no usar frameworks como Struts, Hibernate o Spring porque crees que puedes hacer mejor el trabajo tú mismo.
Por el contrario, a veces es necesario romper las reglas, como es el caso de usar FTP para integrar aplicaciones, etc.

8. Abusar de la base de datos/Evitar la base de datos.
A veces se utilizán las bases de datos para cuestiones para las que no han sido diseñadas, visto el coste y las limitaciones de escalar una base de datos. Debe evitarse su uso para tareas de "gran volumen y bajo valor", como el logging, almacenar el estado de conversaciones o haciendo cosas que podrían hacerse mejor con un sistema de ficheros. Debería usarse sólo si se requiere almacenar información persistente y transaccional.

7. Introducir un único punto de cuello de botella/Introducir un único punto de fallo.
No hay mucho más que decir sobre los cuellos de botella que incluyen acceso a base de datos, colas de mensajes o servidores web.

6. Abusar de las abstracciones/Evitar las abstracciones.
A veces las abstracciones hacen imposibles las cosas que son sencillas y ocultan su coste en el rendimiento.
Sin embargo, hay muchas abstracciones muy útiles que se ocupan de asuntos como la caché, la seguridad y la auditoría, minimizando el mantenimiento del código.

5. Suponer que se puede añadir DR (disaster-recovery) cuando se necesita.
Es prácticamente imposible que los sistemas de recuperación no afecten al rendimiento.

4. Usar una arquitectura de "talla única".
Las arquitecturas clónicas pueden ser un desastre, sobre todo cuando se tienen requisitos del estilo "24x7", "99%" o "hazlo como Google".

3. Usar grandes heaps de JVM.
Los mecanismos de recolección de basura para limpiar la memoria (garbage collection) pueden llevar mucho tiempo en la práctica para tamaños grandes de memoria de la máquina virtual. A veces un método "finalize" es capaz de mejorar el rendimiento en gran medida.

2. Suponer que la red funciona.
No se puede suponer que el ancho de banda de las redes será el máximo teórico.

1. Evitar características propietarias (de marca registrada)/Creer en las quejas que se escuchan sobre los productos.
Mucha gente teme encerrarse en un proveedor. Sin embargo, a menudo no es necesario cambiar.
Y, aunque la estandarización tiene sus beneficios, también puede causar problemas para un beneficio pequeño (considerar, por ejemplo, EJB2 vs Hibernate+Spring).


(De Cameron Purdy, en JavaOne, vía Shine blog).

lunes 11 de febrero de 2008

Liberado GWT-Ext 2.0

Estos no paran... se ha liberado GWT-Ext 2.0, un conjunto de widgets GWT basados en Ext JS. Increibles. No hay más que verlos en acción:

domingo 3 de febrero de 2008

Tipos de letra para programar

Ya se sabe que el tipo de letra que elijamos en nuestro editor de textos, para programar, debe contar con unas características muy concretas:

  • Caracteres que se vean claros.
  • Juego de caracteres extendido.
  • Fácil distinción entre 'l', '1' e 'i', entre '0', 'o' y 'O', y entre comillas hacia detrás y hacia delante.
  • Caracteres de puntuación claros, en especial las llaves, peréntesis y corchetes.
La claridad de visualización dependerá de la resolución de pantalla que tengas.


Algunas fuentes muy buenas que puedes probar: Consolas, Inconsolata, Monaco, Vera Sans Mono, Lucida Typewriter y, por supuesto, Courier New.

Ver algunas comparaciones en:

Y tú, ¿cuál prefieres?

NOTA: como editor de textos, notepad++ está muy bien y es gratis. Ver algunas comparativas entre editores de texto en Wikipedia.

sábado 2 de febrero de 2008

Integración de GWT con Spring e Hibernate

En GWT-Widget han desarrollado GWT Server Library, una librería que permite la integración de GWT con Spring.

En una aplicación GWT, la arquitectura está configurada de la siguiente manera:

  • Capa de presentación, formada por los widgets GWT que se ejecutan en el navegador.
  • Lógica de negocio, compuesta por los servicios RPC que se ejecutan en el servidor web (servlets que mapean los métodos Java correspondientes).
  • Modelo de objetos, que son serializados por la RPC.
Con GWT Server Library la lógica de negocio se delega en Spring, con todas las ventajas de este framework basado en componentes, orientado a aspectos, que proporciona mecanismos de autenticación, logging, manejo de transacciones y acceso a base de datos, de forma limpia y no intrusiva, mateniendo el código desacoplado, mediante inyección de independencia, basada en la configuración sencilla de ficheros XML.

Para el manejo de objetos, hibernate4gt resuelve el "lazy loading remoto", etc.


(Vía George Georgovassilis, donde puede verse un ejemplo detallado de la integración, disponible para descargar).