<?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>Colores Efímeros</title>
	<atom:link href="http://coloresefimeros.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://coloresefimeros.com</link>
	<description>Porque todo cambia...</description>
	<lastBuildDate>Tue, 28 Jun 2011 10:41:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Recetas Git: Deshacer el último commit</title>
		<link>http://coloresefimeros.com/2011/06/28/recetas-git-deshacer-el-ultimo-commit/</link>
		<comments>http://coloresefimeros.com/2011/06/28/recetas-git-deshacer-el-ultimo-commit/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 10:41:51 +0000</pubDate>
		<dc:creator>Juan G. Hurtado</dc:creator>
				<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://coloresefimeros.com/?p=137</guid>
		<description><![CDATA[Cuando necesitemos deshacer el último commit que hayamos realizado (y que no haya sido pusheado al servidor) debemos hacer uso del commando reset para dejar las cosas tal y como estaban justo antes de hacer el git commit. Para ello no tenemos más que hacer: git reset --soft HEAD^ Después de este comando tendremos nuestro [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando necesitemos deshacer el último commit que hayamos realizado (y que no haya sido pusheado al servidor) debemos hacer uso del commando <code>reset</code> para dejar las cosas tal y como estaban justo antes de hacer el <code>git commit</code>. Para ello no tenemos más que hacer:</p>
<pre><code>git reset --soft HEAD^</code></pre>
<p>Después de este comando tendremos nuestro <em>working directory</em> exactamente como lo teníamos justo antes de realizar el <code>commit</code>, con todos los ficheros añadidos que formaban parte del commit, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://coloresefimeros.com/2011/06/28/recetas-git-deshacer-el-ultimo-commit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recetas Git: Log de commits locales</title>
		<link>http://coloresefimeros.com/2011/05/16/recetas-git-log-de-commits-locales/</link>
		<comments>http://coloresefimeros.com/2011/05/16/recetas-git-log-de-commits-locales/#comments</comments>
		<pubDate>Mon, 16 May 2011 20:22:14 +0000</pubDate>
		<dc:creator>Juan G. Hurtado</dc:creator>
				<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://coloresefimeros.com/?p=132</guid>
		<description><![CDATA[A veces, cuando necesitamos ver el log de commits que de nuestro repositorio, nos interesa conocer qué commits son locales, es decir, cuales de ellos no están en el servidor remoto. ¿Por qué necesitamos saberlo? Porque son esos commits locales los que podemos modificar sin temor alguno, ya que no han sido subidos al servidor [...]]]></description>
			<content:encoded><![CDATA[<p>A veces, cuando necesitamos ver el <em>log</em> de <em>commits</em> que de nuestro repositorio, nos interesa conocer qué <em>commits</em> son locales, es decir, cuales de ellos no están en el servidor remoto. ¿Por qué necesitamos saberlo? Porque son esos <em>commits</em> locales los que podemos modificar sin temor alguno, ya que no han sido subidos al servidor remoto y no hay peligro de que provoquemos conflictos con otra persona que se los haya podido bajar a su máquina local.</p>
<p>Para conseguir un <em>log</em> con los <em>commits</em> locales no tenemos más que especificárselo a nuestro comando <code>git log</code>:</p>
<pre><code>git log master --not --remotes=*/master</code></pre>
<p>Con eso conseguimos ver los <em>commits</em> de la rama local <code>master</code> que no están en ninguna de las ramas <code>master</code> de los <em>remotes</em> configurados en el repositorio.</p>
<p><strong>Actualización 17/05/2011 &#8211; 14:46: </strong></p>
<p>También puede conseguirse con:</p>
<pre><code>git log origin/master..master</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://coloresefimeros.com/2011/05/16/recetas-git-log-de-commits-locales/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recetas Git: Mi log de commits</title>
		<link>http://coloresefimeros.com/2011/05/09/recetas-git-mi-log-de-commits/</link>
		<comments>http://coloresefimeros.com/2011/05/09/recetas-git-mi-log-de-commits/#comments</comments>
		<pubDate>Mon, 09 May 2011 08:33:43 +0000</pubDate>
		<dc:creator>Juan G. Hurtado</dc:creator>
				<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://coloresefimeros.com/?p=128</guid>
		<description><![CDATA[Una de las cosas buenas que tiene Git es su capacidad de ser configurado al gusto del usuario. Como ejemplo os dejo el alias que he creado en mi sistema para mostrar el log de commits de una manera personalizada. Para añadirlo debemos editar nuestro fichero .gitconfig global, situado en el directorio raiz de nuestro [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas buenas que tiene <a href="http://git-scm.com">Git</a> es su capacidad de ser configurado al gusto del usuario. Como ejemplo os dejo el alias que he creado en mi sistema para mostrar el <em>log</em> de <em>commits</em> de una manera personalizada.</p>
<p>Para añadirlo debemos editar nuestro fichero <code>.gitconfig</code> global, situado en el directorio raiz de nuestro usuario. Dentro de ese fichero tendremos una sección <code>[alias]</code> (si no existe no hay más que crearla) y le añadimos nuestro alias personalizado, en este caso <code>lg</code>:</p>
<pre><code>[alias]
    lg = log --pretty=format:'%C(white)[%C(yellow)%h%C(white)] %C(blue)(%ad) %C(white)%s %C(green)%cn' --date=local</code></pre>
<p>Gracias a esto, cuando hagamos git lg veremos un log personalizado:</p>
<pre><code>jghurtado@macbook:~/Sites/sample-project
> git lg
[9ac7d19] (Mon May 9 09:44:54 2011) Adds a sample product page Juan G. Hurtado
[c8be333] (Fri May 6 12:38:38 2011) Adds sample listing products page Juan G. Hurtado
[2c49ce1] (Thu May 5 12:02:51 2011) Adds breadcrumbs styles Juan G. Hurtado
[697d682] (Thu May 5 11:55:34 2011) Adds styles for horizontal separators on boxes Juan G. Hurtado</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://coloresefimeros.com/2011/05/09/recetas-git-mi-log-de-commits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recetas Git: Modificar un commit antiguo</title>
		<link>http://coloresefimeros.com/2011/05/06/recetas-git-modificar-un-commit-antiguo/</link>
		<comments>http://coloresefimeros.com/2011/05/06/recetas-git-modificar-un-commit-antiguo/#comments</comments>
		<pubDate>Fri, 06 May 2011 08:29:03 +0000</pubDate>
		<dc:creator>Juan G. Hurtado</dc:creator>
				<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://coloresefimeros.com/?p=123</guid>
		<description><![CDATA[Cuando estamos trabajando en un proyecto versionado con Git a veces nos encontramos con que necesitamos modificar un commit que hicimos hace algún tiempo, pero que aún no hemos enviado al servidor (esto es importante, ya que no debemos modificar commits a los que ya hemos hecho push). ¿Cómo podemos hacerlo? Con un rebase interactivo. [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando estamos trabajando en un proyecto versionado con <a href="http://git-scm.com/">Git</a> a veces nos encontramos con que necesitamos modificar un <em>commit</em> que hicimos hace algún tiempo, pero que <strong>aún no hemos enviado al servidor</strong> (esto es importante, ya que no debemos modificar <em>commits</em> a los que ya hemos hecho <code>push</code>). ¿Cómo podemos hacerlo? Con un <em>rebase</em> interactivo.</p>
<p>Para empezar debemos averiguar el <em>hash</em> del <em>commit</em> anterior al que queremos modificar, para ello no hay más que hacer un <code>git log</code> y copiar el <em>hash</em> que nos interese:</p>
<pre><code>&gt; git log
[9ff028c] (Thu May 5 12:02:51 2011) Adds breadcrumbs styles -  Juan G. Hurtado
[61b5536] (Thu May 5 11:55:34 2011) Adds styles for horizontal separators on boxes - Juan G. Hurtado
[ac44e68] (Thu May 5 09:47:08 2011) Adds server messages styles - Juan G. Hurtado
[ff9c592] (Thu May 5 09:37:26 2011) Adds boxes to sample page - Juan G. Hurtado</code></pre>
<p>Por ejemplo, si queremos modificar el <em>commit</em> <samp>&#8220;Adds styles for horizontal separators on boxes&#8221;</samp>, cuyo <em>hash</em> es <samp>&#8220;61b5536&#8243;</samp>, debemos quedarnos con el <em>hash</em> del <em>commit</em> anterior, que es el <samp>&#8220;ac44e68&#8243;</samp>. Una vez que lo tenemos ya podemos comenzar el rebase interactivo:</p>
<pre><code>&gt; git rebase -i ac44e68</code></pre>
<p>Este comando nos abrirá el editor para Git que tengamos definido en el sistema con un texto parecido a este:</p>
<pre><code>pick 61b5536 Adds styles for horizontal separators on boxes
pick 9ff028c Adds breadcrumbs styles

# Rebase ac44e68..9ff028c onto ac44e68
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#</code></pre>
<p>La primera parte del texto es un listado de los <em>commits</em> que van a formar parte del <em>rebase</em>, y lo que quieres hacer con ellos. Por defecto todos los <em>commits</em> tienen <code>pick</code>, que significa que no se hará nada con ellos, se quedarán igual. La segunda parte del texto es una ayuda que indica lo que puedes hacer con los <em>commits</em>: <code>pick</code>, <code>reword</code>, <code>edit</code>, <code>squash</code>, <code>fixup</code> y <code>exec</code>. En nuestro caso necesitamos editar un <em>commit</em>, así que usaremos <code>edit</code>. Editamos el texto, modificando la linea de nuestro <em>commit</em> para que quede tal que:</p>
<pre><code>edit 61b5536 Adds styles for horizontal separators on boxes</code></pre>
<p>Cuando salvemos y cerremos el editor con el texto modificado comenzará el rebase con las opciones que le hayamos indicado, en este caso editar un <em>commit</em>. Cuando editamos un <em>commit</em> lo que hace Git es movernos en el tiempo y llevarnos al proyecto en el estado que estaba justo después de hacer el <em>commit</em> que queremos editar. Estando en este momento temporal podemos hacer los cambios que necesitemos y añadirlos a nuestro <em>commit</em> como se hace normalmente:</p>
<pre><code>&gt; git add .
&gt; git commit --amend</code></pre>
<p>Cuando ya tenemos modificado el <em>commit</em> a nuestro gusto, continuamos con el <em>rebase</em>:</p>
<pre><code>&gt; git rebase --continue</code></pre>
<p>Y ya ha quedado modificado el <em>commit</em> sin haber alterado su orden, sin haber hecho un <em>commit</em> nuevo, etc. No obstante es importante recordar que esto <strong>sólo podemos hacer con <em>commits</em> que aún no se hayan enviado al servidor</strong> (a los que no se haya hecho <em>push</em>).</p>
]]></content:encoded>
			<wfw:commentRss>http://coloresefimeros.com/2011/05/06/recetas-git-modificar-un-commit-antiguo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git y los sub-módulos</title>
		<link>http://coloresefimeros.com/2011/03/25/git-y-los-sub-modulos/</link>
		<comments>http://coloresefimeros.com/2011/03/25/git-y-los-sub-modulos/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 22:07:06 +0000</pubDate>
		<dc:creator>Juan G. Hurtado</dc:creator>
				<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://coloresefimeros.com/?p=117</guid>
		<description><![CDATA[A pesar de que en la oficina usamos SVN, llevo un tiempo usando Git para el control de versiones de mis chorradillas (gracias a la bendita ayuda de Antonio) y debo decir que estoy más que contento. Es todo un gustazo utilizarlo, incluso sin interfaz gráfica, directamente desde la línea de comandos (con ZSH + [...]]]></description>
			<content:encoded><![CDATA[<p>A pesar de que en <a href="http://www.viavansi.com/">la oficina</a> usamos <a href="http://subversion.tigris.org/">SVN</a>, llevo un tiempo usando <a href="http://git-scm.com/">Git</a> para el control de versiones de mis chorradillas (gracias a la bendita ayuda de <a href="http://www.santosvelasco.com/">Antonio</a>) y debo decir que estoy más que contento. Es todo un gustazo utilizarlo, incluso sin interfaz gráfica, directamente desde la línea de comandos (con <a href="http://www.zsh.org/">ZSH</a> + <a href="https://github.com/robbyrussell/oh-my-zsh">oh-my-zsh</a>, por supuesto).</p>
<p>Una de las cosas que estoy haciendo con Git es utilizar su sistema de sub-módulos para integrar proyectos dentro de proyectos. Es decir, tener un proyecto versionado con Git dentro de otro proyecto también versionado (<em>à la</em> <a href="http://www.imdb.com/title/tt1375666/">Inception</a>).</p>
<p>Os pondré como ejemplo el <a href="https://github.com/juanghurtado/coloresefimeros-theme"><em>theme</em> de este blog</a>, que lo tengo versionado con Git. En él hago uso de <a href="http://flaminwork.com/">Flaminwork</a> (un <em>framework</em> del que ya os hablaré en otro <em>post</em>) que es un proyecto Git en si mismo. ¿No sería estupendo poder obtener las últimas novedades en el Flaminwork del <em>theme</em> directamente desde el repositorio central? Es muy sencillo conseguirlo con los sub-módulos de Git:</p>
<pre><code># Entramos en el directorio de nuestro proyecto ya versionado con Git
> cd coloresefimeros/

# Añadimos nuestro sub-módulo desde el repositorio remoto,
# metiendo su contenido en el directorio "flaminwork"
> git submodule add git@github.com:juanghurtado/flaminwork.git flaminwork

# Si accedemos al directorio "flaminwork" nos encontraremos en el
# repositorio de Flaminwork, no en el del theme
> cd flaminwork/

# Y cada vez que queramos actualizarlo, no tendremos más que hacer un pull
> git pull</code></pre>
<p>Este sistema es genial para poder actualizar de forma sencilla proyectos como Flaminwork que, por su naturaleza, se utilizan siempre dentro de otros proyectos.</p>
<p>Pero aún hay más: Flaminwork, al tratarse de un <em>framework front-end</em>, no tiene forma de ser <em>testeado</em> salvo en proyectos reales (como es el caso del <em>theme</em> de este blog), así que si durante su uso en el <em>theme</em> encuentro algo que solucionar en Flaminwork no necesito abrir el proyecto, editarlo, subir los cambios y bajármelos en la copia de Flaminwork que tengo en el <em>theme</em>… Lo puedo hacer directamente en el sub-módulo que he creado, porque ese ya es el proyecto en si. Tan sencillo como realizar los cambios y hacer <code>push</code> desde el submódulo:</p>
<pre><code># Accedo al directorio del submódulo dentro del theme
> cd coloresefimeros/flaminwork/

# Realizo los cambios
> ....

# Y los subo al repositorio central en GitHub
> git push

# Como también quiero que el theme guarde los cambios
# realizados en el sub-módulo, también hago commit del
# proyecto padre
> cd ..
> git add .
> git commit -m 'Update Flaminwork to v0.1-RC1'
> git push</code></pre>
<p>¿Fácil, verdad? Si hasta yo que no soy más que un maquetador web puede hacer esto, cualquiera puede hacerlo y beneficiarse de todas las ventajas que ofrece Git, que no son pocas. Ya os iré contando más cositas conforme vaya aprendiendo, mientras tanto os recomiendo que le echéis un ojo al libro <a href="http://progit.org/">Pro Git, de Scott Chacon</a>, disponible on-line de forma gratuita.</p>
]]></content:encoded>
			<wfw:commentRss>http://coloresefimeros.com/2011/03/25/git-y-los-sub-modulos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mi nuevo mejor amigo: inline-block</title>
		<link>http://coloresefimeros.com/2011/03/06/mi-nuevo-mejor-amigo-inline-block/</link>
		<comments>http://coloresefimeros.com/2011/03/06/mi-nuevo-mejor-amigo-inline-block/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 16:53:51 +0000</pubDate>
		<dc:creator>Juan G. Hurtado</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://coloresefimeros.com/?p=112</guid>
		<description><![CDATA[Desde que en mi empresa estamos dejando de echarle tanta cuenta a Internet Explorer 6, (ya iba siendo hora), vengo utilizando más a menudo en mis hojas de estilos el valor inline-block en la propiedad display. Gracias a este valor podemos darle algunas de las propiedades de los elementos en bloque a un elemento en [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que en <a href="http://www.viavansi.com/" title="Página principal de Viavansi">mi empresa</a> estamos dejando de echarle tanta cuenta a Internet Explorer 6, (ya iba siendo hora), vengo utilizando más a menudo en mis hojas de estilos el valor <code>inline-block</code> en la propiedad <code>display</code>. Gracias a este valor podemos darle algunas de las propiedades de los elementos en bloque a un elemento en línea, o viceversa.</p>
<p>¿Qué significa esto que acabo de decir? Pues lo explico ahora mismo: al aplicarle <code>display: inline-block;</code> a un elemento se le tratará como un elemento en línea, es decir, no tenderá a ocupar todo el ancho del contenedor ni empujará a los elementos contiguos hacia una nueva línea, amén de esas otras cosas que hacen los elementos en bloque. Será como cualquier otro <code>SPAN</code>, <code>EM</code>, etc. Pero, al contrario que los elementos en línea tradicionales, tendrá la amabilidad de dejarnos tocar cosas como su ancho, su alto, sus márgenes superiores e inferiores, etc.</p>
<p>Esto, que a primera vista puede parecernos una tontería, puede utilizarse para crear la rejilla sobre la que se sustentan nuestras web, que hasta ahora construimos a base de <code>float</code> y otras técnicas variadas. Desgraciadamente, cómo no, el soporte de <code>inline-block</code> no está tan extendido como quisiéramos. Internet Explorer sólo lo soporta de manera completa desde su versión 8 en adelante. En la versión 7 de este navegador el soporte está limitado a elementos que nativamente son elementos en línea, así que no se puede usar en <code>DIV</code> y demás, cosa que limita bastante su utilidad.</p>
<p>Existen <a title="Artículo sobre cómo usar inline-block de manera que funcione en casi todos los navegadores" href="http://www.anieto2k.com/2009/02/22/displayinline-block-para-todos-los-navegadores/"><em>hacks</em> para paliar esta falta de soporte</a>, pero yo personalmente <strong>no los recomiendo</strong>. Prefiero limitarme a usar este valor para <code>display</code> de la manera tradicional en situaciones menos comprometidas, como por ejemplo ajustar el alto de elementos en línea que tienen iconos colocados como imagen de fondo.</p>
<pre><code>&lt;!-- Código HTML --&gt;
&lt;span class="icon-edit"&gt;Lorem ipsum dolor sit amet&lt;/span&gt;

/* Código CSS */
.icon-edit {
	background: url(edit.png) no-repeat 0 50%;
	display: inline-block;
	padding: 8px 0 8px 25px;
}</code></pre>
<p>De este modo no hay que andar modificando el alto de línea del elemento para que la imagen de fondo se vea completamente (cosa que no mola mucho para la homogeneidad tipográfica del diseño y que además no funciona muy bien en todos los navegadores), únicamente tenemos que ajustar su <code>padding</code> por arriba y por abajo para dejar el espacio necesario a la imagen.</p>
]]></content:encoded>
			<wfw:commentRss>http://coloresefimeros.com/2011/03/06/mi-nuevo-mejor-amigo-inline-block/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Desplazamiento al marcar el elemento activo de un menú</title>
		<link>http://coloresefimeros.com/2011/02/22/desplazamiento-al-marcar-el-elemento-activo-de-un-menu/</link>
		<comments>http://coloresefimeros.com/2011/02/22/desplazamiento-al-marcar-el-elemento-activo-de-un-menu/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 21:18:12 +0000</pubDate>
		<dc:creator>Juan G. Hurtado</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://coloresefimeros.com/?p=109</guid>
		<description><![CDATA[He desarrollado un pequeño ejemplo de una animación Javascript utilizando jQuery. La animación en concreto se realiza para marcar el elemento sobre el que está situado el cursor dentro de un menú horizontal. Las animaciones son muy fáciles de realizar con jQuery, gracias a su sencillísimo método .animate(), al que, a grosso modo, le especificas [...]]]></description>
			<content:encoded><![CDATA[<p>He desarrollado un pequeño ejemplo de una animación Javascript utilizando jQuery. La animación en concreto se realiza para <a href="http://code.coloresefimeros.com/slide-hover.html">marcar el elemento sobre el que está situado el cursor</a> dentro de un menú horizontal.</p>
<p>Las animaciones son muy fáciles de realizar con jQuery, gracias a su sencillísimo método <a href="http://api.jquery.com/animate/"><code>.animate()</code></a>, al que, a <em>grosso modo</em>, le especificas los atributos CSS que quieres modificar y el tiempo que quieres que dure la animación. Por ejemplo, imaginemos un elemento cuyo identificador es <code>cajita</code>, que está posicionado absolutamente con <code>top: 50px;</code> y <code>left:105px</code>. Con <a href="http://api.jquery.com/animate/"><code>.animate()</code></a> podemos hacer que se mueva hacia otra posición de la siguiente forma:</p>
<pre><code>jQuery('#cajita').animate({
	left : '10px',
	top : '200px'
}, 1000);</code></pre>
<p>Con este método es muy sencillo realizar bonitas (y también útiles) animaciones en nuestras webs. Podéis ver un poco más en profundidad cómo se utiliza en <a href="http://code.coloresefimeros.com/slide-hover.html">el ejemplo que os he preparado</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://coloresefimeros.com/2011/02/22/desplazamiento-al-marcar-el-elemento-activo-de-un-menu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bordes bicolor con CSS3</title>
		<link>http://coloresefimeros.com/2011/02/17/bordes-bicolor-con-css3/</link>
		<comments>http://coloresefimeros.com/2011/02/17/bordes-bicolor-con-css3/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 22:10:38 +0000</pubDate>
		<dc:creator>Juan G. Hurtado</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://coloresefimeros.com/?p=101</guid>
		<description><![CDATA[CSS3 nos trae grandes cosas: transiciones, bordes redondeados, usar las tipos que queramos, etc. Pero, en mi opinión, la mejor feature de CSS3 es la comodidad que nos va a aportar para hacer tareas relativamente comunes. El ejemplo que os quiero ofrecer da buena muestra de ello. Los bordes bicolor son algo muy habitual en [...]]]></description>
			<content:encoded><![CDATA[<p>CSS3 nos trae grandes cosas: transiciones, bordes redondeados, usar las tipos que queramos, etc. Pero, en mi opinión, la mejor <em>feature</em> de CSS3 es <strong>la comodidad</strong> que nos va a aportar para hacer tareas relativamente comunes. El ejemplo que os quiero ofrecer da buena muestra de ello.</p>
<p>Los bordes bicolor son algo muy habitual en el diseño de las aplicaciones web. El colocar un borde exterior de color oscuro, y uno interior más claro aportan <em>una profundidad y un cuidado excelentes</em> al componente que se lo coloquemos. Pero antes de la llegada de CSS3 era un poco costoso conseguirlo, y lo que es peor, nos obligaba a usar dos elementos:</p>
<pre><code>&lt;!-- Código HTML --&gt;
&lt;h2&gt;&lt;span&gt;Lorem ipsum dolor sit amet&lt;/span&gt;&lt;/h2&gt;

/* Código CSS */
h2 {
	background: #ccc;
	border: 1px solid #888;
	padding: 0;
}

	h2 span {
		border: 1px solid #fff;
		display: block;
		padding: 0.25em 0.5em;
	}</code></pre>
<p>En el <code>H2</code> debíamos colocar el borde exterior, y en el <code>SPAN</code>, (convirtiéndolo en un elemento en bloque para poder aplicar el <code>padding</code> correctamente al conjunto) colocar el borde interior.</p>
<p>Con CSS3 esto es mucho más sencillo, necesitando únicamente un elemento. Para conseguirlo haremos uso de la propiedad <code>box-shadow</code> (y sus variantes con <a href="http://www.alistapart.com/articles/prefix-or-posthack/"><em>vendor prefixes</em></a>, que son las que están implementadas en los navegadores a día de hoy).</p>
<p>Con <code>box-shadow</code> podemos aplicar sombras a los elementos que queramos, pudiendo definir si se aplica hacia dentro o hacia fuera, su dirección, su longitud y su color.</p>
<pre><code>box-shadow: inset/outset top left spread color;</code></pre>
<p>Gracias a esta propiedad, y a la posibilidad de aplicar más de una sombra a un mismo elemento, podemos tener bordes bicolor de una manera muy sencilla e indolora. No tenemos más que aplicar una sombra interior con <code>top</code> y <code>left</code> positivos, y sin degradado para que sea sólida, y otra exactamente igual pero con <code>top</code> y <code>left</code> negativos, para crear el &#8220;falso borde&#8221; inferior y el de la derecha.</p>
<pre><code>&lt;!-- Código HTML --&gt;
&lt;h2&gt;Lorem ipsum dolor sit amet&lt;/h2&gt;

/* Código CSS */
h2 {
	background: #ccc;
	border: 1px solid #888;

	-webkit-box-shadow: inset 1px 1px 0 #fff, inset -1px -1px 0 #fff;
	-moz-box-shadow: inset 1px 1px 0 #fff, inset -1px -1px 0 #fff;
	box-shadow: inset 1px 1px 0 #fff, inset -1px -1px 0 #fff;
}</code></pre>
<p>Eso es todo, gracias a esta propiedad (y por ahora a sus homólogas con <em>vendor prefixes</em>), hemos conseguido un borde bicolor sin mayor complicación. La única <em>pega</em> es que esto no funciona en Internet Explorer… Pero bueno, ¿qué más da? :)</p>
<p>Si queréis echarle un ojo en vivo a esta técnica podéis hacerlo en <a href="http://code.coloresefimeros.com/box-shadow-inset.html">el ejemplo que os he preparado</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://coloresefimeros.com/2011/02/17/bordes-bicolor-con-css3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maquetación desde cero</title>
		<link>http://coloresefimeros.com/2011/02/13/maquetacion-desde-cero/</link>
		<comments>http://coloresefimeros.com/2011/02/13/maquetacion-desde-cero/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 20:15:06 +0000</pubDate>
		<dc:creator>Juan G. Hurtado</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://coloresefimeros.com/?p=95</guid>
		<description><![CDATA[Aquí os dejo una pequeña prueba de concepto que hice hace una semanas sobre cómo una pantalla vacía de navegador pasa a ser una web. El vídeo está realizado con capturas que saqué durante el proceso de maquetación de la web del coreógrafo sueco Johan Inger.]]></description>
			<content:encoded><![CDATA[<p>Aquí os dejo una pequeña prueba de concepto que hice hace una semanas sobre cómo una pantalla vacía de navegador pasa a ser una web. El vídeo está realizado con capturas que saqué durante el proceso de maquetación de la web del coreógrafo sueco <a href="http://inspiredminds.de/detail.php?id=40">Johan Inger</a>.</p>
<p><iframe src="http://player.vimeo.com/video/19577464" width="635" height="357" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://coloresefimeros.com/2011/02/13/maquetacion-desde-cero/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Gestionar tus tareas con todo.txt</title>
		<link>http://coloresefimeros.com/2011/02/01/gestionar-tus-tareas-con-todo-txt/</link>
		<comments>http://coloresefimeros.com/2011/02/01/gestionar-tus-tareas-con-todo-txt/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 20:54:23 +0000</pubDate>
		<dc:creator>Juan G. Hurtado</dc:creator>
				<category><![CDATA[Terminal]]></category>

		<guid isPermaLink="false">http://coloresefimeros.com/?p=90</guid>
		<description><![CDATA[En mi búsqueda de organización personal en lo relativo a las cosas que tengo que hacer (que no son muchas, la verdad sea dicha) he probado todo tipo de sistemas, desde Evernote hasta Remember de Milk, pasando por ficheros de texto plano gestionados desde TextMate con un bundle llamado Tasks. Desgraciadamente ninguno de estos me [...]]]></description>
			<content:encoded><![CDATA[<p>En mi búsqueda de organización personal en lo relativo a las cosas que tengo que hacer (que no son muchas, la verdad sea dicha) he probado todo tipo de sistemas, desde <a href="http://www.evernote.com/">Evernote</a> hasta <a href="http://www.rememberthemilk.com/?hl=es">Remember de Milk</a>, pasando por ficheros de texto plano gestionados desde <a href="http://macromates.com/">TextMate</a> con un bundle llamado <a href="http://henrik.nyh.se/2007/08/tasks-bundle">Tasks</a>. Desgraciadamente ninguno de estos me convenció.</p>
<p>Afortunadamente la red está constantemente sorprendiéndome, y el otro día no recuerdo cómo me topé con <a href="http://todotxt.com/">Todo.txt</a>, el proyectito personal de Gina Trapani, la editora de <a href="http://lifehacker.com/">LifeHacker</a> (el mayor blog sobre tips y productividad que conozco).</p>
<p>Todo.txt es un gestor de tareas pero destinado a su uso desde la terminal del sistema. Vamos, lo que vienen siendo comandos de toda la vida. Por ejemplo, una vez instalado todo siguiendo las <a href="https://github.com/ginatrapani/todo.txt-cli/wiki/User-Documentation">instrucciones disponibles en su wiki</a>, no tenemos más que empezar a añadir tareas a nuestro fichero:</p>
<p><code>t add "Escribir un post sobre todo.txt #blog @casa"</code></p>
<p>Tan sencillo como veis. Y además gracias al uso de etiquetas en nuestras tareas podemos más tarde listarlas de manera filtrada de la siguiente manera:</p>
<p><code>t ls #blog</code></p>
<p>Lo que hace especial a este sistema, aparte de su sencillez si estás acostumbrado a teclear ordenes a tu ordenador en lugar de a usar el ratón, es que las tareas acaban guardándose en un fichero de texto plano con un formato determinado.</p>
<p>Es esta última feature la que me llama la atención, ya que me permite guardar el fichero con todas las tareas en un directorio sincronizado con Dropbox, pudiendo así estar al alcance de todas las máquinas desde las que trabajo.</p>
<p>Podéis aprender más sobre este sistema echándole un ojo a su <a href="http://todotxt.com/">web oficial</a>, o directamente en su <a href="https://github.com/ginatrapani/todo.txt-cli">repositorio en GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://coloresefimeros.com/2011/02/01/gestionar-tus-tareas-con-todo-txt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

