Armonía | En definitiva...

Estás viendo las entradas catalogadas dentro de la categoría "Desarrollo".

Algunos enlaces interesantes

  • Martes, 27 de Septiembre de 2005 a las 18:17 CET
  • Guardado en: General
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Después de volver de pasar unos días en Sevilla, me he encontrado con algunos enlaces muy interesantes que me gustaría compartir con vosotros. Probablemente ya los hayais leido, pero nunca viene mal darles algo más de difusión.

El primero de ellos es un artículo escrito por Daniel Torres Burriel en su weblog, y se titula: De cómo el elemento TITLE se convierte en sello de calidad. En el, Daniel hace un profundo análisis/disertación sobre el elemento title de nuestros lenguajes de marcado favoritos, (HTML y XHTML). Muy recomendable leerlo detenidamente.

El segundo enlace de hoy va para nuestro amigo MC de Accesibilidad Web, y su artículo: La Accesibilidad en Ingeniería del Software. En este artículo MC nos plantea la forma en la que se debe enfocar la accesibilidad en los proyectos.

Antes de que lo publicara, MC y yo mantuvimos una interesante conversación al respecto. Como ya le comenté a el, mi punto de vista es igual que el suyo pero un poco más pesimista: ese es el camino a seguir, pero a día de hoy no es más que una utopía, (desgraciadamente).

Otro artículo tremendamente interesante y, (casi casi), recién salido del horno, es: Introducing the CSS3 Multi-Column Module de A List Apart, donde nos explican de forma introductoria el nuevo módulo para multi-columnas en CSS3. Una lectura más que recomendable para aquellos a los que les gusta estar al día en el mundo del desarrollo Web.

Y para terminar, y no por ello menos interesante, el blog MilMazz, un sitio ideal para todos aquellos interesados en Linux, sobre todo Debian y Ubuntu. Sus artículos son tremendamente útiles, con cantidad de tips interesantes.

Formularios y mensajes de error

  • Domingo, 24 de Julio de 2005 a las 19:49 CET
  • Guardado en: XHTML
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Una parte muy a tener en cuenta a la hora de desarrollar nuestras aplicaciones Web son los formularios. Estos han de ser simples, consistentes, comprensibles, accesibles, etc. En este artículo de hoy voy a enseñaros la forma en la que suelo hacer mis formularios, y los motivos por los que he elegido determinados detalles que acostumbro a usar.

Para hacer más sencilla la comprensión de todo esto he creado un sencillo ejemplo con un mismo formulario dividido en tres estados distintos, donde cada uno de ellos muestra una etapa de la "vida de un formulario".

Primera etapa: Formulario en estado normal

La primera etapa de todo formulario es aquella en la que nos lo encontramos por primera vez, impoluto, limpio completamente, esperando ser cumplimentado y enviado.

Es una etapa muy importante, ya que debemos conseguir que de un simple vistazo el formulario sea comprensible para el usuario. Y por si fuera poco, hemos de usar nuestro lenguaje de marcado favorito de forma correcta, preocupándonos además por la accesibilidad del formulario.

Hay diversas cosas que suelo realizar siempre que hago un formulario. Una de ellas es englobarlo con el elemento fieldset con un atributo title bien descriptivo, y colocándole su correspondiente legend:


<fieldset title="Formulario general en estado normal que realiza una función determinada">
  <legend>Formulario general en estado normal</legend>
</fieldset>

Otra cosa imprescindible es el uso de los label. A todos los controles del formulario, salvo a los botones, les coloco su label correspondiente. Debo destacar que normalmente acostumbro a englobar todo el control con el label además de usar el atributo for de este, me explico:

<label for="cajaTexto1">Caja de Texto 1 <span class="obligatorio">(Obligatorio)</span><br />
  <input type="text" id="cajaTexto1" name="cajaTexto1" maxlength="255" title="Caja de Texto. (Campo obligatorio, con un límite de 255 caracteres.)" />
</label>

Como podeis ver, toda la caja de texto se encuentra englobada dentro de un label, y este a su vez hace uso del atributo for para referenciar a la caja de texto. Hay personas que sólo hacen uso del atributo for, pero hay algunos agentes de usuario que todavía no soportan esta forma de referenciación, así que procuramos mantener ambas formas para evitar incompatibilidades.

Si os fijais, la caja de texto usa el atributo maxlength, que nos permite limitar el número de caracteres que van a poder introducirse en ella. Si se conoce este límite, es más que recomendable hacer uso de este atributo, para ahorrarnos sustos si, por ejemplo, los datos van a guardarse en una Base de Datos y al usuario le da por meter un capítulo entero de El Quijote.

