<?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>SonicByte</title>
	<atom:link href="http://www.sonicbyte.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sonicbyte.com</link>
	<description>Diseño y desarrollo de negocios en Internet</description>
	<lastBuildDate>Wed, 01 Feb 2012 14:11:15 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Formularios web: ¿Es &#8220;repetir contraseña&#8221; un campo obsoleto?</title>
		<link>http://www.sonicbyte.com/formularios-web-es-repetir-contrasena-un-campo-obsoleto/</link>
		<comments>http://www.sonicbyte.com/formularios-web-es-repetir-contrasena-un-campo-obsoleto/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 06:15:44 +0000</pubDate>
		<dc:creator>Rodrigo Manuel Noales</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[formularios]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.sonicbyte.com/?p=2913</guid>
		<description><![CDATA[¿Sigue siendo necesario o no el campo "repetir contraseña" en un formulario de alta de usuario?
En una de nuestras últimas reuniones sobre un proyecto en el que estamos trabajando con mis compañeros de sonic, surgió esta pregunta. <a href="http://www.sonicbyte.com/formularios-web-es-repetir-contrasena-un-campo-obsoleto/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>¿Sigue siendo necesario o no el campo &#8220;<em>repetir contraseña</em>&#8221; en un formulario de alta de usuario?<br />
En una de nuestras últimas reuniones sobre un proyecto en el que estamos trabajando con mis compañeros de <em>sonic</em>, surgió esta pregunta.</p>
<p><span id="more-2913"></span></p>
<p><strong>¿Es una molestia innecesaria, una práctica obsoleta o realmente mejora la experiencia de usuario?</strong></p>
<p><strong>Algunos argumentos para defender su existencia:</strong></p>
<ul>
<li>Existe más seguridad de que el usuario ingresó correctamente su contraseña debido a la redundancia del campo.</li>
<li>En el campo &#8220;contraseña&#8221; sólo se ven asteríscos o puntos, por lo que es lógico que el usuario pueda cometer errores.</li>
<li>Los usuarios estan &#8220;habituados&#8221; a completar ese campo, es desde hace tiempo una convención.</li>
</ul>
<p><strong>Argumentos por los que pienso que ya no es necesario:</strong></p>
<ul>
<li>¿Por qué duplicar la molestia de completar ese campo <strong>a todos</strong> <strong>los usuarios</strong>, cuando quienes escriben incorrectamente su contraseña es una minoría?</li>
<li>Se duplican las posibilidades de cometer un error al ingresar por segunda vez la contraseña en el campo de comprobación, lo que obligaría a repetir la acción nuevamente sin necesidad.</li>
<li>Si hubo un error al crear su contraseña, siempre podrá recuperarla. Para eso existe el link o sistema de recuperación del sitio.</li>
<li>El formulario es más amigable para ser completado, puesto que hay menos requisitos, menos opciones, se ve más &#8220;corto&#8221; y se completa más rápidamente.</li>
<li>Existen diversas soluciones del lado del cliente (como Javascript) que transforman temporalmente los asteriscos o puntos en caracteres legibles, reduciendo la posibilidad de errores.<br />
<a href="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/password1.png"><img class="alignleft size-full wp-image-2959" title="password" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/password1.png" alt="" width="537" height="111" /></a><br />
Como podemos ver también en <a href="http://experienceinternet.co.uk/blog/an-alternative-approach-to-password-confirmation/">este ejemplo</a></li>
</ul>
<p><strong>La propuesta:</strong></p>
<ol>
<li>Durante el registro (<em>como se ve en el ejemplo anterior</em>), sin campo de comprobación, se permite temporalmente la vista de la contraseña.</li>
<li>Después de finalizado el registro, se envía un mail para validar la cuenta al correo electrónico ingresado y en el mismo se puede incluír la contraseña elegida por el usuario, de modo que tenga un registro para que en caso de un error de tecleo, el usuario pueda ingresar sin problemas.</li>
<li>El link de validación incluído en el mail podría iniciar la sesión automáticamente para evitar cualquier frustración inicial.</li>
</ol>
<p>Otro sitio de prestigio como <a href="http://www.alistapart.com/articles/the-problem-with-passwords/">A list apart</a> o eminencias, como <a href="http://es.wikipedia.org/wiki/Jakob_Nielsen">Jakob Nielsen</a>, referente de la usabilidad web, han publicado ya críticas y alternativas respecto de cómo viejas prácticas heredadas en el tratamiento de la seguridad web, como el <a href="http://www.useit.com/alertbox/passwords.html">enmascaramiento de las contraseñas</a> (en inglés), pueden ser perjudiciales a la usabilidad y por ende a tu negocio.</p>
<p><strong>Ejemplos de sitios que no utilizan la redundancia del campo contraseña:</strong></p>
<p><strong>LinkedIn</strong><br />
<a href="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/LinkedIn-e1326325455160.png"><img class="alignleft size-full wp-image-2922" title="LinkedIn" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/LinkedIn-e1326325455160.png" alt="" width="875" height="316" /></a></p>
<div class="clear"></div>
<p><strong>Dropbox</strong><br />
<a href="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/Dropbox-Iniciar-sesión-Simplifica-tu-vida-e1326367950689.png"><img class="alignleft size-full wp-image-2939" title="Dropbox" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/Dropbox-Iniciar-sesión-Simplifica-tu-vida-e1326367950689.png" alt="" width="700" height="484" /></a></p>
<div class="clear"></div>
<p><strong>MailChimp</strong><br />
<a href="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/MailChimp.png"><img class="alignleft size-full wp-image-2941" title="MailChimp" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/MailChimp-e1326368050593.png" alt="" width="700" height="490" /></a></p>
<div class="clear"></div>
<p><strong>Twitter</strong><br />
<a href="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/Twitter-e1326325509121.png"><img class="alignleft size-full wp-image-2924" title="Twitter" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/Twitter-e1326325509121.png" alt="" width="466" height="384" /></a></p>
<div class="clear"></div>
<p><strong>Wunderlist</strong><br />
<a href="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/wunderlist-e1326367858643.png"><img class="alignleft size-full wp-image-2938" title="wunderlist" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/wunderlist-e1326367858643.png" alt="" width="600" height="516" /></a></p>
<div class="clear"></div>
<p><strong>Tumblr</strong><br />
<a href="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/Registrarse-Tumblr.png"><img class="alignleft size-large wp-image-2926" title="Registrarse   Tumblr" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2012/01/Registrarse-Tumblr-1024x569.png" alt="" width="640" height="355" /></a></p>
<div class="clear"></div>
<p><strong class="clear">¿Es hora de cambiar las convenciones?¿ Qué piensan?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonicbyte.com/formularios-web-es-repetir-contrasena-un-campo-obsoleto/feed/?cat=-123,-124</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LESS: css inteligente que mejora tu productividad</title>
		<link>http://www.sonicbyte.com/less-css-inteligente-que-mejora-tu-productividad/</link>
		<comments>http://www.sonicbyte.com/less-css-inteligente-que-mejora-tu-productividad/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 05:30:18 +0000</pubDate>
		<dc:creator>Rodrigo Manuel Noales</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Ruby on rails]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[less]]></category>
		<category><![CDATA[Productividad]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[sass]]></category>

		<guid isPermaLink="false">http://www.sonicbyte.com/?p=2842</guid>
		<description><![CDATA[LESS te permite escribir el CSS que usas todo los días pero con la posibilidad de utilizar variables, funciones y métodos para que tus hojas de estilo funcionen de manera mas inteligente y mejoren tu productividad. <a href="http://www.sonicbyte.com/less-css-inteligente-que-mejora-tu-productividad/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hace ya tiempo que CSS dejó de ser sólo una forma de agregar algunos estilos básicos en una página web. Hoy ha evolucionado hasta ser una poderosa herramienta para definir no sólo estilos mucho más complejos, sino también para controlar el comportamiento y estructura del layout de nuestro sitio web en todo tipo de dispositivos. Sin embargo, si trabajas en proyectos medianos a grandes, su uso y mantenimiento a veces puede volverse complejo, poco flexible y repetitivo .</p>
<p>Es por esto que se crearon alternativas que complementan al CSS como <strong>LESS</strong> y <strong>SASS</strong> que, en resumen, te permiten escribir el CSS que usas todo los días pero con la posibilidad de utilizar<strong> variables, funciones y métodos </strong>para que tus hojas de estilo funcionen de manera mas inteligente y mejoren tu productividad.<br />
Nativamente ningún navegador soporta éstos formatos claro, es por eso que debes convertirlos a archivos CSS comunes antes de usarlos en producción.</p>
<p>Suena complicado, pero hey, a no asustarse que no es tan difícil como parece, y esto créeme puede aliviar MUCHO tu trabajo diario.</p>
<p><strong>¿Que puedo hacer con LESS?</strong><br />
Mejor que explicar será mostrarte algunos ejemplos rápidos que te permitirá entender su poder, ya que lo que se puede hacer es mucho más de lo que puedo cubrir en este post.</p>
<p><strong>Variables:</strong></p>
<p>En vez de manualmente agregar por ejemplo el color a cada elemento que lo requiera, puedes definir una variable y asignarle un color, luego aplicar la misma a cada elemento que lo necesite (y modificarla en otra regla), si mas tarde necesitas cambiar el color de todo el sitio, sólo debes modificar la variable inicial. ¿No es genial ?</p>
<div class="codecolorer-container css railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">//Definimos una variable para un <span style="color: #000000; font-weight: bold;">color</span><br />
<span style="color: #a1a100;">@azul-base: #5B83AD;</span><br />
//Esta otra variable oscurece el <span style="color: #000000; font-weight: bold;">color</span> de la variable anterior en un <span style="color: #933;">20%</span><br />
<span style="color: #a1a100;">@azul-claro: darken(@azul-base, 20);</span><br />
//Aplicamos la variable al div <span style="color: #ff0000;">&quot;header&quot;</span> y la segunda a sus links<br />
<span style="color: #cc00cc;">#header</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #a1a100;">@azul-base; }</span><br />
<span style="color: #cc00cc;">#header</span> a <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span><span style="color: #a1a100;">@azul-claro;}</span><br />
//Resultado CSS<br />
<span style="color: #cc00cc;">#header</span> <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#6c94be</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span><br />
<span style="color: #cc00cc;">#header</span> a <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#36506c</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></div></div>
<p><strong>Mixins:</strong><br />
Permite agrupar varias lineas CSS de una misma regla y usarla dentro de otras, por ejemplo:</p>
<div class="codecolorer-container css railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">//Definimos un Mixin<br />
<span style="color: #6666ff;">.bordered</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">border-top</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">dotted</span> <span style="color: #933;">1px</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">border-bottom</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">solid</span> <span style="color: #933;">2px</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
//Lo usamos dentro de otros elementos<br />
<span style="color: #cc00cc;">#menu</span> a <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#111</span><span style="color: #00AA00;">;</span> .bordered<span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
<span style="color: #6666ff;">.post</span> a <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span> .bordered<span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
<br />
//Resultado CSS<br />
<span style="color: #cc00cc;">#menu</span> a <span style="color: #00AA00;">&#123;</span><span style="color: #cc00cc;">#111</span> <span style="color: #000000; font-weight: bold;">border-top</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">dotted</span> <span style="color: #933;">1px</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">border-bottom</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">solid</span> <span style="color: #933;">2px</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span><br />
<span style="color: #6666ff;">.post</span> a <span style="color: #00AA00;">&#123;</span><span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">border-top</span> <span style="color: #993333;">dotted</span> <span style="color: #933;">1px</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">border-bottom</span><span style="color: #00AA00;">:</span><span style="color: #993333;">solid</span> <span style="color: #933;">2px</span> <span style="color: #000000; font-weight: bold;">black</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#125;</span></div></div>
<p>Otro ejemplo clásico de Mixins es para aplicar efectos de css3 como border-radius, box-shadow, etc que requieren muchas líneas de prefijos de distintos navegadores para garantizar compatibilidad. Con LESS los podemos definir una vez y reutilizarlos infinitamente, además puedes usar los llamados &#8220;<strong>Mixins paramétricos</strong>&#8220;, donde pasas valores al mismo dinámicamente como si fuese una función de javascript.</p>
<div class="codecolorer-container css railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">// Mixin de border-radius<br />
<span style="color: #6666ff;">.border-radius</span> <span style="color: #00AA00;">&#40;</span><span style="color: #a1a100;">@radius) {</span><br />
border-radius<span style="color: #00AA00;">:</span> <span style="color: #a1a100;">@radius;</span><br />
-moz-border-radius<span style="color: #00AA00;">:</span> <span style="color: #a1a100;">@radius;</span><br />
-webkit-border-radius<span style="color: #00AA00;">:</span> <span style="color: #a1a100;">@radius;</span><br />
<span style="color: #00AA00;">&#125;</span><br />
<br />
// Lo implementamos en esta regla y le pasamos el valor dinámicamente<br />
<span style="color: #6666ff;">.button</span> <span style="color: #00AA00;">&#123;</span><br />
.border-radius<span style="color: #00AA00;">&#40;</span><span style="color: #933;">5px</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></div>
<p>Puedes ver más ejemplos haciendo <a href="http://lesscss.org/#docs" target="_blank">click aquí</a></p>
<p><strong>SASS vs LESS</strong></p>
<p>Comentaba al principio que existe también SASS&#8230;¿Cual elegir?, bueno no hay un &#8220;vs&#8221; realmente en cuanto a potencia, ambos comparten muchas características y casi podría decirse que si sabes usar LESS, sabes usar SASS y viceversa. <strong> ¿Cual es su principal diferencia entonces?</strong>&#8230;<br />
La manera en que son procesados, LESS es una librería basada en javascript, por ende se procesa del lado del cliente (el navegador) para producir el CSS regular que el navegador utiliza, en cambio SASS corre bajo Ruby y se compila del lado del intérprete antes de ser enviado al navegador.<br />
A muchos puede no gustarles los segundos extra que se requiere para que el motor de javascript del navegador procese LESS y lo convierta en CSS común, pero hay alternativas para evitar esto que explicaré luego.<br />
Por otra parte SASS al compilarse por un intérprete Ruby necesitas tener instalado uno para utilizarlo (o algún derivado como Rails), por lo que si no usas ese lenguaje no podrás usar SASS, a menos que tengas una Mac que viene con Ruby de fabrica (sudo gem install sass), por lo que muy probablemente sea mas sencillo si usas pc inclinarte por LESS.</p>
<p><strong>LESS primeros pasos:</strong></p>
<p>¿Cómo lo instalas? Hay dos formas básicamente, o lo procesas &#8220;al vuelo&#8221; en el navegador o lo puedes compilar antes de subir los archivos a tu sitio (<em>Recomendado</em>)</p>
<p>Usando LESS  <em>(compilando en el navegador)</em></p>
<ul>
<li>Descarga LESS de la página oficial: <a href="http://lesscss.org" target="_blank">http://lesscss.org</a></li>
<li>Enlaza tus hojas de estilo .less con el valor &#8220;rel&#8221; a “stylesheet/less”.
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #c20cb9; font-weight: bold;">link</span> <span style="color: #007800;">rel</span>=<span style="color: #ff0000;">&quot;stylesheet/less&quot;</span> <span style="color: #007800;">type</span>=<span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #007800;">href</span>=<span style="color: #ff0000;">&quot;styles.less&quot;</span></div></div>
</li>
<li>Incluye el script:
<div class="codecolorer-container html4strict railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;less.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">script</span></a>&gt;</span></div></div>
<p><em>(Asegúrate de incluir las hojas de estilo antes del script)</em></li>
</ul>
<p>Personalmente prefiero utilizar el próximo método, para ésto se requiere compilar los archivos LESS a CSS antes de utilizarlos en el sitio web, ésto hace <a href="http://winless.org/" target="_blank">WinLess</a>.</p>
<p>Este programa, gratuito, lo hace casi todo solo. Una vez que instalas el programa y lo abres, debes seleccionar en qué carpeta de tu proyecto estarán tus archivos con extensión .less y voila!&#8230;WinLess compilará todos los archivos a CSS cada vez que los modifiques en tu editor html automáticamente, lo cual tiene la ventaja que no tienes que cambiar la forma en que enlazas a tus hojas de estilo en el header, ya que usas los archivos compilados con extensión .css como de costumbre.</p>
<p>Usando LESS<em> (compilado previo a producción)</em></p>
<ul>
<li>Descarga WinLess: http://winless.org/</li>
<li>Agrega tu carpeta con archivos LESS al programa</li>
<li>Listo, enlaza los archivos compilados CSS como de costumbre al header de tu página</li>
</ul>
<p><a href="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2011/12/WinLess.png"><img class="alignleft size-full wp-image-2884" title="WinLess" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2011/12/WinLess.png" alt="" width="705" height="511" /></a></p>
<p><strong>Mas información:</strong></p>
<p>Less: <a href="http://lesscss.org/">http://lesscss.org</a></p>
<p>Sass: <a href="http://lesscss.org/">http://sass-lang.com</a></p>
<p>WinLess: <a href="http://lesscss.org/">http://winless.org<br />
</a></p>
<p>Espero te haya sido de utilidad este post y cualquier consulta no dudes dejar tu pregunta en este mensaje. Hasta la próxima !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonicbyte.com/less-css-inteligente-que-mejora-tu-productividad/feed/?cat=-123,-124</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails: cómo instalar entorno de desarrollo</title>
		<link>http://www.sonicbyte.com/ruby-on-rails-como-instalar-entorno-de-desarrollo/</link>
		<comments>http://www.sonicbyte.com/ruby-on-rails-como-instalar-entorno-de-desarrollo/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 10:12:06 +0000</pubDate>
		<dc:creator>Pablo Jimeno Perez</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Ruby on rails]]></category>

		<guid isPermaLink="false">http://www.sonicbyte.com/?p=2803</guid>
		<description><![CDATA[Este miércoles dare uno de los famosos talleres de Cachirulo Valley sobre Ruby on rails, no olvides pillar tu entrada. Para poder pasar directamente a la acción en el taller, os he preparado este pequeño post sobre la instalación del &#8230; <a href="http://www.sonicbyte.com/ruby-on-rails-como-instalar-entorno-de-desarrollo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Este miércoles dare uno de los famosos talleres de Cachirulo Valley sobre Ruby on rails, no olvides <a href="http://cachirulovalley.com/2011/introduccion-a-ruby-on-rails-sweets-and-candies/" target="blank">pillar tu entrada</a>.<br />
Para poder pasar directamente a la acción en el taller, os he preparado este pequeño post sobre la instalación del entorno de desarrollo, esto es:</p>
<ul>
<li>Git</li>
<li>Ruby</li>
<li>Rubygems</li>
<li>Rails</li>
</ul>
<h3>Instalar Git:</h3>
<p>Para trabajar con Ruby on Rails, el sistema de control de versiones Git, podría decirse que <strong>no es opcional</strong>, te lo encontrarás en diferentes situaciones, por lo tanto, es importante que lo tengas instalado desde un comienzo. Para comprobar si ya lo tienes instalado y su versión, en un terminal (consola), introduce la primera línea y deberías obtener la segunda o algo parecido:</p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ <span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #660033;">--version</span><br />
<span style="color: #c20cb9; font-weight: bold;">git</span> version 1.7.7.4</div></div>
<p>Si no fuera así, sigue las instrucciones de la version online del libro <a href="http://progit.org/book/ch1-4.html target="blank">Pro Git (cap. 1-4)</a> para instalar en Linux, Mac o Windows.</p>
<p>A continuación nos dividimos, primero explicaré la instalación para Linux o Mac y al final la de Windows, que es mucho más fácil (sí has leído bien).</p>
<h3>Instalar Ruby en Linux o Mac</h3>
<p>Como con Git, primero comprobaremos si ya tienes instalado Ruby introduciendo en el terminal:</p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$ ruby <span style="color: #660033;">-v</span><br />
ruby 1.9.2</div></div>
<p>Si no tuvieras instalado Ruby, las versiones más recomendables para instalar son 1.8.7 o 1.9.2, puedes instalar más de una versión a traves de una excelente herramienta llamada RVM (Ruby Version Manager) que además permite tener distintas librerías, llamadas gems y agruparlas por ejemplo, por proyectos para mantener el entorno ligero y ordenado. No es obligatorio para el taller pero lo recomiendo totalmente.</p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># Para su instalación requiere curl, por eso comprueba:</span><br />
$ curl <span style="color: #660033;">--version</span><br />
curl 7.23.1<br />
<br />
<span style="color: #666666; font-style: italic;"># Si no tienes curl descarga el tar http://curl.haxx.se/download.html</span><br />
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> zxf curl-7.23.1.tar.gz<br />
$ <span style="color: #7a0874; font-weight: bold;">cd</span> curl-7.23.1<br />
$ <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span><br />
<br />
<span style="color: #666666; font-style: italic;"># Ahora instalas RVM http://beginrescueend.com/rvm/install/</span><br />
$ <span style="color: #c20cb9; font-weight: bold;">bash</span> <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>curl <span style="color: #660033;">-s</span> https:<span style="color: #000000; font-weight: bold;">//</span>raw.github.com<span style="color: #000000; font-weight: bold;">/</span>wayneeseguin<span style="color: #000000; font-weight: bold;">/</span>rvm<span style="color: #000000; font-weight: bold;">/</span>master<span style="color: #000000; font-weight: bold;">/</span>binscripts<span style="color: #000000; font-weight: bold;">/</span>rvm-installer<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
<span style="color: #666666; font-style: italic;"># Y agrega RVM a tu .bash_profile</span><br />
$ <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'[[ -s &quot;$HOME/.rvm/scripts/rvm&quot; ]] &amp;&amp; . &quot;$HOME/.rvm/scripts/rvm&quot; # Load RVM function'</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> ~<span style="color: #000000; font-weight: bold;">/</span>.bash_profile<br />
<span style="color: #666666; font-style: italic;"># Comprueba si se ha instalado correctamente</span><br />
$ <span style="color: #7a0874; font-weight: bold;">type</span> rvm <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-1</span> <br />
rvm is a <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #666666; font-style: italic;"># YEAY! :D si no obtienes esto, consulta el sitio RVM</span></div></div>
<p>Ahora instalar cualquier version de Ruby es tan fácil como</p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666;">$ </span>rvm <span style="color: #c20cb9; font-weight: bold;">install</span> 1.9.2</div></div>
<p>En caso de que no queráis instalar RVM, la instalación directa de Ruby para distintos sistemas operativos podéis encontrarla en el <a href="http://www.ruby-lang.org/en/downloads/" target="blank">sitio web de Ruby</a>.</p>
<h3>Instalar Rubygems</h3>
<p>Si has seguido mi consejo, y has instalado RVM, ya tienes Rubygems. Si no las instrucciones las tienes en el <a href="http://docs.rubygems.org/read/chapter/3" target="blank">sitio web de Rubygems</a>. RubyGems es un gestor de paquetes de Ruby y se usa para distribuir todo tipo de programas y librerías, como por ejemplo Ruby on Rails.</p>
<h3>Instalar Ruby on Rails</h3>
<p>Muy simple:</p>
<div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># Si has instalado RVM</span><br />
$ gem <span style="color: #c20cb9; font-weight: bold;">install</span> rails <span style="color: #666666; font-style: italic;"># si quieres una version concreta: --version 3.1.0</span><br />
<span style="color: #666666; font-style: italic;"># Si has ido por otro camino ;)</span><br />
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> rails <br />
<span style="color: #666666; font-style: italic;"># Comprueba la instalación:</span><br />
$ rails <span style="color: #660033;">-v</span><br />
Rails 3.1.0</div></div>
<p><a href="#windows"><br />
<h3>Instalación del entorno en Windows</h3>
<p></a><br />
La instalación en Windows es de broma, gracias al trabajo de <a href="http://engineyard.com/>EngineYard</a>, simplemente descargar un fichero desde el sitio web <a href="http://railsinstaller.org/ target="blank">Rubyinstaller</a> y ejecutarlo.</p>
<p>Espero que podáis instalar el entorno sin dificultades y nos vemos el miércoles en el <a href="http://maps.google.com/maps?&#038;f=q&#038;source=s_q&#038;geocode=&#038;q=Avenida+Francia+s%2Fn%2C+Zaragoza+Zaragoza+Zaragoza+Espa%C3%B1a" taget="blank">Digital Water Pavilion (mapa)</a> gracias a la gente de <a href="http://www.milladigital.org/" target="blank">Milla Digital</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonicbyte.com/ruby-on-rails-como-instalar-entorno-de-desarrollo/feed/?cat=-123,-124</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Formulario por pasos usando Mootools</title>
		<link>http://www.sonicbyte.com/formulario-por-pasos-usando-mootools/</link>
		<comments>http://www.sonicbyte.com/formulario-por-pasos-usando-mootools/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 09:17:17 +0000</pubDate>
		<dc:creator>Juan Pablo Vincent</dc:creator>
				<category><![CDATA[Desarrollo]]></category>

		<guid isPermaLink="false">http://www.sonicbyte.com/?p=2523</guid>
		<description><![CDATA[Cómo hacer un formulario HTML con Mootools <a href="http://www.sonicbyte.com/formulario-por-pasos-usando-mootools/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En nuestro <a title="Bichomania" href="http://bichomania.es" target="_blank">último proyecto e-commerce</a> para el proceso de finalización de compra optamos por utilizar un formulario por pasos. Esta decisión fue tomada para no cansar al visitante con extensos e interminables formularios con un sinfín de campos que no alientan a ser rellenados. Además la interfaz queda bonita y el efecto al ir rellenando los pasos también es agradable para el visitante.</p>
<p>Pero una de las mayores ventajas es que la validación del formulario se realiza en cada etapa, por lo que el visitante puede corregir algún campo mal ingresado sin tener que esperar a rellenar todos los pasos. Esto le da una agilidad al proceso y genera confianza en el visitante.</p>
<p><a title="Demo: Formulario por pasos usando Mootools." href="http://www.sonicbyte.com/2011sonic/wp-content/demos/formulario_por_pasos_usando_mootools_demo.php">Ver demo</a></p>
<p>Para la validación del formulario, en realidad cada etapa es un formulario en si, utilizamos el FormCheck de la librería <a title="MooFloor" href="http://mootools.floor.ch/en/" target="_blank">MooFloor</a>. Éste validador se ha convertido en nuestro favorito a lo largo de los proyectos. Esta librería requiere el core de <a title="Mootools" href="http://mootools.net/" target="_blank">Mootools</a> 1.2.4 y del more 1.2.4.4 sólo la clase Fx.Scroll. También incluímos un archivo con las frases del validador en castellano salvo que se quiera que aparezcan los avisos en inglés, el idioma default. Es necesario incluir un archivo CSS para mostrar correctamente los avisos del validador. Este archivo se descarga junto con el plugin javascript en la misma página. Por lo tanto la inclusión de archivos para que funcione nuestro formulario por pasos de momento queda de la siguiente manera:</p>
<div class="codecolorer-container html4strict railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://ajax.googleapis.com/ajax/libs/mootools/1.2.5/mootools-yui-compressed.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span><br />
<br />
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;js/mootools-1.2.5.1-more.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span><br />
<br />
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;js/formcheck/lang/es.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span><br />
<br />
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;js/formcheck/formcheck.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></div></div>
<p>Para el efecto de transición entre los pasos utilizamos el <a title="SlideShow" href="http://ryanflorence.com/slideshow/" target="_blank">plugin SlideShow</a> de Ryan Florence. Un plugin para hacer carruseles bastante fácil de implementar y muy extendible. La clase requiere del core de Mootools y la clase Fx.Elements del more, también la clase Loop que se descarga en el mismo sitio del SlideShow. Por lo tanto dos nuevas línea se agrega a la inclusión de archivos:</p>
<div class="codecolorer-container html4strict railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ruta-archivos-js/slideshow/Loop.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span><br />
<br />
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;ruta-archivos-js/slideshow/SlideShow.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></div></div>
<p>El siguiente paso es crear las estructura del formulario. Para ello creamos un DIV contenedor que va a contener a las distintas etapas. Cada etapa va a ser un FORM que a su vez va a estar contenido en un DIV. Quedando una estructura así:</p>
<div class="codecolorer-container html4strict railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;contenedor&quot;</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;etapa_1&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;form_1&quot;</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span>&gt;</span><br />
&nbsp; &nbsp; ....<br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;etapa_2&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;form_2&quot;</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span>&gt;</span><br />
&nbsp; &nbsp; ....<br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span><br />
&nbsp; .<br />
&nbsp; .<br />
&nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;etapa_n&quot;</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;form_n&quot;</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span>&gt;</span><br />
&nbsp; &nbsp; ....<br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></div></div>
<p>En esta entrada no explicaremos como validar los distintos tipos de campos, para ello pueden visitar los <a title="Docs MooFloor" href="http://mootools.floor.ch/docs/formcheck/files/formcheck-js.html" target="_blank">documentos de la librería MooFloor</a>.</p>
<p>El siguiente paso es instanciar un validador para cada paso, por lo que cada formulario tendrá su propia instancia del validador. Las opciones de la clase deberán ser cambiadas un poco a las de una validación tradicional ya que no queremos que se envíe el formulario, sino pasar al siguiente paso.</p>
<p>Por lo tanto las instancias del validador tendrán la siguiente forma:</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">new</span> FormCheck<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'form_1'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; submit<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">new</span> FormCheck<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'form_2'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; submit<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Al instanciar de este modo cada validador el formulario no es enviado pero sí le realiza el chequeo para comprobar que cada campo es correcto.</p>
<p>El siguiente paso es el de darle el efecto de transición para pasar al siguiente formulario cuando el chequeo es válido. Para ello debemos primero instanciar la clase SlideShow y luego decirle que hacer a cada formulario cuando el chequeo es válido:</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> slideshow <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> SlideShow<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'contenedor'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">new</span> FormCheck<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'form_1'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; submit<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; onValidateSuccess<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; slideshow.<span style="color: #660066;">show</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'etapa_2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; transition<span style="color: #339933;">:</span> <span style="color: #3366CC;">'pushLeft'</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">new</span> FormCheck<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'form_2'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; submit<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; onValidateSuccess<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; slideshow.<span style="color: #660066;">show</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'etapa_3'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; transition<span style="color: #339933;">:</span> <span style="color: #3366CC;">'pushLeft'</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Instanciamos todos los pasos del formulario hasta llegar al último, en nuestro ejemplo el formulario &#8216;n&#8217;. Al validar el formulario &#8216;n&#8217; se deben enviar todos los datos de los distintos pasos/formularios, para nuestro ejemplo los enviaremos mediante una llamada ajax. Recogemos la información de los distintos pasos para enviarlo como parámetro DATA en la llamada:</p>
<div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003366; font-weight: bold;">var</span> slideshow <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> SlideShow<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'contenedor'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">new</span> FormCheck<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'form_1'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; submit<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; onValidateSuccess<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; slideshow.<span style="color: #660066;">show</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'etapa_2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; transition<span style="color: #339933;">:</span> <span style="color: #3366CC;">'pushLeft'</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #003366; font-weight: bold;">new</span> FormCheck<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'form_2'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; submit<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; onValidateSuccess<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; slideshow.<span style="color: #660066;">show</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'etapa_3'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; transition<span style="color: #339933;">:</span> <span style="color: #3366CC;">'pushLeft'</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
..<br />
<br />
<span style="color: #003366; font-weight: bold;">new</span> FormCheck<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'form_n'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; submit<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span><br />
&nbsp; onValidateSuccess<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> datos <span style="color: #339933;">=</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'form_1'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toQueryString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&amp;'</span> <span style="color: #339933;">+</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'form_2'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toQueryString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&amp;'</span>...<span style="color: #3366CC;">'&amp;'</span> <span style="color: #339933;">+</span> $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'form_n'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toQueryString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">new</span> Request<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; url<span style="color: #339933;">:</span> <span style="color: #3366CC;">'url_de_la_accion'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; data<span style="color: #339933;">:</span> datos<span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; onSuccess<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>result<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #006600; font-style: italic;">// acción resultado de el envío</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">send</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p><a title="Demo: Formulario por pasos usando Mootools." href="http://www.sonicbyte.com/2011sonic/wp-content/demos/formulario_por_pasos_usando_mootools_demo.php">Ver demo</a></p>
<p>Puedes ver todo el código en <a href="https://github.com/pipino/Mootools-Multistep-form-using-FormCheck-and-Slideshow">github</a>.</p>
<p>Espero que les guste el post. Hasta la próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonicbyte.com/formulario-por-pasos-usando-mootools/feed/?cat=-123,-124</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Formularios Html5: Guía rápida</title>
		<link>http://www.sonicbyte.com/formularios-html5-guia-rapida/</link>
		<comments>http://www.sonicbyte.com/formularios-html5-guia-rapida/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 21:23:18 +0000</pubDate>
		<dc:creator>Rodrigo Manuel Noales</dc:creator>
				<category><![CDATA[Html5]]></category>
		<category><![CDATA[Productividad]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[formularios]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[navegador]]></category>

		<guid isPermaLink="false">http://www.sonicbyte.com/?p=2736</guid>
		<description><![CDATA[Una de las características más importantes que nos brinda el nuevo standard Html5 son las mejoras y nuevos elementos disponibles para el manejo de formularios. La nueva especificación de HTML es soportada de diferente manera por los distintos navegadores*, no todas sus &#8230; <a href="http://www.sonicbyte.com/formularios-html5-guia-rapida/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Una de las características más importantes que nos brinda el nuevo standard <strong>Html5 </strong>son las mejoras y nuevos elementos disponibles para el <strong>manejo de formularios</strong>.<br />
La nueva especificación de HTML es soportada de diferente manera por los distintos navegadores*, no todas sus características se comportan igual. A pesar de esto, ya p̶u̶e̶d̶e̶s̶ debes empezar a usar muchas de las características principales, en seguida verás porqué.<strong><span id="more-2736"></span></strong></p>
<p>¿Por qué debo usar formularios HTML5?</p>
<p>Tres razones:</p>
<ul>
<li>Para el diseñador o desarrollador brinda nuevas maneras de procesar información (algunas complejas) de manera simple, nativa, sin la necesidad de recurrir a soluciones de Javascript.</li>
<li>Hace mas placentera y sencilla la tarea de comprender y completar formularios para tus usuarios (si es que la palabra “placentera” puede relacionarse con “completar formularios” :/ )</li>
<li>Es el nuevo standard !</li>
</ul>
<p>Hasta ahora la forma que se utiliza para validar los formularios “del lado del cliente” es javascript para ayudar al usuario a completar correctamente los formularios para recopilar coherentemente su información, desde el registro y acceso de una cuenta hasta procesos de pago de compra y otros.</p>
<p>Las nuevas características para manejo de formularios html5 permiten prescindir de javascript para realizar validaciones “del lado del cliente”, esto me permite como diseñador crear un formulario completo sin recurrir a un desarrollador, aumentando la productividad, sobre todo en equipos pequeños de trabajo.</p>
<p>Por supuesto que hay mucho mas que validación en html5, lo veremos más abajo.</p>
<p>Para el usuario, los formularios tienen ahora un comportamiento más inteligente, un campo de fecha mostrará al usuario un calendario interactivo, o hints (pistas) sobre qué ingresar en ese campo, foco automático en el campo inicial, formato correcto a medidas de tiempo o seleccionar color mediante una paleta de colores.</p>
<p>Por último, el uso de estándares es una buena práctica, dota de profesionalismo a nuestro trabajo y asegura su funcionamiento a futuro.</p>
<p><strong>Ok, vamos a los demos…¿Qué hay de nuevo?</strong></p>
<p>Busca un café, Html5 agrega <strong>MUCHAS</strong> novedades, nuevos atributos, elementos y tipos de campos. Además de la explicación, incluyo un link a un demo funcional para que probemos de qué va la cosa. Los demos pertenecen al sitio <a href="http://wufoo.com/" target="_blank">Wufoo</a>, pensaba hacerlos por mi cuenta pero realmente éstos están muy bien hechos y tienen el plus de aportar documentación adicional sobre compatibilidad e información útil.</p>
<p>Por cierto es recomendable que prueben las demos en el navegador <a href="http://www.opera.com/" target="_blank">Opera</a>, pues es el que actualmente<strong> soporta mejor la mayoría de las nuevas características</strong>, también muchas funcionan bien en Chrome, Firefox y hasta en Explorer, pero varias sólo están disponibles para Opera actualmente. Pero esto no es razón para no usarlos, sino al contrario, porque no serán visibles para algunos pero les será muy útil a quienes utilicen navegadores modernos.<strong></strong><strong></strong></p>
<h3><strong>13 nuevos atributos:</strong></h3>
<ul>
<li><strong>autofocus</strong> – <a href="http://wufoo.com/html5/attributes/02-autofocus.html" target="_blank">Demo</a><br />
<em>Hacemos foco en el input que tenga asociado éste valor al cargar la página</em></li>
<li><strong>placeholder</strong> – <a href="http://wufoo.com/html5/attributes/01-placeholder.html" target="_blank">Demo</a><br />
<em>Para ofrecer una pista de lo que el usuario debe ingresar</em></li>
<li><strong>accept</strong> – <a href="http://wufoo.com/html5/attributes/07-accept.html" target="_blank">Demo<br />
</a>Permite que solo el tipo de archivo determinado pueda ser cargado en el formulario</li>
<li><strong>multiple</strong> – <a href="http://wufoo.com/html5/attributes/08-multiple.html" target="_blank">Demo</a><br />
Permite seleccionar múltiples archivos para ser cargados de una vez por el formulario</li>
<li><strong>max / min / step</strong> – <a href="http://wufoo.com/html5/attributes/04-minmaxstep.html" target="_blank">Demo</a><br />
Podemos delimitar rango de valores numéricos permitidos máximos, mínimos y  múltiplos dentro de un rango.</li>
<li><strong>form</strong> – <em>Demo no disponible</em><br />
<em>Este atributo nos permite colocar un elemento en cualquier parte de la página, no solamente dentro del form tag, y que éste siga siendo procesado por el form. Además permite asociar un mismo elemento a mas de un form simultaneamente</em></li>
<li><strong>required</strong>  – <a href="http://wufoo.com/html5/attributes/09-required.html" target="_blank">Demo<br />
</a><em>Atributo booleano que determina si el elemento debe ser obligatorio o no<br />
(Utilizado junto con “pattern”, “max / min”, “email” y otros nuevos atributos, nos permite prescindir en gran medida de Javascript para validar nuestros formularios y hacero sólo con el navegador.)<br />
</em></li>
<li><strong>autocomplete</strong>  – <a href="http://wufoo.com/html5/attributes/06-autocomplete.html" target="_blank">Demo<br />
</a><em>Permite especificar si un elemento puede o no ser autocompletado por el navegador basado en entradas previas del usuario</em></li>
<li><strong>pattern</strong> – <a href="http://wufoo.com/html5/attributes/10-pattern.html" target="_blank">Demo</a><br />
<em>Para validar un elemento en base a una expresión regular (RegEx)</em></li>
<li><strong>dirname</strong> – <em>Demo no disponible</em><br />
<em>Envía la dirección en que fue ingresado el texto en un input determinado (ej: de derecha a izquierda)</em></li>
<li><strong>novalidate</strong> – <a href="http://wufoo.com/html5/attributes/11-novalidate.html" target="_blank">Demo</a><br />
<em>Evita la validación del elemento al enviar el formulario</em></li>
<li><strong>formaction</strong> – <a href="http://wufoo.com/html5/attributes/13-formaction.html" target="_blank">Demo</a><br />
<em>Para sobreescribir el comportamiento por defecto del formulario</em></li>
<li><strong>formenctype</strong> – <a href="http://wufoo.com/html5/attributes/16-formenctype.html" target="_blank">Demo</a><br />
<em>Para sobreescribir la codificación por defecto del formulario</em></li>
<li><strong>formmethod</strong> – <a href="http://wufoo.com/html5/attributes/14-formmethod.html" target="_blank">Demo</a><br />
<em>Para sobreescribir el método de envío por defecto del formulario</em></li>
<li><strong>formnovalidate</strong> – <a href="http://wufoo.com/html5/attributes/12-formnovalidate.html" target="_blank">Demo</a><br />
<em>Para sobreescribir novalidate de un formulario (Esto es útil por ejemplo si tenemos un formulario con dos botones u acciones, uno de envío y otro para guardar cambios, pero queremos que la validación ocurra al envíar un formulario y no si el formulario es guardado)</em></li>
<li><strong>formtarget</strong> – <a href="http://wufoo.com/html5/attributes/15-formtarget.html" target="_blank">Demo</a><br />
<em>Para sobreescribir la ventana destino por defecto del form</em></li>
</ul>
<h3><strong>5 nuevos elementos:</strong></h3>
<ul>
<li><strong>progress</strong> – <a href="http://wufoo.com/html5/elements/2-progress.html" target="_blank">Demo</a><br />
<em>Representa el grado de progreso de una tarea o acción (ej: Representar la carga de una imágen)</em></li>
<li><strong>meter</strong> – <a href="http://wufoo.com/html5/elements/1-meter.html" target="_blank">Demo</a><br />
<em>Se utiliza para medir algo con una escala determinada, como temperatura o distancias.</em></li>
<li><strong>datalist</strong> – <a href="http://wufoo.com/html5/attributes/05-list.html" target="_blank">Demo</a><br />
<em>Si asociamos un text input a un Datalist (lista de valores) al hacer foco en ese input aparece un dropdown mostrando el contenido del elemento Datalist</em></li>
<li><strong>keygen</strong> – <a href="http://wufoo.com/html5/elements/4-keygen.html" target="_blank">Demo<br />
</a><em>Genera un par de claves de control privada que se guarda en local y pública que se envía al servidor</em></li>
<li><strong>output</strong> – <a href="http://jsfiddle.net/roroland/5vHAM/" target="_blank">Demo</a><br />
<em><em>Se utiliza para realizar cálculos entre campos (ej: La suma de 2 números en distintos inputs)</em></em></li>
</ul>
<h3><strong>13 nuevos tipos de campos:</strong></h3>
<ul>
<li><strong>tel</strong> – <a href="http://wufoo.com/html5/types/2-tel.html" target="_blank">Demo</a><br />
<em>Para un número telefónico (En realidad, no prueba que sea un número, para validar un formato numérico en particular se debe complementar con “pattern”)</em></li>
<li><strong>search</strong> – <a href="http://wufoo.com/html5/types/5-search.html" target="_blank">Demo</a><br />
<em>Sugiere ingreso de texto en el input (La diferencia entre search y un input de texto común es que puede ser reconocido por la plataforma en la cual es visto para igualar su estilo)</em></li>
<li><strong>url</strong> – <a href="http://wufoo.com/html5/types/3-url.html" target="_blank">Demo</a><br />
<em>Para ingresar direcciones web absolutas</em></li>
<li><strong>email</strong> – <a href="http://wufoo.com/html5/types/1-email.html" target="_blank">Demo</a><br />
<em>Para valores únicos o múltiples de direcciónes de email</em></li>
<li><strong>datetime</strong> – <a href="http://wufoo.com/html5/types/4-date.html" target="_blank">Demo</a><br />
<em>Formato de fecha y hora con zona horaria UTC</em></li>
<li><strong>date</strong> – <a href="http://wufoo.com/html5/types/4-date.html" target="_blank">Demo</a><br />
<em>Formato de fecha sin zona horaria</em></li>
<li><strong>month</strong> – <a href="http://wufoo.com/html5/types/4-date.html" target="_blank">Demo</a><br />
<em>Mes y año sin zona horaria</em></li>
<li><strong>week  </strong>- <a href="http://wufoo.com/html5/types/4-date.html" target="_blank">Demo</a><br />
<em>Fecha para ingresar semana del año</em></li>
<li><strong>time</strong> – <a href="http://wufoo.com/html5/types/4-date.html" target="_blank">Demo</a><br />
<em>Hora completa sin zona horaria</em></li>
<li><strong>datetime-local</strong> – <a href="http://wufoo.com/html5/types/4-date.html" target="_blank">Demo</a><br />
<em>Fecha y hora sin zona horaria</em></li>
<li><strong>number</strong> – <a href="http://wufoo.com/html5/types/7-number.html" target="_blank">Demo</a><br />
<em>Valores numericos</em></li>
<li><strong>range</strong> – <a href="http://wufoo.com/html5/types/8-range.html" target="_blank">Demo</a><br />
<em>Valor numerico para controlar slider</em></li>
<li><strong>color</strong> – <a href="http://wufoo.com/html5/types/6-color.html" target="_blank">Demo</a><br />
<em>Para elegir colores de una paleta</em></li>
</ul>
<p><strong>Conclusión:</strong></p>
<p>Reflexionando sobre los cambios que esto producirá en cómo interactuamos con la web, llegué a la conclusión que <strong>el mayor cambio tal vez no lo noten los usuarios comunes</strong> (debido al actual uso de Javascript)<strong>, sino los diseñadores</strong><strong></strong>,  aún más que los desarrolladores.</p>
<p><strong>Html5</strong> espero haga universal la implementación de muchas de estas nuevas características para hacer más entendible y simple completar formularios. Esto redundará en menos frustraciones y abandonos permitiendo al usuario finalizar existosamente su tarea. Lo cual es beneficioso para la web y una satisfacción para el cliente.</p>
<p>Recuerda que elementos y atributos como <em>placeholder, autofocus, email, datalist y required,</em> entre los más comunes, <strong>ya tienen un amplio soporte</strong>, y como alternativa, siempre tenemos la posibilidad de ofrecer una experiencia similar utilizando soporte de librerías de javascript (como <a href="http://www.modernizr.com/" target="_blank">modernizr</a>) para navegadores que no soportan aún estos avances de forma tal de ir incorporando poco a poco esta nueva experiencia al diseño cotidiano.</p>
<p><strong>Fuentes:</strong></p>
<p><a href="http://www.w3.org/TR/html5/forms.html" target="_blank">W3c Specification</a><br />
* <a href="http://wufoo.com/html5/" target="_blank">http://wufoo.com/html5/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonicbyte.com/formularios-html5-guia-rapida/feed/?cat=-123,-124</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Aprende a trabajar, da capo</title>
		<link>http://www.sonicbyte.com/aprende-a-trabajar-da-capo/</link>
		<comments>http://www.sonicbyte.com/aprende-a-trabajar-da-capo/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 09:37:32 +0000</pubDate>
		<dc:creator>Pablo Jimeno Perez</dc:creator>
				<category><![CDATA[Negocio]]></category>
		<category><![CDATA[entregas]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[negocio]]></category>
		<category><![CDATA[Productividad]]></category>

		<guid isPermaLink="false">http://www.sonicbyte.com/?p=1768</guid>
		<description><![CDATA[Mis notas y algunas reflexiones acerca del famoso libro Rework de los fundadores de 37 Signals: Jason Fried y David Heinemeier Hansson. <a href="http://www.sonicbyte.com/aprende-a-trabajar-da-capo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Después de mucho oír hablar de él, finalmente he leído &#8220;<a title="Rework" href="http://37signals.com/rework/" target="_blank">Rework</a>&#8221; el famoso libro de Jason Fried y David Heinemeier Hansson, fundadores de <a title="37Signals" href="http://37signals.com/" target="_blank">37Signals</a>. Esta empresa que inspira por su éxito, por su forma de trabajar y por sus grandes <a title="37Signals" href="http://37signals.com/" target="_blank">productos</a>. Desde que la descubrí y me hice aficionado a su blog, me atrajeron fundamentalmente su visión de negocio y su equilibrio entre diseño y desarrollo. Hay muchas buenas empresas de éxito que destacan por uno u otro, pero no consiguen cerrar la brecha entre sus equipos de diseño y desarrollo.</p>
<p>No voy a descubrir nada a nadie, de un libro que ya es un clásico en el sector, tenéis multitud de reseñas por Internet. Pero haré, eso sí, un resumen de las ideas que se me ocurrieron al leerlo y alguna cosa con la que no estoy de acuerdo (seguramente porque no entiendo).</p>
<h3>Ignore the real world.</h3>
<p>Si quieres llevar una idea adelante, te encontrarás demasiado a menudo con la frase &#8220;eso en España* no va a funcionar&#8221;. Es la versión latina ampliada y empeorada de &#8220;That would never work in the real world&#8221; de los yanquis, que parece aplicarse a algo novedoso. Aquí te la puedes encontrar en todo tipo de negocios que sabemos que funcionan si lo haces bien, como por ejemplo el e-commerce.  Prepárate para ignorar muchas opiniones.</p>
<p>* Puedo confirmar esta frase en más países como Argentina o Italia.</p>
<h3>¿Fallar o no fallar?</h3>
<p>Desde hace un tiempo se oyen distintas voces que proponen e incluso basan su desarrollo en aprender de los errores o fallar a pronto y fallar a menudo, e ideas similares. Por el contrario Jason y David (J&amp;D):<br />
- niegan que se aprenda de los errores, <strong>porque</strong> dicen que del error sabes lo que no debes volver a hacer y no lo que debes hacer.<br />
- niegan las estadísticas que  prueban que la mayor parte de las empresas online fracasan, <strong>porque </strong>lo que le ocurre a otra gente es sólo eso, otra gente.<br />
- defienden que el éxito te brinda un mayor aprendizaje y que es la experiencia que realmente cuenta.<br />
- por último arriesgan que la evolución no ha perdurado en los errores del pasado, <strong>sino que</strong> se construye sobre lo que ha funcionado.</p>
<p>Aquí es donde empezaron a perderme. No discuto que haya un valor inmenso en el éxito, pero gran parte del aprendizaje se adquiere a raíz de los errores, es un hecho, ese es el fundamento del <a href="http://es.wikipedia.org/wiki/método_científico" target="_blank" title="From Wikipedia the definition of: método científico" style="padding-bottom: 2px; border-bottom: 1px dotted #DD0000" >método científico</a><sup style="font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA" ><em>W</em></sup>.<br />
El dato que dice que la inmensa mayoría de las empresas de Internet fracasan, efectivamente no significa que a la tuya le vaya a ir mal, estoy de acuerdo, pero no por ello debes negarlo, simplemente estar atento y hacer lo posible por evitar el fracaso.<br />
Y finalmente el ejemplo de la evolución es definitivamente errado y su explicación posiblemente poco interesante para el lector de este blog. No es equiparable lo que &#8220;ha funcionado&#8221; a lo largo de la evolución, con el éxito de una empresa, ya que la evolución no tiene un objetivo, ni aprende, y más bien una empresa podría compararse con la vida de un individuo, no con la evolución de las especies, la escala es fundamental. Las empresas son diferentes a los organismos cuyo genotipo no varía.<br />
Entiendo que se trata de una metáfora y como todas las metáforas permite aproximarse a la idea pero carece de precisión. En cualquier caso se me ocurre que si quisieramos relacionar la <a href="http://es.wikipedia.org/wiki/teoría_evolutiva" target="_blank" title="From Wikipedia the definition of: teoría evolutiva" style="padding-bottom: 2px; border-bottom: 1px dotted #DD0000" >teoría evolutiva</a><sup style="font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA" ><em>W</em></sup> con las empresas de internet es más fácil argumentar en favor del aprendizaje de los errores, ya que la selección o éxito de las empresas puede darse en distintos momentos según su capacidad de adaptarse a los cambios del ambiente.</p>
<p>Por último, la idea que más me gustó del libro es esta:</p>
<blockquote><p> Las grandes decisiones son difíciles de tomar y de cambiar… Cuando tomas pequeñas decisiones no puedes cometer grandes errores…”</p></blockquote>
<p>A pesar de alguna crítica el libro me parece excelente y muchos de sus consejos aún los estoy madurando. Si no has leído el libro y quieres saber algo más te recomiendo esta charla de TED, en la cual Jason Fried presenta las principales ideas:</p>
<p style="text-align: center;"><object width="526" height="374" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=http://video.ted.com/talk/stream/2010X/Blank/JasonFried_2010X-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JasonFried-2010X.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=1014&amp;lang=eng&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=jason_fried_why_work_doesn_t_happen_at_work;year=2010;theme=not_business_as_usual;theme=a_taste_of_tedx;event=TEDxMidwest;tag=Business;tag=Culture;tag=Design;tag=Technology;tag=creativity;tag=work;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><param name="src" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="pluginspace" value="http://www.macromedia.com/go/getflashplayer" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><embed width="526" height="374" type="application/x-shockwave-flash" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" allowFullScreen="true" allowScriptAccess="always" wmode="transparent" bgColor="#ffffff" flashvars="vu=http://video.ted.com/talk/stream/2010X/Blank/JasonFried_2010X-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JasonFried-2010X.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=1014&amp;lang=eng&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=jason_fried_why_work_doesn_t_happen_at_work;year=2010;theme=not_business_as_usual;theme=a_taste_of_tedx;event=TEDxMidwest;tag=Business;tag=Culture;tag=Design;tag=Technology;tag=creativity;tag=work;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" pluginspace="http://www.macromedia.com/go/getflashplayer" allowfullscreen="true" allowscriptaccess="always" /> </object></p>
<div class="clear"></div>
<p style="text-align: left;">Quiero agradecer especialmente a @genezeta que me ha regalado el libro, y próximamente lo dejaré libre para que cualquier otra persona lo lea y aproveche.</p>
<p>Gracias también por la imagen a <a href="http://www.flickr.com/photos/rpenalozan/6135063705/">Rafael Peñaloza</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonicbyte.com/aprende-a-trabajar-da-capo/feed/?cat=-123,-124</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Bones</title>
		<link>http://www.sonicbyte.com/bones/</link>
		<comments>http://www.sonicbyte.com/bones/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 06:00:03 +0000</pubDate>
		<dc:creator>Rodrigo Manuel Noales</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[bones]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[Gratis]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.sonicbyte.com/?p=2502</guid>
		<description><![CDATA[Al iniciar un pequeño proyecto de ecommerce pensaba utilizar un theme en blanco como Starkers, pero en ese momento me topé con algo distinto: Bones creado por Themble y quería compartir con ustedes mis impresiones hasta el momento sobre esta plantilla de trabajo. <a href="http://www.sonicbyte.com/bones/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Estoy terminando un sitio de <strong>e-commerce</strong> para una tienda pequeña y decidí implementarlo en <strong>WordPress</strong>. Al iniciar el proyecto pensaba utilizar un <strong>theme en blanco</strong> como <a href="http://starkerstheme.com/"><strong>Starkers</strong></a>, pero en ese momento me topé con algo distinto: <a href="http://themble.com/bones/"><strong>Bones</strong></a> creado por Themble y quería compartir con ustedes mis impresiones hasta el momento sobre esta plantilla de trabajo.</p>
<p>Lo primero que llamó mi atención fue que lo recomendaba <a href="http://twitter.com/#!/paul_irish/status/21965091687628801">Paul Irish</a>, uno de los creadores de la plantilla <a href="http://html5boilerplate.com/">html5Boilerplate</a>. Entonces me puse a investigar de qué se trataba.</p>
<blockquote><p>Wow. Bones is super hot! Seriously&#8230; (Paul Irish)</p></blockquote>
<p>A diferencia de Starkers, theme &#8220;desnudo&#8221; de todo estilo y formato, muy útil para aprender y no heredar estilos &#8220;de fabrica&#8221; de WordPress, pero que personalmente me resultaba algo lento para mi trabajo,  creí que <strong>Bones</strong> era similar, pero al interiorizarme descubrí que <strong>aporta otro enfoque</strong>.</p>
<p><strong>Bones</strong>, nos brinda una <strong>plantilla sólida</strong> <strong>y optimizada</strong>, lista para trabajar, puesto que todo elemento se encuentra documentado e incluido en el css, lo que agiliza mucho el trabajo.</p>
<p><strong>Bones</strong> fue creado en base a lo último en estandares <strong>HTML5</strong>,  y por supuesto es compatible con todo navegador moderno y testeado hasta en navegadores viejos como IE6 <strong>sin problemas</strong>. Es compatible con WordPress 3+ e incluye un <strong>theme default</strong> muy básico pero funcional para no tener que hacer todo literalmente desde la nada.</p>
<p><strong>Así se ve el theme default cuando lo activamos por primera vez:</strong></p>
<p><a href="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2011/09/bones_basico.png"><img class="alignnone size-large wp-image-2506" title="bones_basico" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2011/09/bones_basico-1024x503.png" alt="" width="640" height="314" /></a></p>
<h3>Estructura CSS</h3>
<p>Cuenta con 2 hojas de estilo, primero llama a un hoja por defecto que incluye un <strong>reset.css</strong> y <strong>estilo básico (default.css)</strong> para todos los componentes del theme (por lo que es fácil restaurar valores si cometemos algún error) y luego llama a la segunda hoja de estilos: <strong>styles.css</strong> que es donde trabajaremos.</p>
<p>El reset esta basado en la plantilla html5Boilerplate y cuenta con algunos agregados propios de clases comunmente usadas:</p>
<div class="codecolorer-container css railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">/* floats */</span><br />
.<span style="color: #000000; font-weight: bold;">left</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
.<span style="color: #000000; font-weight: bold;">right</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
<br />
<span style="color: #808080; font-style: italic;">/* alinear texto */</span><br />
.text-<span style="color: #000000; font-weight: bold;">left</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
.text-<span style="color: #993333;">center</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">center</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
.text-<span style="color: #000000; font-weight: bold;">right</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">text-align</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">right</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
<br />
<span style="color: #808080; font-style: italic;">/* alertas &amp;amp; mensajes */</span><br />
.<span style="color: #993333;">help</span><span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.info</span><span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.error</span><span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.success</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">margin</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">10px</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span> <span style="color: #993333;">solid</span> <span style="color: #cc00cc;">#cecece</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
.<span style="color: #993333;">help</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">border-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#E0C618</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#EBE16F</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
<span style="color: #6666ff;">.info</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">border-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#92cae4</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#d5edf8</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
<span style="color: #6666ff;">.error</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">border-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#fbc2c4</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#fbe3e4</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
<span style="color: #6666ff;">.success</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">border-color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#c6d880</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#e6efc2</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<h3>Cabeceras y Titulos</h3>
<p>Algo que me pareció bastante inteligente, muchas veces queremos que por ejemplo un <strong>h3</strong> se vea como un <strong>h1</strong> por cuestiones de diseño, pero por supuesto, no se debe agregar dos h1 en una misma página, por lo que terminamos agregando lineas extras de codigo, complicando la estructura. Esto con <strong>Bones</strong> se resuelve de la siguiente forma:</p>
<div class="codecolorer-container css railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">h1<span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.h1</span> <span style="color: #00AA00;">&#123;</span> ... <span style="color: #00AA00;">&#125;</span><br />
h2<span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.h2</span> <span style="color: #00AA00;">&#123;</span> ... <span style="color: #00AA00;">&#125;</span><br />
h3<span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.h3</span> <span style="color: #00AA00;">&#123;</span> ... <span style="color: #00AA00;">&#125;</span><br />
h4<span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.h4</span> <span style="color: #00AA00;">&#123;</span> ... <span style="color: #00AA00;">&#125;</span><br />
h5<span style="color: #00AA00;">,</span> <span style="color: #6666ff;">.h5</span> <span style="color: #00AA00;">&#123;</span> ... <span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>Entonces si queremos que un <strong>h3</strong> se vea como un <strong>h1</strong> agregamos el <strong>class .h1</strong></p>
<p><code class="codecolorer html4strict railscasts"><span class="html4strict"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;h3&quot;</span>&gt;</span>Esto es un H3 que se ve como un H1<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span></span></code></p>
<p>Muy bonito, pero basta de pequeñeces&#8230; <strong>Vayamos a lo gordo</strong></p>
<h3>Grid Css</h3>
<p><strong>Bones</strong> cuenta con un <strong>grid</strong> incorporado al css muy flexible, <strong>permite layouts fluídos o fijos</strong> y podemos seleccionar libremente el ancho maximo y minimo del layout.<br />
Su uso es muy simple, para agregar un ancho de <strong>480pixels</strong> a un div, agregamos algo como:</p>
<p><code class="codecolorer html4strict railscasts"><span class="html4strict"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;main&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;col480&quot;</span>&gt;</span>...<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></span></code></p>
<p><strong>Cada elemento de wordpress esta incluido en el css de forma meticulosa</strong> <strong>y clara</strong>, es super simple dar estilo a los elementos, incluso para páginas o posts especificos, gracias a selectores avanzados de css.</p>
<h3>Media Queries y Especificidad</h3>
<p>Incluye las reglas de Media Queries y móviles recomendadas por <strong>Andy Clarke</strong> (de quien escribí <a href="http://www.sonicbyte.com/hardboiled-web-design-un-cambio-de-rumbo-en-el-diseno-web/">un post</a> recientemente sobre uno de sus libros) para adaptar el diseño de manera <a href="http://diseñowebresponsivo.com.ar/">&#8220;responsiva&#8221;</a> a diferentes resoluciones y dispositivos (el uso es optativo por supuesto)</p>
<p>Además encontramos la técnica incluída ya en html5Boilerplate, sobre el manejo de clases para dar estilo a versiones especificas de <strong>Internet explorer</strong> <strong>sin agregar hojas de estilo extras</strong>.</p>
<p>Por ejemplo para dar estilo al contenedor de los post (.post_content) podemos llamar a las siguientes clases:</p>
<div class="codecolorer-container css railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">html<span style="color: #6666ff;">.ie6</span> <span style="color: #6666ff;">.post_content</span> <span style="color: #00AA00;">&#123;</span> ... <span style="color: #00AA00;">&#125;</span><br />
<br />
html<span style="color: #6666ff;">.ie7</span> <span style="color: #6666ff;">.post_content</span> <span style="color: #00AA00;">&#123;</span> ... <span style="color: #00AA00;">&#125;</span><br />
<br />
html<span style="color: #6666ff;">.ie8</span> <span style="color: #6666ff;">.post_content</span> <span style="color: #00AA00;">&#123;</span> ... <span style="color: #00AA00;">&#125;</span><br />
<br />
html<span style="color: #6666ff;">.ie9</span> <span style="color: #6666ff;">.post_content</span> <span style="color: #00AA00;">&#123;</span> ... <span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<h3>Extras</h3>
<p>Por último incluye una<strong> hoja de estilo para impresión</strong> y algunos plugins para agregar video html5 que aún estan en fase de prueba y la verdad no tuve la oportunidad de probar.</p>
<h3>Bones en números</h3>
<p>Algunas estadisticas provistas por la pagina de Themble</p>
<p><img class="alignnone size-large wp-image-2513" title="Bones stats" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2011/09/Bones-stats-1024x696.png" alt="" width="640" height="435" /></p>
<p>Hasta ahora la experiencia ha sido muy grata, realmente me ha ahorrado mucho tiempo de desarrollo y les recomiendo que lo prueben.</p>
<p><strong>¿Ya has usado Bones?, deja un comentario, me gustaría conocer tu experiencia !</strong></p>
<p><a href="http://themble.com/bones/">Link al sitio de Bones</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonicbyte.com/bones/feed/?cat=-123,-124</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A list worth spreading: lista de todos los usuarios, ponentes TED</title>
		<link>http://www.sonicbyte.com/a-list-worth-spreading-lista-de-todos-los-usuarios-ponentes-ted/</link>
		<comments>http://www.sonicbyte.com/a-list-worth-spreading-lista-de-todos-los-usuarios-ponentes-ted/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 11:41:48 +0000</pubDate>
		<dc:creator>Pablo Jimeno Perez</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[interesting]]></category>
		<category><![CDATA[lists]]></category>
		<category><![CDATA[TED]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.sonicbyte.com/?p=2410</guid>
		<description><![CDATA[Also availablein English Echa un vistazo a esta lista de twitter de todos los ponentes de TED cuyo usuario de twitter ha sido publicado en la web de TED.com y alguno más. Las listas de Twitter son una gran manera de mantener &#8230; <a href="http://www.sonicbyte.com/a-list-worth-spreading-lista-de-todos-los-usuarios-ponentes-ted/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h4>Also available<a title="A list worth spreading: every TED speaker twitter list" href="http://www.sonicbyte.com/en/a-list-worth-spreading-lista-de-todos-los-usuarios-ponentes-ted/">in English</a></h4>
<p>Echa un vistazo a esta lista de twitter de todos los ponentes de TED cuyo usuario de twitter ha sido publicado en la web de <a title="TED" href="http://ted.com" target="_blank">TED.com</a> y alguno más.</p>
<p>Las listas de Twitter son una gran manera de mantener la información separada por tema, eventos u otros. De modo que puedes ver en un momento determinado, como pausas de Pomodoro en la búsqueda de determinado tipo de datos.</p>
<p>Si eres fan de las charlas TED esta lista es un recurso muy interesante. Espero que te guste:</p>
<p><a title="Every TED speaker twitter list" href="https://twitter.com/#!/pablojimeno/ted-speakers" target="_blank">https://twitter.com/#!/pablojimeno/ted-speakers</a></p>
<p>Por cierto estoy colaborando con la organización del evento local TED TEDxZaragoza &#8220;El futuro de la felicidad&#8221;, mantente informado:</p>
<ul>
<li><a title="TEDxZaragoza the future of hapiness" href="http://www.tedxzaragoza.com/" target="_blank">TEDxZaragoza</a> sitio</li>
<li><a title="TEDxZaragoza on Twitter" href="http://twitter.com/tedxzaragoza" target="_blank">TEDxZaragoza</a> en Twitter</li>
<li><a title="TEDxZaragoza on Facebook" href="http://www.facebook.com/tedxzaragoza" target="_blank">TEDxZaragoza</a> en Facebook</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sonicbyte.com/a-list-worth-spreading-lista-de-todos-los-usuarios-ponentes-ted/feed/?cat=-123,-124</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Diseño web para telefonos moviles con HTML5, CSS3 y Javascript</title>
		<link>http://www.sonicbyte.com/diseno-web-para-telefonos-moviles/</link>
		<comments>http://www.sonicbyte.com/diseno-web-para-telefonos-moviles/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 06:00:14 +0000</pubDate>
		<dc:creator>Rodrigo Manuel Noales</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Moviles]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[localStorage]]></category>
		<category><![CDATA[media queries]]></category>
		<category><![CDATA[móvil]]></category>

		<guid isPermaLink="false">http://www.sonicbyte.com/?p=2315</guid>
		<description><![CDATA[Ser o no ser...¿Versión nativa o HTML5 para nuestro nuevo sitio o aplicación web móvil? <a href="http://www.sonicbyte.com/diseno-web-para-telefonos-moviles/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Ser o no ser</strong>&#8230;¿<em>Versión nativa</em> o <em>HTML5</em> para nuestro nuevo sitio o aplicación web móvil?</p>
<p>Perdón, chiste trillado&#8230;.Pero es una<strong> pregunta importante</strong> que debemos hacernos antes de encarar un proyecto de estas características. Elegir uno u otro camino tiene sus pro y contras, y si bien no voy a profundizar respecto a crear aplicaciones nativas, haré una introducción al tema.</p>
<p><em><strong>Aplicación nativa</strong></em> es aquella que especificamente es diseñada para funcionar en el sistema operativo de ese dispositivo.</p>
<p><strong>Esto tiene sus ventajas:</strong></p>
<ul>
<li>Acceso al hardware del dispositivo</li>
<li>Capacidad para funcionar sin conexión web (aunque gracias al Html5 ahora es posible lograr una funcionalidad similar, lo explico luego.)</li>
<li>Performance y velocidad</li>
<li>Posibilidad de monetizar la aplicación (Por ejemplo vender tu app desde el appStore)</li>
</ul>
<p>Estas ventajas por supuesto son importantes, pero requieren de un desarrollo específico por cada plataforma (<em>Android, Iphone, Symbian, Blackberry, etc</em>), a veces inclusive más de una versión, y una inversión de recursos de hardware, y mayor tiempo y conocimientos de desarrollo.</p>
<p>Por otra parte, <strong>si optamos por HTML5, CSS3 y Javascript como opción de desarrollo tenemos un camino diferente</strong>.</p>
<p>Podemos utilizar reglas de <strong>CSS3</strong> y aprovechar características<strong> HTML5 + Javascript</strong> para controlar el comportamiento de nuestro sitio o aplicación de teléfono móvil y ofrecer una grata experiencia al usuario sin preocuparnos por tantas variables.</p>
<p>Con <strong><a href="http://www.w3.org/TR/css3-mediaqueries/">Media Queries</a></strong> podemos evaluar unos pocos parámetros universales que cualquier dispositivo actual tiene (<em>hay más, pero sólo éstos nos interesan en este caso</em>):</p>
<ul>
<li>Ancho y alto del navegador</li>
<li>Ancho y alto del dispositivo</li>
<li>Orientación del dispositivo (Ejemplo, evaluar si un iPad se encuentra en modo landscape or portrai)</li>
<li>Resolución del dispositivo</li>
</ul>
<p><strong>Ejemplo:</strong></p>
<pre class="brush: css; title: ; notranslate">@media all screen and (max-device-width: 600px) {#container { width: 550px;}}</pre>
<p>Con esta simple regla estamos diciendo que si el dispositivo que carga nuestra página tiene un <strong>ancho máximo de 600px</strong> entonces le aplique al <em>div &#8220;container&#8221;</em> un<strong> ancho de 550px</strong>.</p>
<p>De esta forma podemos controlar cómo se visualizará nuestro sitio web o aplicación en diferentes resoluciones, <strong>no sólo de teléfonos moviles</strong> sino también<strong> ordenadores de sobremesa, notebooks y netbooks </strong>con mínimo esfuerzo.</p>
<p><strong>Aquí pueden ver un ejemplo práctico de una aplicacion web que recientemente desarrollamos para un cliente</strong>, llamada <strong>Tivifan</strong> en la que utilizamos esta técnica, y notarán en las capturas como el diseño se adapta a los diferentes dispositivos:</p>
<p><strong>Monitor de sobremesa:</strong></p>
<p>Esta es la vista del sitio &#8220;normal&#8221; en un monitor con resolución alta. <img class="alignnone size-full wp-image-2374" title="monitor_tivifan" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2011/08/monitor_tivifan-e1312485745707.jpg" alt="" width="592" height="526" /></p>
<p class="alignleft"><strong>Ipad en modo portrait</strong>: el sitio se muestra correctamente, pero en una sola columna, dando mayor espacio y comodidad al contenido principal.</p>
<p><img class="size-large wp-image-2345" title="ipadport_tivifan" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2011/08/ipadport_tivifan-845x1024.jpg" alt="" width="384" height="465" /></p>
<p class="alignleft"><strong>Ipad en modo landscape: </strong>Al tener mayor espacio, mostramos el sitio a dos columnas.<strong> </strong></p>
<p><img class="size-full wp-image-2346 alignnone" title="ipadland_tivifan" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2011/08/ipadland_tivifan-e1312474348755.jpg" alt="" width="512" height="382" /></p>
<p class="alignleft"><strong>Móvil con Android: </strong>A menores resoluciones, como la de éste dispositivo, toda la estructura del sitio es modificada. Navegación, logo y formulario mas pequeño y simplificado, fuentes reducidas, contenido a una columna, etc. Aunque menos atractivo que las otras opciones el sito es plenamente usable y su contenido más importante sigue siendo accesible.<strong> </strong></p>
<p><img class="size-full wp-image-2347" title="Nexus_One_tivifan" src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2011/08/Nexus_One_tivifan.jpg" alt="" width="182" height="336" /> <strong></strong></p>
<p><strong>Puedes probarlo tu mismo <a href="http://www.tivifan.com">desde aquí</a>, simplemente cambiando el tamaño de tu navegador manualmente.</strong></p>
<p><strong> Otras métodos interesantes:</strong> Antes comentaba que una ventaja de <em>aplicación nativa</em> era la capacidad de trabajar off-line, esto con<strong> HTML5</strong> es también posible, gracias a la capacidad de guardar datos de forma local. Una de las opciones es utilizar <strong>localStorage</strong>. Permite definir algunos campos en lo que se puede describir como una simple base de datos en el navegador y recuperar un valor, incluso cuando el usuario ha cerrado su navegador y lo vuelve a abrir más tarde.</p>
<p><strong>Haz la prueba y juega con este ejemplo online creado con HTML5 y Javascript desde el siguiente link:</strong></p>
<p><a href="http://jsbin.com/alagur/3/edit">http://jsbin.com/alagur/3/edit</a></p>
<p>Este por supuesto fue<strong> apenas un vistazo del potencial de HTML5, javascript y CSS3 </strong> para el desarrollo de aplicaciones y sitios web para teléfonos moviles. Muy pronto, más&#8230;</p>
<p>Más información de localStorage y Media Queries:</p>
<p><a title="mediaqueries" href="http://www.w3.org/TR/css3-mediaqueries/">Media Queries</a></p>
<p><a title="localStorage" href="http://www.quirksmode.org/blog/archives/2009/06/html5_storage_t.html">LocalStorage en Quirksmode</a> <strong></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonicbyte.com/diseno-web-para-telefonos-moviles/feed/?cat=-123,-124</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Retrospectivas: de un buen equipo agile a uno mejor!</title>
		<link>http://www.sonicbyte.com/retrospectivas-de-un-buen-equipo-agile-a-uno-mejor/</link>
		<comments>http://www.sonicbyte.com/retrospectivas-de-un-buen-equipo-agile-a-uno-mejor/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 08:22:59 +0000</pubDate>
		<dc:creator>Pablo Jimeno Perez</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[agilismo]]></category>
		<category><![CDATA[desarrollo ágil]]></category>
		<category><![CDATA[equipo]]></category>
		<category><![CDATA[iteración]]></category>
		<category><![CDATA[retrospectivas]]></category>

		<guid isPermaLink="false">http://www.sonicbyte.com/en/?p=2023</guid>
		<description><![CDATA[Algunas buenos consejos para hacer retrospectivas, mejorar tu proceso y no hacer perder el tiempo al equipo. <a href="http://www.sonicbyte.com/retrospectivas-de-un-buen-equipo-agile-a-uno-mejor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h4>Also available <a title="Retrospectives: making a good agile team great!" href="http://www.sonicbyte.com/en/retrospectivas-de-un-buen-equipo-agile-a-uno-mejor/">in English</a></h4>
<p>Primero que nada &#8220;no leí el libro del que habla el vídeo, pero lo haré pronto porque me han convencido&#8221;.</p>
<p>Una de las cosas que siempre intento mejorar en mi equipo son las retrospectivas. Si no sabes lo que son, probablemente este post no es para ti, en cualquier caso:</p>
<blockquote><p>La retrospectiva es una reunión especial en la cual el equipo se junta después de haber completado una iteración o porción incremental de trabajo y adapta sus métodos y trabajo de equipo.</p></blockquote>
<p>En equipos que desarrollan mediante <strong>métodos iterativos incrementales</strong>, las retrospectivas al final de cada iteración estimulan la <strong>mejora continua</strong> a lo largo del proyecto.</p>
<p><img class="aligncenter size-full wp-image-2257" title="Retrospective steps as part of an iterative life cycle " src="http://www.sonicbyte.com/2011sonic/wp-content/uploads/2011/08/Agile-iterative-life-cycle-e1312183061451.png" alt="" width="550" height="262" /></p>
<p><img class="alignright" src="http://ws.assoc-amazon.co.uk/widgets/q?_encoding=UTF8&amp;Format=_SL160_&amp;ASIN=0977616649&amp;MarketPlace=GB&amp;ID=AsinImage&amp;WS=1&amp;tag=sonicbyte-21&amp;ServiceVersion=20070822" alt="" border="0" /></p>
<p style="text-align: left;">Hace un tiempo encontré esta presentación a cargo de <a title="Esther Derby" href="http://www.estherderby.com/" target="_blank">Esther Derby</a> (@estherderby) y <a title="Diana Larsen" href="http://futureworksconsulting.com/who-we-are/diana-larsen" target="_blank">Diana Larsen</a> (@dianaofportland) una excelente explicación de su enfoque de 5 pasos para realizar retrospectivas, basada en su libro <em>&#8220;Agile Retrospectives: Making Good Teams Great&#8221;</em>. Resumiré básicamente los puntos más importantes de la charla, pero puedes saltarte esta parte y ver tú mismo el vídeo.<img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=&amp;l=as2&amp;o=2&amp;a=0977616649" alt="" width="1" height="1" border="0" /></p>
<p>Este es un proceso continuo y enlazado que simplemente fluye al final de cada iteración, hacia la retrospectiva. El framework que proponen consiste en completar <strong>siempre</strong> la siguiente secuencia de 5 etapas o porciones de trabajo:</p>
<ol>
<li>Establecer el escenario.</li>
<li>Reunir datos o información.</li>
<li>Generar ideas.</li>
<li>Decidir qué cosas hacer.</li>
<li>Cerrar la retrospectiva.</li>
</ol>
<h3>1. Establecer el escenario.</h3>
<p>Establecer el marco para el trabajo que se va a realizar durante la retrospectiva. Por ejemplo: establecer el objetivo de esta retrospectiva, presentación de los asistentes, acuerdos o compromisos de trabajo, marcar el enfoque que tendrá la sesión, etc.</p>
<h3>2. Reunir datos o información.</h3>
<blockquote><p>Estamos educados para analizar y procesar datos como individuos en un ambiente en el cual compartir ideas a veces equivale a copiar (hacer trampas).</p></blockquote>
<p>Una de las razones por las que los equipos suelen discutir en procesos como la retrospectiva o la planificación, es porque no están acostumbrados a pensar juntos. Es por eso que recopilar datos es una de las primeras cosas que deben hacerse en este proceso de comenzar a pensar en equipo. Recopilamos datos no sólo sobre hechos sino también sobre sentimientos (aunque no debe usarse esta palabra sino Energía o algo menos emocional que no inhiba a nadie) para analizar cómo se sintió el equipo durante la iteración.</p>
<h3>3. Generar ideas.</h3>
<p>Una vez que tenemos los datos es hora de preguntar &#8220;¿Cómo llegamos a este punto? ¿Cuáles son las causas y patrones? ¿Qué nos dicen estos datos sobre el modo en que trabajamos?&#8221;</p>
<p>Un método para hacer esto lo denominan &#8220;la matriz de aprendizaje&#8221;, consiste en dividir un folio en cuatro cuadrantes y escribir:</p>
<ul>
<li>:) qué fue bien</li>
<li>:( qué no fue tan bien</li>
<li>*-:) (bombilla) ideas o cosas para hacer de otra manera</li>
<li>⚘ (flores) reconocimientos</li>
</ul>
<h3>4. Decidir qué cosas hacer.</h3>
<p>Buscar acciones concretas que tomar en la siguiente iteración, no deben ser demasiadas iniciativas, uno o dos experimentos y asegurarse de analizarlos en la siguiente retrospectiva.</p>
<h3>5. Cerrar la retrospectiva.</h3>
<p>Finalizar la retrospectiva de manera contundente: no permitir que haya cosas que se cuelen hacia otras reuniones. Hacer una retrospectiva de la retrospectiva y cerrar la sesión.</p>
<p>Estas son algunas ideas que quería puntualizar del vídeo, por supuesto están mucho mejor expuestas y con mayor detalle en él, te recomiendo que lo mires, está en inglés y sin subtítulos.</p>
<p><iframe src="http://www.youtube.com/embed/P3E27DBgLTU?rel=0" frameborder="0" width="640" height="510"></iframe></p>
<h3>Referencias:</h3>
<p><a href="http://www.amazon.co.uk/gp/product/0977616649/ref=as_li_ss_tl?ie=UTF8&amp;tag=sonicbyte-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0977616649">Agile Retrospectives: Making Good Teams Great (Pragmatic Programmers)</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.co.uk/e/ir?t=&amp;l=as2&amp;o=2&amp;a=0977616649" alt="" width="1" height="1" border="0" /></p>
<p>La imagen es propieda de <a title="LIFE" href="http://www.life.com/" target="_blank">LIFE</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonicbyte.com/retrospectivas-de-un-buen-equipo-agile-a-uno-mejor/feed/?cat=-123,-124</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>


<!-- Served from: www.sonicbyte.com @ 2012-02-06 14:16:58 by W3 Total Cache -->
