<?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>Capitangolo.net</title>
	<atom:link href="http://www.capitangolo.net/Blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.capitangolo.net/Blog</link>
	<description>GoLo golgotea golos golgoteados</description>
	<lastBuildDate>Wed, 15 Feb 2012 18:44:10 +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>Arrays en PHP</title>
		<link>http://www.capitangolo.net/Blog/?p=514</link>
		<comments>http://www.capitangolo.net/Blog/?p=514#comments</comments>
		<pubDate>Wed, 15 Feb 2012 18:44:10 +0000</pubDate>
		<dc:creator>golo</dc:creator>
				<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Warp]]></category>

		<guid isPermaLink="false">http://www.capitangolo.net/Blog/?p=514</guid>
		<description><![CDATA[Me encantan los arrays en php, son un saco en el que cabe de todo: $datos = array( 'nombre' => 'Víctor', 'apellidos' => 'Jiménez', 'Cero', '0' => 'Otro Cero', 1 => 'uno', 'dos', '1' => 'UUUUNO' ); foreach ($datos as $key => $value) { ?> print "$key : $value \n"; } Es curioso cómo se [...]]]></description>
			<content:encoded><![CDATA[<p>
  Me encantan los arrays en php, son un saco en el que cabe de todo:
</p>
<pre>
    $datos = array(
        'nombre' => 'Víctor',
        'apellidos' => 'Jiménez',
        'Cero',
        '0' => 'Otro Cero',
        1 => 'uno',
        'dos',
        '1' => 'UUUUNO'
    );

    foreach ($datos as $key => $value) {    ?>
        print "$key : $value \n";
    }
</pre>
<p>
  Es curioso cómo se pueden mezclar claves escalares y asociativas en un mismo objeto. Y más curioso es ver cómo convierte &#8217;0&#8242; a 0. El código anterior muestra:
</p>
<pre>
  nombre: Víctor
  apellidos: Jiménez
  0: Otro Cero
  1: UUUUNO
  2: dos
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.capitangolo.net/Blog/?feed=rss2&#038;p=514</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>(25) playing with bash autocompletion</title>
		<link>http://www.capitangolo.net/Blog/?p=502</link>
		<comments>http://www.capitangolo.net/Blog/?p=502#comments</comments>
		<pubDate>Thu, 10 Mar 2011 11:21:59 +0000</pubDate>
		<dc:creator>golo</dc:creator>
				<category><![CDATA[Cómos]]></category>
		<category><![CDATA[Experimentos]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Paréntesis]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Warp]]></category>

		<guid isPermaLink="false">http://www.capitangolo.net/Blog/?p=502</guid>
		<description><![CDATA[Updated: as Blaxter notes, it&#8217;s necessary to open a new terminal after editing the bashrc file for the changes to take effect. Also, I&#8217;ve replaced the tail -n+2 with the -ss option. Thanks Baron Schwartz! One of the things I&#8217;ve been doing lately is doing some cleanup on my laptop. There are two things I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Updated:</strong> as <a href="http://bicosyes.com">Blaxter</a> notes, it&#8217;s necessary to open a new terminal after editing the <strong>bashrc</strong> file for the changes to take effect. Also, I&#8217;ve replaced the tail -n+2 with the -ss option. Thanks <a href="http://www.xaprb.com/">Baron Schwartz</a>!</p>
<p>One of the things I&#8217;ve been doing lately is doing some cleanup on my laptop.</p>
<p>There are two things I&#8217;m constantly using on the shell:</p>
<ul>
<li>Open a project folder</li>
<li>Connect to a MySQL Database</li>
</ul>
<h3>Bash Functions</h3>
<p>I first made a bash function to help me with the projects paths:</p>
<pre>
function cdp {
case $1 in
  "foo")
    cd /Users/golo/devel/svn/foo/src ;;
  "bar")
    cd /Users/golo/devel/svn/bar/src ;;
  *)
    echo "Options:"
    echo ""
    echo "  foo"
    echo "  bar"