Además también es recomendable dotar a todos y cada uno de los controles del formulario del atributo title, explicando brevemente qué se debe hacer en ese control, y si es posible, informar de las limitaciones: obligatorio o no, tipos de datos que acepta, (sólo números, sólo letras, etc.) Con respecto a este mismo tema, en el texto del label, y para que el usuario tenga acceso a esta información a golpe de vista, suelo añadir también de forma muy breve, las limitaciones del campo. Las englobo en un span para poder manejarlas posteriormente de forma sencilla con CSS.

Por destacar otro detalle, en el ejemplo podéis ver que en el desplegable hago uso de optgroup para dividir los grupos de elementos que componen el control. Es importante que useis este elemento si vuestros desplegables necesitan subdividir en grupos los elementos, nada de usar option con guiones ni nada de eso.

<label for="combo">Desplegable <span class="obligatorio">(Obligatorio)</span><br />
  <select id="combo" name="combo" title="Desplegable con 5 opciones divididas en 2 grupos. (Obligatorio elegir una opción)">
    <optgroup label="Grupo 1">
      <option selected="selected" value="1">Opción 1</option>
      <option value="2">Opción 2</option>
    </optgroup>
    <optgroup label="Grupo 2">
      <option value="3">Opción 3</option>
      <option value="4">Opción 4</option>
      <option value="5">Opción 5</option>
    </optgroup>
  </select>
</label>

Ver ejemplo para el formulario en estado normal

Segunda etapa: Formulario con mensajes de error

Esta etapa, obviamente, no siempre va a ocurrir, pero debemos tener especial cuidado a la hora de controlarla, porque un formulario con mensajes de error poco claros, e incluso liosos o inexistentes, hará que todo el proceso se vaya al garete.

Mis formularios suelen tener tres formas de aviso distintas para los errores:

  • Mensaje general con una lista de puntos a comprobar
  • Estilos CSS distintos en los controles incorrectos
  • Mensaje informativo breve junto a cada control incorrecto

Todos estos mensajes han de destacar de forma muy clara por encima del aspecto normal del formulario, para que así el usuario pueda localizarlos y comprenderlos sin el menor esfuerzo.

Si observais el ejemplo, lo podreis ver claramente. Tonos rojos para todos los mensajes, un grosor de borde significativo para los controles incorrectos, y un pequeño texto junto a cada uno de ellos.

Mirando el código del mensaje general justo al comienzo del fieldset os dareis cuenta de que he usado el elemento big con un span interno que contiene un texto llamativo que luego oculto con CSS. Esto lo hago pensando en los usuarios que no tienen los estilos CSS activados. Puesto que no se percataran de los estilos con tonos rojos y demás, les doy un elemento "distinto" y un texto impactante para que su atención se centre sobre el mensaje de forma más sencilla.

<div class="mensaje error">
  <p><big><span>*** !ATENCIÓN!</span> Encabezado error</big></p>
  <p>Etiam porta semper nisl. Aenean lacus risus, condimentum id, pharetra in, dictum vel, quam. Maecenas non mauris ut dolor cursus dignissim.</p>
  <ul title="Lista de puntos a verificar">
    <li>Debes rellenar el campo obligatorio "Caja de Texto 1"</li>
    <li>El campo "Caja de Texto 2" no tiene un formato correcto. Sólo se aceptan caracteres alfanuméricos</li>
  </ul>
  <hr />
</div>

Ver ejemplo para el formulario con mensajes de error

Tercera etapa: Formulario ejecutado de forma satisfactoria

Esta es una etapa meramente informativa, y no es absolutamente necesario, ya que un formulario puede terminar con una redirección a otra página, con un mensaje simple porque no se necesite tener el formulario de nuevo, etc.

De todas formas la estructura es exactamente igual que la del mensaje general de errores de la etapa anterior, salvo que con unos estilos distintos en tonos "menos preocupantes" que el rojo. También, del mismo modo que antes, pienso en los usuarios con CSS desactivado colocando un mensaje llamativo que capte su atención incluso sin estilos.

Ver ejemplo para el formulario ejecutado satisfactoriamente

Los "Cheat Sheets" de ILoveJackDaniels.Com

  • Sábado, 11 de Junio de 2005 a las 13:59 CET
  • Guardado en: General
    Warning: sprintf() [function.sprintf]: Too few arguments in /home/armoniaspiralstatic/armonia.spiral-static.org/ecrire/tools/multicat/functions.php on line 85

Hace poco salió a la luz el CSS Cheat Sheet de ILoveJackDaniels.com, apareciendo en multitud de blogs como algo que merecía la pena imprimir y tener siempre a mano. Y es completamente cierto, es muy útil. Pero además del CSS Cheat Sheet, ILoveJackDaniels.com ha sacado algún que otro Cheat Sheet más, así que os los listo a continuación:

AJAX con SAJAX

  • Jueves, 14 de Abril de 2005 a las 18:46 CET
  • Guardado en: Desarrollo

