Diferencia entre revisiones de «Usuario:Juanda/html/Introducción»

De WikiEducator
Saltar a: navegación, buscar
Línea 4: Línea 4:
 
<div class="slides layout-regular template-default">
 
<div class="slides layout-regular template-default">
 
<div class="slide">
 
<div class="slide">
==Introducción==
+
=UX: Experiencia de usuario o usabilidad=
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
=== Un poco de historia ===
+
== Accesibilidad, usabilidad y estándar W3C ==
====Origenes y W3C====
+
*En 1991, Tim Berners Lee inventa el HyperText Markup Language, que contaba sólo con unos 20 tags.
+
*HTML 2.0 se convierte en la primera especificación, que incluye el tag img
+
*En 1994 nace la [http://www.w3.org W3C]:
+
Organización principal para la estándarización de la Web. Creada para asegurar la existencia de compatibilidad y acuerdos entre los miembros de la industria en la adopción de nuevos estándares.
+
Alguno de los miembros son los principales navegadores: Mac, Microsoft, Google, Mozilla y Opera
+
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
*En 1999, el W3C publica la especificación de HTML 4.01.
+
===Usabilidad===
*En 2000, se publica la especificación de XHTML 1.0 (la "X" es de eXtensible). No se incorporan nuevos elementos, pero se modifica la forma de escribirlos, según el lenguaje XML, mucho más estricto.
+
*Facilidad de navegación por la web para el usuario final.
*En 2001, se publica la especificación de XHTML 1.1.
+
*Usuario medio (sin ningún tipo de curso especializado) y con un equipo medio.
 +
*Objetivos:
 +
:Presentación de la información de forma clara y concisa
 +
:Menus, opciones y botones con funcionalidad clara y sin ambigüedad
 +
:Colocación de la información importante en un área apropiada de la web
 +
 
 +
*Esencial para páginas de comercio electrónico
 +
*Sigue el [http://en.wikipedia.org/wiki/KISS_principle#cite_note-kiss-jargon-1 principio KISS del diseño] (keep it simple, stupid)
 
</div>
 
</div>
 +
<div class="slide">
 +
===Accesibilidad===
 +
*Se intenta garantizar una experiencia de usuario similar para personas con discapacidades.
 +
*[http://www.w3.org/WAI/ WAI] (Web Accesibility Initiative)
 +
*Uso habitual en organismos públicos, como en la [http://www.zaragoza.es/ciudad/servicios/accesibilidad.htm web del Ayuntamiento de Zaragoza]
 +
====Niveles de conformidad====
 +
*Existen 3 niveles de conformidad A, AA, AAA. El nivel se determina según las pautas ya establecidas que cumple.
 +
*[http://www.codexexempla.org/traducciones/pautas-accesibilidad-contenido-web-2.0.htm Información completa sobre los niveles de conformidad]
 +
*Podemos utilizar [http://www.tawdis.net/ herramientas] que testean el nivel de conformidad de nuestra web.
 +
</div>
 +
<div class="slide">
 +
*Nivel A
 +
**Imágenes con texto alternativo (alt)
 +
:[http://blog.woorank.com/2013/01/image-alt-text-relevant-for-seo-and-usability/ El atributo alt es bueno para el SEO]
 +
:Uso inapropiado:
 +
:<source lang="html4strict">
 +
<img src=“menswatches.jpg” alt=“”>
 +
</source>
 +
:Uso habitual:
 +
:<source lang="html4strict">
 +
<img src=“menswatches.jpg” alt=“menswatches”>
 +
</source>
 +
:Uso adecuado:
 +
:<source lang="html4strict">
 +
<img src=“menswatches.jpg” alt=“Rolex Yacht Master watches for men”>
 +
</source>
  
 +
:*Contenido multimedia: Se proporciona contenido descriptivo alternativo
 +
:*El contenido debe tener un orden de lectura no dependiente del diseño o estilos
 +
:*El contenido no debe depender de colores y debe ser fácilmente distinguible del fondo
 +
:*Las funcionalidades de la pagina deben ser accesibles desde el teclado.
 +
:[http://www.martin-gonzalez.es/en-accessibility.html Ejemplo de página con acceso desde el teclado]
 +
:[http://www.sitepoint.com/accesskeys/ Utilizar AccessKeys es fácil]
 +
<source lang="html4strict">
 +
<div id="navigation">
 +
<a href="index.html" accesskey="q">Home</a> | 
 +
<a href="about.html">About Foos</a> | 
 +
<a href="buy.html">Buy Foos</a> | 
 +
<a href="sitemap.html">Site Map</a> | 
 +
<a href="feedback.html">Feedback</a> | 
 +
<a href="access.html">Accesskey Details</a>
 +
</div>
 +
</source>
 +
<source lang="html4strict">
 +
<div id="navigation">
 +
<a href="index.html" accesskey="h">Home</a> | 
 +
<a href="about.html" accesskey="1">About Foos</a> | 
 +
<a href="buy.html" accesskey="2">Buy Foos</a> | 
 +
<a href="sitemap.html" accesskey="3">Site Map</a> | 
 +
<a href="feedback.html" accesskey="4">Feedback</a> | 
 +
<a href="access.html" accesskey="k">Accesskey Details</a>
 +
</div>
 +
</source>
 +
:*Sin más de 3 destellos o cambios de imagen por segundo
 +
:*Títulos descriptivos en cada pagina
 +
:*Sistema para saltar de bloques de contenido y navegación secuencial
 +
</div>
 
<div class="slide">
 
<div class="slide">
==== Comienzan los problemas... ====
+
*Nivel AA
*El W3C da por muerto el lenguaje HTML, y comienza a trabajar en el nuevo XHTML 2.
+
**Debe cumplir las pautas del nivel A
*XHTML 2 era un lenguaje basado en un XML más puro...
+
**Subtítulos para el contenido multimedia con audio
*...pero no era compatible con anteriores versiones de HTML, ni con las páginas ya existentes.
+
**Contenido alternativo descriptivo para contenido multimedia con vídeo
*Y así, en 2004, nació el WHATWG.
+
**Contraste alto entre fondo y texto (al menos 4,5:1)
 +
**Se puede variar tamaño de fuente hasta un 200% sin perdida de funcionalidad
 +
**Encabezados descriptivos
 +
**Al menos dos formas distintas para navegar por el site
 +
**En los envíos de información confidencial debe existir un sistema para corregir, retroceder o advertencia de error y que te permita corregirlo.
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
====¿Qué es el WHATWG?====
+
*Nivel AAA
*Un grupo de gente de Opera, con Ian Hickson a la cabeza, y más tarde de Apple y Mozilla no están conformes con el rumbo del W3C, y quieren potenciar las aplicaciones web. Crean un grupo de trabajo: el Web Hypertext Application Technology Working Group.
+
**Debe cumplir con las pautas del nivel A y AA
*Crean dos especificaciones, Web Forms 2.0 y Web Apps 1.0. Más tarde, ambas se unirán para formar HTML5.
+
**Lenguaje de signos para el contenido multimedia con audio
*En 2006, el W3C reconoce que su XHTML 2 no funciona, y comienzan a trabajar en un nuevo HTML, tomando como base el trabajo del WHATWG.
+
**Descripción completa para el contenido multimedia con vídeo
 +
**Contraste muy alto entre fondo y texto (al menos 7,1:1)
 +
**Contenidos multimedia sin audio de fondo (sólo locución principal)
 +
**La pagina debe poseer un sistema para que el usuario pueda cambiar los colores de texto y fondo, limitar las lineas a 80 caracteres, alto de linea y tamaño de fuente. Todo ello sin que sea necesario utilizar el scroll horizontal para poder ver todo el contenido
 +
**Las imágenes con texto sólo pueden utilizarse para decorar.
 +
**Las funcionalidades de la pagina deben ser accesibles desde el teclado sin ningún tipo de excepción
 +
**Reanudación de sesión: Cuando un expira la sesión el usuario puede volver a reanudar sesión sin perdida de datos
 +
**Se proporciona al usuario información sobre su situación en la pagina
 +
**Texto descriptivo sobre el destino de cada enlace
 +
**Encabezados en cada sección
 +
**Definir el idioma de la pagina
 +
**En todos los envíos de información sistema debe existir un sistema para corregir, retroceder o advertencia de error y que te permita corregirlo
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
====Estado actual====
 
*En 2009, el W3C renuncia definitivamente a seguir desarrollando XHTML 2.
 
*El WHATWG y el W3C siguen trabajando en el HTML5 en paralelo, pero con métodos distintos.
 
* Recientemente, el WHATWG ha decidido dejar de numerar las versiones de HTML y sigue trabajando en el [http://blog.whatwg.org/ "HTML Living Standard"]
 
*En 2012, la especificación tendrá el status de "Candidate Recommendation".
 
*Probablemente, no será "Proposed Recommendation" hasta 2022.
 
  
 +
===Uso de estándares===
 +
*Iniciativa de la W3C
 +
*Las metas son compatibilidad entre plataformas (uso de esándares web abiertos) y tamaño de ficheros compacto.
 +
*Ejemplo: separación de contenido (html) y presentación (css).
 +
*Una web que cumple los estándares no tiene porque ser una web con buena usabilidad o accesibilidad.
 
</div>
 
</div>
 
<div class="slide">
 
<div class="slide">
===Codificar HTML: Herramientas necesarias===
+
==Compromisos entre uso de estándares, usabilidad y accesibilidad==
* Un editor de texto: Netbeans o Eclipse con el plugin de Aptana por ejemplo.
+
* Una selección de navegadores para hacer las pruebas (instalaremos Safari y Explorer mediante [http://www.playonlinux.com playonlinux]
+
No todos los navegadores despliegan la información del código html de la misma forma. Se debe testear en varios de ellos.
+
* Usaremos [http://alexw.me/ipad2/ emuladores] para ver la web en distintos terminales.
+
 
</div>
 
</div>
 +
<div class="slide">
 +
*Aunque están muy relacionados, no siempre van de la mano. Veamos algunos casos y sus posibles soluciones:
 +
===Color===
 +
*Herramienta visual básica para el diseño Web
 +
*El 10% de las personas presentan algún tipo de deficiencia visual y no pueden distinguir ciertos colores (especialmente rojo y verde).
 +
*Se puede sustituir parcialmente el uso de distintos colores con el uso de iconos y distintos tipos de texto en la codificación de la Web.
 +
*[http://leaverou.github.com/contrast-ratio/ Herramienta para ver lo legible que es tu combinación de colores]
 +
</div>
 +
<div class="slide">
 +
===Siglas, acrónimos y abreviaturas===
 +
*Cuando las siglas se utilizan como si fuera una palabra, estamos hablando de acrónimos.
 +
:*Ejemplo: RENFE REd Nacional de Ferrocarriles Españoles
 +
*Cuando las siglas se leen como la palabra que representan, hablamos de abreviaturas.
 +
:Ej: Sr
 +
*Los lectores de pantalla no siempre las reconocen: HTML, PDF, NaCl, SiteMap...
 +
</div>
 +
<div class="slide">
 +
*Debemos usar la [http://html5doctor.com/the-abbr-element/ etiqueta <abbr>] para identificarlos: <pre><p><abbr title="HyperText Markup Language">HTML</abbr> is the best thing since sliced web.</p></pre>
 +
*[http://html5doctor.com/the-abbr-element/ <acronym> ya no se usa en html5].
 +
</div>
 +
<div class="slide">
 +
===Imágenes y sonidos===
 +
*A menudo suelen ser más útiles que largos bloques de texto.
 +
*Un screen reader no puede interpretarlos
 +
*[http://accessibility.psu.edu/video Uso de subtítulos en los vídeos y transcripciones en los ficheros de sonido.]
 +
*Uso del atributo alt
 +
</div>
 +
<div class="slide">
  
 +
===Navegación repetitiva o excesiva===
 +
*Muchos enlaces que se hacen pesados desde un screen reader
 +
*Los menús de navegación se repiten para facilitar la navegación.
 +
*Se deben usar sitemaps y [http://webaim.org/techniques/skipnav/ usar estrategias para evitar los menús de navegación.]
 +
</div>
 +
<div class="slide">
 +
===Diseño con varias columnas===
 +
*Reducir la anchura de las líneas ayuda a la legibilidad del texto y nos permite tener más información en la pantalla.
 +
*Puede resultar también un inconveniente para un screen reader
 +
*Se pueden usar layouts de css con una sola columna y fijando su  max-width para que no sea muy ancha.
 +
*En caso de que usemos tablas de datos, debemos indicar cabecera, títulos, etc, para que su lectura sea comprensible desde un screen reader [http://accessibility.psu.edu/tables ver ejemplo].
 +
</div>
 
<div class="slide">
 
<div class="slide">
===Publicar html: herramientas necesarias===
 
*Un servicio de hosting o un servidor web
 
Puede ser tu propio ordenador. Si la IP no es fija (habitual), necesitaremos usar un DNS dinámico.
 
Servicio de hosting gratuito: pocos MB de espacio, publicidad, limitaciones de ancho de banda, sin soporte.
 
Servicio de pago: Elegir bien el hosting en función de nuestros requerimientos. Se deben evitar los resellers.
 
  
* Un nombre de dominio
+
== Herramientas de usabilidad ==
Que obtendremos por medio de un “registrador”. El dominio debe ir a nuestro nombre. En www.dot.tk obtendremos dominios .tk de forma gratuita.
+
</div>
 +
<div class="slide">
 +
=== Eye tracking===
 +
*Tecnologías que permiten registrar la forma en la que una persona mira una escena o imagen, en qué áreas fija su atención, durante cuánto tiempo y qué orden sigue en su exploración visual.
 +
*Conocer los puntos calientes en los que el usuario fija inicialmente la mirada, ayudan a estructurar los contenidos en una web.
 +
*Cuanto mas arriba y a la izquierda, más se verá. Cuanto más abajo a la derecha, menos relevancia visual tendrá.
 +
*Pruebas con grupo de al menos 5 usuarios. Se analizan las pruebas, se realizan cambios y se vuelve a probar.
 +
</div>
 +
<div class="slide">
 +
*Herramientas específicas eye tracking:
 +
:[http://www.crazyegg.com/ Crazyegg]
 +
:[https://www.seevolution.com/ Seevolution]
 +
:[http://www.labsmedia.com/clickheat/index.html Click Heat] (Software libre)
 +
</div>
 +
<div class="slide">
 +
*Observar sesión del cliente:
 +
:[http://silverbackapp.com/ Silverback] (Solo MacOS)
 +
:[http://www.trymyui.com/ Multiplataforma]
 +
:[http://www.teamviewer.com/ Team Viewer]
 +
 
 +
*[http://designbeep.com/2011/06/06/great-examples-of-eye-tracking-studies-for-blogs-and-websites/ Ejemplos de eye tracking]
 +
*[http://www.usefulusability.com/24-usability-testing-tools/ Más información de herramientas]
  
* Comando whois: para averiguar datos sobre el dominio.
 
 
</div>
 
</div>
 +
<div class="slide">
  
 +
===Diseños preliminares: del boceto al prototipo===
 +
[[Archivo:Prototipo_web.jpg|200px|thumb|right|Sketch o borrador de un sitio web]]
 +
*El prototipo es la mejor forma de aproximarse a la comprensión y concepción del producto final (en este caso un sitio y/o páginas web).
 +
*Es útil ver y porque no, COPIAR de la competencia, que algo harán bien.
 +
*[http://techtastico.com/post/mockups-online/ Listado de herramientas]
 +
 +
[[Archivo:flujo_prototipo.jpg|Elaboración de prototipo mediante lápiz y papel]]
 +
</div>
 +
<div class="slide">
 +
*Sketch o boceto:
 +
:Papel y lápiz.
 +
:Se recogen ideas
 +
:Se prueban composiciones
 +
*Wireframe
 +
:Funcionalidad y especificaciones
 +
:Layout, menús de navegación...
 +
:Sin tipografía, colores ni otros aspectos visuales
 +
:Anotaciones sobre la funcionalidad que se espera
 +
</div>
 +
<div class="slide">
 +
*Mockup
 +
:Incorporamos el look&feel
 +
*Prototipo
 +
:Se prueba el diseño final
 +
:Tiene funcionalidad (normalmente reducida)
 +
</div>
 
<div class="slide">
 
<div class="slide">
===URL (uniform resource locator)===
 
Es la forma de “llamar” a un documento desde la World Wide Web.
 
El fichero puede acabar en .html o en .htm, es indiferente
 
<pre>
 
http://www.soplaelcierzo.com:8080/descargas/videos/index.html
 
http:// nombre del servicio o protocolo
 
  
www.soplaelcierzo.com equipo
+
===Diseños preliminares:presupuesto Web===
 +
Es fundamental la elaboración de algún boceto a la hora de dar un presupuesto final de un proyecto web a un cliente.
 +
2 casos:
 +
*Aplicación funcional
 +
:El boceto debe representar bien los requerimientos del cliente. Un boceto en papel puede ser suficiente.
 +
:Utilizaremos alguna herramienta informática para buscar resultados más vistosos de cara al cliente:
 +
:[http://www.balsamiq.com/products/mockups Balsamiq Mockup] (de pago)
 +
:[http://pencil.evolus.vn/ Pencil] (gratuito, multiplataforma)
 +
*Página Web centrada en el diseño
 +
:Uso de programas tipo Inkscape, Photoshop o Gimp.
 +
:Cada diseño es único y lleva su tiempo. Enseñar portfolio al cliente.
 +
*Calculo del presupuesto Web
 +
:¿Algún tipo de clasificación por tipo de trabajo?
 +
:¿Cálculo por horas? ¿Y cómo se calculan las horas que cuesta?
 +
:[http://www.websitehomework.com/website-design-cost-calculator.html Ejemplo de cálculo]
 +
</div>
 +
<div class="slide">
  
:8080 puerto (por defecto el 80)
+
===Instalación de Balsamiq Mockup en Ubuntu 12.04===
 +
* Han dejado de dar soporte Adobe-air para Linux: Versión actual 2.6. Versiones Windows y Mac 3.1 o posterior.
 +
* Proceso de instalación de Adobe-air ([http://ubuntuguide.net/install-adobe-air64-bit-ubuntu-12-04-precise documentación original]):
 +
:Lo primero será instalar algunas dependencias:
 +
<source lang="bash">
 +
$ sudo apt-get install libhal-storage1 libgnome-keyring0 lib32nss-mdns
 +
</source>
 +
:Descargar e instalar getlibs, para poder utilizar las librerías 32 bits:
 +
<source lang="bash">
 +
$ wget http://ubuntuguide.net/wp-content/uploads/2012/06/getlibs-all.deb
 +
$ sudo dpkg -i getlibs-all.deb
 +
</source>
 +
:Una vez instalado, vamos a proceder a instalar las librerías necesarias, que son dos, libhal-storage:
 +
<source lang="bash">
 +
$ sudo getlibs -l libhal-storage.so.1
 +
$ sudo getlibs -l libgnome-keyring.so.0.1.1
 +
</source>
 +
:Ahora enlazamos esta última librería para que entre en funcionamiento:
 +
<source lang="bash">
 +
$ sudo ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0 /usr/lib/libgnome-keyring.so.0
 +
</source>
 +
:Ya pasamos a descargar e instalar Adobe Air, la versión 2.6:
 +
<source lang="bash">
 +
$ wget http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRInstaller.bin
 +
$ sudo chmod +x AdobeAIRInstaller.bin
 +
$ sudo ./AdobeAIRInstaller.bin
 +
</source>
 +
:Ahora podemos eliminar archivos descargados que ya son innecesarios:
 +
<source lang="bash">
 +
$ sudo rm AdobeAIRInstaller.bin && sudo rm getlibs-all.deb
 +
</source>
 +
*Por fin, ahora sí, instalamos balsamiq Mockup:
 +
: [http://www.balsamiq.com/download#direct Descargamos] el .deb eligiendo la versión adecuada
 +
: Lo ejecutamos, se cargará el centro de software y le damos a instalar :-)
  
/descargas/videos/index.html ruta a la página en la máquina y nombre del fichero
 
</pre>
 
 
</div>
 
</div>
 +
<div class="slide">
  
 +
==Buenas prácticas para acelerar la carga de una web==
 +
</div>
 
<div class="slide">
 
<div class="slide">
===Qué es XML===
+
*El tiempo de carga y la performance de una página web es muy importante para la experiencia de usuario (UX).
*Significa eXtensible Markup Language
+
*Si tu web es lenta, no solo pierdes visitas, sino potenciales clientes.
*Es un lenguaje mediante el uso de etiquetas, muy similar a HTML
+
*Buscadores como Google tienen en cuanta la velocidad de carga de las webs para sus ranking de búsqueda.
*Fue diseñado para TRANSPORTAR datos (o almacenar), NO para MOSTRAR
+
*¡Cada milisegundo es importante!
*Las etiquetas no están predefinidas. Debes definir tus propias etiquetas.
+
*Es autodescriptivo
+
*Es una recomendación de la W3C
+
*Lenguajes desarrollados en base a XML (cientos de ellos):
+
:RSS (real simple syndication), SOAP, XHTML...
+
 
</div>
 
</div>
 
 
<div class="slide">
 
<div class="slide">
 +
===Minimizar los HTTP Request===
 +
*Se cumple la [http://es.wikipedia.org/wiki/Principio_de_Pareto regla del 80/20]
 +
*Según los estudios realizados por Yahoo! el tiempo de carga de una página media depende en un 80% de la parte del cliente y en un 20% de la parte del servidor. Los navegadores de los usuarios dedican la mayor parte del tiempo a descargar imágenes, archivos JavaScript, hojas de estilos CSS y otros recursos externos.
 +
*Por este motivo, las mejoras en la parte del cliente generan muchos más beneficios que las mejoras en la parte del servidor.
 +
</div>
  
===Qué es XHTML===
+
<div class="slide">
*Significa: eXtensible HyperText Markup Language
+
====Imágenes====
*Extensible porque se pueden añadir módulos para hacer por ejemplo cálculos matemáticos o dibujar gráficos.
+
* Uso de sprites (y también image maps para imágenes contiguas). Ver ejercicios.
*Es prácticamente idéntico a HTML 4.0.1
+
*Elección del tamaño adecuado de las imágenes: el html no debe escalar la imagen.
*Es más “limpio y estricto” que HTML al ser un HTML reconstruido mediante el uso de XML (v1.0).
+
*Podemos usar programas como [http://toki-woki.net/p/Shrink-O-Matic/ Shrink O’Matic] o [http://www.imagemagick.org/ ImageMagick] para generar distintas versiones de nuestras imágenes.
*Es el estándar más reciente de HTML publicado por la W3C
+
 
</div>
 
</div>
 +
 
<div class="slide">
 
<div class="slide">
===Código en HTML===
+
*Uso de atributos: texto alternativo (alt), título de la imagen (title) y width y height.
Compuesto de etiquetas (que van en parejas, etiqueta de apertura y de cierre). XML, HTML5 y XHTML fuerzan esa etiqueta de cierre. En HTML4 hay algunas que pueden ir sin cierre, pero no se recomienda. Por ej. &lt;br&gt;
+
*Elige el formato correcto de las imágenes: JPG para imágenes grandes y llenas de colores. GIF y PNG para el resto. [http://www.websiteoptimization.com/speed/tweak/format/ Más información]
 +
*Nombres de ficheros de imágenes descriptivos (SEO) y en la medida de lo posible con links (al usuario le gustan y a google también).
 +
*HAZ DE LA OPTIMIZACIÓN DE IMÁGENES UN HÁBITO.
 +
</div>
  
 +
<div class="slide">
 +
*Uso de imágenes embebidas (eliminamos peticiones http pero deben ser imágenes pequeñas), [http://en.wikipedia.org/wiki/Data_URI_scheme puedes ver pros y contras].
 +
*[http://www.motobit.com/util/base64-decoder-encoder.asp Herramientas de codificación]. Ejemplo en código:
 
<source lang="html4strict">
 
<source lang="html4strict">
<html>
+
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
<head>
+
<title> Este es el titulo de la página</title>
+
</head>
+
<body>
+
<p> Salto de línea según w3c: </p>
+
<br> </br>
+
<p> El siguiente salto de línea funciona en todos los navegadores:  
+
</p>
+
<br />
+
</body>
+
</html>
+
 
</source>
 
</source>
 +
<source lang="css">
 +
div.menu {
 +
    background-image: url('elephant.png');
 +
    background-image:  url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTk
 +
                          SuQmCC');
 +
}
 +
</source>
 +
</div>
 +
 +
<div class="slide">
 +
 +
===Uso de CDN===
 +
*Es importante la proximidad del servidor web al usuario
 +
*Un CDN propio es una solución cara. Necesitamos clientes globales para que tenga sentido.
 +
*Con clientes locales será importante escoger un servidor web con un buen tiempo de respuesta: pocos saltos de red, cercano.
 +
*Un CDN es sencillo de implementar, pero si nuestra aplicación tiene escrituras a BBDD, el diseño de la arquitectura distribuida puede ser muy complejo.
 +
</div>
 +
 +
<div class="slide">
 +
 +
===Cabeceras HTTP y cache===
 +
*Los clientes web almacenan en una caché las páginas que van visitando, sus imagenes, css, etc.
 +
*Los servidores web indican el tiempo que tiene que estar almacenado en la cache mediante alguna de las siguientes cabeceras:
 +
**Last Modified
 +
**ETag
 +
**Expires
 +
**Max-Age
 +
[http://betterexplained.com/articles/how-to-optimize-your-site-with-http-caching/ Más información sobre cada uno de los métodos]
 +
</div>
 +
 +
<div class="slide">
 +
 +
===Uso de gzip===
 +
*Desde HTTP/1.1 los navegadores pueden indicar en las cabeceras http los formatos de compresión que soportan:
 +
<pre>Accept-Encoding: gzip, deflate</pre>
 +
*El servidor web lee dicho header y en función de su configuración, mandará comprimida la página web, indicándolo también en los http headers:
 +
<pre> Content-Encoding: gzip</pre>
 +
</div>
 +
<div class="slide">
 +
*Normalmente el servidor web utiliza una política de comprimir ficheros en un función de su extensión.
 +
*Comprimiremos html. También podemos comprimir css, js, xml o json. Las imágenes y pdf's no se comprimen.
 +
*La compresión de los ficheros suele ser de un 70%.
 +
*[http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/ Más información]
 +
</div>
 +
<div class="slide">
 +
 +
===Colocación de hojas de estilos en la parte superior===
 +
*Las páginas web se deben renderizar de forma progresiva: sirven al usuario para darle un indicador de progreso de carga.
 +
*Muchos navegadores no renderizan las páginas hasta que no leen todos los css:
 +
**Así se evitan las penalizaciones en tiempo de ejecutar varios render
 +
**El usuario mientras tanto ve una página en blanco.
 +
*Los @import se comportan como los <link> al final de la página en IE, por lo que debemos usar mejor <link>.
 +
</div>
 +
 +
<div class="slide">
 +
*Se deben evitar expresiones CSS (se utilizaban bastante en IE hasta la versión 8):
 +
<pre>background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" );</pre>
 +
*'''Resumiendo... los css siempre en el head y antes de cualquier javascript.'''
 +
</div>
 +
 +
<div class="slide">
 +
 +
===Colocación de scripts en la parte inferior===
 +
*La especificación HTTP/1.1 sugiere que los navegadores no deben descargar más de 2 ficheros de un mismo host de forma simultánea.
 +
*Cuando las descargas son scripts, se hacen de una en una
 +
*¡No siempre se pueden llevar a la parte inferior!
 +
</div>
 +
 +
<div class="slide">
 +
 +
===Utilizar JavaScript y CSS externos===
 +
*Si los CSS o JavaScript se utilizan en varias páginas mejor externos
 +
*El html ocupará menos y los otros ficheros estarán cacheados entre páginas de la web y no consumirán un http request
 +
*Es negativo para visitantes de una sola página.
 +
*El mantenimiento es más sencillo, así como la reusabilidad del código.
 +
</div>
 +
 +
<div class="slide">
 +
 +
===Reducir peticiones DNS===
 +
*Si utilizamos varios hosts, permitimos descargas simultáneas
 +
*Si utilizamos varios hosts podemos provocar penalizaciones por búsqueda en dns
 +
*Los sistemas operativos y los navegadores realizan caches de dns
 +
</div>
 +
 +
 +
<div class="slide">
 +
 +
===Uso de versiones minified de JavaScript y CSS===
 +
* [http://yuilibrary.com/projects/yuicompressor/ YUI Compressor] (Yahoo User Interface)
 +
<pre>
 +
java -jar yuicompressor-x.y.z.jar myfile.js -o myfile-min.js
 +
</pre>
 +
* Otras opciones: [http://www.asp.net/ajaxlibrary/AjaxMinDocumentation.ashx Microsoft Ajax Minifier]
 +
</div>
 +
 +
 +
<div class="slide">
 +
 +
===Contenido de la web===
 +
*No juzgues un libro por su portada
 +
*En una web, si la primera pantalla "no gusta" el usuario no seguirá
 +
*Intenta "cortar elementos" si la página tiene scroll para que el usuario lo perciba
 +
*Utiliza la 3ª regla de Krug:
 +
: Reglas de Krug:
 +
:1.''“Don’t make me think.”''
 +
:2. ''“It doesn’t matter how many times I have to click, as long as each click is a mindless, unambiguous choice.”''
 +
:3. ''“Get rid of half the words on each page, then get rid of half of what is left.”''
 +
 
</div>
 
</div>
 
</div>
 
</div>

Revisión de 06:07 11 dic 2013



Accesibilidad, usabilidad y estándar W3C

Usabilidad

  • Facilidad de navegación por la web para el usuario final.
  • Usuario medio (sin ningún tipo de curso especializado) y con un equipo medio.
  • Objetivos:
Presentación de la información de forma clara y concisa
Menus, opciones y botones con funcionalidad clara y sin ambigüedad
Colocación de la información importante en un área apropiada de la web

Accesibilidad

  • Se intenta garantizar una experiencia de usuario similar para personas con discapacidades.
  • WAI (Web Accesibility Initiative)
  • Uso habitual en organismos públicos, como en la web del Ayuntamiento de Zaragoza

Niveles de conformidad

  • Nivel A
    • Imágenes con texto alternativo (alt)
El atributo alt es bueno para el SEO
Uso inapropiado:
<img src=“menswatches.jpg” alt=“”>
Uso habitual:
<img src=“menswatches.jpg” alt=“menswatches”>
Uso adecuado:
<img src=“menswatches.jpg” alt=“Rolex Yacht Master watches for men”>
  • Contenido multimedia: Se proporciona contenido descriptivo alternativo
  • El contenido debe tener un orden de lectura no dependiente del diseño o estilos
  • El contenido no debe depender de colores y debe ser fácilmente distinguible del fondo
  • Las funcionalidades de la pagina deben ser accesibles desde el teclado.
Ejemplo de página con acceso desde el teclado
Utilizar AccessKeys es fácil
<div id="navigation"> 
<a href="index.html" accesskey="q">Home</a> |  
<a href="about.html">About Foos</a> |  
<a href="buy.html">Buy Foos</a> |  
<a href="sitemap.html">Site Map</a> |  
<a href="feedback.html">Feedback</a> |  
<a href="access.html">Accesskey Details</a> 
</div>
<div id="navigation"> 
<a href="index.html" accesskey="h">Home</a> |  
<a href="about.html" accesskey="1">About Foos</a> |  
<a href="buy.html" accesskey="2">Buy Foos</a> |  
<a href="sitemap.html" accesskey="3">Site Map</a> |  
<a href="feedback.html" accesskey="4">Feedback</a> |  
<a href="access.html" accesskey="k">Accesskey Details</a> 
</div>
  • Sin más de 3 destellos o cambios de imagen por segundo
  • Títulos descriptivos en cada pagina
  • Sistema para saltar de bloques de contenido y navegación secuencial
  • Nivel AA
    • Debe cumplir las pautas del nivel A
    • Subtítulos para el contenido multimedia con audio
    • Contenido alternativo descriptivo para contenido multimedia con vídeo
    • Contraste alto entre fondo y texto (al menos 4,5:1)
    • Se puede variar tamaño de fuente hasta un 200% sin perdida de funcionalidad
    • Encabezados descriptivos
    • Al menos dos formas distintas para navegar por el site
    • En los envíos de información confidencial debe existir un sistema para corregir, retroceder o advertencia de error y que te permita corregirlo.
  • Nivel AAA
    • Debe cumplir con las pautas del nivel A y AA
    • Lenguaje de signos para el contenido multimedia con audio
    • Descripción completa para el contenido multimedia con vídeo
    • Contraste muy alto entre fondo y texto (al menos 7,1:1)
    • Contenidos multimedia sin audio de fondo (sólo locución principal)
    • La pagina debe poseer un sistema para que el usuario pueda cambiar los colores de texto y fondo, limitar las lineas a 80 caracteres, alto de linea y tamaño de fuente. Todo ello sin que sea necesario utilizar el scroll horizontal para poder ver todo el contenido
    • Las imágenes con texto sólo pueden utilizarse para decorar.
    • Las funcionalidades de la pagina deben ser accesibles desde el teclado sin ningún tipo de excepción
    • Reanudación de sesión: Cuando un expira la sesión el usuario puede volver a reanudar sesión sin perdida de datos
    • Se proporciona al usuario información sobre su situación en la pagina
    • Texto descriptivo sobre el destino de cada enlace
    • Encabezados en cada sección
    • Definir el idioma de la pagina
    • En todos los envíos de información sistema debe existir un sistema para corregir, retroceder o advertencia de error y que te permita corregirlo

Uso de estándares

  • Iniciativa de la W3C
  • Las metas son compatibilidad entre plataformas (uso de esándares web abiertos) y tamaño de ficheros compacto.
  • Ejemplo: separación de contenido (html) y presentación (css).
  • Una web que cumple los estándares no tiene porque ser una web con buena usabilidad o accesibilidad.

Compromisos entre uso de estándares, usabilidad y accesibilidad

  • Aunque están muy relacionados, no siempre van de la mano. Veamos algunos casos y sus posibles soluciones:

Color

  • Herramienta visual básica para el diseño Web
  • El 10% de las personas presentan algún tipo de deficiencia visual y no pueden distinguir ciertos colores (especialmente rojo y verde).
  • Se puede sustituir parcialmente el uso de distintos colores con el uso de iconos y distintos tipos de texto en la codificación de la Web.
  • Herramienta para ver lo legible que es tu combinación de colores

Siglas, acrónimos y abreviaturas

  • Cuando las siglas se utilizan como si fuera una palabra, estamos hablando de acrónimos.
  • Ejemplo: RENFE REd Nacional de Ferrocarriles Españoles
  • Cuando las siglas se leen como la palabra que representan, hablamos de abreviaturas.
Ej: Sr
  • Los lectores de pantalla no siempre las reconocen: HTML, PDF, NaCl, SiteMap...

</div>

Imágenes y sonidos

Navegación repetitiva o excesiva

Diseño con varias columnas

  • Reducir la anchura de las líneas ayuda a la legibilidad del texto y nos permite tener más información en la pantalla.
  • Puede resultar también un inconveniente para un screen reader
  • Se pueden usar layouts de css con una sola columna y fijando su max-width para que no sea muy ancha.
  • En caso de que usemos tablas de datos, debemos indicar cabecera, títulos, etc, para que su lectura sea comprensible desde un screen reader ver ejemplo.

Herramientas de usabilidad

Eye tracking

  • Tecnologías que permiten registrar la forma en la que una persona mira una escena o imagen, en qué áreas fija su atención, durante cuánto tiempo y qué orden sigue en su exploración visual.
  • Conocer los puntos calientes en los que el usuario fija inicialmente la mirada, ayudan a estructurar los contenidos en una web.
  • Cuanto mas arriba y a la izquierda, más se verá. Cuanto más abajo a la derecha, menos relevancia visual tendrá.
  • Pruebas con grupo de al menos 5 usuarios. Se analizan las pruebas, se realizan cambios y se vuelve a probar.
  • Herramientas específicas eye tracking:
Crazyegg
Seevolution
Click Heat (Software libre)

Diseños preliminares: del boceto al prototipo

Sketch o borrador de un sitio web
  • El prototipo es la mejor forma de aproximarse a la comprensión y concepción del producto final (en este caso un sitio y/o páginas web).
  • Es útil ver y porque no, COPIAR de la competencia, que algo harán bien.
  • Listado de herramientas

Elaboración de prototipo mediante lápiz y papel

  • Sketch o boceto:
Papel y lápiz.
Se recogen ideas
Se prueban composiciones
  • Wireframe
Funcionalidad y especificaciones
Layout, menús de navegación...
Sin tipografía, colores ni otros aspectos visuales
Anotaciones sobre la funcionalidad que se espera
  • Mockup
Incorporamos el look&feel
  • Prototipo
Se prueba el diseño final
Tiene funcionalidad (normalmente reducida)

Diseños preliminares:presupuesto Web

Es fundamental la elaboración de algún boceto a la hora de dar un presupuesto final de un proyecto web a un cliente. 2 casos:

  • Aplicación funcional
El boceto debe representar bien los requerimientos del cliente. Un boceto en papel puede ser suficiente.
Utilizaremos alguna herramienta informática para buscar resultados más vistosos de cara al cliente:
Balsamiq Mockup (de pago)
Pencil (gratuito, multiplataforma)
  • Página Web centrada en el diseño
Uso de programas tipo Inkscape, Photoshop o Gimp.
Cada diseño es único y lleva su tiempo. Enseñar portfolio al cliente.
  • Calculo del presupuesto Web
¿Algún tipo de clasificación por tipo de trabajo?
¿Cálculo por horas? ¿Y cómo se calculan las horas que cuesta?
Ejemplo de cálculo

Instalación de Balsamiq Mockup en Ubuntu 12.04

  • Han dejado de dar soporte Adobe-air para Linux: Versión actual 2.6. Versiones Windows y Mac 3.1 o posterior.
  • Proceso de instalación de Adobe-air (documentación original):
Lo primero será instalar algunas dependencias:
$ sudo apt-get install libhal-storage1 libgnome-keyring0 lib32nss-mdns
Descargar e instalar getlibs, para poder utilizar las librerías 32 bits:
$ wget http://ubuntuguide.net/wp-content/uploads/2012/06/getlibs-all.deb
$ sudo dpkg -i getlibs-all.deb
Una vez instalado, vamos a proceder a instalar las librerías necesarias, que son dos, libhal-storage:
$ sudo getlibs -l libhal-storage.so.1
$ sudo getlibs -l libgnome-keyring.so.0.1.1
Ahora enlazamos esta última librería para que entre en funcionamiento:
$ sudo ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0 /usr/lib/libgnome-keyring.so.0
Ya pasamos a descargar e instalar Adobe Air, la versión 2.6:
$ wget http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRInstaller.bin
$ sudo chmod +x AdobeAIRInstaller.bin
$ sudo ./AdobeAIRInstaller.bin
Ahora podemos eliminar archivos descargados que ya son innecesarios:
$ sudo rm AdobeAIRInstaller.bin && sudo rm getlibs-all.deb
  • Por fin, ahora sí, instalamos balsamiq Mockup:
Descargamos el .deb eligiendo la versión adecuada
Lo ejecutamos, se cargará el centro de software y le damos a instalar :-)

Buenas prácticas para acelerar la carga de una web

  • El tiempo de carga y la performance de una página web es muy importante para la experiencia de usuario (UX).
  • Si tu web es lenta, no solo pierdes visitas, sino potenciales clientes.
  • Buscadores como Google tienen en cuanta la velocidad de carga de las webs para sus ranking de búsqueda.
  • ¡Cada milisegundo es importante!

Minimizar los HTTP Request

  • Se cumple la regla del 80/20
  • Según los estudios realizados por Yahoo! el tiempo de carga de una página media depende en un 80% de la parte del cliente y en un 20% de la parte del servidor. Los navegadores de los usuarios dedican la mayor parte del tiempo a descargar imágenes, archivos JavaScript, hojas de estilos CSS y otros recursos externos.
  • Por este motivo, las mejoras en la parte del cliente generan muchos más beneficios que las mejoras en la parte del servidor.

Imágenes

  • Uso de sprites (y también image maps para imágenes contiguas). Ver ejercicios.
  • Elección del tamaño adecuado de las imágenes: el html no debe escalar la imagen.
  • Podemos usar programas como Shrink O’Matic o ImageMagick para generar distintas versiones de nuestras imágenes.
  • Uso de atributos: texto alternativo (alt), título de la imagen (title) y width y height.
  • Elige el formato correcto de las imágenes: JPG para imágenes grandes y llenas de colores. GIF y PNG para el resto. Más información
  • Nombres de ficheros de imágenes descriptivos (SEO) y en la medida de lo posible con links (al usuario le gustan y a google también).
  • HAZ DE LA OPTIMIZACIÓN DE IMÁGENES UN HÁBITO.
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
div.menu {
    background-image: url('elephant.png');
    background-image:  url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTk
                           SuQmCC');
}

Uso de CDN

  • Es importante la proximidad del servidor web al usuario
  • Un CDN propio es una solución cara. Necesitamos clientes globales para que tenga sentido.
  • Con clientes locales será importante escoger un servidor web con un buen tiempo de respuesta: pocos saltos de red, cercano.
  • Un CDN es sencillo de implementar, pero si nuestra aplicación tiene escrituras a BBDD, el diseño de la arquitectura distribuida puede ser muy complejo.

Cabeceras HTTP y cache

  • Los clientes web almacenan en una caché las páginas que van visitando, sus imagenes, css, etc.
  • Los servidores web indican el tiempo que tiene que estar almacenado en la cache mediante alguna de las siguientes cabeceras:
    • Last Modified
    • ETag
    • Expires
    • Max-Age

Más información sobre cada uno de los métodos

Uso de gzip

  • Desde HTTP/1.1 los navegadores pueden indicar en las cabeceras http los formatos de compresión que soportan:
Accept-Encoding: gzip, deflate
  • El servidor web lee dicho header y en función de su configuración, mandará comprimida la página web, indicándolo también en los http headers:
 Content-Encoding: gzip
  • Normalmente el servidor web utiliza una política de comprimir ficheros en un función de su extensión.
  • Comprimiremos html. También podemos comprimir css, js, xml o json. Las imágenes y pdf's no se comprimen.
  • La compresión de los ficheros suele ser de un 70%.
  • Más información

Colocación de hojas de estilos en la parte superior

  • Las páginas web se deben renderizar de forma progresiva: sirven al usuario para darle un indicador de progreso de carga.
  • Muchos navegadores no renderizan las páginas hasta que no leen todos los css:
    • Así se evitan las penalizaciones en tiempo de ejecutar varios render
    • El usuario mientras tanto ve una página en blanco.
  • Los @import se comportan como los <link> al final de la página en IE, por lo que debemos usar mejor <link>.
  • Se deben evitar expresiones CSS (se utilizaban bastante en IE hasta la versión 8):
background-color: expression( (new Date()).getHours()%2 ? "#B8D4FF" : "#F08A00" );
  • Resumiendo... los css siempre en el head y antes de cualquier javascript.

Colocación de scripts en la parte inferior

  • La especificación HTTP/1.1 sugiere que los navegadores no deben descargar más de 2 ficheros de un mismo host de forma simultánea.
  • Cuando las descargas son scripts, se hacen de una en una
  • ¡No siempre se pueden llevar a la parte inferior!

Utilizar JavaScript y CSS externos

  • Si los CSS o JavaScript se utilizan en varias páginas mejor externos
  • El html ocupará menos y los otros ficheros estarán cacheados entre páginas de la web y no consumirán un http request
  • Es negativo para visitantes de una sola página.
  • El mantenimiento es más sencillo, así como la reusabilidad del código.

Reducir peticiones DNS

  • Si utilizamos varios hosts, permitimos descargas simultáneas
  • Si utilizamos varios hosts podemos provocar penalizaciones por búsqueda en dns
  • Los sistemas operativos y los navegadores realizan caches de dns


Uso de versiones minified de JavaScript y CSS

java -jar yuicompressor-x.y.z.jar myfile.js -o myfile-min.js


Contenido de la web

  • No juzgues un libro por su portada
  • En una web, si la primera pantalla "no gusta" el usuario no seguirá
  • Intenta "cortar elementos" si la página tiene scroll para que el usuario lo perciba
  • Utiliza la 3ª regla de Krug:
Reglas de Krug:
1.“Don’t make me think.”
2. “It doesn’t matter how many times I have to click, as long as each click is a mindless, unambiguous choice.”
3. “Get rid of half the words on each page, then get rid of half of what is left.”

</div>