esac
}
</pre>
<p>I placed that on my /etc/bashrc , so I write:</p>
<pre>
$ cdp foo
</pre>
<p>And it takes me to the foo project folder.</p>
<p>But, as I have lot of open projects, I have to remember &#8220;foo&#8221; and &#8220;bar&#8221;, or worse… ¡¡Write &#8220;foo&#8221; or &#8220;bar&#8221;!!</p>
<h3>Bash Autocompletion</h3>
<p>My Lazyness made me learn how to create bash autocompletions. This case is easy as executing &#8220;cdp&#8221; without parameters you get a list with all possible values. It&#8217;s easy to parse <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>The autocompletor should be placed on the file /etc/bash_completion.d/cdp with this content:</p>
<pre>
_cdp_show()
{
        local cur opts

        cur="${COMP_WORDS[COMP_CWORD]}"
        opts=$(cdp | tail -n+2)
        COMPREPLY=( $(compgen -W "${opts}" ${cur}) )
}
complete -F _cdp_show cdp
</pre>
<p><strong>opts</strong> stores all possible options (line per option), and <strong>cur</strong> stores the text to be autocompleted (not sure). <strong>compgen</strong> is a helper to create the autocompletion options, and <strong>complete</strong> is the command that does the autocompletion reading the <strong>COMPREPLY</strong> variable.</p>
<p>Now I get the following behavior:</p>
<pre>
$ cdp &lt;tab&gt;&lt;tab&gt;
foo    bar
$ cdp f&lt;tab&gt;
$ cdp foo
</pre>
<p>Oh! Amazin!</p>
<h3>MySQL Bash Autocompletion</h3>
<p>¿What can be more awesome than that? Let me guess… ¡Autocompletion for mysql command!</p>
<p>The goal is to get autocompletion for the mysql databases. No more writing…</p>
<pre>
$ mysql information_schema
</pre>
<p>For that, we need a list of all databases on a parseable format, let&#8217;s try with SHOW DATABASES:</p>
<pre>
$ mysql -e "SHOW DATABASES"
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
$ # Let's put this on a better format:
$ mysql -B -e "SHOW DATABASES"
Database
information_schema
mysql
performance_schema
$ # That's better, let's delete the table header:
$ mysql -B -ss -e "SHOW DATABASES"
information_schema
mysql
performance_schema
$ # We are ready! <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />
</pre>
<p>Disclaimer: I tried mysqlshow but doesn&#8217;t accepts the Batch format, also I have the user and password on my /etc/my.cnf so this trick is not suitable for production environments.</p>
<p>Let&#8217;s create an autocompletor mixing this command with what we already know. The result is the file /etc/bash_completion.d/mysql:</p>
<pre>
_mysql_show()
{
        local cur opts

        cur="${COMP_WORDS[COMP_CWORD]}"
        opts=$(mysql -B -ss -e "SHOW DATABASES;" )
        COMPREPLY=( $(compgen -W "${opts}" ${cur}) )
}
complete -F _mysql_show mysql
</pre>
<p>Now you can use &lt;tab&gt;:</p>
<pre>
$ mysql i&lt;tab&gt;
$ mysql information_schema
</pre>
<p>Hope it helps! Improvements are welcomed <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.capitangolo.net/Blog/?feed=rss2&#038;p=502</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>(6) Bautizo</title>
		<link>http://www.capitangolo.net/Blog/?p=497</link>
		<comments>http://www.capitangolo.net/Blog/?p=497#comments</comments>
		<pubDate>Fri, 18 Feb 2011 00:22:02 +0000</pubDate>
		<dc:creator>golo</dc:creator>
				<category><![CDATA[Experimentos]]></category>
		<category><![CDATA[Paréntesis]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.capitangolo.net/Blog/?p=497</guid>
		<description><![CDATA[Una de las cosas más complicadas de empezar un proyecto es bautizarlo. Parece mentira, pero empiezas a añadir condiciones, y luego es difícil encontrar un nombre: Que tenga varios dominios libres Que no se confunda con algo que ya exista (corolario) Que tenga pocos resultados en google Que tenga nombre libre en twitter Que sea [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas más complicadas de empezar un proyecto es bautizarlo.</p>
<p>Parece mentira, pero empiezas a añadir condiciones, y luego es difícil encontrar un nombre:</p>
<ul>
<li>Que tenga varios dominios libres</li>
<li>Que no se confunda con algo que ya exista</li>
<li>(corolario) Que tenga pocos resultados en google</li>
<li>Que tenga nombre libre en twitter</li>
<li>Que sea fácil de pronunciar / recordar</li>
<li>Que tenga algo de relación con el proyecto</li>
</ul>
<p>Después de estar todo el día buscando nombres, al final ¡¡¡¡lo he encontrado!!!!</p>
<h3><a href="http://www.boraboard.com">Bora Board</a></h3>
<p>Ahora sólo falta hacer el proyecto… <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.capitangolo.net/Blog/?feed=rss2&#038;p=497</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(5) Free Merluza</title>
		<link>http://www.capitangolo.net/Blog/?p=491</link>
		<comments>http://www.capitangolo.net/Blog/?p=491#comments</comments>
		<pubDate>Thu, 17 Feb 2011 00:10:15 +0000</pubDate>
		<dc:creator>golo</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[eBox]]></category>
		<category><![CDATA[Experimentos]]></category>
		<category><![CDATA[Paréntesis]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Warp]]></category>

		<guid isPermaLink="false">http://www.capitangolo.net/Blog/?p=491</guid>
		<description><![CDATA[No sabía cuántas cosas tenía pendientes en mi servidor hasta que me he puesto a mirarlo por dentro. Resulta que con la última actualización de ebox a zentyal, los repositorios de los proyectos dejaron de funcionar, entre otras cosas porque no actualicé la configuración del LDAP. Hoy he estado un buen rato actualizando los tracs [...]]]></description>
			<content:encoded><![CDATA[<p>No sabía cuántas cosas tenía pendientes en mi servidor hasta que me he puesto a mirarlo por dentro.</p>
<p>Resulta que con la última actualización de ebox a <a href="zentyal.org">zentyal</a>, los repositorios de los proyectos dejaron de funcionar, entre otras cosas porque no actualicé la configuración del <strong>LDAP</strong>. Hoy he estado un buen rato actualizando los tracs y reconfigurando la <strong>autenticación</strong>.</p>
<p>La configuración de los repositorios <strong>subversion</strong> la hago a través de apache. Poco ha cambiado desde que escribí <a href="http://www.capitangolo.net/Blog/?p=159">Cómo configurar apache para autenticar con el LDAP de Zentyal</a>, sólo he tenido que actualizar la contraseña y los nombres de dominio.</p>
<p>Sin embargo, me ha sido imposible volver a configurar <a href="http://trac.triangulodelasmerluzas.com/">los tracs</a> para que autentiquen correctamente. O yo no conseguía configurar los plugins que existen, o no funcionaban para la última versión de trac.</p>
<p>La solución ha sido sencilla (aunque no muy elegante). Utilizando el <a href="http://trac-hacks.org/wiki/AccountManagerPlugin">AccountManagerPlugin</a>, hay una opción para autenticar mediante una <a href="http://trac-hacks.org/wiki/AccountManagerPlugin/AuthStores#HttpAuthStore">ruta HTTP (HttpAuthStore)</a>. Lo que hace el servidor es llamar a una ruta http con el usuario y contraseña que da el usuario. Si la solicitud se lleva a cabo con éxito, el usuario está autenticado.</p>
<p>Perfecto! Como se configurar apache fácilmente para autenticar, puedo usar lo mismo para autenticar los tracs <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p><a href="http://trac.triangulodelasmerluzas.com/wp_themes"><img src="http://www.capitangolo.net/Blog/wp-content/uploads/2011/02/Wordpress-Themes.png" alt="Wordpress Themes" title="Wordpress Themes" width="300" height="48" class="aligncenter size-full wp-image-492" /></a></p>
<p>Lo otro que he hecho hoy es un paso previo a la remodelación del css de esta web. Consiste en liberar <a href="http://svn.triangulodelasmerluzas.com/wp_themes/">todos los temas de wordpress que he hecho hasta la fecha</a>. Utilizar un repositorio subversion me facilitará el actualizarlos, y ya de paso publico el código para quien quiera curiosear.</p>
<p>En fin… mañana más <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.capitangolo.net/Blog/?feed=rss2&#038;p=491</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(4) Nada</title>
		<link>http://www.capitangolo.net/Blog/?p=485</link>
		<comments>http://www.capitangolo.net/Blog/?p=485#comments</comments>
		<pubDate>Tue, 15 Feb 2011 23:16:32 +0000</pubDate>
		<dc:creator>golo</dc:creator>
				<category><![CDATA[Experimentos]]></category>
		<category><![CDATA[Paréntesis]]></category>

		<guid isPermaLink="false">http://www.capitangolo.net/Blog/?p=485</guid>
		<description><![CDATA[Nada&#8230; &#8230;eso es lo que he hecho hoy. Tarde o temprano tendría que llegar este día.]]></description>
			<content:encoded><![CDATA[<p>Nada&#8230;</p>
<div style="width: 300px; height: 300px; border: 1px solid #cccccc; margin: 0px auto;">
</div>
<p style="text-align: right;">
&#8230;eso es lo que he hecho hoy.
</p>
<p>Tarde o temprano tendría que llegar este día.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.capitangolo.net/Blog/?feed=rss2&#038;p=485</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>(3) sed valentín</title>
		<link>http://www.capitangolo.net/Blog/?p=478</link>
		<comments>http://www.capitangolo.net/Blog/?p=478#comments</comments>
		<pubDate>Mon, 14 Feb 2011 23:26:20 +0000</pubDate>
		<dc:creator>golo</dc:creator>
				<category><![CDATA[Paréntesis]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.capitangolo.net/Blog/?p=478</guid>
		<description><![CDATA[Hoy ha sido esa fiesta que consiste en demostrar tu amor abriendo la billetera. He aprovechado, y le he comprado a kimito unos cuchillos de cocina que nos hacían falta… ¡Soy todo un romántico! Aparte de comprar el regalo, me he dedicado a limpiar el servidor donde tengo alojado mi blog y otras cosillas. En [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.capitangolo.net/Blog/wp-content/uploads/2011/02/DSC01293.jpg"><img src="http://www.capitangolo.net/Blog/wp-content/uploads/2011/02/DSC01293-640x359.jpg" alt="Corazón" title="Corazón" width="640" height="359" class="aligncenter size-large wp-image-479" /></a></p>
<p>Hoy ha sido esa fiesta que consiste en demostrar tu <strong>amor</strong> abriendo la billetera. He aprovechado, y le he comprado a kimito unos <a href="http://yfrog.com/hshhsjuj">cuchillos de cocina</a> que nos hacían falta… ¡Soy todo un romántico!</p>
<p>Aparte de comprar el regalo, me he dedicado a limpiar el servidor donde tengo alojado mi blog y otras cosillas. En parte lo necesitaba para comenzar con un proyecto nuevo, y en parte forzado por <a href="http://twitter.com/eckelon">@eckelon</a>, que me ha pedido asilo cibernético.</p>
<p>Y es que los graciosos de <a href="1and1.es">1and1</a> le <strong>borraron</strong> un servidor por falta de pago… aunque sí que había pagado. Así, de golpe, ni desactivar por si acaso, ni nada. <a href="http://www.genbeta.com/imagen-digital/flickr-se-confunde-borra-todas-las-fotos-de-un-usuario-y-dice-que-no-las-podra-recuperar">Rollo Flickr</a> pero a lo bestia. Así que estoy haciendo un poco de hueco para que pronto pueda volver al mundo bloguero.</p>
<p>Una de las cosas que llevaba tiempo queriendo hacer ha sido actualizar mi script de actualización de las DNS. Veréis, uso <a href="http://www.zentyal.org/">Zentyal</a> para gestionar las DNS de mi dominio (y estoy bastante contento), peeeeero, tiene una pequeña limitación, y es que no acepta registros de tipo CNAME.</p>
<p>Así que este tipo de registros, los tengo que cambiar a mano en los archivos de configuración de bind. No es mucho problema, ya que con una línea se pueden añadir:</p>
<pre>echo "foobar              CNAME   foobar.foo.com." >> /etc/bind/db.example.org</pre>
<p>El problema estaba en que luego, tenía que editar a mano la línea del número de serie para que los servidores del mundo supieran que había cambiado mis dns. La línea es así:</p>
<pre>                        2011021417      ;serial number</pre>
<p>Hoy he tenido tiempo para poder automatizarlo, usando <strong>grep</strong> y <strong>sed</strong>. Ha quedado algo así (se aceptan mejoras <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) :</p>
<pre>

sernum=`cat $file_name | grep -o '[0-9]\{10\}\w*.;serial number' | grep -o '[0-9]\{10\}'`
sernum=$(($sernum+1))
cat $file_name | sed "/;serial number/s/\([0-9]\)\{10\}/$sernum/" > /tmp.db
cat /tmp.db > $file_name</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.capitangolo.net/Blog/?feed=rss2&#038;p=478</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>(2) TODO</title>
		<link>http://www.capitangolo.net/Blog/?p=451</link>
		<comments>http://www.capitangolo.net/Blog/?p=451#comments</comments>
		<pubDate>Sun, 13 Feb 2011 20:27:40 +0000</pubDate>
		<dc:creator>golo</dc:creator>
				<category><![CDATA[Paréntesis]]></category>

		<guid isPermaLink="false">http://www.capitangolo.net/Blog/?p=451</guid>
		<description><![CDATA[Como prometí ayer, hoy ha sido un día de relax. No he hecho mucho, pero he aprovechado el tiempo para organizar todo lo que quiero hacer: Una lista de tareas Una Aplicación que sea chula y se pueda enseñar Aprender a cocinar algo nuevo Aprender a programar para iOS Hacer deporte Mejorar el estilo de [...]]]></description>
			<content:encoded><![CDATA[<p>Como prometí ayer, hoy ha sido un día de relax.</p>
<p>No he hecho mucho, pero he aprovechado el tiempo para organizar todo lo que quiero hacer:</p>
<div style="color: #FCAF3E;">
<ul>
<li>Una lista de tareas</li>
<li>Una Aplicación que sea chula y se pueda enseñar</li>
<li>Aprender a cocinar algo nuevo</li>
<li>Aprender a programar para iOS</li>
<li>Hacer deporte</li>
<li>Mejorar el estilo de mi blog</li>
<li>Relanzar pasa.co</li>
<li>Dar una charla sobre algo en lo que soy experto</li>
<li>Dibujar algún cómic</li>
<li>Subir algún personaje del WOW a level 60 (o más)</li>
</ul>
</div>
<p>A ver si me da tiempo a todo <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.capitangolo.net/Blog/?feed=rss2&#038;p=451</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>(1) ColZgz</title>
		<link>http://www.capitangolo.net/Blog/?p=446</link>
		<comments>http://www.capitangolo.net/Blog/?p=446#comments</comments>
		<pubDate>Sun, 13 Feb 2011 03:38:21 +0000</pubDate>
		<dc:creator>golo</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Foto]]></category>
		<category><![CDATA[Paréntesis]]></category>

		<guid isPermaLink="false">http://www.capitangolo.net/Blog/?p=446</guid>
		<description><![CDATA[Hoy ha sido mi primer día de retiro espiritual. La mayor parte del día he cumplido con las tareas habituales del sábado: Compras, Comida familiar, Recados… Por la tarde hemos acudido al colzgz. Una quedada (o un intento) tuitera zaragozana, que consiste en quedar para realizar algún tipo de actividad casi bohemia. De ahí que [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.capitangolo.net/Blog/wp-content/uploads/2011/02/1.jpg"><img src="http://www.capitangolo.net/Blog/wp-content/uploads/2011/02/1-640x360.jpg" alt="ColZgz 1" title="(1)" width="640" height="360" class="aligncenter size-large wp-image-442" /></a></p>
<p>Hoy ha sido mi primer día de retiro espiritual.</p>
<p>La mayor parte del día he cumplido con las tareas habituales del sábado: Compras, Comida familiar, Recados… </p>
<p>Por la tarde hemos acudido al <strong>colzgz</strong>. Una quedada (o un intento) tuitera zaragozana, que consiste en quedar para realizar algún tipo de actividad <strong>casi</strong> bohemia. De ahí que el nombre sea casi cool, pero se queda en col. Esta vez la intención era dar una vuelta por la expo y por el parque del agua haciendo fotos, y para después echar unas partidas de Lasertag.</p>
<p>Peeeeeero, como nuestra <strong>organización</strong> es penosa y lo hemos preparado deprisa y corriendo, hemos estado cuatro gatos… literalmente. Lo que no ha evitado que me lo he pasara en grande <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<p>Nos hemos dado una vuelta por el recinto expo, un paseo nocturno altamente recomendable. Lo han dejado muy arreglado, y gran parte de las &#8220;atracciones&#8221; de la expo siguen en pie. Por ejemplo el bosque sónico o la fuente laberinto. Está todo muy bien iluminado, y esta iluminación da una visión diferente de la zona que si se va de día.</p>
<p><a href="http://www.twitter.com/dexteralberto">@DexterAlberto</a> me ha traído una dosis de droga pura, una lata de <strong>&#8220;Dr. Pepper&#8221;</strong>. Es una bebida de cereza, parecida a la cherry coke, a la que me volví adicto en los EE.UU y que es muy difícil de conseguir en España. Toda una sorpresa, mañana caerá <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Después de hacer muchas fotos, incluyendo experimentos, como <a href="http://www.flickr.com/search/?q=light+painting">Light Painting</a>, hemos tomado algo en una terraza del parque del agua (escandalizando al personal con nuestra conversación), a cenar, y p&#8217;a casa…</p>
<p>En fin, día: <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> …</p>
<p>A ver que me espera mañana… domingo… poco haré <img src='http://www.capitangolo.net/Blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.capitangolo.net/Blog/?feed=rss2&#038;p=446</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>()</title>
		<link>http://www.capitangolo.net/Blog/?p=432</link>
		<comments>http://www.capitangolo.net/Blog/?p=432#comments</comments>
		<pubDate>Fri, 11 Feb 2011 15:00:17 +0000</pubDate>
		<dc:creator>golo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Experimentos]]></category>
		<category><![CDATA[Paréntesis]]></category>
		<category><![CDATA[Warp]]></category>

		<guid isPermaLink="false">http://www.capitangolo.net/Blog/?p=432</guid>
		<description><![CDATA[Tras años de estudios, trabajo y mudanzas; mi montaña de proyectos sin acabar ha crecido y empieza a asustar. Por eso, hoy empiezo un perido de paréntesis. Voy a dedicarme, por cinco semanas, a hacer todo lo que llevo tiempo queriendo hacer. Proyectos, viajes, experimentos&#8230; lo que de tiempo. Parte de la experiencia consiste en [...]]]></description>
			<content:encoded><![CDATA[<p>Tras años de estudios, trabajo y mudanzas; mi montaña de <strong>proyectos sin acabar</strong> ha crecido y empieza a asustar.</p>
<p>Por eso, hoy empiezo un perido de <strong>paréntesis</strong>. Voy a dedicarme, por cinco semanas, a hacer todo lo que llevo tiempo queriendo hacer.</p>
<p><a href="http://www.capitangolo.net/Blog/wp-content/uploads/2011/02/Playa.jpg"><img src="http://www.capitangolo.net/Blog/wp-content/uploads/2011/02/Playa-1024x631.jpg" alt="" title="Playa" width="640" height="394" class="aligncenter size-large wp-image-433" /></a></p>
<p>Proyectos, viajes, experimentos&#8230; lo que de <strong>tiempo</strong>.</p>
<p>Parte de la experiencia consiste en <strong>documentar</strong> todo lo que haga. Así que estos días habrá bastante movimiento por el blog.</p>
<p>Tengo muchas ganas de empezar, aunque de momento será mejor que recupere el <strong>sueño</strong> acumulado.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.capitangolo.net/Blog/?feed=rss2&#038;p=432</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Acertijo Java (Solución)</title>
		<link>http://www.capitangolo.net/Blog/?p=418</link>
		<comments>http://www.capitangolo.net/Blog/?p=418#comments</comments>
		<pubDate>Fri, 27 Aug 2010 19:05:45 +0000</pubDate>
		<dc:creator>golo</dc:creator>
				<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Publicidad]]></category>
		<category><![CDATA[Warp]]></category>

		<guid isPermaLink="false">http://www.capitangolo.net/Blog/?p=418</guid>
		<description><![CDATA[A principios de mes proponía un Acertijo Java. ¿Qué sale por pantalla al ejecutar la clase FooBar? import static java.lang.System.*; public class FooBar { public FooBar() { out.print(" Instance "); } static { out.print(" Static "); } public static void main (String args) { out.print(" Main "); new FooBar(); } } Simplificando, lo que ocurre [...]]]></description>
			<content:encoded><![CDATA[<p>
A principios de mes proponía un <a href="http://www.capitangolo.net/Blog/?p=394">Acertijo Java</a>.
</p>
<p>
¿Qué sale por pantalla al ejecutar la clase FooBar?
</p>
<pre>
import static java.lang.System.*;
public class FooBar {
  public FooBar() {
    out.print(" Instance ");
  }
  static {
    out.print(" Static ");
  }
  public static void main (String args) {
    out.print(" Main ");
    new FooBar();
  }
}
</pre>
<p>
Simplificando, lo que ocurre es lo siguiente:
</p>
<ol>
<li> Se <strong>carga</strong> la clase FooBar en memoria </li>
<li> Se ejecutan los <strong>bloques estáticos:</strong> static{} </li>
<li> <strong>out.print(&#8221; Static &#8220;);</strong> está en un bloque estático </li>
<li> Una vez cargada la clase, ya se pueden ejecutar <strong>métodos estáticos</strong> como main </li>
<li> <strong>out.print(&#8221; Main &#8220;);</strong> está dentro del método main </li>
<li> Se crea una instancia de la clase FooBar en el método main </li>
<li> Para ello se ejecuta el <strong>constructor</strong> </li>
<li> <strong>out.print(&#8221; Instance &#8220;);</strong> está en el constructor </li>
</ol>
<p>
Siguiendo este razonamiento, la opción correcta sería la c: &#8220;Static Main Instance&#8221;.
</p>
<p>
La opción c parece correcta, <strong>pero no se llega a ejecutar el método main</strong>. Recordemos la firma que tiene que tener el método main para ser la entrada de un programa java:
</p>
<pre>
  public static void main (String[] args) {}
</pre>
<p>
Ha de ser esa o equivalente. ¿Ves la diferencia? El parámetro args tiene que ser un array [] de String, ya que representa los <strong>argumentos</strong> introducidos por línea de comandos. En la clase FooBar el parámetro args es simplemente un String.
</p>
<p>
Por ello, el código no se ejcutará. Java mostrará un error indicando que en la clase FooBar no existe un método main. Es por ello que <strong>la opción correcta era la f: No se ejecutará</strong>
</p>
<p>
En el día a día, un programador no sólo tiene que saber traducir ideas a código. En algunas ocasiones el código no se comporta como queremos y es cuando hay que buscar el <strong>detalle</strong>.
</p>
<p>
La agilidad con la que uno detecta pequeños detalles marca la <strong>diferencia</strong>. Algunos factores que afectan a esta agilidad son, la paciencia, saber escribir código claro, y sobre todo el <strong>conocimiento</strong> de las herramientas con las que uno trabaja.
</p>
<p>
Igual que hice en el otro post, animo a cualquiera a <a href="http://www.amazon.co.uk/dp/0071591060/" >ponerse a prueba estudiando</a> la certificación de Programador Java o acudir a uno de los <a href="http://warp.es/blog/2010/06/01/formacion-java-y-mysql-en-zaragoza-calendario-2010-2/">cursos oficiales que imparto</a>, es toda una experiencia.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.capitangolo.net/Blog/?feed=rss2&#038;p=418</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

