domingo 27 de abril de 2008

Formularios y validaciones con estilo

Dos utilidades muy atractivas:

  • Niceforms, que convierte los elementos de los formularios mediante CSS y JavaScript. Se degrada fácilmente si no se dispone de JavaScript. Ver ejemplo.
  • FormCheck2, que crea mensajes de validación muy estéticos asociados a cada elemento del formulario. Ver ejemplo.
Un caso de utilización de ambos a la vez es LightForm:

Validación de entidades Java

JaValid es un framework que facilita la validación de objetos de dominio utilizando para ello anotaciones Java: @NotNull, @NotEmpty, @MinLength (length=4), etc. (ver anotaciones disponibles).
De esta manera, se puede invocar al validador en cualquier momento y éste devolverá la lista de mensajes de validación correspondiente.
El framework tiene conversores de mensajes de validación para JSF y para Spring.

Ver ejemplo básico.

También permite crear grupos de validación, de manera que al validar se le pueda pedir que realice sólo las validaciones que correspondan al grupo. Esto es útil por ejemplo para validaciones en la creación, que pueden ser diferentes a las que se realicen en la modificación o en otras operaciones.

Ver ejemplo con grupos.

sábado 26 de abril de 2008

Generación de datos aleatorios

¿Necesitas generar datos aleatorios para hacer pruebas?
Con Data Generator de generatedata.com puedes generar tablas de datos en Excel, HTML, XML, CSV y SQL. Permite definir cualquier número de campos con diversos métodos de generación: en forma de fechas, textos, números, seleccionando de una lista, etc.

Ver demo:


La aplicación está realizada con PHP y MySQL.
Se puede descargar gratuitamente aquí. Licencia GNU Open Source.

viernes 25 de abril de 2008

sIFR: tipografía rica y accesible

sIFR (Scalable Inman Flash Replacement) es una técnica que permite, con JavaScript y Flash, mostrar tipografías más ricas que las habitualmente disponibles en los navegadores, manteniendo la accesibilidad.

Ver el siguiente ejemplo, con sIFR:



Sin JavaScript ni Flash:



Estas son las instrucciones de uso.

Internacionalización: Unicode y UTF-8

De este artículo sobre internacionalización de Google:

El juego de carácteres (charset) es la tabla que traduce de un número a un "carácter" (o para ser más precisos un "codepoint"), y la codificación (encoding) es el algoritmo que hemos seguido para guardar ese número.

El consorcio Unicode se lanzó a la creación de un juego de carácteres que incluyese todos los carácteres usados en el mundo. De esta forma será posible tener páginas con mezcla en varios idiomas.

Ken Thompson y Rob Pike inventaron una codificación de tamaño variable llamada UTF-8. UTF-8 es idéntico a ASCII para todos los carácteres inferiores a 128, y usa uno o varios bytes extra (hasta un máximo de 4) cuando tiene que almacenar un número superior a 128. Cualquier texto ASCII en inglés es automáticamente un texto UTF-8 válido. Los textos europeos son en torno a un 2% más grandes que usando ISO-8859-15, ya que sólo los carácteres acentuados aumentan de tamaño. Los únicos que realmente salen perdiendo son aquellos que tenían un alfabeto pequeño (griego, ruso, ...) sin nada en común con el inglés, ya que antes podían codificar cada carácter con un 1 byte y ahora necesitan más. UTF-8 no usa ningún byte 0 en su codificación, y funciones como strcpy de C funcionan con textos UTF-8.

La recomendación es usar UTF-8 tanto en la base de datos como en la interfaz web.


NOTA: Al editar un texto en Windows como UTF-8 hay muchas posibilidades de que el editor añada un "BOM" (también llamado "signature"). El BOM era útil para UTF-16, pero para UTF-8 es totalmente irrelevante. Pero en Windows lo siguen escribiendo para poder distinguir texto codificado en UTF-8. Es necesario usar un editor que permita guardar en UTF-8 sin BOM, o las páginas tendrán tres bytes de más al principio de cada página web (EF BB BF). Esto puede ocasionar problemas por ejemplo con PHP.

sábado 19 de abril de 2008

Adobe Flex

Flex es un framework de Adobe para la construcción de aplicaciones Flash. Permite crear aplicaciones con interfaz de usuario rico (RIA) que se ejecutan en cliente, en el propio reproductor Flash.



El framework está disponible con una SDK gratuita y un IDE basado en eclipse llamado Flex Builder. Incluye un compilador que también puede ejecutarse "standalone". Cuenta con bastantes herramientas y componentes estándar que facilitan el desarrollo. Los componentes de interfaz de usuario pueden extenderse y personalizarse.

