<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Old Fashioned &#187; Artículos</title>
	<atom:link href="http://www.rodrigogalindez.com/categorias/artculos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rodrigogalindez.com</link>
	<description>The weblog of designer &#38; author Rodrigo Galindez.</description>
	<lastBuildDate>Fri, 20 Jan 2012 15:55:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Diseño adaptable. Parte Uno.</title>
		<link>http://www.rodrigogalindez.com/archivos/diseno-adaptable-responsive-design-espanol-parte-uno/</link>
		<comments>http://www.rodrigogalindez.com/archivos/diseno-adaptable-responsive-design-espanol-parte-uno/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 16:14:17 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Artículos]]></category>

		<guid isPermaLink="false">http://www.rodrigogalindez.com/?p=2583</guid>
		<description><![CDATA[Desde hace un tiempo hay una palabra que suena constantemente en la web en inglés: Responsive Design. Lamentablemente todavía no hay traducciones ni artículos que hablen sobre esta técnica en español, así que decidí escribir uno.
Pero además, como quiero profundizar en este enfoque, que me parece sumamente interesante, he decidido crear un sitio ficticio que [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace un tiempo hay una palabra que suena constantemente en la web en inglés: Responsive Design. Lamentablemente todavía no hay traducciones ni artículos que hablen sobre esta técnica en español, así que decidí escribir uno.</p>
<p>Pero además, como quiero profundizar en este enfoque, que me parece sumamente interesante, he decidido crear un sitio ficticio que realmente muestre este concepto a fondo. El proyecto también me ha servido para experimentar más con HTML5 (y sacar mis conclusiones, que escribiré en este artículo). Las animaciones en CSS3 vienen de yapa con este artículo.</p>
<p><span id="more-2583"></span></p>
<p>Este artículo es largo, y además de hablar sobre el Diseño Adaptable (una traducción gentilmente sugerida por <a href="http://www.twitter.com/jkusunoki">José Kusunoki</a>), también explica sobre el proceso de construcción de un sitio desde cero: desde bocetos en papel, pasando por conceptos en Fireworks, hasta el maquetado en HTML5 y CSS 3.</p>
<p>Espero poder escribir también sobre ciertos conceptos que andan dando vueltas en la web en inglés y casi nadie habla en español: <em>Responsive Design</em>, <em>Design in the Browser</em>, <em>Progressive Enhancement</em>, tipografías embebidas utilizando <a href="http://www.typekit.com">Typekit</a>, grillas, etc.</p>
<p>Pero más allá de introducir las tecnologías y metodologías, reflexionaremos sobre lo que significan para nosotros en el día a día. De nada sirve leer un cómo, si no se entiende el porque.</p>
<h5>Breve introducción al diseño adaptable</h5>
<p>No es trivial reflexionar en que cada día mas y mas personas acceden la web desde dispositivos móviles. Hablamos de handhelds (un iPhone, un Android), o tablets (iPads, por ejemplo). Si pensamos que una visita puede generar una venta o conversión, es imprescindible entonces poder ofrecer una versión del sitio aunque sea mínimamente adaptada para pantallas pequeñas.</p>
<p>Hay varios enfoques para resolver este problema. El mas conocido tal vez sea diseñar el sitio con un layout líquido (o sea, que sus columnas estén definidas en porcentajes, y éstas se adapten al ancho de la ventana del navegador). Esto funciona hasta cierto punto, pero se complica cuando el tamaño de la ventana es extremadamente chico o muy ancho: algunos elementos se pueden cortar, o las proporciones pueden deformarlos.</p>
<p>El otro enfoque, con gran auge estos días y del que hablaremos en este artículo, es el diseño adaptable: optimizar el sitio, utilizando <em>media queries</em>, para ofrecer la mejor versión para el tamaño de la pantalla del usuario. Parece un tanto complejo, pero en la práctica no lo es.</p>
<p>En mi opinión, el diseño adaptable no se trata de una metodología de desarrollo: es un error pensar que todo se resume a sacar los <code>float</code> de los elementos y mostrar el contenido en una sola columna. En realidad, estamos hablando de <strong>optimizar los elementos</strong> de una página para el tamaño de la pantalla del dispositivo, pero sobre todo para las <strong>condiciones de uso de móviles</strong>.</p>
<p>Esto quiere decir que, si tenemos un sitio con un gran uso de imágenes, tal vez en un iPad éstas deban mostrarse mas prominentemente, y por lo tanto deban ser mas grandes que en su version <em>desktop</em>. O, que en un iPhone, el area para hacer clic deba ser mas grande para adecuarse al tamaño del dedo humano (una aplicación de la ley de Fitts, claramente).</p>
<p>No hay que olvidarse de las condiciones de los usuarios móviles: apurados, con muchas distracciones, generalmente requieren lo fundamental. Esto conlleva a hacer un serio análisis de lo que realmente importa en el sitio: ¿En el subte, apretado, con poca movilidad y tiempo, si el usuario está viendo mi sitio en un iPhone, que es lo imprescindible que debo ofrecer?</p>
<p>Como tantas cosas en la web, el diseño adaptable entonces es una mezcla de usabilidad, diseño de experiencia y algo de metodología de desarrollo.</p>
<h5>Sobre el proyecto de ejemplo</h5>
<p>El proyecto que vamos a diseñar servirá para mostrar trabajos de un negocio o un artista. Debe ser algo bastante general, que pueda adaptarse, con cambios mínimos, a diferentes tipos de mercados: de Negocios, Personal, de Fotografía, etc. Por lo tanto el énfasis, visualmente hablando, estará en las imágenes, aunque el diseño deberá ser lo suficientemente invisible como para dejar que el contenido sea lo mas importante.</p>
<div class="image-post">
<img src="http://www.rodrigogalindez.com/wp-content/uploads/rams.png" alt="Productos diseñados por Dieter Rams" class="nudge-bottom" />
</div>
<p>Utilizaremos tipografías provistas por Typekit (en su momento hablaremos sobre esto también). Las imagenes de ejemplo serán de productos de Braun diseñados en la época de Dieter Rams. Rams es tal vez uno de los mejores diseñadores industriales de la historia, y comparto plenamente muchas de sus observaciones sobre lo que el diseño debe ser: funcional, simple, práctico, al punto. </p>
<p>El sitio estará fuertemente basado en grillas, que permitirán construir los templates mas rápidamente en forma modular: <strong>diseñaremos un sistema</strong>, no un sitio. Un sistema que funcionará tanto en un ambiente <em>desktop</em>, como en móviles o <em>tablets</em>.</p>
<h5>Bocetos en papel y en el browser</h5>
<p>Los bocetos en papel son importantísimos, porque permiten pensar ideas y desecharlas rápidamente, con costo prácticamente cero.</p>
<div class="image-post">
<img src="http://www.rodrigogalindez.com/wp-content/uploads/bocetos.png" alt="Bocetos" class="nudge-bottom" />
</div>
<p>En diseño adaptable son indispensables: nos permiten pensar en los problemas que tendremos en las pantallas chicas, y por lo tanto, dibujar posibles esquemas de layouts que podríamos ofrecer. Yo personalmente trato de forzarme a bocetar mas y mas en papel y no pasar directamente al browser o Fireworks/Photoshop.</p>
<p>¿Pero cómo? ¿Bocetar en el browser?</p>
<p>Bocetar en el browser es mi adaptación a otro término en inglés con bastante <em>hype</em> el año pasado: <em>Designing in the browser</em>. Se trata ni mas ni menos de olvidarse de Fireworks/Photoshop y pasar a crear directamente las interfaces utilizando código, y un navegador para mostrar los cambios. </p>
<p>Aunque esto funciona para sitios relativamente simples, pequeños y poco funcionales, en la realidad es poco práctico: si hay un cambio drástico de diseño de experiencia, el trabajo puede ser frustante y duplicarse, al rehacer todo de nuevo.</p>
<p>Tal vez un ejemplo pueda aclarar esto. Imaginemos que tenemos un template en HTML, con los <code>label</code> de un formulario ubicados arriba de cada <code>input</code>. Pero por un análisis de usabilidad posterior, se deciden cambiar al costado de cada <code>input</code>, y esa será la versión final del sitio. Este cambio drástico generará un costo de maquetación muy superior al que se generaría al simplemente bocetar esto en papel desde el principio o en un mockup estático en Fireworks/Photoshop. </p>
<p>También limitan la creatividad: nos estaremos enfocando solamente en producir templates limitando el proceso de experimentación para &#8220;contar la historia&#8221;, o resolver el problema. </p>
<p>En cambio, parece ser que la única justificación para  diseñar en el browser esté en el diseño de prototipos rápidos. Utilizando un buen framework de grillas y un set de módulos con componentes fácilmente reutilizables, podemos construir en pocas horas una aplicación para que posibles usuarios puedan testear rápidamente.</p>
<p>Esto es todo por ahora. En la próxima parte de este artículo hablaremos sobre frameworks de grillas (y explicaré el mío, que se usó para crear este sitio que están viendo), tipografía, prototipos y más diseño adaptable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigogalindez.com/archivos/diseno-adaptable-responsive-design-espanol-parte-uno/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Rediseñando Taringa</title>
		<link>http://www.rodrigogalindez.com/archivos/redisenando-taringa/</link>
		<comments>http://www.rodrigogalindez.com/archivos/redisenando-taringa/#comments</comments>
		<pubDate>Fri, 29 May 2009 02:42:50 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Artículos]]></category>

		<guid isPermaLink="false">http://www.rodrigogalindez.com/?p=1947</guid>
		<description><![CDATA[
This post is written in Spanish: It covers the redesign of the HTML and CSS code for Taringa.net, a site with over 13 million page views daily. In this article, I explain how to save thousands of dollars a day by using simple web standards techniques to reduce the size of the homepage by 50%. [...]]]></description>
			<content:encoded><![CDATA[<div id="intro">
<p>This post is written in Spanish: It covers the redesign of the HTML and CSS code for Taringa.net, a site with over 13 million page views daily. In this article, I explain how to save thousands of dollars a day by using simple web standards techniques to reduce the size of the homepage by 50%. A version of this article will be published in English in the coming days.</p>
</div>
<p>Luego de leer <a href="http://alt-tab.com.ar/como-funciona-taringa/">este artículo en Alt Tab</a>, en donde se entrevista a Alberto Nakayama sobre el funcionamiento de <a href="http://www.taringa.net">Taringa.net</a>, quedé bastante impresionado con la red de servidores y recursos que el sitio consume actualmente. Para un sitio como Taringa, con más de 13 millones de páginas vistas por mes, mantenerse optimizado es crucial, en el sentido en que esto implica una reducción en el ancho de banda que se consume, y por ende, en los gastos mensuales en servidores y su mantenimiento.</p>
<p>La gran pregunta es, ¿pueden los estándares web ayudar a minimizar los costos de funcionamiento de Taringa? En este post explico como optimizé la página principal, utilizando técnicas simples de estándares web, logrando <strong>reducir su tamaño en aproximadamente un 50%</strong>, de esta manera, ahorrando miles de dólares mensuales en servidores y su mantenimiento.</p>
<p><span id="more-1947"></span></p>
<h5>El problema</h5>
<p>Una rápida inspección al código HTML de la página principal muestra que el sitio no parece tan optimizado como uno quisiera. Algunos puntos que pude identificar:</p>
<ul>
<li><strong><code>H1</code>, el elemento más importante de una página no está siendo usado</strong>. Este elemento se encarga de describir el título de la página, además de proveer valiosos keywords a los buscadores. Tampoco hay una jerarquía de cabeceras (<code>H1</code>, <code>H2</code>, <code>H3</code>) coherente.</li>
<li><strong>Semántica pobre</strong>. No se usan los elementos de HTML para describir el contenido correspondiente. Una lista de ítems, que lógicamente se marcaría con el elemento <code>UL</code>, en Taringa se reemplaza por una serie de <code>DIV</code>s. <code>DIV</code> se usa para describir una sección de una página &mdash;como una cabecera, por ejemplo, o un conjunto de elementos. <code>UL</code>, en cambio, se usa para describir una lista no ordenada de elementos, en el caso de Taringa, podríamos usar <code>UL</code> para describir los últimos posts enviados.</li>
<li><strong>Poca optimización para buscadores (<acronym title="Search Engine Optimization">SEO</acronym>)</strong>. Esto es claramente una consecuencia del punto anterior. Los buscadores aman el contenido, pero también un contenido bien marcado y elementos de <code>HTML</code> bien usados. Mientras más limpio sea el código de una página, mayor indexabilidad tendrá.</li>
</ul>
<p>En promedio, la página principal de Taringa pesa 50KB. El sitio sirve más de 13 millones de páginas vistas por día, en un cálculo rápido, <strong>más de 600GB son transferidos por día</strong> (50KB x 13M = 620GB). Haciendo un cálculo rústico de 1GB = 1 dólar, nos revela que Taringa gastaría <strong>600 dólares por día solamente en servir <code>HTML</code></strong>.</p>
<p>Es bueno aclarar que en este artículo no voy a rediseñar la parte visual de Taringa. Hace un tiempo trabajé en <a href="http://www.trade2win.com">Trade2Win.com</a>, un sitio con alrededor de 2 millones de impresiones al mes, y aprendí que en sitios similares con mucho tráfico, las decisiones visuales deben hacerse con muchísimo cuidado porque repercuten directamente en los hábitos de uso de millones de usuarios. </p>
<p>Un retoque pequeño, y al parecer inofensivo, como cambiar el ícono de búsqueda por otro que al parecer funcionaría mejor, puede traer consecuencias desastrosas. Por lo tanto, solo me voy a enfocar en rediseñar el código <code>HTML</code> y <code>CSS</code> de la página principal del sitio, tratando de ser fiel al estilo visual del sitio lo más posible. </p>
<h5>Optimización para buscadores</h5>
<p>Una de las ventajas de diseñar con estándares viene de regalo: la optimización del sitio en buscadores. Los estándares (en este artículo hablamos solamente de <code>HTML</code>, <code>CSS</code> y <code>JS</code>) fomentan la semántica, y los <strong>buscadores en general valoran a las páginas semánticas sobre aquellas que no lo son</strong>.</p>
<p>La semántica, en pocas palabras, trata sobre el uso de un elemento determinado de <code>HTML</code> para describir el contenido para el que fue creado: por ejemplo, es lógico que el título de una página se marque con el elemento <code>H1</code>, ya que es el elemento más importante, pero en Taringa se lo reemplaza por una combinación de <code>DIV</code>s y <code>A</code>s. Google, en todo caso, no podría encontrar el título de la página ya que no hay un <code>H1</code> disponible, penalizando su posición en los resultados.</p>
<p>Ahora bien, el listado de últimos posts en la página principal es tal vez lo más interesante del sitio. Cada ítem se describe con un título y uno o dos íconos para una mejor identificación visual de la categoría. Éste es el código que se usa actualmente en Taringa para mostrar los últimos posts:</p>
<pre><code>&lt;div class="link"&gt;
&lt;div class="link_titulo"&gt;
&lt;span class="categoria arte" alt="Arte" title="Arte"&gt;&lt;/span&gt;
&lt;a href="" target="_self" title="Firmas A Pedido" alt="
Firmas A Pedido" class="box_link"&gt;Firmas A Pedido&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;</code></pre>
<p>Claramente, es demasiado. Se usa un serie de <code>SPAN</code>s para cada ícono, todo agrupado en un conjunto de <code>DIV</code>s, resultando en código no optimizado. Una propuesta, utilizando estándares web y marcado semántico, podría ser de la siguiente manera:</p>
<pre><code>&lt;li class="icon-art" title="arte"&gt;
&lt;a href=""&gt;Firmas A Pedido&lt;/a&gt;
&lt;/li&gt;</code></pre>
<p>Como vemos, cada ítem es marcado con su elemento correspondiente, <code>LI</code>. Luego, el atributo <code>class</code> se encargará de mostrar los íconos correspondientes para cada ítem, salvando preciosos bits y eliminando <code>DIV</code>s sin función.</p>
<p>Este enfoque semántico, del ejemplo, se extiende a toda la página, desde la lista de posts nuevos, hasta los posts más votados e incluso los avisos de Taringa.</p>
<p>De ahora en más, Google no interpretará la página principal de Taringa como una serie de contenido tirado sin descripción, ya que cada elemento ahora describe perfectamente su contenido, <strong>proveyendo mejor información para su clasificación e indexación</strong>. </p>
<h5>Reduciendo la cantidad de pedidos al servidor</h5>
<p>Alberto inteligentemente implementa <a href="http://www.alistapart.com/articles/sprites/">CSS Sprites</a> para mostrar los íconos en cada post. La idea es utilizar un archivo <code>GIF</code> con todos los íconos, en vez de 50 o más archivos separados, de esta manera reduciendo la cantidad de pedidos al servidor y disminuyendo la carga.</p>
<p>En este ejemplo, fuí un poco más allá y extendí el concepto para todas las imágenes del sitio, incluyendo los logos de Taringa/Google en la caja del buscador y los logos del pie de página. Los íconos de los sponsors también fueron optimizados.</p>
<p><img src="http://www.rodrigogalindez.com/wp-content/uploads/iconos-taringa.png" alt="Iconos en Taringa.net" class="centered" /><br />
<small class="tooltip center"><em>Una propuesta de organización de íconos para Taringa</em></small></p>
<p>En total, contando íconos, logos y otras imágenes, Taringa usa 14 archivos <code>GIF</code>. Esta optimización de imágenes me permitió reducirlos a solamente 2. En números fríos, <strong>una reducción de más del 85% en pedidos al servidor</strong>. </p>
<h5>Flexibilidad a prueba de balas</h5>
<p>Una mención aparte se merecen las imágenes con bordes redondeados, por ejemplo, el marco contenedor de la página, y muy especialmente, las secciones o módulos de Taringa. Es demasiado frustante para un diseñador no tener otra alternativa que aplicar artilugios varios para poder mostrar un simple borde redondeado. </p>
<p>CSS es un lenguaje con muchas fallas, pero en mi opinión, esta es la más grave. Sin embargo, siempre se puede optimizar y simplificar.</p>
<p>A modo de ejemplo, para mostrar el marco contenedor del sitio, en azul, Taringa usa 2 imágenes diferentes (<code>rtopbg.gif</code> y <code>maincontainerbg.gif</code>), además de código no semántico en el <code>HTML</code> para mostrarlas. Aunque este enfoque es totalmente válido, todavía se puede utilizar una sola imágen, y eliminar los <code>DIV</code>s extra en el <code>HTML</code> para una mejor interpretación del documento. Con un poco de <code>CSS</code> luego nos encargaremos de mostrar los bordes de la imágen, ya sea superiores o inferiores, <strong>reduciendo los pedidos al servidor en un 50%</strong>. </p>
<p>Otros criterios de optimización se aplicaron para otras partes de la página. <strong>La clave, siempre, es simplificar</strong>.</p>
<p>Las secciones, o módulos de Taringa, requiren una explicación aparte. En el sitio actual, se usan 4 imágenes para mostrar los bordes redondeados: 2 para cada esquina, uno para el fondo del título del módulo, y una imágen para los bordes inferiores (que tiene bordes inferiores para los diferentes anchos de las cajas). Además, claro, de código <code>HTML</code> extra para mostrarlas.</p>
<p>En el ejemplo, aplique lo que se conoce como <a href="http://en.wikipedia.org/wiki/Progressive_enhancement">Progressive Enhacement</a> para <strong>reducir el uso de imágenes para módulos de 4 a 1</strong>. De hecho, simplificando más aún, podríamos incluso no necesitar imágenes.</p>
<p>La idea básicamente es proveer una mejor versión del sitio para aquellos navegadores avanzados. En este caso, los bordes redondeados para los módulos utilizan una propiedad específica de Safari y Firefox (<code>-webkit-border-radius</code> y <code>-moz-border-radius</code>, respectivamente); sin embargo, los usuarios que naveguen con Internet Explorer igualmente podrán disfrutar del contenido y la funcionalidad del sitio.</p>
<div class="image-post"><img src="http://www.rodrigogalindez.com/wp-content/uploads/taringa-o-x4.png" alt="Taringa.net zoomeada 4 veces" /></div>
<p><small class="tooltip"><em>La página principal de Taringa con zoom x4.</em></small></p>
<p>Especial atención se puso para que la página y su contenido luzca mínimamente bien (sobre todo legible) al aumentar el tamaño de texto, como pueden ver en la captura siguiente: </p>
<div class="image-post"><img src="http://www.rodrigogalindez.com/wp-content/uploads/taringa-n-x4.png" alt="La nueva propuesta de Taringa.net zoomeada 4 veces" /></div>
<p><small class="tooltip"><em>El ejemplo de este artículo con zoom x4.</em></small></p>
<p>El rediseño de Taringa es ahora indestructible y soporta cambios en el tamaño de texto para aquellos usuarios que lo necesiten, aumentando su accesibilidad.</p>
<p>Si en el futuro se necesita agregar más opciones en la barra de navegación, llegando a las dos lineas de texto, podemos ver que la caja contenedora no se romperá, aguantando cambios en el texto.</p>
<h5>Conclusiones</h5>
<p>Este es un ejemplo rápido sobre como se podría optimizar el <code>HTML</code> y <code>CSS</code> de Taringa para minimizar los costos en servidores. Como extra, se recodificó la página para una mejor semántica y optimización en buscadores. El resultado es una <strong>optimización de 50KB a 26KB en el tamaño del archivo <code>HTML</code>, es decir una reducción del 50%</strong>.</p>
<p>Por cuestiones de tiempo, el ejemplo solamente está probado y funcionando en Safari y Firefox. Pero a los fines prácticos, una implementación para las diferentes versiones de Internet Explorer no agregaría demasiados bytes al resultado final.</p>
<p>En números:</p>
<table>
<tr>
<th />
<th>Sitio actual</th>
<th>Sitio propuesto</th>
</tr>
<tr>
<th>Imágenes</th>
<td>29</td>
<td><strong>6</strong></td>
</tr>
<tr>
<th>Tablas</th>
<td>2</td>
<td><strong>0</strong></td>
</tr>
<tr>
<th>Tamaño en <abbr title="Kilobytes">KB</abbr></th>
<td>50</td>
<td><strong>26</strong></td>
</tr>
<tr>
<th><abbr title="Bandwidth">BW</abbr> diario</th>
<td>600 GB</td>
<td><strong>300 GB</strong></td>
</tr>
<tr>
<th>Gasto en <abbr title="Bandwidth">BW</abbr> diario</th>
<td>600 USD</td>
<td><strong>300 USD</strong></td>
</tr>
<tr>
<th>Gasto en <abbr title="Bandwidth">BW</abbr> anual</th>
<td>219000 USD</td>
<td><strong>109500 USD</strong></td>
</tr>
<tr>
<th>Optimización en %</th>
<td />
<td><strong>50%</strong></td>
</tr>
</table>
<p><small class="tooltip"><em>Los valores son estimativos.</em></small></p>
<p>Este enfoque de optimización se puede aplicar a sitios con mucha demanda de servidor. Por ejemplo, <a href="http://www.meneame.net">Meneame</a>, <a href="http://www.fayerwayer.com">Fayerwayer</a>, <a href="http://www.clarin.com">Clarín</a> y <a href="http://www.lanacion.com">La Nación</a> y demás. </p>
<p><a href="http://www.rodrigogalindez.com/files/taringa/">Pueden ver el ejemplo funcionando aquí</a>. </p>
<div id="ad-es">
<p><a href="http://www.rodrigogalindez.com/acerca/">Rodrigo Galindez</a> es un diseñador de Argentina enfocado en el uso de estándares web. Trabaja diariamente para compañias en Londres y los Estados Unidos. <a href="http://www.rodrigogalindez.com/contacto/">Contacto</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigogalindez.com/archivos/redisenando-taringa/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Un análisis del nuevo Cadena3.com</title>
		<link>http://www.rodrigogalindez.com/archivos/un-analisis-al-nuevo-cadena3com/</link>
		<comments>http://www.rodrigogalindez.com/archivos/un-analisis-al-nuevo-cadena3com/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 15:31:48 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.16bits.net/archivos/un-analisis-al-nuevo-cadena3com/</guid>
		<description><![CDATA[Recientemente, Cadena 3 presentó su nuevo sitio en un evento con bombos y platillos en el Sheraton de Córdoba. Lamentablemente, el sitio está tan mal encarado que las críticas empezaron a aparecer enseguida en toda la blogósfera cordobesa. 
A continuación, contribuyo con un análisis visual y de código sobre el sitio, esperando que Cadena 3 [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente, <a href="http://www.cadena3.com">Cadena 3</a> presentó su nuevo sitio en un evento con bombos y platillos en el Sheraton de Córdoba. Lamentablemente, el sitio está tan mal encarado que las críticas empezaron a aparecer enseguida en toda la blogósfera cordobesa. </p>
<p>A continuación, contribuyo con un análisis visual y de código sobre el sitio, esperando que Cadena 3 tome estas sugerencias para mejorar.</p>
<p><span id="more-948"></span></p>
<h5>El amor entra por los ojos</h5>
<p>Visualmente, el sitio es pobre. Como no hay muchos espacios en blanco es dificil que a alguien le de placer leer el sitio. El contenido está muy junto, el diseño no respira y se extraña una buena grilla que dé más orden y separación entre los elementos.</p>
<p>Pero, el diseño no es terrible &mdash;como muchos piensan&mdash;; solamente faltan un par de toques y tal vez ampliar un poco más la paleta de colores. Me imagino que ese azul es un color institucional, por lo cual a los diseñadores no les quedó otra que usarlo en todas partes. </p>
<p>Los degradados están mal logrados: Parecen un descarte de algun sitio <em>Web 2.0</em> hecho por un amateur. Me da la impresión de que usando degradados Cadena 3 quiere ser <em>cool</em> o ser Web 2.0 &mdash;si es así les faltó el reflejo en el logo&mdash;. Un poco más de sutileza y contraste ayudaría mucho a mejorar el diseño. No hay que inventar nada nuevo ni engancharse en ninguna moda estúpida, solamente seguir principios básicos del diseño gráfico.</p>
<p>Por otro lado, no hay una jerarquía de la información. Para mí, el <em>Ranking de Radio Popular</em> es tan o más importante que las noticias del día. El banner de Creativos Unidos tiene tanta o más importancia que el inmenso logo de Cadena 3. Miren por ejemplo la sección <em>Bitácora de Audios</em>: Yo, que solo escucho la radio cuando me subo a un taxi, no diferencio el <em>El Chiki Chiki</em> de <em>Juntos</em>. </p>
<p>Al igual que en el sitio de <a href="http://www.lavoz.com.ar">La Voz del Interior</a>, el clima no es accesible a simple vista, el usuario <em>tiene</em> que hacer click y esperar a que se cargue otra página para saber un dato tán básico. Hubiera sido mejor ubicar un par de íconos y su descripción dentro del encabezado. Al menos, el enlace para consultar el clima está en la parte superior del sitio, en La Voz del Interior es inevitable presionar Cmd + F y luego tipear &laquo;clima&raquo; para que el navegador busque y resalte el enlace &mdash;que está en la última sección derecha del sitio!&mdash;. </p>
<h5>Si todo es importante, entonces nada es importante</h5>
<p>A simple vista, Cadena 3 tiene más contenido en la página principal que el <a href="http://www.nytimes.com">New York Times</a>. Y realmente no creo que produzcan más notas que la <em>Gray Lady</em>; el problema aquí es la pésima maquetación, el uso poco inventivo de la grilla &mdash;si es que hay alguna&mdash; y la política de encajar todo en la homepage. Está bien, para muchos cordobeses el cuartetero Damián Córdoba puede ser muy importante, pero dedicar más de 800 pixels de alto a una sección de rankings musicales &mdash;de dudosa calidad, o no&mdash; es demasiado.</p>
<p>En este sentido, separar casi 900 pixels de alto para las posiciones del campeonato futbolero es también curioso, y de hecho, me sugiere el tipo de audiencia de la cadena, más preocupado por saber como salió Instituto y por las ventas de La Fiesta, que de las noticias del país. Pero mejor evitemos las críticas tendenciosas y nos dediquemos a lo que realmente sabemos hacer: diseñar.</p>
<p>Podemos imaginar un mejor uso de la grilla para maquetar y disponer los elementos. Por ejemplo, para ahorrar los casi 600 pixels de alto de la columna <em>Boletines Informativos</em>, reemplazamos la lista de corresponsalías y redacciones por una lista desplegable. De esta manera reducimos el alto de esa sección a 150 pixels como mucho, 1/4 parte de la actual.</p>
<p class="img"><img src="http://www.16bits.net/images/cadena3-01.gif" alt="Cadena 3 - Figura 1" />Fig. 1. Una propuesta para las secciones con mucho contenido.</p>
<p>Es más, con una pequeña cookie podemos recordar la opción que eligió el usuario y mostrar por defecto la corresponsalía que le interesa cada vez que entra al sitio. Las posibilidades son muchas y sólo observando como actúan los usuarios se pueden sacar grandes ventajas.</p>
<p>Por otro lado, podemos repetir el mismo enfoque en <em>El Campo Hoy</em> y otras secciones largas, de esta manera estandarizando muchos de los bloques de información del sitio y reduciendo la altura total.</p>
<p>Sería bueno también agrupar algunas secciones para que se muestren horizontalmente &mdash;al mejor estilo <a href="http://www.theonion.com">The Onion</a>, fijensé la sección <em>Features</em>&mdash;. En este caso, por ejemplo, <em>El Espectáculo</em>, <em>Estrenos</em> y <em>Ranking de la TV</em>, podría agruparse en una sola sección <em>Espectáculos</em> y mostrarse horizontalmente. Clickeando en las flechas de izquierda o derecha, el usuario puede hacer aparecer el contenido que desee a gusto. </p>
<h5>Tipografía</h5>
<p>El uso de una buena fuente es primordial para un diario o publicaciones con mucho contenido. Fuentes bien escogidas permite evitar gastos innecesarios en papel, meter más caracteres en espacios reducidos y aumentar la legibilidad de las notas.</p>
<p>Generalmente se considera que las fuentes con buen ojo medio &mdash;la altura de la x minúscula&mdash; son mas legibles. Por otro lado, como el ojo no analiza cada letra individualmente, sino la palabra entera, se cree que las letras con <em>serif</em> &mdash;las terminaciones de cada letra&mdash; aumentan la legibilidad de un texto, ya que cada serif produce la ilusión de continuidad en el texto. &laquo;Así como yo puedo leer tu letra, vos también vas a poder leer la mía&raquo; diría Spiekermann en la película Helvetica, refiriéndose a la continuidad de los trazos al escribir con la mano. </p>
<p>Cadena 3 usa una tipografía sans-serif, Tahoma, en todo el sitio. En cualquier caso, el sitio está tan mal maquetado que si uno no tiene Tahoma instalada en el sistema &mdash;como en mi caso&mdash;, ve la tipografía por defecto del navegador, generalmente Times New Roman. Si Cadena 3 quería usar una tipo sans-serif, tendría que, al menos, haber dado otra alternativa sans-serif a Tahoma. Esto se puede hacer muy fácilmente en CSS usando algo similar a <code>font-family: Tahoma, Arial, sans-serif</code>. En este caso, el navegador buscará Tahoma, si no está instalada probará con Arial, y por último, en el peor de los casos, con cualquier tipografía sans-serif.</p>
<p>Aunque Times es una fuente probada y que funciona, la mancha de gris que produce en pantalla y en cuerpos muy pequeños &mdash;como lo hace Cadena 3&mdash; es poco homogénea. Mejor hubiera sido usar una tipografía especialmente creada para la web, como Georgia, con poco contraste &mdash;el contraste es la diferencia entre los trazos verticales y horizontales de una letra&mdash; y mancha más homogénea, aún en cuerpos pequeños. Mejor aún hubiera sido aumentar aunque sea un punto el cuerpo de las notas, ya que realmente son ilegibles.</p>
<p>Pero nos limitemos a tipos sans-serif. Todavía me sigo preguntando porque usaron Tahoma en vez de algo universal como Helvetica, para Mac, y Arial, en Windows.</p>
<h5>Optimizado para IE 4.0</h5>
<p>A mí, que navego con Safari y vivo en 2008, me parece sumamente graciosa y hasta inocente la afirmación de arriba. Más allá de lo visual, me llamó muchísimo la atención que un sitio lanzado en éstos días no haya sido maquetado siguiendo estándares web, aunque sea mínimamente. Y no me refiero solamente a no usar tablas &mdash;de hecho el &laquo;no uses tablas!&raquo; suena más a un argumento de alguien que toca de oído más que al de alguien que realmente sabe usarlas en algun contexto determinado de la vida real, como en formularios&mdash;, sino, a un pobre entendimiento de CSS y HTML para maquetar.</p>
<p>El código del sitio abusa de estilos en linea y prácticamente no reusa ninguna clase de CSS. No hay una clase <code>noticia</code> para mostrar cada post, entonces, estilizar una nota es un proceso individual y repetitivo que incluye <em>hacer encajar</em> la nota dentro de una celda de una tabla y luego jugar con elementos hiperdeprecados como <code>font</code>. </p>
<p>Todo esto, claro, se repite para cada nota. </p>
<p>En el futuro, cuando Cadena 3 quiera cambiar el estilo de las notas &mdash;digamos, aumentar en 1px el cuerpo de la tipografía&mdash; va a tener un problema grande.</p>
<p>Éste es el código que se usa en el sitio para mostrar una nota:</p>
<pre><code>
&lt;table width="30%"&gt;
&lt;tr&gt;
	&lt;td&gt;
		&lt;p style="margin-top: 0; margin-bottom: 0"&gt;&lt;a href="post_ampliado.asp?post=480"&gt;&lt;font color="#001242" style="FONT-SIZE: 20px" face="Tahoma"&gt;Sismo en Catamarca&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
		&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td&gt;
		&lt;p class="destacado" style="margin: 5px"&gt;&lt;font color="#800000" face="Tahoma"&gt;&lt;b&gt;17:54&lt;/b&gt;&lt;/font&gt;
		&lt;font face="Tahoma" color="#333333"&gt;Según datos del Inpres, el movimiento telúrico se registró a las 16.26 y tuvo epicentro a 40 km de la capital de Catamarca. El temblor tuvo una intensidad de 3 a 4 gradosº  en la escala Mercalli y una magnitud de 4,5 en la escala de Richter.&lt;/font&gt;
	&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
	&lt;td width="100%"&gt;
		&lt;table border="0" width="100%" id="table1280" bgcolor="#F4F4F4"&gt;
			&lt;tr&gt;
				&lt;td width="16"&gt;
					&lt;a href="javascript:popup('enviar',480)"&gt;&lt;img alt="Recomendar por mail" border="0" src="http://www.cadena3.com/images/iconomail.gif" width="16" height="17"&gt;&lt;/a&gt;
				&lt;/td&gt;
				&lt;td width="30"&gt;
					&lt;a href="javascript:popup('enviar',480)"&gt;&lt;font face="Tahoma" style="FONT-SIZE: 11px" color="#737173"&gt;Enviar&lt;/font&gt;&lt;/a&gt;
				&lt;/td&gt;
				&lt;td width="16"&gt;
					&lt;a href="post_ampliado.asp?post=480"&gt;&lt;img alt="Comentar la nota" border="0" src="http://www.cadena3.com/images/iconocomentar.gif" width="16" height="17"&gt;&lt;/a&gt;
				&lt;/td&gt;
				&lt;td width="47"&gt;
					&lt;a href="post_ampliado.asp?post=480"&gt;&lt;font face="Tahoma" style="FONT-SIZE: 11px" color="#737173"&gt;Comentar&lt;/font&gt;&lt;/a&gt;
				&lt;/td&gt;
				&lt;td&gt;
					&lt;p align="right"&gt;&lt;font face="Tahoma" style="FONT-SIZE: 11px" color="#151672"&gt;&lt;a href="comunidad.asp?comunidad=6"&gt;Sociedad&lt;/a&gt;&nbsp;&nbsp; &lt;/font&gt;
				&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/table&gt;
	&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
	&lt;td background="http://www.cadena3.com/images/lineagris.jpg" height="15"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;table&gt;
 </code></pre>
<p>Como pueden ver, no hay una separación clara del contenido (la nota) y la presentación (lo visual). Tampoco hay semántica: Google entiende que <em>Sismo en Catamarca</em> es un párrafo, cuando debería ser un título y la lista de enlaces &laquo;Enviar&raquo;, &laquo;Comentar&raquo;, &laquo;Sociedad&raquo;, no es una lista, es simplemente contenido <em>tirado</em> en una celda que dificilmente será leído por un lector de pantalla. </p>
<p>Más allá de eso, este pedazo de código ocupa 4KB y se repite muchas veces en la página. Ahora imaginen la cantidad de dinero mensual en hosting que está <em>perdiendo</em> Cadena 3 por no optimizar un poco su código.  </p>
<p>Éste es un mejor enfoque para maquetar una nota:</p>
<pre><code>
&lt;div class="post"&gt;
	&lt;h3&gt;&lt;a href=""&gt;Sismo en Catamarca&lt;/a&gt;&lt;/h3&gt;
	&lt;p&gt;&lt;span class="hora"&gt;17:54&lt;/span&gt; Según datos del Inpres, el movimiento telúrico se registró a las 16.26 y tuvo epicentro a 40 km de la capital de Catamarca. El temblor tuvo una intensidad de 3 a 4 gradosº  en la escala Mercalli y una magnitud de 4,5 en la escala de Richter.&lt;/p&gt;

	&lt;ul&gt;
		&lt;li class="enviar"&gt;&lt;a href=""&gt;Enviar&lt;/a&gt;&lt;/li&gt;
		&lt;li class="comentar"&gt;&lt;a href=""&gt;Comentar&lt;/a&gt;&lt;/li&gt;
		&lt;li class="categoria"&gt;&lt;a href=""&gt;Sociedad&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
&lt;/div&gt;
</pre>
<p></code></p>
<p>El título de la nota es un título en HTML, <code>H3</code>, el contenido, un párrafo <code>P</code>, y la lista de enlaces, bueno, una lista de enlaces,  <code>LI</code>. Cada nota es un <code>DIV</code> con clase <code>post</code>. En el archivo CSS se estila la nota a gusto. </p>
<p>En el hipotético caso de que Cadena 3 decida aumentar 1px de cuerpo para las notas, solo tendrá que cambiar 1 sola línea en este archivo y no miles en cada noticia. Ni hablar de la reducción en el peso del sitio, que contribuirá a todo cargue mucho más rápido que los 40 segundos actuales &mdash;en algunas conexiones&mdash;. Pueden ver cómo <a href="http://www.16bits.net/files/cadena3-original.html">se estiliza la nota original</a> y cómo quedaría <a href="http://www.16bits.net/files/cadena3-propuesta.html">la nueva propuesta</a> funcionando.</p>
<h5>Conclusión</h5>
<p>Realmente hay mucho que mejorar en el nuevo Cadena3.com. Desde la gráfica, que en mi opinión es solamente correcta, hasta la maquetación, que ya vimos que es pésima. </p>
<p>Espero que a la gente de Cadena 3 le haya servido este post para poder mejorar el sitio en un futuro. No es una crítica infundada y con mala leche hacia los desarrolladores y diseñadores, después de todo, las decisiones son tomadas por otros y uno es un simple diseñador &mdash;y todos estamos bien conscientes de qué tan difícil es remar con un cliente necio&mdash;, pero solo en la diversidad de opiniones se puede construir algo mejor.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigogalindez.com/archivos/un-analisis-al-nuevo-cadena3com/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Pequeño hack para IE: El hack del selector universal</title>
		<link>http://www.rodrigogalindez.com/archivos/pequeno-hack-para-ie/</link>
		<comments>http://www.rodrigogalindez.com/archivos/pequeno-hack-para-ie/#comments</comments>
		<pubDate>Wed, 08 Feb 2006 05:01:01 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.16bits.net/?p=742</guid>
		<description><![CDATA[Sinceramente detesto los hacks en CSS. Sólo agregan código que solamente ensucia tu CSS por culpa de algún navegador con errores de interpretación en las especificaciones (léase Internet Explorer). Tal vez los dolores de cabeza más conocidos por los desarrolladores, sean los misteriosos márgenes duplicados, o el tener que usar &#8212;en ciertas ocasiones y en [...]]]></description>
			<content:encoded><![CDATA[<p>Sinceramente detesto los hacks en CSS. Sólo agregan código que solamente ensucia tu CSS por culpa de algún navegador con errores de interpretación en las especificaciones (léase Internet Explorer). Tal vez los dolores de cabeza más conocidos por los desarrolladores, sean los misteriosos <a href="http://www.positioniseverything.net/explorer/doubled-margin.html">márgenes duplicados</a>, o el tener que usar &mdash;en ciertas ocasiones y en ciertos elementos&mdash; <code>padding</code> en vez de <code>margin</code>, sin ninguna razón aparente, todo porque IE así ha dicho que sea.</p>
<p>Hay hacks de todo tipo y para todos los navegadores, buscando un poco en <a href="http://positioniseverything.net/">Position Is Everything</a> tal vez puedas encontrar la solución a tu problema. Pero si no la has encontrado, todavía puedes usar el último recurso: <code>* html</code>.</p>
<p>Vamos por partes. El selector universal, representado por el caracter asterisco (*) selecciona todos los elementos del árbol del documento. Esto quiere decir que la siguiente regla:</p>
<p><code>* { color: red; }</code></p>
<p>Le asignaría el color rojo a todos los elementos del árbol del documento, sobreescribiendo así su herencia (Eric tiene un <a href="http://www.meyerweb.com/eric/articles/webrev/200006a.html">excelente artículo</a> sobre el poder de los selectores universales). Así, cualquier elemento de un documento HTML tendría el color rojo asignado.</p>
<p>Ahora bien, volviendo a nuestro hack:</p>
<p><code>* html { }</code></p>
<p>Esta regla en CSS, quiere decir &#8220;aplica esta regla a todos los HTML hijos del elemento universal&#8221;, o lo que es lo mismo, &#8220;aplica esta regla a todos los HTML descendientes de <code>*</code>&#8220;, o &#8220;selecciona todos los HTML hijos/descendientes de todos los elementos&#8221;. Ahora bien, como HTML es el elemento <em>root</em> por defecto (es decir, es el elemento por el cual <em>comienza</em> el árbol del documento ), no selecionariamos nada, ya que HTML no puede ser hijo de ningún otro elemento. La regla entonces no tiene sentido, pero es válida en CSS y nos servirá para ocultar reglas a <em>navegadores buenos</em> y mostrarlas al navegador malo (IE), ya que cualquier regla empezando por <code>* html</code>, <em>es interpretada</em> por IE (lo veremos más adelante) y puede ser usada a nuestro beneficio.</p>
<p>Esta regla, aunque sencilla, puede prestarse a confusión. ¿Por qué decimos &#8220;selecciona todos los HTML hijos de <code>*</code>&#8221; y no &#8220;selecciona todos los HTML&#8221;, o en todo caso, &#8220;selecciona EL HTML&#8221;? Si estamos pensando en &#8220;selecciona todos los HTML&#8221;, estamos pensando en <acronym title="Disk Operating System">D.O.S.</acronym>, en donde poner un <code>dir *.txt</code> quiere decir &#8220;muestra todos los archivos .txt&#8221;. Aquí, el espacio en blanco <em>hace la diferencia</em>. Al tener el espacio en blanco, estamos aplicando selectores descendentes y el elemento universal se toma simplemente como eso, como el elemento que quiere decir &#8220;todos los elementos&#8221;. La clave es esa, el elemento <code>*</code> significa &#8220;todos los elementos&#8221;, y no &#8220;todos los elementos X&#8221;. </p>
<p>Volviendo al hack, Firefox y Opera simplemente ignoran cualquier regla que empiece con <code>* html</code>, sin embargo, IE la interpreta. Entonces, el siguiente código:</p>
<p><code>* html body h1 { color:blue; }</code></p>
<p>Es interpretado por Internet Explorer como <code>html body h1 { color:blue; } </code> (noten que no interpreta el asterisco) y el resultado sería que todos los H1 (hijos de BODY y obviamente de HTML) tendrían color azul. En Firefox y Opera, no pasaría nada.</p>
<p><del>El hack funciona siempre poniendo a BODY como elemento hijo de HTML y luego poniendo el elemento que queremos estilizar, es decir, poniendo siempre <code>* html body mi-elemento</code>, lo cual es lógico, pues según el árbol del documento, no hay elementos para dar estilo entre HTML y BODY, es decir, no podríamos poner algo como <code>* html h1</code> (nos estaríamos salteando a BODY, lo cual es incorrecto, pero sin embargo valida perfectamente).</del>. Funciona si se pone <code>* html h1</code>, no hace falta ser tan estrictos con el árbol del documento siempre y cuando respetemos qué elemento contiene a quién (gracias <a href="http://511.dabomb.com.ar/2005/04/hack-selector-universal-internet-explorer/">Fede</a>).</p>
<p>Nota: No lo piensen mucho ni se descerebren como yo, <a href="http://blogs.msdn.com/ie/archive/2005/10/12/480242.aspx">según el blog de IE</a>, este hack ya está deprecado. Pero quien sabe, hasta que salga IE7 todavía puede serles útil :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigogalindez.com/archivos/pequeno-hack-para-ie/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Como crear tu propio tema para Wordpress (Parte 1)</title>
		<link>http://www.rodrigogalindez.com/archivos/como-crear-tu-propio-tema-para-wordpress-parte-1/</link>
		<comments>http://www.rodrigogalindez.com/archivos/como-crear-tu-propio-tema-para-wordpress-parte-1/#comments</comments>
		<pubDate>Mon, 03 Oct 2005 03:24:10 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.16bits.net/?p=600</guid>
		<description><![CDATA[Bueno, ésta es la primer entrega de la serie &#8220;como crear tu propio theme para Wordpress desde cero&#8221;. En esta serie de artículos trataré de explicar, dummies-friendly, cuales son los pasos necesarios para crear tu propio theme o template para Wordpress, el sistema de publicación para blogs más usado hoy en día.
Qué necesitas saber/tener para [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno, ésta es la primer entrega de la serie &#8220;como crear tu propio theme para Wordpress desde cero&#8221;. En esta serie de artículos trataré de explicar, <em>dummies-friendly</em>, cuales son los pasos necesarios para crear tu propio <em>theme</em> o <em>template</em> para <a href="http://www.wordpress.org">Wordpress</a>, el sistema de publicación para blogs más usado hoy en día.</p>
<p>Qué necesitas saber/tener para aprovechar al máximo estos artículos:</p>
<ul>
<li>Tener una copia de Wordpress 1.5 instalado en tu servidor personal o en tu hosting. Lo recomendable es hacer todas las pruebas en tu servidor web personal.</li>
<li>Mínimos conocimientos de XHTML, CSS y PHP.</li>
<li>Curiosidad por ver como funcionan las cosas y muchas ganas de sacar los vestigios de Kubrick de tu blog :)</li>
</ul>
<p>Vá a ser un artículo realmente introductorio, apto para que cualquier persona curiosa &mdash;y con ganas de modificar su theme actual&mdash; pueda echar mano en el código y armar su propio theme para Wordpress. Sin más, empecemos entonces por ver lo primero: La anatomía de Wordpress.</p>
<h3>La estructura de Wordpress</h3>
<p>Wordpress tiene una forma bastante lógica de manejar las “caras” de los blogs. De hecho, ésta forma de armar un blog les será conocida a los que vienen programando sitios dinámicos. La idea es básicamente separar cada sección del blog en archivos independientes, de manera que cada archivo pueda modificarse como deseemos. Luego, cada archivo o sección del blog, podrá llamarse desde un <strong>archivo maestro</strong> para armar cada tema.</p>
<p>Este archivo maestro en Wordpress se llama <code>index.php</code>. Como veremos más adelante, este <strong>template</strong> (para no confundirnos, llamaremos así a los archivos de Wordpress que se usan para crear un tema) incluirá llamadas a los  otros templates de <strong>cabecera</strong>, <strong>contenido</strong>, <strong>barra lateral</strong> y <strong>pie de página</strong> que conformarán el blog.</p>
<p>Además de estos templates fundamentales, Wordpress también tiene templates especiales para los <strong>comentarios</strong>, las <strong>categorías</strong>, los <strong>enlaces</strong>, los <strong>autores</strong>, los <strong>archivos del blog</strong>, la <strong>página de búsqueda</strong> y hasta para la <strong>página 404</strong> (error que devuelve el servidor cuando no se encuentra una página determinada). Por otro lado, este CMS es también capaz de manejar páginas individuales para el blog. Esto nos permitirá, por ejemplo, manejar secciones (digamos, “acerca de”, “portfolio”, “contacto”, etc.). Si me estuvieron siguiendo, entonces ya se van dando una idea de donde radica el potencial de este sistema de publicación: Wordpress también puede ser usado como un perfecto CMS para sitios de propósito general, y de hecho, no tiene nada de que envidiar a sus primos más grandes como Drupal o Mambo.</p>
<p>Veamos gráficamente el árbol de directorios de una instalación clásica de Wordpress:</p>
<pre>
/
wp-admin
  	wp-content
		plugins
		themes
			classic
			default
	wp-images
		smilies
	wp-includes
…
…
</pre>
<p>En la raíz de una instalación de Wordpress encontramos los archivos de configuración del sistema de publicación, además de carpetas con funciones que luego serán usadas por el CMS (agrupadas en archivos con extensión PHP). La carpeta <code>wp-admin</code> contiene todas las funciones que se usarán en el panel de administración de Wordpress. En <code>wp-images</code> residen las imágenes que vienen con el CMS, (como ser los emoticones) y las imágenes que se usarán en el panel de administración (el logo del sistema, las imágenes de fondo). En <code>wp-includes</code> encontraremos las funciones que manejan los comentarios, los enlaces, y algo muy importante, las funciones que definen las <strong>etiquetas</strong> (tags) para armar los templates (veremos que son más adelante).</p>
<p>Dejamos para el último la carpeta <code>wp-content</code>, puesto que es la que más nos interesa. En ella deberemos incluir los templates que conformarán nuestro tema de Wordpress. Los templates de cada tema se agrupan en carpetas (fíjense que la instalación básica de Wordpress trae 2 temas por defecto, classic y default). Como no somos originales, nuestro nuevo tema será bautizado como “mitema”, por lo que crearemos una carpeta con ese nombre dentro del directorio themes.</p>
<p>Además, dentro de la carpeta <code>wp-content</code>, hay una sub-carpeta llamada <code>plugins</code>, que servirá como repositorio para la instalación de plugins para Wordpress. Un plugin permite personalizar el sistema agregando funcionalidades extra de una manera sencilla (basta copiar y pegar el plugin y activarlo desde el panel de administración). </p>
<p>En resúmen: Para crear un nuevo tema para Wordpress, el único directorio que nos interesa es <code>/wp-content/themes/</code>. En el estarán los templates que conformarán nuestro nuevo tema. Cada tema, tendrá su propia carpeta. </p>
<p>Esta fue la primer entrega. Mañana seguiremos explicando más sobre la creación de un tema nuevo para Wordpress. Cualquier duda, en los comentarios :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigogalindez.com/archivos/como-crear-tu-propio-tema-para-wordpress-parte-1/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Una introducción a XHTML</title>
		<link>http://www.rodrigogalindez.com/archivos/una-introduccion-a-xhtml/</link>
		<comments>http://www.rodrigogalindez.com/archivos/una-introduccion-a-xhtml/#comments</comments>
		<pubDate>Fri, 02 Sep 2005 07:52:57 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.16-bits.com.ar/?p=559</guid>
		<description><![CDATA[Nota: El siguiente artículo fué publicado en la revista argentina USERS, en la edición #171. El contenido del mismo está bajo una licencia Reconocimiento-NoComercial-SinObraDerivada 2.0. Este artículo puede puede haber sido editado para la versión impresa de la revista con el fin de evitar localismos. Actualmente, se encuentra en proceso de revisión, se omitieron capturas [...]]]></description>
			<content:encoded><![CDATA[<h6><strong>Nota:</strong> El siguiente artículo fué publicado en la revista argentina <a href="http://www.tectimes.com">USERS</a>, en la edición #171. El contenido del mismo está bajo una licencia <a href="http://creativecommons.org/licenses/by-nc-nd/2.5/">Reconocimiento-NoComercial-SinObraDerivada 2.0</a>. Este artículo puede puede haber sido editado para la versión impresa de la revista con el fin de evitar localismos. Actualmente, se encuentra en proceso de revisión, se omitieron capturas de pantalla y recuadros informativos. Les aconsejo comprar la revista, o esperar a que el artículo esté disponible en la web de <a href="http://www.tectimes.com">Tectimes</a> para descargarlo en formato PDF.</h6>
<h5>Siguiendo con nuestra serie de artículos sobre desarrollo web orientado a estándares, en esta ocasión les explicaremos en que consiste XHTML, explicando paso por paso la estructura de un documento en este lenguaje. </h5>
<p><span id="more-559"></span></p>
<p>El Extensible Hypertext Markup Language, o simplemente XHTML para los amigos, es una reformulación de HTML 4.01 pensada como una aplicación del lenguaje XML. Es decir, XHTML es una versión de HTML, con los mismos elementos y atributos, pero basada en la sintaxis y estructura de XML.</p>
<p>Al principio, HTML fue creado para el intercambio de documentos científicos a través Internet. Sin embargo, a medida que la web evolucionaba y se expandía más allá del campo científico/universitario, los requisitos de los desarrolladores web también crecían. La necesidad de un lenguaje de marcado para páginas web, que sea fácilmente extensible por medio de módulos y además interoperable con otras aplicaciones de XML, dio como resultado a la creación de la especificación XHTML 1.0. </p>
<p>Usar XHTML por sobre HTML tiene muchas ventajas importantes. El World Wide Web Consortium, entidad que se encarga de desarrollar especificaciones sobre las tecnologías que construyen la WWW, afirma que:</p>
<ul>
<li><strong>XHTML es extensible</strong>. Esta es la principal ventaja sobre HTML. XHTML permite agregar nuevos elementos y atributos a través de la modularización, lo cual nos da la posibilidad de aprovechar las ventajas de otras tecnologías de desarrollo web, como MathML, y de las que se vayan a desarrollar en el futuro, como XForms.</li>
<li><strong>XHTML es accesible</strong>. Debido a su énfasis en la estructura de un documento y no en su presentación, XHTML es un lenguaje que tiene como objetivo el poder ser interpretado por cualquier dispositivo capaz de leer XML, ya sea un navegador o un teléfono celular.</li>
</ul>
<p>Luego de esta breve introducción, pasemos entonces a ver el esqueleto de un documento XHTML, explicado en detalle paso por paso.</p>
<h3>Anatomía de un documento XHTML</h3>
<p>Si tenemos presente la estructura de un documento HTML, nos daremos cuenta que son muy similares a los documentos XHTML; de hecho, en XHTML no se han agregado elementos adicionales. Sin embargo existen un par de requisitos, que aunque no son complicados de entender ni de aplicar para el que está empezando en el diseño de sitios web, tal vez impliquen un cambio de mentalidad drástico para aquel que viene maquetando en HTML.</p>
<p>A continuación mostraremos la mínima expresión de un documento XHTML, para luego enfocarnos en aquellas diferencias propias de este nuevo lenguaje de marcado.</p>
<p><code><br />
1. &lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;<br />
2. &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;<br />
3. &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;es&quot; lang=&quot;es&quot;&gt;<br />
4. &lt;head&gt;<br />
5.	&lt;title&gt;Documento simple en XHTML&lt;/title&gt;<br />
6.	&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=ISO-8859-1&quot; /&gt;<br />
7. &lt;/head&gt;<br />
8. &lt;body&gt;<br />
9. &lt;h1&gt;Documento simple en XHTML&lt;/h1&gt;<br />
10.&lt;hr /&gt;<br />
11.&lt;p&gt;Este es nuestro &lt;em&gt;primer documento&lt;/em&gt; en &lt;acronym title=&quot;Extensible Hypertext Markup Language&quot;&gt;XHTML&lt;/acronym&gt;.&lt;/p&gt;<br />
12.&lt;/body&gt;<br />
13.&lt;/html&gt;<br />
</code></p>
<p><strong>Línea 1: La declaración XML</strong>. La primera línea indica al navegador que el documento que sigue está desarrollado conforme a la versión 1.0 de XML y que se basa en el juego de caracteres especificado en la norma ISO-8859-1. Es importante detenernos sobre este punto y aclarar que el World Wide Web Consortium recomienda, pero no obliga incluir ésta línea de código en todos nuestros documentos XHTML, puesto que está demostrado que muchos navegadores tienen problemas al momento de leer esta declaración, resultando en páginas que se muestran incorrectamente. Estos navegadores incluyen algunas versiones de los populares Internet Explorer y Netscape Navigator.</p>
<p>Es por esto que recomendamos no incluir esta declaración XML en nuestras páginas, por lo menos hasta que las versiones futuras de los navegadores más usados solucionen este problema. Un cuadro con información sobre los navegadores soportan esta declaración XML puede encontrarse en <a href="http://www.webstandards.org/learn/reference/prolog_problems.html">http://www.webstandards.org/learn/reference/prolog_problems.html</a>.</p>
<p>Los lectores más despiertos se preguntarán entonces como especificaremos el tipo de contenido que estamos sirviendo y el juego de caracteres que usamos en nuestro documento XHTML. Para ello, agregamos la línea 6, la cual explicamos en detalle más adelante.</p>
<p><strong>Línea 2: El DTD a usar.</strong> Un DTD o Document Type Definition, es simplemente una especificación de todos los elementos, atributos y entidades permitidos para un determinado tipo de documento XHTML o HTML. Esto significa que, según el DTD que estemos usando, tendremos a nuestra disposición un conjunto de elementos para usar al momento de codificar nuestras páginas web. Por ejemplo, el DTD de XHTML 1.0 en su versión estricta, elimina todos los elementos de presentación de un documento HTML. Esto quiere decir que sería inválido usar el elemento <code>&lt;center&gt;</code> en nuestros documentos XHTML con DTD estricto.</p>
<p>Esta declaración del DTD a usar en una página web, no es específica de XHTML; con HTML también debíamos especificar uno. Existen varias versiones de DTDs para XHTML, e incluso también podríamos crear un DTD propio para luego utilizar en nuestros documentos. El World Wide Web Consortium, define 3 tipos de DTDs, los cuales son:</p>
<ul>
<li><strong>Strict</strong>. Es el DTD más rígido que podemos usar. En este DTD, todos los elementos de presentación , como &lt;font&gt; o &lt;center&gt;, son eliminados y por consiguiente no es posible utilizarlos en nuestros documentos. Por lo tanto, para controlar los elementos de presentación de nuestro documento, como la asignación de colores y el posicionamiento de elementos, deberemos utilizar CSS. La línea que especifica que un documento XHTML es estricto, es la siguiente:<br />
<code><br />
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><br />
</code></li>
<li><strong>Transitional</strong>. Es un DTD un poco más flexible que el anterior. Contiene algunos elementos de presentación, por ejemplo, el elemento &lt;center&gt;. Está pensando para aquellos desarrolladores que están haciendo el cambio hacia un DTD estricto, pero que todavía no tienen suficiente experiencia con CSS. Si deseamos especificar que nuestro documento XHTML es del tipo transicional, deberemos introducir la siguiente línea:<br />
<code><br />
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br />
</code></li>
<li><strong>Frameset</strong>. Es el DTD que debemos incluir cuando estamos creando sitios web que incluirán frames o marcos. Para ello, la declaración DOCTYPE es la siguiente:<br />
<code><br />
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"><br />
</code></li>
</ul>
<p>Ahora bien, ya vimos que tenemos varios sabores de DTDs en XHTML. La pregunta del millón es, ¿Cuál deberíamos usar para nuestros sitios web? Aquel que nos asegure en un 100% la premisa de separación del contenido de un sitio de su presentación. Recordemos: El concepto clave detrás de todas estas nuevas tecnologías de desarrollo web es la <strong>separación del contenido de su presentación</strong>. Es por esto que el único DTD que nos garantiza alcanzar esta premisa, es el de <strong>XHTML estricto</strong>, el cual no incluye ningún elemento de presentación en su especificación, obligando a que todo el aspecto visual de nuestra web sea necesariamente controlable utilizando CSS.</p>
<p>Volviendo a nuestro ejemplo, a través de la declaración DOCTYPE en la línea 2, especificamos que el documento usará los elementos, atributos y entidades declarados en el DTD de XHTML 1.0 estricto. Recordemos que esta declaración DOCTYPE es sensible a mayúsculas y minúsculas y que además debe ir en la primera línea de nuestro documento, después de la declaración XML (si es que la estamos usando).</p>
<p><strong>Línea 3: El elemento <html>.</html></strong> En XHTML, ahora el elemento raíz <html> requiere que especifiquemos obligatoriamente de:</p>
<ul>
<li><strong>El espacio nominal de los elementos</strong>. En XML, evitamos la ambigüedad en los nombres de los elementos usados agrupándolos en espacios nominales. Al especificar el atributo xmlns apuntando al espacio nominal de XHTML le decimos al navegador que los elementos que siguen son de XHTML y no de otro lenguaje basado en XML, como por ejemplo MathML.</li>
<li><strong>El idioma</strong>. A través de la combinación de atributos xml:lang (propio de XML) y lang (propio de HTML), definiremos el idioma en el cual está escrito el texto de nuestro documento, en nuestro caso, español.</li>
</ul>
<p><strong>Línea 6: El tipo de documento y el conjunto de caracteres usado</strong>. Como habíamos nombrado anteriormente, la declaración XML nos servía para especificar el conjunto de caracteres usado por un documento. Pero recordemos que al incluir esta línea de código, también llamada el <strong>XML prolog</strong>, nos llevaba a tener problemas con la mayoría de los navegadores, por lo que decidimos omitirla. Ahora bien, ¿cómo le decimos entonces al navegador el juego de caracteres que estamos usando en nuestro documento? Es aquí en donde entra en escena el meta tag <strong>http-equiv</strong>, el cual especifica el tipo de contenido que estamos sirviendo (en nuestro caso text/html) y además el juego de caracteres usado (ISO-8859-1). Es importante recordar que si no vamos a poner la declaración XML de la línea 1, deberemos especificar obligatoriamente el tipo de contenido del documento y el juego de caracteres del mismo a través de este meta tag.</p>
<p><strong>Líneas 9, 10 y 11: Diferencias con HTML</strong>. XHTML heredó de XML dos características interesantes, que a simple vista lo hacen parecer más estricto que HTML:</p>
<ul>
<li><strong>El documento XHTML debe ser válido</strong>. Incluyendo la declaración DTD que deseemos, y limitándonos a sólo los elementos especificados en ese DTD, cumpliremos fácilmente con este requisito. De cualquier manera, podemos comprobar si nuestro documento es válido con la herramienta de validación provista por el World Wide Web Consortium, explicada en detalle mas adelante.</li>
<li><strong>El documento XHTML debe estar bien formado</strong>. Esto quiere decir que debemos abrir y cerrar los elementos de manera correcta y en orden. Un ejemplo de dos líneas de código XHTML mal formadas:<br />
<code>&lt;p&gt;Este es nuestro &lt;em&gt;primer documento.&lt;/p&gt;&lt;/em&gt;</code><br />
<code>&lt;p&gt;Este es nuestro &lt;em&gt;primer documento.&lt;/em&gt;</code><br />
Y a continuación, la misma línea de código respetando esta restricción de XHTML (Noten que el primer elemento en abrirse es siempre el último en cerrarse):<br />
<code>&lt;p&gt;Este es nuestro &lt;em&gt;primer documento.&lt;/em&gt;&lt;/p&gt;</code></p>
<p>Por otro lado, XHTML requiere que todos aquellos elementos que no tienen contenido, como <code>&lt;img /&gt;</code> o <code>&lt;hr /&gt;</code>, deben cerrarse agregando una barra invertida al final. Por ejemplo, a continuación pueden ver el elemento <code>&lt;img /&gt;</code> en XHTML (noten el espacio obligatorio entre el nombre del elemento y la barra invertida):</p>
<p><code>&lt;img src=&quot;mi-imagen.png&quot; alt=&quot;Mi imagen&quot; /&gt;</code>
</li>
</ul>
<p>Además de lo nombrado anteriormente, un documento XHTML:</html></p>
<ul>
<li><strong>Tiene sus elementos y atributos escritos en minúsculas</strong>. Recordemos, XHTML es una aplicación de XML, el cual es sensible a las mayúsculas y minúsculas, por lo tanto, el elemento <code>&lt;p&gt;</code> no es lo mismo que el elemento <code>&lt;P&gt;</code>.</li>
<li><strong>Encierra los atributos de sus elementos entre comillas</strong>. Todos los atributos necesariamente deben ir entre comillas, incluso aquellos que son numéricos. Ejemplo:
<p><code>&lt;acronym title=&quot;Extensible Hypertext Markup Language&quot;&gt;XHTML&lt;/acronym&gt;<br />
&lt;td colspan=&quot;2&quot;&gt;</code>
</li>
<li><strong>No soporta minimización de atributos</strong>. En HTML, el siguiente código es válido:<br />
&lt;option selected&gt;<br />
En cambio, en XHTML, los atributos de un elemento deben ser escritos completamente, por lo cual, la línea anterior en XHTML quedaría como:<br />
<code>&lt;option selected=&quot;selected&quot;&gt;</code>
</li>
</ul>
<p>Como vemos, la estructura de un documento XHTML puede parecer, al principio, más estricta que la de un documento HTML. Esto es debido a que XHTML, al  ser una aplicación de XML, hereda de este lenguaje su énfasis en la estructura del documento. La idea detrás de estas restricciones es que, una vez que tenemos la estructura de un documento bien formada, ya sea XML o XHTML, cualquier parser o navegador podrá entender el significado del mismo.</p>
<h3>Validando nuestro código XHTML</h3>
<p>Por <strong>validación</strong> entendemos la acción de verificar que nuestro documento XHTML cumpla con la sintaxis estándar especificada en un DTD. Ahora bien, si al parecer, una página web se muestra correctamente en un navegador, incluso sin especificar un DTD, ¿porqué entonces debemos validar nuestros documentos? Daremos dos razones que pueden ayudar a entender la necesidad de la validación:</p>
<ul>
<li><strong>Lo que uno está viendo no es lo que otros ven</strong>. Tal vez nuestro sitio web puede estar mostrándose correctamente cuando lo probamos con nuestro navegador preferido, pero en la práctica, muchos navegadores interpretan un sitio de maneras diferentes. El único modo de asegurarnos que nuestro sitio web será mostrado de la forma en que deseamos en todos los agentes de usuario disponibles, es a través de la validación de nuestro código XHTML.</li>
<li><strong>Evitar el Quirks Mode</strong>. Por definición, cuando el navegador no encuentra una línea de código especificando un DTD a usar en el documento, entra en un estado que se llama Quirks Mode. En este estado, el navegador interpreta que la página web puede contener cualquier conjunto de elementos HTML y XHTML, desde elementos correctos hasta incorrectos, y por lo tanto, cambia su motor de renderizado de páginas al de corrección de errores. Este modo a “prueba de fallos” tiene varias deficiencias, una de ellas, es que hace más lento el proceso de carga de una página web, debido a que el navegador tiene que ir corrigiendo el código a medida que lee la página.</li>
</ul>
<p>La validación de nuestros documentos XHTML se realiza a través de una herramienta de libre acceso, provista por el W3C, y disponible en <a href="http://validator.w3.org/">http://validator.w3.org/</a>. Simplemente ingresaremos la URL del sitio a verificar en un formulario, o bien, subiremos el archivo XHTML desde nuestra PC. Una vez especificada la fuente, la herramienta procesa el documento y devuelve la cantidad de errores encontrados, junto con una pequeña explicación de los mismos y la forma de corregirlos.</p>
<h3>Conclusión</h3>
<p>Aunque XHTML puede resultar un tanto estricto al principio, el proceso de conversión de HTML a XHTML no es complicado. Existen herramientas de libre uso, como HTML Tidy (ver recuadro “Herramientas útiles”) que “limpian” el código HTML, simplificando la conversión de grandes sitios y páginas web. </p>
<p>El mundo actual de desarrollo de soluciones pensadas para la web, nos muestra una clara tendencia hacia la estandarización y hacia al uso de XML como lenguaje universal de definición de datos. El lenguaje por defecto de marcado para páginas web, HTML, fue repensando con miras hacia XML. En nosotros radica aprovechar todo su potencial.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigogalindez.com/archivos/una-introduccion-a-xhtml/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Hacia un nuevo modelo para construir la web</title>
		<link>http://www.rodrigogalindez.com/archivos/hacia-un-nuevo-modelo-para-construir-la-web/</link>
		<comments>http://www.rodrigogalindez.com/archivos/hacia-un-nuevo-modelo-para-construir-la-web/#comments</comments>
		<pubDate>Mon, 27 Jun 2005 18:43:14 +0000</pubDate>
		<dc:creator>Rodrigo</dc:creator>
				<category><![CDATA[Artículos]]></category>

		<guid isPermaLink="false">/?p=455</guid>
		<description><![CDATA[Nota: El siguiente artículo fué publicado en la revista argentina USERS, en la edición #170. El contenido del mismo está bajo una licencia Reconocimiento-NoComercial-SinObraDerivada 2.0. Este artículo puede puede haber sido editado para la versión impresa de la revista con el fin de evitar localismos. Actualmente, se encuentra en proceso de revisión, se omitieron capturas [...]]]></description>
			<content:encoded><![CDATA[<h6><strong>Nota:</strong> El siguiente artículo fué publicado en la revista argentina <a href="http://www.tectimes.com">USERS</a>, en la edición #170. El contenido del mismo está bajo una licencia <a href="http://creativecommons.org/licenses/by-nc-nd/2.5/">Reconocimiento-NoComercial-SinObraDerivada 2.0</a>. Este artículo puede puede haber sido editado para la versión impresa de la revista con el fin de evitar localismos. Actualmente, se encuentra en proceso de revisión, se omitieron capturas de pantalla y recuadros informativos. Les aconsejo comprar la revista, o esperar a que el artículo esté disponible en la web de <a href="http://www.tectimes.com">Tectimes</a> para descargarlo en formato PDF.</h6>
<h5>XHTML, CSS, DOM; siglas muy populares en weblogs y que empiezan a resonar en portales y grandes sitios: Juntas forman lo que se conoce como Estándares Web. En esta nota, veremos de qué se trata este nuevo concepto que está revolucionando Internet y delineando la forma de desarrollo web del futuro.</h5>
<p>Es 1997. Estamos en medio de una loca guerra de navegadores, una carrera sin límites en la cual Internet Explorer y Netscape Navigator compiten arduamente por dominar el creciente mercado de internautas.<br />
En un movimiento poco inteligente por sacar ventaja a la competencia, y en un intento de brindar mas herramientas para mejorar e innovar la gráfica en los web sites de esa época, ambas compañías anuncian que ofrecerán características especiales a los desarrolladores web: Elementos HTML propietarios que sólo serán interpretados por un navegador u otro, exclusivamente, desobedeciendo así a cualquier intento de estandarización de código que existiera en la fecha.<br />
Entonces empiezan a surgir sitios con textos en marquesina que en Internet Explorer andan perfectamente, pero que en Netscape Navigator no se ven. Al revisar el código HTML de un sitio vemos etiquetas <code>&lt;font&gt;</code> que parecen renderizarse bien en un navegador, pero que no se interpretan correctamente en el otro.<br />
Y así comienza el caos, con una enredada trama de tags y elementos propietarios que se comportan de una manera determinada en el navegador para el cual fueron hechos, pero que no sirven en el otro.<br />
Conclusión: La tarea del desarrollador web se hace compleja, laboriosa, y muchos se inclinan por el navegador que más elementos HTML “atractivos” le ofrece al desarrollar. El mercado se fragmenta, la web se fragmenta y la interoperabilidad entre diferentes tecnologías y navegadores desaparece.<br />
Pero pasan los meses y nos vamos dando cuenta que esta manera de desarrollar la web no es la adecuada. Vemos que mantener 2 versiones de un sitio, una para cada navegador no es rentable. Que nuestros costos en desarrollo web aumentan a medida que queremos introducir mejoras en sitios con base poco firme y con código que es imposible de mantener.<br />
Y aquí aparece el antídoto, la bala de plata que promete unificar la web, a través de un modelo abierto de conectividad entre tecnologías de desarrollo: Los estándares web.</p>
<h3>¿Pero qué son los estándares web?</h3>
<p>Básicamente son un conjunto de tecnologías, impulsadas por el World Wide Web Consortium (W3C) y otros organismos, que tratan sobre la manera en que se debe –o debería- crear el contenido basado en la web. El W3C (<a href="http://www.w3.org/">http://www.w3.org/</a>) es el principal comité internacional que se encarga de reglamentarlos, a través de especificaciones, guías y recomendaciones, pero hay grupos en todo el mundo, como el Web Standards Project (<a href="http://www.webstandards.org/">http://www.webstandards.org/</a>), que se encargan de promover y fomentar su uso.</p>
<p>Específicamente, los estándares web se pueden clasificar en 4 categorías, cada categoría agrupa una o más tecnologías de desarrollo:</p>
<ol>
<li>Lenguajes estructurales o contenido:
<ul>
<li>XHTML (Extensible Hypertext Markup Language)</li>
<li>XML (Extensible Markup Language)</li>
</ul>
</li>
<li>Lenguajes de presentación:
<ul>
<li>CSS (Cascading Style Sheets)</li>
<li>XSLT (Extensible Stylesheet Language Transformations)</li>
<li>SVG (Scalable Vector Graphics)</li>
<li>MathML (Mathematical Markup Language)</li>
</ul>
</li>
<li>Modelos de objetos:
<ul>
<li>DOM (Document Object Model)</li>
</ul>
</li>
<li>Lenguajes de scripting:
<ul>
<li>ECMAScript 262 (la versión estándar de JavaScript)</li>
</ul>
</li>
</ol>
<p>En la práctica se suele decir que los estándares dividen un sitio en 3 partes: Su estructura (XHTML), su presentación (CSS) y su comportamiento (JavaScript).</p>
<h3>¿Para qué nos sirven?</h3>
<p>Llegas cansado del trabajo, y te decides por ver una buena película. Alquilaste un DVD excelente; por lo que te contaron, la última joya del cine, algo imperdible. Lo introduces en tu DVD-Player, y de repente, tu equipo muestra un “Lo siento, para ver este DVD necesitas una pantalla de 30 pulgadas wide-screen” en tu televisión. ¿Decepcionante, verdad?</p>
<p>En la web, la escena anterior también se repite. Ocurre cuando entramos a un sitio y se nos pide un determinado navegador para continuar. O peor aún, cuando nos recomiendan navegar con determinada resolución de pantalla, pues a la gente que desarrolló el sitio les pareció que se veía mejor en 1280&#215;960px.</p>
<p>Es aquí en donde entran en escena los estándares web. Los estándares nos garantizan la compatibilidad con todas las plataformas y todos los agentes de usuario (navegadores, lectores de pantalla para gente ciega, celulares, etc.) que existan. Esto quiere decir que al menos el contenido del sitio, será igualmente accesible por alguien que esté usando la última versión de Mozilla Firefox, como por alguien que esté usando Lynx.</p>
<h3>Desarrollar con estándares tiene muchas ventajas</h3>
<p>En general, la mayoría de los beneficios de usar estándares web parten de la premisa de separación de contenido, en XHTML, y presentación, en CSS. Entre algunas, de las muchas ventajas, podemos nombrar que los estándares:</p>
<ul>
<li><strong>Optimizan un sitio para motores de búsqueda (SEO).</strong> Desarrollar con estándares produce código XHTML limpio y semántico. Puesto que la mayoría de los buscadores trabajan indexando el contenido de un sitio, éstos tienden a priorizar a aquellos sitios con menor cantidad de código basura o no estándar en el sitio.</li>
<li><strong>Producen un sitio fácil de mantener.</strong> El código resultante de un sitio con estándares es simple y se puede dividir en secciones, reduciendo la dependencia de un solo desarrollador y facilitando la comunicación entre varios grupos de trabajo en una empresa de desarrollo web (programación, maquetado, diseño, etc.).</li>
<li><strong>Reducen el tamaño del sitio.</strong> Debido a la eliminación de elementos HTML que formatean visualmente una página, agrupando toda la parte visual en CSS, el tamaño de un sitio se reduce drásticamente. Esto nos garantiza que el sitio será cargado rápidamente aún en conexiones lentas, como celulares.</li>
<li><strong>Son un paso necesario para la accesibilidad.</strong> A nivel dispositivo, los estándares aseguran que el contenido de nuestro sitio estará disponible para cualquier dispositivo con conexión a Internet. A nivel personas, implica tener en cuenta que nuestro sitio puede estar siendo accedido por personas con discapacidades, ya sean físicas (discapacidad visual, motriz, etc.) o de entorno o (sin mouse, con pantallas demasiado chicas, etc.).</li>
<li><strong>Otorgan mayor flexibilidad al desarrollador web.</strong> Esto permite a los desarrolladores, por un lado, ocuparse solamente de la parte estructural del sitio (XHTML) y por otro lado, a los diseñadores nos da la versatilidad suficiente como para cambiar cualquier aspecto del diseño de un sitio. Como ejemplo, Wired Magazine (<a href="http://www.wired.com">http://www.wired.com</a>) cambia el esquema de colores de su sitio todas las semanas, y para hacerlo modifica solamente una línea de código en su XHTML. </li>
</ul>
<h3>Y también tiene un par de implicaciones</h3>
<p>Lamentablemente el desarrollar sitios con estándares conlleva un precio. La interpretación de CSS como lenguaje de presentación en muchos navegadores, todavía es bastante mala y lleva a que cada uno tenga sus propios quirks o caprichos, que el desarrollador web debe conocer al realizar un sitio.</p>
<p>El caso más conocido es de Internet Explorer, el navegador usado por el 90% de los internautas del mundo, y el cual es totalmente deficiente en su interpretación del modelo de cajas de CSS (por citar uno de los cientos de bugs encontrados).</p>
<p>Por otro lado, la curva de aprendizaje de XHTML y sobre todo, de CSS, puede llegar a ser muy empinada para algunos diseñadores web de la “vieja escuela”, aquellos que todavía siguen maquetando sus sitios con tablas y llenando su código HTML con elementos de presentación (el elemento <code>&lt;font&gt;</code>, por citar uno).</p>
<p>Podemos resolver el primer problema consultando blogs y listas de correo con información sobre los últimos hacks encontrados para cada navegador. Por ejemplo, <a href="http://www.ovillo.org">Ovillo</a> es una lista de correo en español en donde se discuten acaloradamente temas sobre CSS y estándares web. </p>
<p>Para el segundo problema, lo única solución es capacitarnos. Enseñar a los profesores de universidades, que hay un nuevo y mejor método de construir la web. Y enseñar a nuestros colegas, que el mercado demanda sitios hechos con estándares web.</p>
<h3>La repercusión de los estándares en el mundo</h3>
<p>En el mundo, la proliferación del uso de los estándares para el desarrollo web, a nivel masivo, ciertamente empezó con el rediseño del sitio de la revista norteamericana Wired, en Octubre de 2002. El “caso Wired”, fue la prueba definitiva para los estándares web. Aquella que los llevaría a convertir su teoría en aplicaciones concretas del mundo real.</p>
<p>Luego, el mundo de los blogs, o la blogósfera, se encargó de diseminar la semilla. Jeffrey Zeldman, pionero, escribió largo y tendido sobre las ventajas de usar estándares web para la separación de contenido y presentación. Zeldman también fue el primero en escribir un libro orientado específicamente en el diseño web con estándares, camino que luego seguirían otros autores, como Dan Cederholm, con “Web Standards Solutions” y Dave Shea, creador de <a href="http://www.csszengarden.com">CSS Zen Garden</a>, con “The Zen of CSS Design”.</p>
<p>Y la lista de sitios que migran hacia los estándares, continúa creciendo: Fast Company (<a href="http://www.fastcompany.com">http://www.fastcompany.com</a>), ESPN (<a href="http://www.espn.com">http://www.espn.com</a>), Macromedia (<a href="http://www.macromedia.com">http://www.macromedia.com</a>), son solo algunos de los peces grandes que entienden el beneficio de los estándares web.</p>
<h3>En Latinoamérica tampoco nos quedamos atrás</h3>
<p>El uso de los estándares está muy difundido entre las empresas de desarrollo web del primer mundo, y en Latinoamérica también están pisando fuerte. Rediseños orientados a estándares y enfocados en la accesibilidad para personas discapacitadas, como el del diario La Nación (<a href="http://www.lanacion.com">http://www.lanacion.com</a>) iluminan el camino de los desarrolladores web hispanoparlantes y son un ejemplo a mostrar a posibles clientes.</p>
<p>Los blogs en español también se encargan de apoyar el movimiento por los estándares. Por citar un ejemplo, Juan Hurtado, en Armonía (<a href="http://armonia.spiral-static.org">http://armonia.spiral-static.org</a>), escribe diariamente sobre desarrollo web, enfocándose en temas como los estándares web, la semántica y la accesibilidad.</p>
<h3>En el futuro</h3>
<p>En el futuro, los hacks y quirks propios de cada navegador serán cosa del pasado. Microsoft ha escuchado las plegarias de los desarrolladores web y con la nueva versión de Internet Explorer, es decir, la versión 7, promete ampliar enormemente su interpretación de CSS.</p>
<p>Por otro lado, Macromedia ha mejorado su soporte para CSS en Dreamweaver, y de esta manera está logrando posicionarse en la mente de los desarrolladores que buscan una suite enfocada en los estándares web.</p>
<p>Hoy en día, hay una clara tendencia al desarrollo web “responsable”, aquel que se basa en las premisas de compatibilidad futura y accesibilidad para todos los usuarios y dispositivos, esto es, las bases del desarrollo web con estándares.</p>
<p>Y dentro de muy poco tiempo, aquellas empresas de desarrollo web que no se den cuenta que los estándares llegaron para quedarse, y que no son solo una opción mas, no serán rentables y competitivas en un mercado que cambia día a día.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rodrigogalindez.com/archivos/hacia-un-nuevo-modelo-para-construir-la-web/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

