<?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>Sofá Naranja &#187; Código</title>
	<atom:link href="http://sofanaranja.com/category/codigo/feed/" rel="self" type="application/rss+xml" />
	<link>http://sofanaranja.com</link>
	<description>el blog de Ale Muñoz, donde hay menos naranja de lo que uno podría esperar con un nombre como este</description>
	<lastBuildDate>Sun, 06 May 2012 12:36:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-beta4-20825</generator>
		<item>
		<title>Presentando OrangeCommands</title>
		<link>http://sofanaranja.com/2009/08/03/presentando-orangecommands/</link>
		<comments>http://sofanaranja.com/2009/08/03/presentando-orangecommands/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 07:37:42 +0000</pubDate>
		<dc:creator>Ale Muñoz</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Fireworks]]></category>
		<category><![CDATA[Productividad]]></category>

		<guid isPermaLink="false">http://sofanaranja.com/?p=341</guid>
		<description><![CDATA[Orange Commands es una colección de comandos para Fireworks CS3 y CS4 que sirven, esencialmente, para hacer más fácil la vida del diseñador web. Si eres lector habitual de este blog, ya sabrás cual es, en mi opinión, uno de &#8230; <a href="http://sofanaranja.com/2009/08/03/presentando-orangecommands/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Orange Commands es una colección de comandos para Fireworks CS3 y CS4 que sirven, esencialmente, para hacer más fácil la vida del diseñador web.</p>

<p>Si eres lector habitual de este blog, ya sabrás cual es, en mi opinión, <a href="http://sofanaranja.com/2007/09/19/elogio-de-la-vagancia/">uno de los pilares de la productividad y la innovación</a>.</p>

<p>En la línea habitual de &#8220;haz más haciendo menos&#8221;, Orange Commands surge de la imperiosa necesidad de perder menos tiempo haciendo cosas aburridas en Fireworks, para poder dedicarlo a menesteres mucho más interesantes.</p>

<p>La segunda motivación para Orange Commands es que me gusta trabajar a pantalla completa sin ninguna paleta abierta. ¿Las razones?:</p>

<ul>
<li>Porque uno es así de raro.</li>
<li>Porque la interfaz de Fireworks es tan lenta que cuando ocultas las paletas va <em>mucho</em> más rápido.</li>
<li>Porque la interfaz de Fireworks es <strong>fea</strong>.</li>
</ul>

<h2>Vale, suena bien&#8230; ¿qué hace Orange Commands exactamente?</h2>

<p>Pues empezó haciendo retículas (y llamándose <a href="/reticulator/">Reticulator</a>), y a día de hoy (que vamos por la versión 1.3) hace todas estas cosas (y alguna más, abajo tienes la lista completa):</p>

<ul>
<li><p><strong>Redimensionar objetos con el teclado</strong>. El por qué Adobe no ha puesto esto de serie en Fireworks continúa siendo un misterio&#8230;</p>

<p>Si piensas que no necesitas redimensionar objetos con el teclado (que es lo mismo que pensé yo cuando <a href="http://kekoponte.com">Keko</a> me pidió que le programara estos comandos) es porque todavía no lo has hecho. Si sólo me tuviera que quedar con una cosa de Orange Commands, sería esto&#8230;</p></li>
<li><p><strong>Cambiar la transparencia de objetos con el teclado</strong>, que es algo que Photoshop tiene (mas o menos) pero Fireworks no tenía. Otra cosa que piensas que no vas a necesitar hasta que un día te sorprendes no pudiendo vivir sin ella.</p></li>
<li><p><strong>Cambiar el color de relleno, de línea y de fondo de documento con el teclado</strong>, que es algo esencial si no quieres tener abiertas mil paletas (¿he dicho ya que Fireworks funciona mucho más rápido con las paletas ocultas?)</p></li>
<li><p><strong>Exportar la página actual como un PNG a 24 bits con un sólo atajo de teclado</strong>, sin abrir la ventana de previsualización (¿adivinas por qué? porque es <strong>lenta de cojones</strong>) y sin tener que cambiar opciones en ninguna parte. Con este comando puedes tardar entre 1 y 5 segundos en mandarle a alguien por email un pantallazo de lo que estés haciendo :)</p></li>
<li><p><strong>Reticulator</strong>, nuestro viejo conocido, ahora tiene un atajo de teclado para la retícula más habitual (la 960-16-9).</p></li>
<li><p><strong>Rodear de guías una selección con el teclado</strong>. Selecciona lo-que-sea, dale a <img src="/img/key_control.png" alt="key_control.png" /><img src="/img/key_plus.png" alt="Plus" /><img src="/img/key_shift.png" alt="Shift" /><img src="/img/key_plus.png" alt="Plus" /><img src="/img/key_w.png" alt="W" />, y tendrás cuatro guías enmarcando tu selección. Esto debo usarlo unas 400 veces al día, y la inspiración (y el atajo de teclado :) vienen directamente de TextMate.</p></li>
<li><p><strong>Posicionar elementos con el teclado</strong>. ¿He dicho que Fireworks es lento?</p></li>
<li><p>Y más cosillas&#8230;</p></li>
</ul>

<h2>¡Cáspita!, ¡Zapateta!, ¡Repámpanos!&#8230; ¡Lo quiero!</h2>

<p>Estás de suerte, porque Orange Commands es <strong>gratis total</strong>. No sólo es Software Por La Patilla™, sino que es código abierto (a modo de homenaje a todas esas almas caritativas que han sembrado el mundo de software libre molón del que nos aprovechamos todos los días y que incluso nos da de comer)</p>

<p>Si eres de esa gente rara que quiere ver el código fuente, lo tienes disponible en <a href="http://github.com/bomberstudios/fireworks">http://github.com/bomberstudios/fireworks</a> (por si quieres asegurarte de que los comandos no ejecutan nada raro, ni se beben tu cerveza, ni te levantan a la novia por la espalda sin avisar)</p>

<p>Si eres gente normal, tienes los comandos para descargar, y toda su documentación, en <a href="/orangecommands">la página de Orange Commands</a></p>

<p>¡Feliz semana!</p>
]]></content:encoded>
			<wfw:commentRss>http://sofanaranja.com/2009/08/03/presentando-orangecommands/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Atajos de teclado en Fireworks</title>
		<link>http://sofanaranja.com/2008/07/08/atajos-de-teclado-en-fireworks/</link>
		<comments>http://sofanaranja.com/2008/07/08/atajos-de-teclado-en-fireworks/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 10:23:59 +0000</pubDate>
		<dc:creator>Ale Muñoz</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Productividad]]></category>
		<category><![CDATA[Fireworks]]></category>

		<guid isPermaLink="false">http://sofanaranja.com/?p=247</guid>
		<description><![CDATA[Ya he comentado en alguna ocasión que en la Gran Corporación somos fans de Fireworks. Tengo pendiente un post más detallado explicando por qué, pero de momento aquí va un pequeño adelanto : ) Independientemente del software que utilices, ya &#8230; <a href="http://sofanaranja.com/2008/07/08/atajos-de-teclado-en-fireworks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ya he comentado en alguna ocasión que en <a href="http://the-cocktail.com">la Gran Corporación</a> somos fans de Fireworks. Tengo pendiente un post más detallado explicando por qué, pero de momento aquí va un pequeño adelanto : )</p>

<p>Independientemente del software que utilices, ya sabrás que los atajos de teclado son el mejor aliado de la productividad y la vagancia.</p>

<p>Lo que a lo mejor no sabes es que los atajos de teclado de Fireworks, además de ser personalizables de una forma bastante sencilla, pueden asignarse a tus propios comandos.</p>

<p>Para personalizar los atajos de teclado, abre el menú <strong>Fireworks » Keyboard Shortcuts&#8230;</strong></p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2008/07/picture-85.png" alt="Panel de asignación de atajos de teclado de Fireworks" /></p>

<p>Puedes seleccionar varios grupos de atajos por defecto (Illustrator, Freehand, Photoshop&#8230;) para que no tengas que reaprender lo que ya sabes, y puedes guardar tu propio set personalizado (ideal para transportarlo de un equipo a otro si usas varios ordenadores)</p>

<p>Si te fijas en el panel verás que aparece el menú &#8220;Commands&#8221;, que es donde se encuentran cosas como <a href="http://sofanaranja.com/reticulator/">Reticulator</a> y otros comandos personalizados:</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2008/07/picture-86.png" alt="Panel de atajos con teclas personalizadas" /></p>

<p>Si seleccionas un item de menú podrás asignarle la combinación de teclas que más rabia te de, y lo mejor es que el atajo funcionará <em>siempre</em> (ahora veremos por qué esto es importante)</p>

<h3>Un ejemplo práctico (al menos para mi : )</h3>

<p>Una cosa que siempre me ha molestado de Fireworks (y de Illustrator, y de Freehand, y de&#8230;) es que no es fácil cambiar el color de una selección sin hacer malabarismos con el ratón. Tienes que moverlo a donde tengas la paleta de colores, seleccionar el color, y luego volver a donde estabas. Si además tienes las paletas ocultas la operación es un coñazo. Y en el caso de Fireworks, si tienes un texto seleccionado el 90% de las veces te lo acabarás cargando al darle a TAB para mostrar las paletas.</p>

<p>Solución: un comando de Fireworks, claro : )</p>

<p>Guarda el fichero <a href="http://code.sofanaranja.com/fwcommands/Color/Show%20Color%20Picker.jsf">Show Color Picker.jsf</a> en tu carpeta de comandos (en Mac es <code>~/Library/Application Support/Adobe/Fireworks CS3/Commands/</code>)
y asígnale un atajo de teclado (yo he usado <code>Ctrl + Shift + C</code>). A partir de ahora, cuando quieras cambiar el color de <strong>cualquier cosa</strong> sólo tienes que pulsar el atajo de teclas, y un bello selector de color aparecerá en la posición donde tengas el ratón:</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2008/07/picture-82-480x300.png" alt="Show Color Picker en acción" /></p>

<p>Aún tengo que arreglar un par de bugs, a saber:</p>

<ul>
<li><del>si el objeto seleccionado no tiene relleno, inexplicablemente no funciona con el color #FFFFFF (con todos los demás si). Esto parece un bug de Fireworks, pero tengo que confirmarlo.</del> Bug corregido! Es un fallo de Fireworks, pero he encontrado un bonito &#8220;workaround&#8221; :P</li>
<li>si usas el comando con una selección de texto se colorea toda la caja de texto y no sólo la selección. Más que un bug es un &#8220;así funciona Fireworks&#8221;, pero ya tengo más o menos claro cómo resolverlo, sólo es cuestión de tiempo.</li>
</ul>

<p>Espero que os sea útil!</p>
]]></content:encoded>
			<wfw:commentRss>http://sofanaranja.com/2008/07/08/atajos-de-teclado-en-fireworks/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ahorrando tiempo con TextMate y Subversion</title>
		<link>http://sofanaranja.com/2007/11/15/ahorrando-tiempo-con-textmate-y-subversion/</link>
		<comments>http://sofanaranja.com/2007/11/15/ahorrando-tiempo-con-textmate-y-subversion/#comments</comments>
		<pubDate>Thu, 15 Nov 2007 18:08:09 +0000</pubDate>
		<dc:creator>Ale Muñoz</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Productividad]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[Trucos]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://sofanaranja.com/2007/11/15/ahorrando-tiempo-con-textmate-y-subversion/</guid>
		<description><![CDATA[Como llevo una temporada sin postear, aprovecho unos segundos de tiempo libre para contaros un pequeño truco motivado por el espíritu de la Infinita Vagancia™ y el típico comentario de &#8220;molaría que TextMate hiciera&#8230;&#8221; (en este caso, de David Alonso) &#8230; <a href="http://sofanaranja.com/2007/11/15/ahorrando-tiempo-con-textmate-y-subversion/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Como llevo una temporada sin postear, aprovecho unos segundos de tiempo libre para contaros un pequeño truco motivado por el espíritu de la Infinita Vagancia™ y el típico comentario de &#8220;molaría que TextMate hiciera&#8230;&#8221; (en este caso, de <a href="http://autodidacto.com">David Alonso</a>)</p>

<p>El truco de hoy es la típica chorrada que te molesta 80 veces al día, y cuando la resuelves te das cuenta de lo poco que nos queremos en general (resolverlo no llevó más de 2 minutos)</p>

<p><strong>Escenario:</strong> usas <a href="http://subversion.tigris.org">Subversion</a> desde línea de comando, pero escribes tus mensajes de commit con TextMate (y si no lo haces, ahora te cuento cómo)</p>

<p><strong>Problema:</strong> cuando escribes tu mensaje de commit, tienes que guardar el documento y luego cerrarlo para que se &#8220;registre&#8221; el mensaje y se haga el commit.</p>

<p><strong>Idea:</strong> guardar y cerrar con un atajo de teclado, pero sólo en los mensajes de commit de Subversion.</p>

<h2>Usando TextMate como editor de mensajes de commit</h2>

<p>Si quieres usar TextMate para editar tus mensajes de commit, la cosa es bastante simple. Tienes que asegurarte de tener instalada la utilidad &#8220;mate&#8221; (usando el menú &#8220;Help » Terminal Usage&#8230;&#8221;) y añadir esto en tu fichero .bash_profile:</p>

<pre><code>export SVN_EDITOR='mate -w'
</code></pre>

<p>Para ello, cuando hayas instalado &#8216;mate&#8217; puedes abrir una ventana de Terminal.app (que por defecto inicia una sesión en tu carpeta $HOME) y escribir:</p>

<pre><code>mate .bash_profile
</code></pre>

<p>Se abrirá el fichero .bash_profile si existe, y si no se creará.</p>

<p>Añade la línea &#8220;export &#8230;&#8221; donde quieras, cierra el fichero y cierra la ventana de Terminal.app (necesitas abrir una nueva para que el fichero .bash_profile se vuelva a leer)</p>

<h2>Siguiente paso: el comando de TextMate</h2>

<p>Una de las múltiples maravillas de TextMate es el sistema de &#8220;scoping&#8221;.</p>

<p>De una forma muy simplificada, el &#8220;scoping&#8221; es una forma de identificar qué tipo de texto estás editando. Mediante un sistema de expresiones regulares, TextMate puede reconocer en qué lenguaje estás programando; Y dentro de ese lenguaje, si estás editando un String, una función, un número&#8230;</p>

<p>Afortunadamente, los tipos que mantienen el bundle de Subversion tuvieron la deferencia de identificar cuándo un fichero es un mensaje de commit de Subversion.</p>

<p>El scope para un mensaje de commit es</p>

<pre><code>text.subversion-commit
</code></pre>

<p>Otra maravilla de TextMate es que puedes limitar un comando a un scope, de forma que podemos escribir un comando que sólo funcione cuando estamos editando un mensaje de commit.</p>

<p>Para hacer nuestra vida más fácil, vamos a crear un comando que guarde y cierre el documento actual, y asignarlo a la combinación de teclas &#x2318; + S (que ya estamos usando para guardar)</p>

<p>Así que abrimos el editor de Bundles con &#x2303; + &#x2325; + &#x2318; + B y creamos un nuevo comando en el bundle de Subversion:</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2007/11/nuevo-comando-de-textmate.png" alt="Nuevo Comando de TextMate" /></p>

<p>Le asignamos un bonito nombre:</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2007/11/nombrando-el-comando.png" alt="Nombrando el Comando" /></p>

<p>lo rellenamos de contenido:</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2007/11/comando-save-and-commit.png" alt="Comando Save and Commit" /></p>

<p>y cerramos la ventana del Bundle Editor.</p>

<p>A partir de ahora, cuando escribamos</p>

<pre><code>svn ci nuestro_bello_fichero_modificado
</code></pre>

<p>se abrirá una ventana de TextMate con esta pinta:</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2007/11/ventana-de-commit.png" alt="Ventana de Commit" /></p>

<p>donde podemos escribir nuestro mensaje de commit, y al pulsar &#x2318; + S para guardar, se cerrará automáticamente y empezará nuestro commit :)</p>

<p>Y eso es todo, de momento&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://sofanaranja.com/2007/11/15/ahorrando-tiempo-con-textmate-y-subversion/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Reflection, un comando para Fireworks</title>
		<link>http://sofanaranja.com/2007/07/09/reflection-un-comando-para-fireworks/</link>
		<comments>http://sofanaranja.com/2007/07/09/reflection-un-comando-para-fireworks/#comments</comments>
		<pubDate>Mon, 09 Jul 2007 07:41:58 +0000</pubDate>
		<dc:creator>Ale Muñoz</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Fireworks]]></category>

		<guid isPermaLink="false">http://sofanaranja.com/2007/07/09/reflection-un-comando-para-fireworks/</guid>
		<description><![CDATA[Admitámoslo. El efecto &#8220;reflejo en hielo/agua/cristal&#8221; es el &#8220;bevel &#38; emboss&#8221; de esta década. Si alguna vez te ha tocado crear uno, sabrás que es un pelín coñazo. Si además tienes que añadir un reflejo a 50 imágenes, habrás estado &#8230; <a href="http://sofanaranja.com/2007/07/09/reflection-un-comando-para-fireworks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Admitámoslo. El efecto &#8220;reflejo en hielo/agua/cristal&#8221; es el &#8220;bevel &amp; emboss&#8221; de esta década.</p>

<p>Si alguna vez te ha tocado crear uno, sabrás que es un pelín coñazo. Si además tienes que añadir un reflejo a 50 imágenes, habrás estado al borde del suicidio.</p>

<p>Sobre todo si después de la paliza alguien te dice cosas como:</p>

<ul>
<li>&#8220;Hmm&#8230; ¿por qué los reflejos no tienen todos la misma altura?&#8221;</li>
<li>&#8220;¿Sabes qué? Creo que habría que hacer los reflejos un poco más pequeños&#8221;</li>
<li>&#8220;Mira&#8230; mejor vamos a cambiarlo todo por un &#8216;drop shadow&#8217;, que vuelve a estar de moda&#8221;</li>
</ul>

<p>(situaciones estas totalmente hipotéticas)</p>

<p>La cuestión es que, si eres un vago profesional, esta es una de esas veces en las que piensas&#8230; &#8220;hmmm&#8230; automatización&#8230;&#8221;</p>

<p>Así que, con ayuda de la <em>terrible</em> documentación de Fireworks CS3, me puse a programar un comando para hacer reflejos.</p>

<p>El resultado es que, con un sólo click, tienes un bonito efecto como este:</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2007/07/reflection-baby.png" alt="Reflection, baby" /></p>

<p>Bonito, ¿verdad? :)</p>

<p>Para conseguir este glamouroso comando, guarda el siguiente código en un fichero <code>Reflection.jsf</code> en la carpeta ~/Library/Application Support/Adobe/Fireworks CS3/Commands/ (o su equivalente en Windows que debería ser algo como C:/Documents and Settings/usuario/Application Data/Adobe/Fireworks CS3/Commands/), y luego selecciona un objeto en Fireworks y en el menú &#8220;Commands&#8221; elige la opción &#8220;Reflection&#8221;.</p>

<pre><code>// Reflection Command 1.0
// Ale Muñoz &lt;http://bomberstudios.com&gt;

// Ask for shadow height:
shadow_height = prompt("Reflection Height","50");

// Get the original object
original = fw.selection[0];
original.name = "original";

// Clone, reflect and move original
fw.getDocumentDOM().cloneSelection();
fw.getDocumentDOM().reflectSelection(false, true, "autoTrimImages transformAttributes");
fw.getDocumentDOM().moveSelectionBy({x:0, y:original.height + 5}, false, false);

// Get the cloned object
copy = fw.selection[0]; // Current selection is now the copy
copy.name = "copy";

// Create the mask
fw.getDocumentDOM().addNewRectanglePrimitive({left:copy.left - 2, top:copy.top - 2, right:copy.width + copy.left + 2, bottom:copy.height + copy.top + 2}, 0);
// White to black gradient
fw.getDocumentDOM().setFill({ category:"fc_Linear", ditherColors:[ "#000000", "#000000" ], edgeType:"antialiased", feather:0, gradient:{ name:"cn_Custom", nodes:[ { color:"#ffffff", isOpacityNode:false, position:0 }, { color:"#000000", isOpacityNode:false, position:1 } ], opacityNodes:[ { color:"#000000", isOpacityNode:true, position:0 }, { color:"#000000", isOpacityNode:true, position:1 } ] }, name:"Linear Smooth", pattern:null, shape:"linear", stampingMode:"blend", textureBlend:0, webDitherTransparent:false });
// Reposition gradient
fw.getDocumentDOM().moveFillVectorHandleBy({x:0, y:shadow_height}, "end1", true, false);

// Get the mask
mask = fw.selection[0];
mask.name = "mask";

// Remove mask's stroke
fw.getDocumentDOM().removeBrush();

// Apply the mask to the cloned object
fw.selection = [copy, mask];
fw.getDocumentDOM().group("mask to image");

// Finally, set opacity to 30 so it looks like a reflection
fw.getDocumentDOM().setOpacity(30);
</code></pre>

<p>Para usarlo, selecciona un objeto y elige la opción &#8220;Reflection&#8221; del menú &#8220;Commands&#8221;.</p>

<p>Te pedirá que introduzcas la altura del reflejo en píxels (por defecto, 50)</p>

<p>Y ya está! :D</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2007/07/reflection-code-reflection.png" alt="Reflection Code Reflection" /></p>

<p>Si encuentras algún fallo o se te ocurre alguna mejora, deja un comentario&#8230;</p>

<p>Y recuerda el lema de los vagos profesionales: &#8220;lo importante no es trabajar más, sino trabajar mejor&#8221; ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://sofanaranja.com/2007/07/09/reflection-un-comando-para-fireworks/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Reticulator, un creador de retículas para Fireworks</title>
		<link>http://sofanaranja.com/2007/06/11/reticulator-un-creador-de-reticulas-para-fireworks/</link>
		<comments>http://sofanaranja.com/2007/06/11/reticulator-un-creador-de-reticulas-para-fireworks/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 16:32:51 +0000</pubDate>
		<dc:creator>Ale Muñoz</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Fireworks]]></category>
		<category><![CDATA[reticula]]></category>
		<category><![CDATA[reticulator]]></category>

		<guid isPermaLink="false">http://sofanaranja.com/2007/06/11/reticulator-un-creador-de-reticulas-para-fireworks-cs3/</guid>
		<description><![CDATA[Una de las herramientas esenciales en el diseño de webs (aparte de un café decente y cantidades industriales de música) es la retícula o grid. Si trabajas asiduamente con retículas y Fireworks, habrás querido asesinar más de una vez al &#8230; <a href="http://sofanaranja.com/2007/06/11/reticulator-un-creador-de-reticulas-para-fireworks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Una de las herramientas esenciales en el diseño de webs (aparte de un café decente y cantidades industriales de música) es la retícula o grid.</p>

<p>Si trabajas asiduamente con retículas y Fireworks, habrás querido asesinar más de una vez al equipo de programadores que decidió que las guías en Fireworks no podían copiarse.</p>

<p>Si eres del Club del Vago™, quizá tengas plantillas para tus retículas habituales.</p>

<p>Pero si quieres entrar en el Club de los Realmente Vagos™, no hay nada como programar tus propios comandos.</p>

<p>Reticulator es un comando para Fireworks 8 o superior (Windows y Mac) que te permitirá crear guías siguiendo una retícula en cuestión de segundos. Desde que empecé a usarlo me ha ahorrado montañas de trabajo, y hoy te lo ofrezco a ti, diseñador estresado, para que dediques tu escaso tiempo a diseñar en vez de a mover guías.</p>

<h4>Cómo funciona Reticulator</h4>

<p>La cosa es fácil:</p>

<ul>
<li>Lo instalas con Adobe Extension Manager</li>
<li>Creas un documento nuevo</li>
<li>Seleccionas Commands » Grids » Reticulator</li>
<li>Rellenas los datos que te pide el comando (a saber: ancho de la retícula, número de columnas y espacio entre columnas)</li>
<li>Te maravillas de la tecnología moderna</li>
</ul>

<p><strong>Bola extra:</strong> si tienes un objeto seleccionado, la retícula se creará a partir de la posición X de dicho objeto.</p>

<p><strong>Bola extra 2:</strong> si (como yo) casi siempre usas una retícula de 960 pixels, 16 columnas y 9 pixels entre columna, tienes un comando que genera esa retícula sin que tengas que introducir los datos.</p>

<p>Reticulator es gratis total, pero se admiten invitaciones a cerveza si acabas usándolo para algo productivo.</p>

<p>Sin más dilación, aquí lo tienes:</p>

<p><a href="/dl/reticulator.1.5.4.mxp.zip"><img src="http://sofanaranja.com/wp-content/uploads/2007/06/reticulator-153.png" alt="Reticulator 1.5.4" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://sofanaranja.com/2007/06/11/reticulator-un-creador-de-reticulas-para-fireworks/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Taller de TextMate Avanzado en The Cocktail</title>
		<link>http://sofanaranja.com/2007/03/29/taller-de-textmate-avanzado-en-the-cocktail/</link>
		<comments>http://sofanaranja.com/2007/03/29/taller-de-textmate-avanzado-en-the-cocktail/#comments</comments>
		<pubDate>Thu, 29 Mar 2007 15:08:57 +0000</pubDate>
		<dc:creator>Ale Muñoz</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Mis proyectos]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[taller]]></category>
		<category><![CDATA[tck]]></category>
		<category><![CDATA[thecocktail]]></category>

		<guid isPermaLink="false">http://sofanaranja.com/2007/03/29/taller-de-textmate-avanzado-en-the-cocktail/</guid>
		<description><![CDATA[Si viniste al primer curso de TextMate en el Aula The Cocktail y te quedaste con ganas de más, el próximo Jueves 26 de Abril a las 19:30h haremos la segunda parte. TextMate es un editor de texto super potente, &#8230; <a href="http://sofanaranja.com/2007/03/29/taller-de-textmate-avanzado-en-the-cocktail/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Si viniste al primer curso de TextMate en el Aula The Cocktail y te quedaste con ganas de más, el próximo Jueves 26 de Abril a las 19:30h haremos la segunda parte.</p>

<p><a href="http://macromates.com/">TextMate</a> es un editor de texto super potente, pero un pelín impenetrable (aunque no tanto como <a href="http://www.gnu.org/software/emacs/">Emacs</a> :)</p>

<p>Si ya usas TextMate a diario con cierta soltura, quizá te esté picando el gusanillo de crear tus propias automatizaciones (snippets, comandos, macros&#8230;) y no sabes por dónde empezar.</p>

<p>En este taller crearemos un &#8220;bundle&#8221; personal, donde almacenaremos comandos y snippets que simplifiquen nuestro trabajo con toda clase de texto (que no sólo de código vive el hombre)</p>

<p>Aprenderemos que crear un script que haga nuestro trabajo más sencillo y menos repetitivo es más fácil de lo que parece.</p>

<p>Imprescindible:</p>

<ul>
<li>Un ordenador. Será un taller muy práctico, y la idea es que te lleves algún comando terminado :)</li>
<li>Ser ya usuario (más o menos asiduo) de TextMate. No vamos a ver casi nada básico.</li>
</ul>

<p>Recomendable, aunque opcional:</p>

<ul>
<li>Conocer algún lenguaje de programación para fabricar nuestros scripts. Los ejemplos que pondré usan Ruby, Bash y AppleScript sobre todo, pero te servirá cualquier lenguaje que venga de serie con OSX (Python, Perl, PHP&#8230;)</li>
</ul>

<p>Apúntate desde ya en el <a href="http://aulathecocktail.pbwiki.com/Taller-TextMate-Avanzado">wiki del Aula The Cocktail</a></p>

<p>Y si quieres estar informado de próximos eventos, visita la <a href="http://upcoming.org/venue/35102/">página del Aula The Cocktail en Upcoming</a></p>

<div class="techtag"><span>Technorati tags:</span> <a href="http://technorati.com/tag/textmate" rel="tag">textmate</a></div>
]]></content:encoded>
			<wfw:commentRss>http://sofanaranja.com/2007/03/29/taller-de-textmate-avanzado-en-the-cocktail/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Trucos con SSH</title>
		<link>http://sofanaranja.com/2007/02/15/trucos-con-ssh/</link>
		<comments>http://sofanaranja.com/2007/02/15/trucos-con-ssh/#comments</comments>
		<pubDate>Thu, 15 Feb 2007 20:55:57 +0000</pubDate>
		<dc:creator>Ale Muñoz</dc:creator>
				<category><![CDATA[Código]]></category>

		<guid isPermaLink="false">http://sofanaranja.com/2007/02/15/trucos-con-ssh/</guid>
		<description><![CDATA[Si trabajas habitualmente con servidores remotos, probablemente ya te estés autentificando con llaves RSA. Pero lo que quizá no supieras es que en tu carpeta $HOME/.ssh/ puedes configurar algunos atajos para tus servidores habituales. La cosa es tan simple como &#8230; <a href="http://sofanaranja.com/2007/02/15/trucos-con-ssh/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Si trabajas habitualmente con servidores remotos, probablemente ya <a href="http://www.inwebwetrust.net/inwebwetrust/post/2006/09/26/exportar-contrasenas-ssh">te estés autentificando con llaves RSA</a>.</p>

<p>Pero lo que quizá no supieras es que en tu carpeta $HOME/.ssh/ puedes configurar algunos atajos para tus servidores habituales.</p>

<p>La cosa es tan simple como crear un fichero &#8216;config&#8217; en $HOME/.ssh/ y añadir esto:</p>

<pre><code>Host sn
HostName sofanaranja.com
User nombre_de_usuario
</code></pre>

<p>A partir de entonces, puedes usar el atajo &#8216;sn&#8217; para acceder al servidor sofanaranja.com usando SSH:</p>

<pre><code>ssh sn
</code></pre>

<p>y no tendrás que preocuparte de añadir el nombre de usuario o el nombre de host.</p>

<p>También funciona con SCP:</p>

<pre><code>scp mi_fichero.png sn:www/img
</code></pre>

<p>y para ejecutar comandos remotos:</p>

<pre><code>ssh sn ls www/img
</code></pre>

<p>(que te dará un listado de todos los ficheros remotos en www/img)</p>

<p>Si tienes más de un servidor &#8220;favorito&#8221; (estoy pensando en la <a href="http://www.lacoctelera.com/rubyroom/">Ruby Room</a> y su <a href="http://www.lacoctelera.com/nando/tags/the-shaker-club/posts">colección de máquinas con nombres atómicos</a>) la cosa es tan fácil como separar cada host en el fichero por una línea en blanco:</p>

<pre><code>Host sn
HostName sofanaranja.com
User nombre_de_usuario

Host bs
HostName bomberstudios.com
User nombre_de_usuario
</code></pre>

<p>Yo no es que tenga muchas máquinas&#8230; según <a href="http://www.dreamhost.com/r.cgi?899">DreamHost</a> todos mis sitios (unos 15) están en 4 máquinas. Lo que pasa es que como dijo aquel: <a href="http://blog.outer-court.com/archive/2005-08-24-n14.html">&#8220;Good Programmers Are Lazy And Dumb&#8221;</a>. Trabajar menos, en mi opinión, es una obligación moral de todo el que use ordenadores ;)</p>

<p>Y para terminar, otra gran cita:</p>

<blockquote>
  <p>&#8220;I am rarely happier than when spending an entire day programming my computer to perform automatically a task that it would otherwise take me a good ten seconds to do by hand&#8221; &#8212; Douglas Adams</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://sofanaranja.com/2007/02/15/trucos-con-ssh/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>TextMate JavaScript Bundle</title>
		<link>http://sofanaranja.com/2007/02/01/textmate-javascript-bundle/</link>
		<comments>http://sofanaranja.com/2007/02/01/textmate-javascript-bundle/#comments</comments>
		<pubDate>Thu, 01 Feb 2007 20:55:20 +0000</pubDate>
		<dc:creator>Ale Muñoz</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://sofanaranja.com/2007/02/01/textmate-javascript-bundle/</guid>
		<description><![CDATA[Si programas JavaScript de una manera más o menos asidua, y usas TextMate, tienes que probar el bundle &#8220;JavaScript Tools&#8221; Javascript Tools pone a tu disposición dos herramientas que (dependiendo de tu nivel programando Javascript) pueden ser una bendición o &#8230; <a href="http://sofanaranja.com/2007/02/01/textmate-javascript-bundle/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Si programas JavaScript de una manera más o menos asidua, y usas <a href="http://macromates.com/">TextMate</a>, <strong>tienes</strong> que probar el bundle &#8220;JavaScript Tools&#8221;</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2007/02/textmate-javascript-tools.png" alt="Textmate Javascript Tools" /></p>

<p>Javascript Tools pone a tu disposición dos herramientas que (dependiendo de tu nivel programando Javascript) pueden ser una bendición o una pesadilla:</p>

<p><strong><a href="http://www.javascriptlint.com/">JSLint</a></strong>, un verificador de sintaxis para Javascript. JSLint detecta errores tan comunes como:</p>

<ul>
<li>Los ; que siempre se te olvidan al final de una línea.</li>
<li>Código que nunca se ejecuta.</li>
<li><code>case</code> sin su <code>switch</code> correspondiente.</li>
<li>Comentarios dentro de comentarios.</li>
<li>Uso de = en comparaciones (en lugar de ==)</li>
<li>Etc, etc&#8230;</li>
</ul>

<p><strong><a href="http://www.crockford.com/javascript/jsmin.html">JSMin</a></strong>, un compresor de ficheros .js que te ahorrará un pico en tu factura de hosting.</p>

<p>La gracia del asunto está en que las dos herramientas se integran perfectamente con TextMate, y si tienes un error en tu código, JSLint te dirá dónde está (con un bonito enlace que te lleva a la línea y columna donde está el error).</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2007/02/jslint-en-textmate.png" alt="Jslint en Textmate" /></p>

<p>De regalo, el bundle incluye un comando que verifica la sintaxis cada vez que guardas el fichero, mostrándote un tooltip si hay algún problema.</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2007/02/jslint-en-textmate-2.png" alt="Jslint en Textmate 2" /></p>

<p>Así que ya tardan en <a href="http://www.andrewdupont.net/2006/10/01/javascript-tools-textmate-bundle/">descargarse el bundle</a> y darle las gracias al <a href="http://www.andrewdupont.net/">autor</a> :)</p>

<div class="techtag"><span>Technorati tags:</span> <a href="http://technorati.com/tag/textmate" rel="tag">textmate</a>, <a href="http://technorati.com/tag/javascript" rel="tag">javascript</a>, <a href="http://technorati.com/tag/jslint" rel="tag">jslint</a></div>
]]></content:encoded>
			<wfw:commentRss>http://sofanaranja.com/2007/02/01/textmate-javascript-bundle/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>TextMate + rcodetools, el paraiso de Ruby</title>
		<link>http://sofanaranja.com/2007/01/20/textmate-rcodetools-el-paraiso-de-ruby/</link>
		<comments>http://sofanaranja.com/2007/01/20/textmate-rcodetools-el-paraiso-de-ruby/#comments</comments>
		<pubDate>Sat, 20 Jan 2007 20:07:28 +0000</pubDate>
		<dc:creator>Ale Muñoz</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[TextMate]]></category>

		<guid isPermaLink="false">http://sofanaranja.com/2007/01/20/textmate-rcodetools-el-paraiso-de-ruby/</guid>
		<description><![CDATA[Si usas TextMate y programas en Ruby, te interesa saber un par de cosas que han sucedido en las últimas semanas en la lista de correo de TextMate Developers: James Edward Gray II (el tipo que está escribiendo el libro &#8230; <a href="http://sofanaranja.com/2007/01/20/textmate-rcodetools-el-paraiso-de-ruby/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Si usas <a href="http://macromates.com/">TextMate</a> y programas en <a href="http://www.ruby-lang.org/">Ruby</a>, te interesa saber un par de cosas que han sucedido en las últimas semanas en la <a href="http://lists.macromates.com/mailman/listinfo/textmate-dev">lista de correo de TextMate Developers</a>:</p>

<ul>
<li>James Edward Gray II (el tipo que está escribiendo el libro de TextMate, para más señas) <a href="http://article.gmane.org/gmane.editors.textmate.devel/7933">añadió la librería rcodetools al repositorio de TextMate</a>.</li>
<li>Unos días más tarde, en un derroche de generosidad, <a href="http://article.gmane.org/gmane.editors.textmate.devel/7972">añadió soporte para rcodetools en el bundle de Ruby</a>.</li>
</ul>

<p>¿Y para qué sirve todo esto, amigos lectores?</p>

<p>Sirve para que, cuando pulsas &#x2325; + ⎋ suceda esto:</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2007/01/textmate-rcodetools-autocomplete.png" alt="Textmate Rcodetools Autocomplete" /></p>

<p>Así que ya tardas en actualizarte a la <a href="http://macromates.com/svn/Bundles/trunk/Bundles/Ruby.tmbundle/">última versión del bundle de Ruby</a> :)</p>

<div class="techtag"><span>Technorati tags:</span> <a href="http://technorati.com/tag/textmate" rel="tag">textmate</a>, <a href="http://technorati.com/tag/ruby" rel="tag">ruby</a></div>
]]></content:encoded>
			<wfw:commentRss>http://sofanaranja.com/2007/01/20/textmate-rcodetools-el-paraiso-de-ruby/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>AppleScript vs Ruby</title>
		<link>http://sofanaranja.com/2006/12/18/applescript-vs-ruby/</link>
		<comments>http://sofanaranja.com/2006/12/18/applescript-vs-ruby/#comments</comments>
		<pubDate>Mon, 18 Dec 2006 17:44:40 +0000</pubDate>
		<dc:creator>Ale Muñoz</dc:creator>
				<category><![CDATA[AppleScript]]></category>
		<category><![CDATA[Código]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://sofanaranja.com/2006/12/18/applescript-vs-ruby/</guid>
		<description><![CDATA[En breve, un articulillo sobre la última joya que nos ha regalado la internet mundial: RubyOSA Mientras tanto, aquí va un previo de dos programas que hacen lo mismo: Arriba AppleScript (una buena idea muy mal implementada) y abajo Ruby &#8230; <a href="http://sofanaranja.com/2006/12/18/applescript-vs-ruby/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>En breve, un articulillo sobre la última joya que nos ha regalado la internet mundial: <a href="http://rubyosa.rubyforge.org/">RubyOSA</a></p>

<p>Mientras tanto, aquí va un previo de dos programas que hacen lo mismo:</p>

<p><img src="http://sofanaranja.com/wp-content/uploads/2006/12/rubyosa_on_the_rocks.png" alt="RubyOSA on the rocks" /></p>

<p>Arriba <a href="http://www.apple.com/applescript/">AppleScript</a> (una buena idea muy mal implementada) y abajo <a href="http://www.ruby-lang.org/">Ruby</a> (el lenguaje de programación zen)</p>

<p>Más detalles, en el próximo post&#8230;</p>

<div class="techtag"><span>Technorati tags:</span> <a href="http://technorati.com/tag/applescript" rel="tag">applescript</a>, <a href="http://technorati.com/tag/ruby" rel="tag">ruby</a></div>
]]></content:encoded>
			<wfw:commentRss>http://sofanaranja.com/2006/12/18/applescript-vs-ruby/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.459 seconds -->