Las aplicaciones Flex se construyen con MXML y/o ActionScript, y son compiladas en forma de archivos SWF.
  • MXML es un formato basado en XML para diseñar la interfaz de usuario basada en componentes (como ocurre con JSF con las propias páginas .jsf o .jspx).
  • ActionScript es un lenguaje de scripts orientado a objetos para definir la lógica de la aplicación Flex.
Ver este tutorial, bastante bueno, sobre cómo crear una aplicación RIA para buscar y mostrar fotos de Flickr. Este es el resultado. Aquí puede verse en acción.

También permite el intercambio de datos con el servidor. La aplicación en servidor puede ser Java, ASP .NET, PHP o ColdFusion.
La comunicación puede ocurrir en texto plano o en XML, vía HTTP. También permite acceder a servicios web (SOAP) o a métdos remotos.

Ver este tutorial sobre aspectos de intercambio de datos con servidor.

viernes 18 de abril de 2008

Snippets

Texter es una utilidad Windows para gestionar los snippets (recortes de código reutilizable que habitualmente guardamos en ficheros de texto para "copiar y pegar" mientras programamos).



Permite definir snippets y asociarles unas palabras clave (shift+ctrl+h), insertarlo en el código escribiendo las palabras clave y pulsando la tecla que hayas definido (tabulador, enter, espacio o instantáneo), y puedes gestionarlos en cualquier momento (shift+ctrl+m).

Esta herramienta tiene la ventaja de ser bastante cómoda, es independiente del entorno de desarrollo con el que trabajes y almacena internamente los recortes de código en forma de archivos de texto.

Descargar

Algunos sitios web con snippets:
¿Conoces alguna herramienta o web de este tipo?

htmlSQL

htmlSQL es una clase PHP que permite acceder a los valores de un contenido HTML usando una sintaxis similar a la de SQL.


Ver demo.

¿Existe algo similar para Java?

Botones clásicos para la web

En WebResourcesDepot muestran este conjunto de botones clásicos, construidos a partir de los iconos silk de famfamfam.



Descargar archivo PSD.

Muy recomendable esta web, que ofrece todos los días recursos gratuitos para el desarrollo web.

viernes 11 de abril de 2008

Interpretar erróneamente las preguntas

Los políticos emplean un método comadrejil de evitar la verdad sin mentir. Se llama "ofrecer un análisis somero". La técnica implica interpretar erróneamente las preguntas como si fuera un alienígena que aprendio toda su habilidad para el lenguaje gracias a haberse leido el diccionario.

Reportero: Senador, ¿ha asesinado a su esposa?

Senador: No puedo decirle con seguridad que lo hiciera.

Reportero: ¿No le asesto 65 puñaladas?

Senador: No estaba contando.

Reportero: Pero una decena de testigos le vieron apuñalar a su esposa hasta matarla. ¿Eso no significa que usted la mató?

Senador: ¿Cómo saben esos testigos que no habría muerto por su cuenta? ¿Acaso son médicos?

Reportero: Pero... ¿admite que ha apuñalado a su esposa?
No, el cuchillo la apuñaló. ¡Y no descansare hasta que no haya castigado a ese cuchillo!...

(De Dilbert y la estrategia de la comadreja).

sábado 5 de abril de 2008

Calcula el día de la semana

¿Qué día de la semana fue el 31 de diciembre de 1975?
Según el algoritmo de Doomsday:

  • Toma la parte entera de dividir las 2 últimas cifras por 12: 75/12 -> 6
  • Toma el resto de la división anterior: 3
  • Toma la parte entera de dividir el número anterior por 4: 3/4 -> 0
  • Toma el marcador del siglo (5 para 18xx, 3 para 19xx, 2 para 20xx, 7 para 21xx, etc): 3
  • Suma todo y toma el resto de dividir por 7: 6+3+0+3=12, 12/7 -> restan 5
Este es el día maldito (Doomsday) del año 1975: el viernes (5).

Para cualquier año, los días 4 de abril (4/4), 6 de junio (6/6), 8 de agosto(8/8), 10 de octubre (10/10) y 12 de diciembre (12/12) siempre caen en el mismo día de la semana, siendo éste el mismo día de la semana en el que cae el último día de febrero.


A partir de esto, si el 12 de diciembre fue viernes... también fue viernes el 19 y el 26... con que el 31 de diciembre tuvo que ser... MIÉRCOLES !! (comprobado).

(Vía Microsiervos).