Responsive design - Parte 2/2

miércoles, 23 de enero de 2013

Para empezar a pensar en diseños adaptables primero debemos ponernos al dia con algunos conceptos:

Tag meta

Proporciona metadata acerca del documento HTML, útil para el procesamiento de la página (Por ejemplo: Codificación de caracteres, Autor, Últimas modificaciones, etc)

Siempre se ubican dentro del tag head



Viewport

Es un atributo del tag meta. Hace referencia al área visual en la cual mostramos el documento HTML. Podemos manipular una serie de caracteristicas que posee para controlar la visualización del HTML dentro de la pantalla de un dispositivo móvil.

Sus propiedades más destacadas son:
  • Inicial-scale: Escala inicial en la que se muestra la página. Valor numérico de 0.1 en adelante. 1 representa no escalar
  • Width: Ancho del área visible, en píxeles. Es buena práctica usar el valor device-width para ajustar dinámicamente el tamaño del área visible al ancho del dispositivo
(Más info: http://www.desarrolloweb.com/articulos/etiqueta-meta-viewport.html)

Media-queries

Le facilita al navegador la información necesaria acerca de cómo renderizar la página para anchuras específicas a través de expresiones que retornan verdadero o falso

Hay varias alternativas de lugares donde podemos especificar la media-query. Ellas son:
  • Usando @media en las hojas de estilo: Es la opción más usada. Si la expresión es verdadera se ejecuta el código css encerrado entre llaves { }
  • Usando @import: Es parecido al anterior, solo que en vez de código css se indica la hoja de estilos que se quiere usar en el caso de que la condición sea verdadera
  • Indicando la expresión directamente en el link de importación del .css bajo el atributo media
  • Utilizando código javascript: Por medio de las media-queries podremos adaptar nuestros sitios a resoluciones, orientación e incluso colores
La opción más utilizada (y sobre la cual nos vamos a enfocar) es la primera, usando @media


Ejemplo práctico

Creamos el código necesario para editar los estilos cuando tenemos un iPad en posición vertical

En el HTML:



En el CSS:



Sencillo? Analicemos en profundidad el código HTML y el CSS correspondiente

HTML:





En este código le indicamos al navegador que ancho, alto y escala debe utilizar para mostrar el contenido. Detalles:
  • El valor del atributo content es conjunto de propiedades especificadas como clave=valor donde hay constantes que podemos utilizar para adaptar nuestro sitio de mejor manera a la resolución del usuario: device-width y device-height (este último no suele utilizarse porque el navegador muestra el scroll cuando el contenido verticalmente es mayor a la resolucion del usuario)
Existen otras propiedades que podemos utilizar:


  • Escala: zoom inicial




  • Limitaciones de escala máxima y mínima




  • Desactivar / Activar zoom




  • Ajustar los DPI (Puntos por pulgada)





CSS:

Con la sintáxis @media se nos permite interactuar con el browser para generar estilos que serán aplicados solo si se cumplen las condiciones especificadas.


@media + media type: Es una regla que permite definir estilos para cada tipo de medio de visualización de una página. Estos medios incluyen desde pantallas, proyectores, impresiones, pantallas táctiles para braille, televisores, etc.

Podemos usar un mismo estilo para varios tipos (Separados por coma)
           


En nuestro ejemplo, nosotros solo aplicamos estilo a un solo tipo de visualizador (screen)


and (propiedad: valor): Se anexan al media type para dar especifidad a los estilos que buscamos aplicar. Podemos usar muchos de estos condicionales separados por coma

Las propiedades que podemos utilizar son muchas pero las más importantes son:
  • Aspect-ratio: Mira las dimensiones relativas del dispositivo expresadas como una relación de aspecto: 16:9, por ejemplo
  • Width y height: Mira las dimensiones del área de visualización. Además pueden ser expresadas en valores mínimos y máximos (Como en el ejemplo que estamos analizando)
  • Orientation: Mira si el layout es panorámico (el ancho es mayor que el alto) o vertical (el alto es mayor que el ancho). Esto nos permite ajustar los diseños para dispositivos con propiedades de giro de la pantalla como el iPhone, y otros smartphones y los tablets
  • Resolution: Mira la densidad de los pixeles en el dispositivo de salida. Esto es especialmente útil cuando queremos aprovecharnos de las ventajas de los dispositivos que tiene una resolución mayor a 72 dpi
  • Color, Color-index y monochrome: Encuentran el número de color o bits por color. Esto nos permite crear diseños específicos para dispositivos monocromáticos.
En el ejemplo que citamos, hacemos uso de condiciones que afectan:
  • Ancho máximo y mínimo de la pantalla: and (min-width: 768px)  and (max-width: 1024px)
  • Orientación: and (orientation: landscape)






Para terminar, les dejo como un nuevo ejemplo de un sitio que responde perfectamente con las técnicas de un diseño responsive design: www.bostonglobe.com

Y para ser más específicos todavía les dejo el link de la hoja de estilos donde se aplican las media queries para que las puedan ver más fácilmente: http://www.bostonglobe.com/css/globe-trialHeaders.css



Leer más...

Responsive design - Parte 1/2

miércoles, 9 de enero de 2013

La web no es estática; cambia todo el tiempo y también la forma en la que accedemos a ella. Un signo visible de esta verdad es la cantidad de dispositivos móviles que están a nuestro alcance y que usamos para conectarnos a internet

Este cambio de paradigma tan grande que se dio en estos tiempos debido al gran uso de teléfonos inteligentes y tabletas nos hizo notar (a todos aquellos que construimos la web) que no basta con una sola vista de nuestro sitio para toda la gama de ordenadores móviles y de escritorio desde la que nuestros clientes consumen lo que les ofrecemos


Es por ello que nacen un conjunto de técnicas que nos permitirán hacer adaptable al entorno del usuario nuestros sitios web. A este conjunto de técnicas las denominamos Responsive design


El diseño adaptable o responsivo es un conjunto de técnicas de desarrollo web que, mediante el uso de estructuras fluidas y media-queries, permiten adaptar un sitio al entorno del usuario

 
Aquí les dejo un ejemplo de un sitio web con un diseño adaptable: www.spigotdesign.com

La idea y creación de estas técnicas provienen de la W3C en su recomendación “Mobile Web Best Practices”, donde se hace referencia a que deberíamos construir una web para todos y accesible desde cualquier dispositivo


Aplicar un diseño adaptable tiene sus ventajas:


  • 1 sólo código: No quedamos atados a plataformas, tecnologías o resoluciones
  • Experiencia de usuario mejorada: Diseño según resoluciones y según orientación de nuestro dispositivo
  • Mejor lectura y usabilidad para personas con discapacidad
  • Actualizaciones eficientes y mejores búsquedas
  • Mejor SEO: Google localiza mejor el contenido

Y también algunos detalles que debemos tener en cuenta:
  • Google te odia: Las imágenes se redimensionan, pero hacen esto desde el máximo posible (Un tamaño que seguramente en un dispositivo móvil no usemos). Así, penalizamos a nuestro móvil en una descarga de imágenes que finalmente no utilizará y a nuestro sitio por tardar en descargarse, e iremos a parar a las catacumbas de los resultados de Google
  • Estresando las máquinas: Para el CPU del dispositivo o el PC no es gratuito redimensionar las imágenes
  • Reestructuración de sitios existentes: Algunos sitios (Al estar pensados para grandes resoluciones) pueden ser complicados de aplicar un diseño responsivo. Quizás se deba modificar la estructura original para obtener claridad y luego recién, trabajar en las diferentes vistas para resoluciones inferiores a la inicial

    La aplicación de estas técnicas tiene su éxito en aprovechar las bondades de cada dispositivo para ofrecer la mejor experiencia de usuario posible, bajo ningún punto de vista requiere que la información y funcionalidad esté implementada de la misma manera para el universo de puntos de acceso

    En un próximo artículo veremos la aplicación práctica!


    Links de interés:



    Leer más...

    ¿Qué es Visualización de Datos?

    jueves, 27 de diciembre de 2012

    logo

    Un issue para los informáticos y no informáticos

    Al desarrollar  un estudio, investigación o trabajo generalmente se deja para el final la presentación de los datos. Se suele dar gran importancia al proceso de descubrimiento, al desarrollo de las preguntas, al estudio del conocimiento existente pero al armado de los gráficos con resultados se le dedica poco tiempo.
    En sistemas, invertimos gran parte del  tiempo en el análisis, diseño y desarrollo de nuestras aplicaciones. Normalmente, asignamos mucho tiempo al testing, a la implementación y la puesta en producción. Sin embargo la presentación de los  datos  almacenados, se limita solo al desarrollo de aburridos reportes que poco significan para el usuario. Los que  trabajamos en desarrollo, confiamos el diseño de nuestros sitios a empresas especializadas. No tenemos miedo, es más, nos jactamos al decir que lo nuestro es la estructura interna. La presentación es un detalle en el cual poco nos involucramos.
     No es un tema menor la preparación del artículo final de los resultados de una investigación o el acceso a los datos almacenados en la base de una aplicación compleja.
    Por otro lado,  actualmente Internet nos tapa de información. Desde datos de distintas fuentes, blogs, páginas de presentación de empresas, instituciones. Textos de todo tipo, noticias, ensayos, tesis, revistas científicas.
    Dentro de toda esta maraña de info, se han puesto de moda los gráficos. Toda empresa que se precie debe tener ( o tratar de ) un tablero de comandos o Dashboard.

    Miremos algunos gráficos que dan que hablar


    • Cómo se consume la energía en Alemania ... ?
    • Conozcamos la escala del universo
    Es  increíble todo lo que dicen estos simples gráficos o animaciones. Son sólo un ejemplo para tomar conciencia de la importancia de un diseño adecuado y enriquecedor.
    Es interesante también conocer imágenes donde el tamaño o la ubicación proveen de información valiosa. Tales como los 'treemaps' y los 'timelines'.

    Treemaps y líneas de tiempo

    Por ejemplo el treemap del buscador de noticias http://newsmap.jp, donde el tamaño se asocia a la popularidad de la noticia y el color al tema.Por otro lado, las lineas de tiempo permiten conocer de un vistazo una historia, pudiendo entrar en detalle a demanda. Un caso es la biografía de Facebook.
    Hay gente dedicada a esto desde hace tiempo:
    A esta altura es necesario formalizar un poco todo esto y definir:

    Infovis -Information Visualization-

      ¿Qué es Visualizar?
    Es la formación  de la imagen mental de un concepto abstracto. Entendiendo como Imagen: conciencia de un objeto ausente o inexistente. Imagen es la representación construida al margen de los estímulos sensoriales.
    ¿Qué es la información?
    Conocimiento adquirido a través de la experiencia o el estudio La información consiste en la elaboración de datos, las señales en bruto que se pueden recoger de los objetos o fenómenos, para construir el conocimiento.
     Entonces,¿ que es visualización de la información?
    'proceso de interiorización del conocimiento mediante la percepción de información'
    La visualización de la información incide en la transformación de la información en conocimiento   (tomado de http://infovis.ne)


    Me gustó mucho también la definición de http://infovis.org/
     ...
    Visualization is more than a method of computing! It is a process of transforming information into a visual form enabling the viewer to observe, browse, make sense, and understand the information. It typically employs computers to process the information and computer screens to view it using methods of interactive graphics, imaging, and visual design. It relies on the visual system to perceive and process the information.
    Visualization is more than pretty pictures. This is not to lessen the importance of visual aesthetics. The latter is quite important in making the user like to look at the information. However, the beauty of an effective visualization is more than skin deep ..
     Las visualizaciones de datos nos permiten ver y entender nuestra información con mayor profundidad. Esta comprensión nos conduce a tomar mejores decisiones.
    Sin la visualización de los datos y el análisis de los mismos, es posible caer en malentendidos y perder oportunidades.
    Algunas visualizaciones son tan poderosas que nos permiten cambiar nuestra concepción del mundo. Les muestro algunas representaciones que cambiaron la historia:

    • Florence Nightingale
    En la guerra de Crimea, en 1855 Gran Bretaña está luchando tanto con Rusia como con la enfermedad.
    Como enfermera, Florence quería convencer a la armada para que invirtiera en hospitales y cuidado de la salud en lugar de gastar en armas.

    Para esto, contó una historia con datos mostrando la cantidad de muertes por enfermedad. Esto se marca con gris.

    Después de esto, los cuidados sanitarios se hicieron prioritarios para la armada inglesa.


    • Minard, al representar la campaña de Napoleon
    En 1812 Napoleón marcho a Moscú para expandir su imperio. El 98% de los soldados murieron. Cincuenta años más tarde, el ingeniero Charles Minard quizo recordar los horrores de la guerra con datos.
    Estos se representan en el mapa. El ancho de la linea representa la cantidad de soldados en la ida y vuelta.

    Debajo, hay un  grafico de la temperatura, que demuestra que las bajas temperaturas aniquilaron la tropa.

    Este gráfico sirvió de inspiración para aquellos que deben determinar el verdadero costo de la guerra. 
    • Mapa del cólera en Londres

    En 1854 hubo una epidemia de colera en la que más de 500 personas murieron en un mismo barrio. Este foco misterioso de infección era especialmente aterrador por no saber la causa del mismo.
    John Snow, un epidemiologista, determinó que el suministro de agua fue la causa del desarrollo de la epidemia en la zona.
    Dibujó cada muerte en un mapa, con un gráfico de barras cuya altura correspondía a la cantidad de muertes por lugar.
    Asi se dio cuenta que verca de la bomba de agua de Broad Street había una mayor cantidad de muertes.Así pudo convencer a las autoridades para modificar la ubicación del suministro de agua.
    http://en.wikipedia.org/wiki/1854_Broad_Street_cholera_outbreak


     
    Quiénes trabajan con visualizaciones actualmente
    Hay mucho más para ver y debatir, pero es un buen momento para determinar cómo estamos ubicados respecto al tema. Para ello,  es interesante el test publicado por la gente de PerceptualEdge: determinar el IQ gráfico.
    ¿Cómo les fué?

    Escribí este artículo después de leer material de la Maestría que cursé en la Universidad de Buenos Aires.
    To be continued ...
    Leer más...

    Git: submódulos anidados

    jueves, 25 de octubre de 2012

    Los submódulos en Git son una forma muy elegante de resolver el tema de las dependencias entre proyectos, permitiendo hacer referencia en varios proyectos (repositorios) a un mismo proyecto (repositorio) compartido.

    Sin embargo, la creación de un repositorio con submódulos anidados está lejos de ser intuitiva. En esta entrada de nuestro blog en inglés le mostramos cómo hacerlo.
    Leer más...

    TypeScript: desarrollo Javascript a gran escala

    jueves, 4 de octubre de 2012


    Actualmente existen varios “superlenguajes” que permiten escribir JavaScript en una forma más abreviada o segura o con diversas ventajas (el mas conocido es CofeeScript).  Todos ellos se “compilan” a Javascript válido, que es el que viaja al browser.

    Ahora Microsoft está haciendo su propia apuesta en ese tema, con el TypeScript  - que es un super-conjunto de Javascript con varias características novedosas (entre ellas el control opcional de tipos) que hacen más seguro y fácil el desarrollo en la escala de aplicaciones completas. Tal como en los otros casos, se compila a Javascript convencional..

    Hasta acá la iniciativa no sería demasiado impresionante… pero MS se está jugando una carta fuerte en este proyecto – que espera sirva de base para el desarrollo para Windows 8 ademas de la web. El responsable del proyecto es nada menos que Anders Hejlsberg, creador del C# y uno de los responsables del proyecto del .NET framework – que fue la plataforma que permitió a MS recuperar el liderazgo en las herramientas de desarrollo.

    Asi que va a valer la pena seguir con atención la evolución de este tema…
    El anuncio fue realizado en esta entrada (en inglés) en el blog de S. Somasegar, VicePresidente de la division de Desarrollo en Microsoft.
    Leer más...

    Puente entre TFS y Git para control de código en paralelo

    viernes, 14 de septiembre de 2012

    Una alternativa para casos especiales

    A veces un repositorio de código está alojado en Team Foundation Server - y no puede cambiarse esa decisión - pero uno necesita interactuar desconectado del mismo durante un lapso más o menos prolongado (en términos de la cantidad de modificaciones aplicadas). O simplemente, las preferencias personales por Git - fácilmente entendibles - hacen que para una serie de cambios que requieran un manejo flexible del control de código, se busque la forma de aprovechar las ventajas de Git.

    git-tfs

    Para resolver las tareas de identificar los cambios realizados sobre el repositorio Git (agregados, eliminaciones y modificaciones) y expresarlos en uno o más "changesets" de TFS, Matt Burke desarrolló un conector que funciona como puente entre los dos sistemas de control de cambios: git-tfs

    Despues de instalar el conector copiando los ejecutables a alguna carpeta y agregando la misma al PATH, se dispone de una serie de comandos 'git tfs' que funcionan como extensiones al git; eso permite:
    1. Crear un repositorio Git a partir de un proyecto o carpeta de TFS, ya sea con su "última foto" o con su historial completo de cambios.
    2. Sobre eso puede operarse con todas las facilidades de Git (branches, etc) haciendo "commits" (de Git) sobre el repositorio
    3. Para generar un "changeset" de TFS se utiliza el comando 'git tfs checkintool'
    4. Tambien pueden traerse cambios subidos al TFS despues de la bifurcacion inicial, mediante las secuencia de comandos 'git tfs fetch' y 'git tfs merge' (o 'git tfs rebase')
    La información más detallada puede leerse en el proyecto git-tfs en GitHub, y tambien en esta entrada de blog (en inglés) de Jeremy Skinner.

    Leer más...

    Nuestro primer aniversario en Ezeiza

    lunes, 30 de julio de 2012

    Los tiempos modernos nos obligan a adaptarnos a los cambios, adecuarnos a nuevos ritmos de vida y tomar decisiones inteligentes.

    Hace ya un año decidimos afianzar el crecimiento de la empresa abriendo una nueva sede de Tercer Planeta en Ezeiza, sumándola a nuestras oficinas existentes hace ya más de 10 años en la Ciudad de Buenos Aires.


    Festejamos un año en la nueva sede de Ezeiza (foto de la inauguración)

    La idea de descentralizar los espacios físicos tuvo como objetivo principal la búsqueda de la mejora en la calidad de vida de las personas que forman parte de nuestro equipo, siendo esta ciudad un punto estratégico que permite acortar tiempos de viaje diarios a muchos de nosotros.

    Hoy, a un año del acontecimiento, podemos decir que el desafío es todo un éxito, las diversas formas de comunicación disponibles en la actualidad, sumado a los comportamientos agiles, que hoy en dìa comparte la mayoría de las empresas de Tecnología y que son parte de nuestra forma de trabajo habitual, permitieron sortear fácilmente los obstáculos que presupone mantener equipos de desarrollo interactuando en diferentes proyectos y en locaciones remotas.

    Queríamos compartir esta alegría con toda la comunidad, e incitar a quienes esten en situaciones similares, a animarse a tomar decisiones en este mismo sentido.

    Leer más...

    Obtener version de Git (tag) desde CCNet

    viernes, 20 de julio de 2012

    Al implementar el flujo de trabajo "mínimo" descripto en mi post anterior, nos surgió la necesidad de acceder desde la plataforma de integración CruiseControl.Net a la información del ultimo tag de versión asignado en Git, asi como a la cantidad de commits ingresadas a partir del mismo; de modo de construir con esa información un identificador de versión (CCNet label).

    En este artículo - en nuestro blog en inglés - describimos con más precisión la funcionalidad requerida.

    La solución que implementamos - una extension para CCNET - está publicada en este proyecto en GitHub.


    Leer más...