Después de un mes de agosto intenso, por fin, hace un par de semanas rezets.com se puso en marcha, de momento con más ilusión que otra cosa.

Aquellos que me conocen sabrán de sobra que era una idea que me rondaba la cabeza desde hace bastante tiempo, y después de algún intento de llevarlo a cabo, por fin, a finales de junio decidí ver que era capaz de hacer en una semana de vacaciones y un mes de jornada intensiva aprovechando al máximo las calurosas tardes de agosto.

Y después de pelearme mucho con rails, con apache, con passenger y con un millón de historias más, hace unas semanas decidí subir todo al servidor de producción, y es que una vez acabada la jornada intensiva el tiempo que le puedo dedicar a este proyecto se ha reducido considerablemente. Aún así me parecía una tontería guardar ese código en el cajón e hice de tripas corazón.

Soy consciente de que aún tiene un montón de defectos y carencias (algunas más evidentes que otras), pero creo que ya he conseguido un par de cosas de las que sentirme orgulloso, como por ejemplo un lomo de cerdo con salsa de cebolletas, y una paella espectaculares. :D

Por ahora la funcionalidad de la web es muy sencilla: crear recetas nuevas, y verlas clasificadas por categorías, pero creo que por ahora debo centrarme en esa funcionalidad hasta que haya conseguido algo que realmente mejore la forma más habitual en que la gente sube sus recetas a internet: los blogs. Por eso voy a mantener la web cerrada a las nuevas altas durante una temporada para poder ir mejorando la web poco a poco con unos pocos usuarios de confianza, pero atenderé cualquier solicitud de usuario nuevo con mucho gusto.

Finalmente me gustaría agradecer a toda la gente que se ha dado de alta, y que pacientemente ha ido subiendo recetas, y todos los consejos recibidos por todos ellos.

¡Muchas gracias a todos!

ensalada pixelada
Todo sea porque no nos vuelva a pasar cosas como ésta

Una de las características de HTML 5 introducidas en el reciente Firefox 3.5 y que también se encuentra disponible en Safari 4 y Chrome 2 son los web workers.

Los workers proveen un mecanismo para poder ejecutar tareas que requieran mucho tiempo de ejecución en hilos directamente en el sistema operativo sin que bloqueen la interfaz del usuario. Una de sus utilidades principales es la de ejecutar tareas de entrada/salida de datos a través del objeto XMLHttpRequest.

Los web workers se comunican con el proceso principal a través del envío de mensajes a un manejador de eventos especificado por el desarrollador. Estos mensajes pueden contener desde una cadena de caracteres a un objeto complejo. Una característica importante es que no pueden manipular el DOM por lo que si se desea mostrar los datos resultantes de su ejecución es necesarios que estos sean pasados al manejador a través del paso de mensajes.

Nephila maculata (Orb Web Spider) de dinesh_valke

Para crear un worker lo único que es necesario es llamar al contructor pasándole como único argumento la URI del script que deberá ejecutar, y definir el manejador del evento onmessage que será el encargado de escribir el resultado en la página.

var worker = new Worker('worker.js');
worker.onmessage = function(event) {
     print("¡llamada ejecutada al finalizar el worker!\n");
}

y para detener su ejecución:

worker.terminate();

Posteriormente deberemos implementar lo que hará el worker durante su ejecución en el archivo worker.js de la siguiente manera:

onmessage = function(event) {
     var n = calcular();
     postMessage(n);
}

Al finalizar la ejecución del método calcular el worker enviará un mensaje con el resultado que será recogido por el manejador del evento onmessage definido anteriormente.

El método calcular podría estar definido en otro archivo e importando mediante la función global importScripts(‘calcular.js’) la cuál descagará y traerá dicha función al ámbito del worker.

Además cada worker puede lanzar tantos otros workers como se desee, lo único a tener en cuenta es que la ruta a el fichero que se le pasa en el constructor se calcula dinámicamente dependiendo de la localización del padre. Esto es muy aconsejable sobre todo en el caso de que el usuario posea un microprocesador con más de un núcleo, ya que el sistema operativo podría repartir los hilos entre estos.

Referencias

Cuando preparas las preguntas que quieres incorporar a un formulario debes tener en cuenta una serie de reglas que harán que cada una de las piezas de las cuales está compuesto encajen perfectamente y mejoren la experiencia de uso drásticamente. Para ello debes seleccionar cuidadosamente cuál es el tipo de control que se ajusta perfectamente a cada pregunta.

Todos somos piezas de un rompecabezas

radiobuttons

Sólo deben ser usados cuando existe una lista de opciones mutuamente excluyentes, es decir, cuándo sólo es posible seleccionar una opción y la opción más frecuente debe estar marcada por defecto. El número de opciones debe rondar las cinco, dependiendo de su longitud y complejidad. Es importante que en el enunciado de la pregunta quede claro que se trata de seleccionar una de las opciones.

checkboxes

En cambio, los checkboxes deben ser usados cuando pueda ser seleccionada más de una opción, una, o ninguna. El caso de un único checkbox es usado cuando se debe activar o no una opción del formulario.

combo boxes

Son usados cuando tenemos un gran número de opciones y sólo podemos seleccionar una, ya que evita que el tamaño del formulario crezca excesivamente. Sin embargo, las opciones que contenga deben ser más sencillas y claramente excluyentes que en el caso de los radiobuttons, para evitar que los usuarios no encuentren la opción que buscan.

Evita la utilización del multi-combos ya que los usuarios no suelen comprender inmediatamente que pueden seleccionar más de una opción.

campos de texto

Los campos de texto son usados cuando se desea que se pueda introducir texto libremente. Lo más importante que uno debe recordar es que el tamaño del campo debe ajustarse al tamaño de la respuesta esperada, ya que los usuarios tienden a pensar que si su respuesta no cabe probablemente no será correcta. Si el tamaño de la respuesta esperada es muy grande, por ejemplo mayor de una línea, deben usarse los textarea en su lugar.

Cuando se usen campos de texto para introducir datos que requieran algún tipo de formato, como una fecha o un teléfono, debe procurarse que el usuario pueda introducir la información en el mayor número de formatos posible, dejando el manejo de la información a la aplicación. En cualquier caso en conveniente poner algunos ejemplos de los formatos permitidos junto al campo para que el usuario pueda comprender cómo debe introducir la información.

otros puntos a recordar

  • No olvides asociar los labels a su campo correspondiente para que el usuario pueda seleccionar el control al pulsar el label.
  • Los radiobuttons y los checkboxes deben estar agrupados en un fieldset con un título o legend adecuado. Esto permitirá a los usuarios dividir el formulario en bloques lógicos que pueden abordar por separado.
  • los radiobuttons y los checkboxes deben situarse antes de su label, y los combo, campos de texto y textarea después.
  • Marca claramente los campos obligatorios y procura que estén al principio del formulario.

Referencias