Echandole un ojo el otro día al blog del amigo Stan encontré un post con varios enlaces relacionados con la tecnología de moda, AJAX. La verdad es que desde que lo ví, el tema me interesó, pero nunca le había metido mano hasta entonces. Con los enlaces de Stan me animé y comencé a hacer algunas pruebas aquí en casa.

Es una tecnología interesante, aunque para mi gusto, demasiado verde todavía. Además de que, lo más importante, creo que solo es conveniente para su uso en Intranets con un entorno controlado, por el tema de Javascript. Obviamente se puede hacer uso de AJAX de una forma meditada y pensada para no ser intrusiva, pero aún así, siempre he preferido abandonar esta forma de trabajar en pos de la accesibilidad adecuada, (para la cual aún tengo mucho que aprender).

Lo que más me llamó la atención al navegar entre los enlaces del post del que os hablo fue encontrarme con SAJAX, un tookit en multitud de lenguajes para "jugar" con AJAX de forma sencilla. Como es natural está verde, aún más verde que el propio AJAX, pero así y todo resulta interesante, si podeis, echadle un ojo.

Smarty, una oportunidad...

  • Miércoles, 02 de Marzo de 2005 a las 19:28 CET
  • Guardado en: Desarrollo

Aprovechando que nos han pedido en la oficina que comencemos a echarle un ojo a PHP, (actualmente desarrollamos en ASP.NET), he decidido darle una oportunidad a Smarty para que sea mi nueva forma de crear aplicaciones con PHP.

Hasta ahora, lo poco que he desarrollado con este lenguaje ha sido, básicamente, este blog y poco más, y he podido sentir en mis propias carnes lo que hace el no tener de forma completamente independiente la programación y la presentación. Y es Smarty, precisamente, uno de los sistemas que permiten evitar esto.

Según ellos mismos describen:

Although Smarty is known as a Template Engine, it would be more accurately described as a Template/Presentation Framework. That is, it provides the programmer and template designer with a wealth of tools to automate tasks commonly dealt with at the presentation layer of an application. I stress the word Framework because Smarty is not a simple tag-replacing template engine. Although it can be used for such a simple purpose, its focus is on quick and painless development and deployment of your application, while maintaining high-performance, scalability, security and future growth.

Básicamente Smarty es un motor de plantillas para PHP que nos da la posibilidad de tener la presentación de nuestros proyectos totalmente separada del hard-code de la aplicación. Esto nos da la posibilidad, por ejemplo, de hacer cambios rápidos y sin complicaciones sobre dicha presentación, sin afectar en modo alguno a la parte lógica del programa, (sí, los cambios presentacionales se pueden hacer con CSS, pero a veces también se hace necesario tocar el marcado que escupen las aplicaciones, y es ahí dónde Smarty nos facilita la tarea).

Este pasado puente, (el día 28 de Febrero es fiesta aquí en Andalucía), he podido echarle un pequeño vistazo, para comprobar la forma en la que se usa, etc. La verdad es que me ha gustado bastante, y estoy deseando tener más tiempo, (en realidad ánimos), para meterle mano a fondo. Creo que Smarty, junto con un buen uso de las clases, puede llegar a ser una forma magnífica de desarrollar en PHP.

Paginación:

Búsqueda

Acerca de este blog

Armonía es el blog personal de Juan G. Hurtado, (C. V.). Aquí se tratarán muchos temas, pero sobre todo los relacionados con la programación, la tecnología, el desarrollo y los estándares en la World Wide Web.

Si quieres puedes visitar también las galerias de fotos guardadas en su cuenta Flickr, o su colección de enlaces en del.icio.us.

Velas en la oscuridad Mano del autor del blog en blanco y negro Trozo del paisaje desde la ventana del autor del blog Palma de la mano del autor del blog en blanco y negro

Lectura

CSS Mastery, de Andy Budd
Portada del libro Bulleproof Web Design
Muy buen libro, escrito por Andy Budd en el que nos muestra un repaso muy bien detallado por infinidad de técnicas ingeniosas para conseguir que nuestras hojas de estilo "hagan magia"
[Leer revisión]
Bulletproof Web Design, de Dan Cedelhorm
Portada del libro Bulleproof Web Design
Un libro genial en el que Dan Cedelhorm nos enseña cómo blindar nuestras páginas para evitar que se "rompan" ante configuraciones no habituales de los navegadores de los visitantes, (aparte de otras muchas cosas)
[Leer revisión]
Agile Web Development With Rails, de Dave Thomas y David Heinemeier
Portada del libro Agile Web Development With Rails
Una perfecta introducción a Ruby on Rails, el framework de desarrollo Web que está causando furor en estos momentos...
[Leer revisión]

Contacto

  • e-Mail: juan.g.hurtado@gmail.com
  • Jabber: juan.g.hurtado@jabberes.org
  • Skype: juan.g.hurtado
  • Messenger: the_micro_cuts@hotmail.com