<?xml version="1.0" encoding="UTF-8"?>
<rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Javi Sanromán</title>
	
	<link>http://jsanroman.net</link>
	<description>Web and iOS developer. Freelance Software Developer.</description>
	<lastBuildDate>Tue, 07 Feb 2012 11:14:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/jsanroman" /><feedburner:info uri="jsanroman" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Compartir mysql con dropbox</title>
		<link>http://feedproxy.google.com/~r/jsanroman/~3/7uhYqyOjzoA/</link>
		<comments>http://jsanroman.net/2012/02/compartir-mysql-con-dropbox/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 11:10:42 +0000</pubDate>
		<dc:creator>jsanroman</dc:creator>
				<category><![CDATA[bd]]></category>

		<guid isPermaLink="false">http://jsanroman.net/?p=816</guid>
		<description><![CDATA[Hace bastante tiempo que además de tener mis proyectos versionados en bitbucket, muchos de ellos están sincronizados con dropbox. Esto me permite trabajar en cualquiera de los 2 equipos que utilizo habitualmente. Pero desde que trabajo de esta forma tengo &#8230; <a href="http://jsanroman.net/2012/02/compartir-mysql-con-dropbox/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hace bastante tiempo que además de tener mis proyectos versionados en bitbucket, muchos de ellos están sincronizados con dropbox. Esto me permite trabajar en cualquiera de los 2 equipos que utilizo habitualmente.<br />
Pero desde que trabajo de esta forma tengo la necesidad de compartir bbdd, mysql en la mayoría de los casos. La solución hasta este momento ha sido la típica con mysqldump e import, completamente inoperativa. Desde entonces busco la mejor forma de sincronizar las bbdd&#8217;s entre los 2 equipos, solo entre esos 2 equipos, solo en desarrollo.</p>
<h2>Servidor externo mysql</h2>
<p>Aunque es una opción, intento mantener la infraestructura de desarrollo mínima (por esto utilizo bitbucket y dropbox). Un servidor en mi red local no es viable, muchas veces necesito trabajar fuera de la oficina, y abrir puertos tampoco me lo planteo. Un servidor fuera de mi red local sería demasiado lento para desarrollo.</p>
<h2>Automatizar export/import de .sql</h2>
<p>Otra de las opciones que se me pasaron por la cabeza, desarrollar una serie de scripts que automáticamente exportaran bbdd&#8217;s a .sql cada X tiempo/evento y se almacenaran en dropbox, otros scripts detectarían que los .sql fueron modificados y los importarían. Parece demasiado jaleo todo, y sobre todo demasiado tiempo perdido :S.</p>
<h2>Almacenar ficheros nativos de determinadas bbdd mysql en dropbox</h2>
<p>Apuntando con un enlace simbolico. Por ejemplo:</p>
<blockquote><p>ln -s /opt/local/var/db/mysql5/dbtest /dropbox/var/mysql/dbtest</p></blockquote>
<p>Esto funcionaría perfecto para el motor <a href="http://es.wikipedia.org/wiki/MyISAM">MyISAM</a> ya que todos los datos que usa cada bbdd se almacenan en esos ficheros MYD, MYI, frm. Pero con innodb no es tan sencillo. En mysql hay <a href="http://dev.mysql.com/doc/refman/5.0/es/innodb-configuration.html">bastante información sobre este motor</a>:</p>
<ul>
<li>Lo primero sería utilizar el parámetro <em>innodb_file_per_table</em> en my.cnf para que innodb genere un .idb con la estructura de cada tabla en lugar de almacenarlo todo en el fichero ibdata1.</li>
<li>Configurar el parámetro <em>innodb_data_home_dir</em> para que almacene el fichero <em>ibdata1</em> en dropbox y este sea compartido por ambos servidores mysql.</li>
<li>Configurar el parámetro <em>innodb_log_group_home_dir</em> para que almacene los ficheros de log de innodb en mysql y también sean compartidos.</li>
</ul>
<p>Con esto, y apuntando las bbdd&#8217;s que necesitemos sincronizar a dropbox, en principio sería suficiente. Pero dentro del jaleo que supone todo esto y los posibles problemas que puede traer, hay uno que me ha llevado a tomar otra decisión. Y es que yo creo links simbólicos para apuntar solo ciertas bbdd&#8217;s que necesito sincronizar, no todas, pero ibdata1 y los logs siguen almacenando información de cada bbdd que utilice el motor innodb dentro del servidor mysql. Y puedo tener otras bbdd&#8217;s diferentes entre ambos servidores y que no necesito compartir, creo que produciría un autentico caos y no tardaría en corromper el espacio de tablas.</p>
<h2>2 configuraciones independientes de mysql, una en local otra en dropbox</h2>
<p>Así que finalmente esta es mi solución ya en modo pruebas desde hace una semana: <strong>2 configuraciones diferentes</strong>, que yo uso con 2 ficheros my.cnf diferentes, los cuales renombro cada vez que necesito cambiar de entorno:</p>
<ul>
<li><em>my.cnf.local</em>: Con esta configuración mis bbdd&#8217;s se almacenan en local (no están sincronizadas), todo igual que hasta ahora.</li>
<li><em>my.cnf.dropbox</em>: En esta otra configuración lo que hago es cambiar la variable datadir para almacenar todos los ficheros que genera mysql en dropbox y por lo tanto sí que están permanentemente sincronizadas.</li>
</ul>
<p>La pega de compartir el datadir entre 2 servidores mysql es que solo uno de ellos puede estar iniciado a la vez, pero en definitiva, esto es el antipatrón servidor. Si resulta ser operativo, seguiremos puliendo.</p>
]]></content:encoded>
			<wfw:commentRss>http://jsanroman.net/2012/02/compartir-mysql-con-dropbox/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://jsanroman.net/2012/02/compartir-mysql-con-dropbox/</feedburner:origLink></item>
		<item>
		<title>Resumen 2011 y objetivos para 2012</title>
		<link>http://feedproxy.google.com/~r/jsanroman/~3/B--ep-1mUnw/</link>
		<comments>http://jsanroman.net/2011/12/resumen-2011-y-objetivos-para-2012/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 17:14:52 +0000</pubDate>
		<dc:creator>jsanroman</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://jsanroman.net/?p=791</guid>
		<description><![CDATA[Este es el primer año que hago este ejercicio. Vista atrás y adelante para salir de la voragine diaria, coger algo de perspectiva y marcarse nuevos retos. Quizás en otro post comente más a fondo mis experiencias en el primer &#8230; <a href="http://jsanroman.net/2011/12/resumen-2011-y-objetivos-para-2012/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Este es el primer año que hago este ejercicio. Vista atrás y adelante para salir de la voragine diaria, coger algo de perspectiva y marcarse nuevos retos. Quizás en otro post comente más a fondo mis experiencias en el primer año de freelance.</p>
<p><strong>Repaso general a este 2011:</strong></p>
<ul>
<li>Ha sido el año de mi salida de zara.com y el comienzo aventurero como freelance. Y sigo, así no ha ido mal del todo.</li>
<li>Mi primer proyecto más o menos serio con iOS para adianteventures. Es un gustazo aprender de otros en nuevos proyectos.</li>
<li><a href="http://www.mitwiz.com">Mitwiz</a> sale de beta privada y publicamos (y seguimos publicando) una <a href="http://blog.mitwiz.com/tagged/novedades">saca de nuevas mejoras</a>.</li>
<li>Bastantes contactos con potenciales clientes. Creo que he conseguido identificar los proyectos marronazo total, ahora me falta identificar los proyectos molones <img src='http://jsanroman.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Ningún problema con clientes, aunque muchas tomas de contacto que no fructifican. Creo que he tenido demasiada cautela, pero sigamos así.</li>
<li>Participamos en abredatos con <a href="http://www.comoestaelpanorama.com">comoestaelpanorama.com</a>, quedamos en 4º posición y la experiencia no ha podido ser mejor, pena no haber podido asistir a Madrid a la entrega de premios.</li>
<li>Desastre total en cuanto a deporte: ni gym ni he conseguido realizar ningún otro deporte con mínima regularidad.</li>
</ul>
<p><strong>Y ahora lo bueno, objetivos para el 2012:</strong>
<ul>
<li>Comenzar a vender mitwiz. Sin duda una prioridad, y mucho trabajo por delante.</li>
<li>Continuar mejorando mis hábitos como freelance: horarios, paseos/distracciones, automatizar tareas rutinarias, y en general aprovechar mejor mi tiempo, trabajar menos vaya.</li>
<li>Continuar descubriendo rails. Conseguir mínimo 2 nuevos proyectos en rails, 1 está al caer, me falta otro así que ya sabeis <img src='http://jsanroman.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</li>
<li>Conseguir de una vez hacer TDD o algo que se le parezca. Al menos conseguir crear buenos tests y datos de prueba.</li>
<li>Cerrar con éxito mis 2 primeros proyectos de ecommerce como freelance, sin duda el reto para los próximos 6 meses.</li>
<li>Escribir más en este blog. Cada vez escribo menos y es que cada vez tengo menos tiempo.</li>
<li>Volver a participar en ¿abredatos 2012?.</li>
<li>Ser más activo en alguna de las comunidades que me interesan: rails, agilismo, opendata, ios.</li>
<li>Mejorar mi inglés, esta ya va tocando <img src='http://jsanroman.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> .</li>
<li>Volver a hacer deporte, gym y algún otro deporte con regularidad, btt seguro <img src='http://jsanroman.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</li>
</ul>
<p>Creo que estoy siendo demasiado optimista pero si no lo soy ahora ¿cuando?.</p>
]]></content:encoded>
			<wfw:commentRss>http://jsanroman.net/2011/12/resumen-2011-y-objetivos-para-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jsanroman.net/2011/12/resumen-2011-y-objetivos-para-2012/</feedburner:origLink></item>
		<item>
		<title>Mitwiz abre sus puertas</title>
		<link>http://feedproxy.google.com/~r/jsanroman/~3/5RAQUoEadEQ/</link>
		<comments>http://jsanroman.net/2011/11/mitwiz-abre-sus-puertas/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 14:16:10 +0000</pubDate>
		<dc:creator>jsanroman</dc:creator>
				<category><![CDATA[Proyectos]]></category>

		<guid isPermaLink="false">http://jsanroman.net/?p=745</guid>
		<description><![CDATA[Ya todos los usuarios registrados os habéis enterado a través del mail que enviamos hace unos cuantos días. Y muchos otros a través de las redes, el boca a boca, y nuestra insistencia personal a los mas allegados (esperamos que &#8230; <a href="http://jsanroman.net/2011/11/mitwiz-abre-sus-puertas/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ya todos los usuarios registrados os habéis enterado a través del <a href="http://us2.campaign-archive1.com/?u=8b765317685f3f169712fd20a&#038;id=4133088e74&#038;e=ecb627b6b0">mail que enviamos hace unos cuantos días</a>. Y muchos otros a través de las redes, el boca a boca, y nuestra insistencia personal a los mas allegados (esperamos que sin llegar a la pesadez <img src='http://jsanroman.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) para que probéis y nos reporteis sensaciones. Y eso, que solo me faltaba a mi, desde este mi humilde blog, decir eso de:</p>
<div style="text-align:center;">
<blockquote><p><strong><br />
<a href="http://blog.mitwiz.com/post/11366748306/fin-de-la-beta-privada-mitwiz-abre-para-todos-los" style="color:#DE4401;">¡Mitwiz está abierto de par en par!</a></strong></p></blockquote>
<p><img src="http://jsanroman.net/wp-content/uploads/2011/11/abre_mitwiz.png" alt="" title="Mitwiz" class="aligncenter size-medium wp-image-775" />
</div>
<p>A estas alturas no os voy a contar que es mitwiz. Para esto podeis echarle un vistazo al <a href="http://blog.mitwiz.com">blog</a> y al propio <a href="http://www.mitwiz.com">mitwiz</a>, debería quedar bastante clara la cosa, sino es así tenemos un problema no planteado hasta el momento <a href="mailto:info@mitwiz.com">¡ponte en contacto por favor!</a>.</p>
<p>De nuevo, esto no ha hecho mas que empezar. El camino por recorrer sigue siendo infinito, nos mantendremos firmes, creemos en el proyecto. Nos esperan un montón de <a href="http://blog.mitwiz.com/tagged/novedades">nuevas funcionalidades</a>, otros soportes, +integración con herramientas externas, mejoras en usabilidad, contenido, aspecto &#8230; y &#8230; alguna que otra sorpresa ya mismo ¡estad atentos!.</p>
<p>Nosotros seguimos actualizando semana a semana mejorandolo todo, y además mientras, nos divertimos de lo lindo <img src='http://jsanroman.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://jsanroman.net/2011/11/mitwiz-abre-sus-puertas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jsanroman.net/2011/11/mitwiz-abre-sus-puertas/</feedburner:origLink></item>
		<item>
		<title>Probando geoplugin.net desde ruby</title>
		<link>http://feedproxy.google.com/~r/jsanroman/~3/6RX2MUslXZk/</link>
		<comments>http://jsanroman.net/2011/07/probando-geoplugin-net-desde-ruby/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 11:24:16 +0000</pubDate>
		<dc:creator>jsanroman</dc:creator>
				<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jsanroman.net/?p=732</guid>
		<description><![CDATA[Ayer en un rato libre y tonto, estuve trasteando con ruby y el servicio de geolocalización por ip http://www.geoplugin.net. A la petición http://www.geoplugin.net/php.gp?ip=91.61.81.221 tenemos una respuesta del tipo: a:14:{s:14:"geoplugin_city";s:8:"Chemnitz";s:16:"geoplugin_region";s:6:"Saxony";s:18:"geoplugin_areaCode";s:1:"0";s:17:"geoplugin_dmaCode";s:1:"0";s:21:"geoplugin_countryCode";s:2:"DE";s:21:"geoplugin_countryName";s:7:"Germany";s:23:"geoplugin_continentCode";s:2:"EU";s:18:"geoplugin_latitude";s:15:"50.833301544189";s:19:"geoplugin_longitude";s:15:"12.916700363159";s:20:"geoplugin_regionCode";s:2:"13";s:20:"geoplugin_regionName";s:6:"Saxony";s:22:"geoplugin_currencyCode";s:3:"EUR";s:24:"geoplugin_currencySymbol";s:7:"&#8364;";s:27:"geoplugin_currencyConverter";d:0.68893261679999995283907310295035131275653839111328125;} Un objeto serializado al modo php. Depués de probar la gema &#8230; <a href="http://jsanroman.net/2011/07/probando-geoplugin-net-desde-ruby/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ayer en un rato libre y tonto, estuve trasteando con ruby y el servicio de geolocalización por ip <a href="http://www.geoplugin.net">http://www.geoplugin.net</a>. A la petición http://www.geoplugin.net/php.gp?ip=91.61.81.221 tenemos una respuesta del tipo:</p>
<pre class="code">
a:14:{s:14:"geoplugin_city";s:8:"Chemnitz";s:16:"geoplugin_region";s:6:"Saxony";s:18:"geoplugin_areaCode";s:1:"0";s:17:"geoplugin_dmaCode";s:1:"0";s:21:"geoplugin_countryCode";s:2:"DE";s:21:"geoplugin_countryName";s:7:"Germany";s:23:"geoplugin_continentCode";s:2:"EU";s:18:"geoplugin_latitude";s:15:"50.833301544189";s:19:"geoplugin_longitude";s:15:"12.916700363159";s:20:"geoplugin_regionCode";s:2:"13";s:20:"geoplugin_regionName";s:6:"Saxony";s:22:"geoplugin_currencyCode";s:3:"EUR";s:24:"geoplugin_currencySymbol";s:7:"&#8364;";s:27:"geoplugin_currencyConverter";d:0.68893261679999995283907310295035131275653839111328125;}
</pre>
<p>Un objeto serializado al modo php. Depués de probar la <a href="https://github.com/flori/json">gema json</a> y otros medios de <a href="http://www.skorks.com/2010/04/serializing-and-deserializing-objects-with-ruby/">serialización/deserialización</a>  de objetos ruby sin éxito, me encuentro con la gema <a href="http://www.aagh.net/files/ruby/php-serialize/doc/">php-serialize</a> que hace justo lo que necesito.</p>
<pre class="code">
      require 'php_serialize'
      geo_request = Net::HTTP.get_response(URI.parse("http://www.geoplugin.net/php.gp?ip="+request.remote_ip)).body
      geo_request=PHP.unserialize(ip)
      puts geo_request['geoplugin_latitude']
      puts geo_request['geoplugin_longitude']
</pre>
<p>Seguro que existen otras formas más eficientes de hacer lo mismo, pero por el momento me ha servido.</p>
]]></content:encoded>
			<wfw:commentRss>http://jsanroman.net/2011/07/probando-geoplugin-net-desde-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jsanroman.net/2011/07/probando-geoplugin-net-desde-ruby/</feedburner:origLink></item>
		<item>
		<title>Eliminando un commit local en mercurial</title>
		<link>http://feedproxy.google.com/~r/jsanroman/~3/Lr188OeVIDc/</link>
		<comments>http://jsanroman.net/2011/07/eliminando-un-commit-local-en-mercurial/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 10:42:41 +0000</pubDate>
		<dc:creator>jsanroman</dc:creator>
				<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[utilidades]]></category>

		<guid isPermaLink="false">http://jsanroman.net/?p=714</guid>
		<description><![CDATA[Desde hace un tiempo estoy usando bitbucket.org para mis proyectos, ¡y bien contento que estoy!. Ayer gracias a un commit en falso encontré este fantástico manual hg. Eliminar un commit de mercurial es tan sencillo como: hg strip revision_a_eliminar Pero &#8230; <a href="http://jsanroman.net/2011/07/eliminando-un-commit-local-en-mercurial/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Desde hace un tiempo estoy usando <a href="https://bitbucket.org/">bitbucket.org</a> para mis proyectos, ¡y bien contento que estoy!. Ayer gracias a un commit en falso encontré este <a href="http://hgbook.red-bean.com/read/mercurial-queues-reference.html#id446269">fantástico manual hg</a>. Eliminar un commit de mercurial es tan sencillo como:</p>
<pre class="code">
hg strip revision_a_eliminar
</pre>
<p>Pero para ejecutar este comando necesitamos activar la extension mq de mercurial. En mi caso, osx, solo he necesitado añadir al fichero .hgrc:</p>
<pre class="code">
[extensions]
mq=
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jsanroman.net/2011/07/eliminando-un-commit-local-en-mercurial/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://jsanroman.net/2011/07/eliminando-un-commit-local-en-mercurial/</feedburner:origLink></item>
		<item>
		<title>Participamos en el abredatos 2011, !¿Como está el panorama?¡</title>
		<link>http://feedproxy.google.com/~r/jsanroman/~3/ny8BmjGbKK4/</link>
		<comments>http://jsanroman.net/2011/05/participamos-en-el-abredatos-2011-%c2%bfcomo-esta-el-panorama%c2%a1/#comments</comments>
		<pubDate>Tue, 10 May 2011 16:54:03 +0000</pubDate>
		<dc:creator>jsanroman</dc:creator>
				<category><![CDATA[opendata]]></category>
		<category><![CDATA[Proyectos]]></category>

		<guid isPermaLink="false">http://www.jsanroman.net/?p=632</guid>
		<description><![CDATA[Este fin de semana hemos participado en abredatos 2011 con ¡¿comoestaelpanorama?¡. Mis compañero-cracks de aventura, Paula, Javi, Damián, con los que en su momento tuve el gustazo de trabajar/estudiar, pero con los que hacía mucho mucho tiempo que no colaboraba. &#8230; <a href="http://jsanroman.net/2011/05/participamos-en-el-abredatos-2011-%c2%bfcomo-esta-el-panorama%c2%a1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img style="float:right;" title="abredatos logo" src="http://www.abredatos.es/wp-content/themes/abredatos/images/layout/logo_2011.png" alt="" width="177" height="158" /></p>
<p>Este fin de semana hemos participado en <a title="abredatos" href="http://www.abredatos.es/">abredatos 2011</a> con <a title="¿Como está el panorama?" href="http://comoestaelpanorama.com/">¡¿comoestaelpanorama?¡</a>.</p>
<p>Mis compañero-cracks de aventura, <a href="http://twitter.com/#!/paf82">Paula</a>, <a href="http://twitter.com/#!/aliencanibal">Javi</a>, <a href="http://twitter.com/#!/nimrud">Damián</a>, con los que en su momento tuve el gustazo de trabajar/estudiar, pero con los que hacía mucho mucho tiempo que no colaboraba. Ha sido tooodo un placer volver a compartir code, proyecto y grata experiencia con ellos.</p>
<p><strong>Abredatos:</strong></p>
<p>Abredatos es un concurso (este año es la segunda edición), organizado por <a title="Pro Bono Público" href="http://blog.probp.org/">Pro Bono Público</a>, para darle un poco de bombo al movimiento <a title="opendata" href="http://es.wikipedia.org/wiki/Datos_abiertos">opendata</a> en España. Intentar que la sociedad sepa que es y porqué se necesita el opendata, y que a la administración pública le llegue un poquito de ruído, y poco a poco (así es como funcionan estas cosas) estas ideas vayan calando. El <a title="Bases abredatos" href="http://www.abredatos.es/bases/">concurso consiste en</a> el desarrollo de una aplicación en nada menos que 48h!, y que consulte al menos una fuente de datos pública. Al finalizar el concurso (el domingo a las 00:00), todo proyecto debía tener un repositorio público con los fuentes, y su proyecto accesible para todo el mundo.</p>
<p><strong>Nuestra participación:</strong></p>
<p>Una primera toma de contacto allá por el 3 de abril, y un par de semanas después estabamos los 4 personajes comprometidos para participar (<a title="Equipo 62 abredatos 2011" href="http://live.abredatos.es/teams/62">somos el equipo 62!</a>), Javi y Paula desde Londres, Damián desde Vigo, y <a href="http://twitter.com/#!/javisanroman">aquí un servidor</a> desde Gondomar (<a title="Gondomar" href="http://maps.google.es/maps?f=q&amp;source=s_q&amp;hl=es&amp;geocode=&amp;q=gondomar&amp;aq=&amp;sll=40.396764,-3.713379&amp;sspn=12.391454,28.54248&amp;ie=UTF8&amp;hq=&amp;hnear=Gondomar,+Pontevedra,+Galicia&amp;t=h&amp;z=13&amp;iwloc=A">vamos a ponerlo en el mapa</a>).</p>
<p>Las siguientes fueron unas semanas de reflexiones e idas de olla sobre que podíamos hacer, que queriamos hacer, y si podíamos hacerlo (es realmente difícil con los datos disponibles hoy en día). La idea del empleo siempre estuvo presente por la importancia que tiene ahora, pero no conseguiamos encontrar nada realizable en 48h, nos faltaban muuchos datos (ya, por eso existe el concurso y para eso participamos, para que cambie el panorama).</p>
<p>Además de la idea del empleo surgieron otras: apps para geolocalizar información variada, y siempre por la zona de Vigo-Pontevedra (farmacias, bibliotecas, ptos wifi, buses,&#8230;), apps que ofreciera de una forma mas accesible contrataciones/licitaciones de la Xunta de Galicia, e incluso surgió la idea de un juego en el que elegir un par de congresistas, muy curioso pues finalmente el <a href="http://live.abredatos.es/teams/49">equipo 48</a> desarrollo <a href="http://www.congresoabierto.com/">un proyecto muy parecido</a>, ¡y con un resultado fantástico!.</p>
<p><strong>Técnicamente:</strong></p>
<p>Después de plantear rails (sabeis que siento devoción por este entorno), Damián y yo llegamos a la conclusión de que ninguno tenía la experiencia suficiente como para llevar a cabo un desarrollo tan intenso, y enfrentarnos con éxito veloz a esos problemas que siempre acabas encontrando (sabemos como funciona esto, ley murphy etc etc). Así que nos decidimos por php y en este caso codeigniter, no somos los+cool pero ha cumplido a la perfección <img src='http://jsanroman.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Además usamos <a title="jquery" href="http://jquery.com/">jquery</a>, <a title="google maps" href="http://code.google.com/intl/es/apis/maps/">google maps api</a>, <a title="php-excell-reader" href="http://code.google.com/p/php-excel-reader/">php-excell-reader</a>, <a title="Web Fonts" href="http://www.google.com/webfonts">google web fonts</a>, <a title="Google Charts" href="http://chart.apis.google.com">google charts</a>, google geocode.</p>
<p>Las fuentes que usamos para el proyecto han sido: <a title="Estadísticas empleo redtrabaja" href="https://www.redtrabaja.es/es/redtrabaja/static/Redirect.do?page=statsMunicipios">estadísticas de empleo de redtrabaja</a>, <a href="http://www.ine.es/pob_xls/pobmun10.xls">estadísticas de población del ine</a>, y la api de <a title="opcionempleo" href="http://www.opcionempleo.com/">opcionempleo</a>.</p>
<p>Para versionar usamos git, alojando el código en github, <a title="código fuente comoestaelpanorama" href="https://github.com/jsanroman/comoestaelpanorama">podeís consultar los fuentes aqui</a>.</p>
<p><strong>El desarrollo:</strong></p>
<p>El desarrollo durante el fin de semana tuvo varias fases de optimismo/pesimismo desmedido, en este sentido ya es complicado encontrar el equilibrio en un proyecto internet, ¡cuanto mas en un proyecto internet de 48h!, y cuanto mas en un proyecto internet de 48h y cada cual en un lugar diferente.</p>
<p>Durante el fin de semana, como no, el parseo de datos fué lo que mas complicó todo el desarrollo. Hasta el sabado de madrugada no teníamos todavía datos reales, y las funcionalidades implementadas trabajaban contra datos de pruebas, ¡muuucha incertidumbre!. Con el primer parseo serio teníamos datos incongruentes, en España había mas de 8M de parados, la cosa está mal pero no para tanto <img src='http://jsanroman.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Estabamos sumando las ultimas filas de los xls con el sumatorio, lo cual duplicaba todos los datos, ¡llegamos a pensar que habíamos interpretado mal la fuente de datos!, todo se vivía de una forma muy intensa y eran las casi las 5 de la mañana después de dormir 4h escasas la madrugada del viernes. Finalmente detectamos el error y el domingo por la mañana realizamos otro parseo con éxito.</p>
<p>Una vez datos parseados, teníamos ccaa/provincias/municipios y datos estadísticos asociados, nos quedaba un problema por solucionar, geolocalizar cada uno de los 8113 municipios de nuestra bbdd. La opción mas sencilla era google y <a href="http://maps.google.com/maps/api/geocode/json?address=Vigo,ES">su servicio geocode</a>, pero a las 600-1000 peticiones eramos baneados. Los vecinos, un par de modems 3g y en el entorno de producción nuestras soluciones, así poco a poco fuímos geolocalizando de 1000 en 1000 +-.</p>
<p>Las últimas horas del domingo fueron para algunos detalles, necesitamos pantalla &#8220;<a href="http://comoestaelpanorama.com//c/sobre">sobre el proyecto</a>&#8220;, estadísticas en portada, ¿de donde quitamos los datos?, etc. <a title="¿Como está el panorama?" href="http://comoestaelpanorama.com">Finalmente esto es lo que ha dado de sí</a>, sabemos que tiene cosas por pulir pero amiguetes, han sido 48h.</p>
<p><strong>La experiencia:</strong></p>
<p>La experiencia ha sido muy enriquecedora. Volver a trabajar con mis compis, saber que puedes dar de ti en tan poco tiempo, como organizar o mejor dicho desorganizar un proyecto así en tan poco tiempo, ver a cada momento como avanzaban los demás equipos, tomar tantas decisiones y en tan poco tiempo para poder llegar a tener algo, y la repercusión final.</p>
<p>Como apunte y que defiendo desde hace ya tiempo, comentar que el teletrabajo funciona y muy bien (he aquí la prueba), pero a mi no me convence, por lo que la próxima vez que participe en algo así intentaré, al menos con la parte más técnica, hacerlo de forma presencial, se pasa mucho mejor <img src='http://jsanroman.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  y se transmite mas conocimiento.</p>
<p>Para rematar, felicitar desde este mi humilde espacio a <a title="equipos abredatos 2011" href="http://live.abredatos.es/teams">todos los equipos que han participado</a>, en serio, las trabas para desarrollarlos son enormes, y los proyectos son de una calidad excelente.</p>
]]></content:encoded>
			<wfw:commentRss>http://jsanroman.net/2011/05/participamos-en-el-abredatos-2011-%c2%bfcomo-esta-el-panorama%c2%a1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jsanroman.net/2011/05/participamos-en-el-abredatos-2011-%c2%bfcomo-esta-el-panorama%c2%a1/</feedburner:origLink></item>
		<item>
		<title>ruby1.9 y rails3 con rvm y passenger</title>
		<link>http://feedproxy.google.com/~r/jsanroman/~3/zxS1-8IyY0M/</link>
		<comments>http://jsanroman.net/2011/04/ruby19-y-rails3-con-rvm-y-passenger/#comments</comments>
		<pubDate>Fri, 22 Apr 2011 16:04:44 +0000</pubDate>
		<dc:creator>jsanroman</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[Sistemas]]></category>

		<guid isPermaLink="false">http://www.jsanroman.net/?p=612</guid>
		<description><![CDATA[Comentaba que uno de los caminos por los que me gustaría seguir es rails (ya veremos si lo consigo compaginar), así que en mi servidor de proyectos necesito servir rails además php. Quiero usar rails 3 y ruby 1.9 (de &#8230; <a href="http://jsanroman.net/2011/04/ruby19-y-rails3-con-rvm-y-passenger/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Comentaba que uno de los caminos por los que me gustaría seguir es rails (ya veremos si lo consigo compaginar), así que en mi servidor de proyectos necesito servir rails además php.</p>
<p>Quiero usar rails 3 y ruby 1.9 (de empezar, con lo último), parece que versiones demasiado nuevas para las últimas estables de la mayoría de distribuciones linux. Así que después de investigar un poco me encuentro con <a href="http://rvm.beginrescueend.com/">rvm</a> (ruby version manager, de este ya me había hablado @tothemario, un gestor de instalaciones ruby) y <a href="http://www.modrails.com">passenger</a> (un proyecto para servir rails a través de apache o nginx).</p>
<p>A través <a href="http://www.fangiotophia.com/journal/2010/8/31/random-act-of-stupidity-6-debian-rails-3-setup-guide.html">de este artículo</a> conseguí instalar rvm, no sin antes resolver varias dependencias:</p>
<pre class="code">
sudo apt-get install zlib1g zlib1g-dev zlibc build-essential
</pre>
<p>Como nota mental, recordar añadir la siguiente linea al final del fichero .bashrc</p>
<pre class="code">
[[ -s "/home/user/.rvm/scripts/rvm" ]] &#038;&#038; source "/home/user/.rvm/scripts/rvm"  # This loads RVM into a shell session.
</pre>
<p>Y ya podemos instalar la versión de ruby que necesitemos con <em>rvm install &#8220;version&#8221;</em> y cambiar de versión con <em>rvm use &#8220;version&#8221;</em>, realmente sencillo.</p>
<p>Rvm y las versiones de ruby instaladas se encuentran en <em>$HOME/.rvm</em> en caso de instalarse como usuario o en <em>/usr/local/rvm</em> en caso de una instalación con root.</p>
<p>A continuación toca la instalación de passenger:</p>
<pre class="code">
gem install passenger
passenger-install-apache2-module
</pre>
<p><em>passenger-install-apache2-module</em> nos guiará durante la instalación, nos pedirá que instalemos determinadas dependencias que no cumplimos, de todas las que propone la que nos puede dar problemas es: <em>apt-get install libopenssl-ruby</em>.</p>
<p>Como hemos instalado ruby a través de rvm, este no se entera del soporte openssl que passenger propone instalar mediante apt, así que instalamos openssl con rvm, y reinstalamos la versión de ruby necesaria:</p>
<pre class="code">
rvm package install openssl
rvm remove 1.9.2
rvm install 1.9.2 -C --with-openssl-dir=$HOME/.rvm/usr
</pre>
<p>Tras añadir las lineas respectivas a apache2.conf, ya tenemos rails3 funcionando en apache:</p>
<pre class="code">
LoadModule passenger_module $HOME/.rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/ext/apache2/mod_passenger.so
PassengerRoot $HOME/.rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5
PassengerRuby $HOME/.rvm/wrappers/ruby-1.9.2-p180/ruby
</pre>
<p>Finalmente intenté descargarme un proyecto privado desde github via http, para probar el entorno, pero la versión de git que tenía instalada (1.5) parece que da problemas con esta autenticación, así que buscando información actualizamos a la 1.7:</p>
<p>Añadimos el fuente de los backports al sources.list</p>
<pre class="code">
deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free
</pre>
<p>Y actualizamos la versión de git a la 1.7</p>
<pre class="code">
apt-get update
apt-get -t lenny-backports install git
</pre>
<p>Fuentes:</p>
<p><a href="http://beginrescueend.com/packages/openssl/">http://www.fangiotophia.com/journal/2010/8/31/random-act-of-stupidity-6-debian-rails-3-setup-guide.html</a><br />
<a href="http://beginrescueend.com/packages/openssl/"> http://beginrescueend.com/packages/openssl/</a><br />
<a href="http://rvm.beginrescueend.com/"> http://rvm.beginrescueend.com/</a><br />
<a href="http://serverfault.com/questions/157383/why-does-the-debian-lenny-git-package-not-install-git"> http://serverfault.com/questions/157383/why-does-the-debian-lenny-git-package-not-install-git</a><br />
<a href="http://www.modrails.com/documentation/Users%20guide%20Apache.html"> http://www.modrails.com/documentation/Users%20guide%20Apache.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jsanroman.net/2011/04/ruby19-y-rails3-con-rvm-y-passenger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jsanroman.net/2011/04/ruby19-y-rails3-con-rvm-y-passenger/</feedburner:origLink></item>
		<item>
		<title>Nueva aventura profesional, freelance</title>
		<link>http://feedproxy.google.com/~r/jsanroman/~3/hOfmxj9JiDI/</link>
		<comments>http://jsanroman.net/2011/03/nueva-aventura-profesional-freelance/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 11:56:59 +0000</pubDate>
		<dc:creator>jsanroman</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[freelance]]></category>

		<guid isPermaLink="false">http://www.jsanroman.net/?p=586</guid>
		<description><![CDATA[Casi año y medio ha sido el tiempo que he estado viviendo en Arteixo/Coruña, y trabajando en el equipo de ecommerce de zara.com. El reto y el proyecto mas gigantesco en el que he participado hasta ahora. Estar en el &#8230; <a href="http://jsanroman.net/2011/03/nueva-aventura-profesional-freelance/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Casi año y medio ha sido el tiempo que he estado viviendo en Arteixo/Coruña, y trabajando en el equipo de ecommerce de <a title="zara.com" href="http://zara.com/">zara.com</a>. El reto y el proyecto mas gigantesco en el que he participado hasta ahora.</p>
<p>Estar en el momento en el que Zara ha comenzado a vender por internet, viendo desde un almacén como a cada minuto que pasaba se  incrementaban los pedidos desbancando nuestras previsiones mas  optimistas, y ver como decenas de personas comenzaban a trabajar con un  proyecto en el que habías invertido tanto tiempo y esfuerzo meses atrás, ha sido una experiencia muy enriquecedora, inolvidable.</p>
<p>Pero, hacía ya varios meses que había tomado la decisión de abandonar el equipo, grandísimo equipo por cierto (personal y profesionalmente). Y desde hace mas tiempo todavía tenía ganas de emprender una nueva aventura, esta vez como freelance. Si no llega a ser por la aparición de zara.com estoy convenido de que la aventura habría comenzado antes.</p>
<p>A pesar de que mucha gente seguro que no entiende una decisión de este tipo, y en otros muchos casos no se ve con buenos ojos esta figura profesional, yo siento que es el momento de probar, me apetece, el tiempo ya me dirá si es una decisión correcta o si he de tomar otro camino, pero la mayoría de los que nos dedicamos a esta profesión tenemos el privilegio poder tomar una decisión así en algún momento, y yo la voy a aprovechar.</p>
<p>Soy consciente de que me tendré que enfrentar a multitud de problemas no conocidos hasta ahora, que la seguridad de cobrar a fin de mes se ha terminado, que lo de trabajar de 9:30 a 7 también (aunque este punto lo tengo superado). Pero a cambio, espero una aventura llena de nuevas oportunidades para hacer cosas, de nuevas relaciones profesionales (esta vez con clientes y colaboradores), y de aprender mucho sobre tantos temas que se nos escapan cuando únicamente tenemos que centrarnos en la parte mas técnica.</p>
<p>Y desde esa parte mas técnica, he sumado codeigniter a la lista de frameworks con los que estoy trabajando, a pesar de que hay cosas que todavía no me convencen del todo, cakephp me convence mucho menos (lo sé, me queda symphmy, zend y algún otro). Creo que haré un parentesis con j2ee, ya veremos cuanto dura. He terminado con <a href="http://twitter.com/tothemario">@tothemario</a> (que ha sido mi profesor de rails, ¡gracias!) el primer proyecto con rails, ¡me gusta mucho rails!, espero poder continuar por este camino. Y en breve espero comenzar a desarrollar con iOS de la mano de <a title="Adiante Ventures" href="http://www.adianteventures.com/es/">adianteventures</a> con los que estoy seguro que me lo pasaré muy bien colaborando en proyectos muy &#8220;chulos&#8221; <img src='http://jsanroman.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Como no, llegados a este punto tengo que hacer una mención especial a <a title="Mitwiz" href="http://www.mitwiz.com">mitwiz</a>, porque mitwiz sigue vivo, congelado los últimos meses debido a todos estos cambios y tantísimo trabajo, pero vivo. Y espero que ocupe un lugar privilegiado en esta nueva etapa de mi vida profesional. Ilusión y ganas desde luego no faltarán, aunque se necesitan otros factores para continuar un proyecto de este tipo y en nuestras circunstancias.</p>
<p>En fin, que mucho camino por andar, muchísimo mas por aprender, muchas aventuras por disfrutar y espero que las menos por sufrir. Estareis informados <img src='http://jsanroman.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://jsanroman.net/2011/03/nueva-aventura-profesional-freelance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://jsanroman.net/2011/03/nueva-aventura-profesional-freelance/</feedburner:origLink></item>
		<item>
		<title>Ha comenzado nuestra aventura con mitwiz.com</title>
		<link>http://feedproxy.google.com/~r/jsanroman/~3/uituD2x1yt0/</link>
		<comments>http://jsanroman.net/2010/11/ha-comenzado-nuestra-aventura-con-mitwizcom/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 14:35:25 +0000</pubDate>
		<dc:creator>jsanroman</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[mitwiz]]></category>

		<guid isPermaLink="false">http://www.jsanroman.net/?p=565</guid>
		<description><![CDATA[Hace algo mas de un año que @carlos y @yo comenzamos la aventura mitwiz. Nuestra principal motivación desde entonces cara este proyecto ha sido la convicción de que se podía ofrecer algo diferente para localizar eventos que nos interesan (mejor, &#8230; <a href="http://jsanroman.net/2010/11/ha-comenzado-nuestra-aventura-con-mitwizcom/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mitwiz.com"><img style="float:right;border:0px;" title="Logo mitwiz" src="http://www.mitwiz.com/img/mitwiz_logo.png" alt="" width="189" height="200" /></a></p>
<p>Hace algo mas de un año que <a href="http://twitter.com/_cprieto">@carlos</a> y <a href="http://twitter.com/javisanroman">@yo</a> comenzamos la aventura <a title="Mitwiz, Crea Busca y Comparte eventos" href="http://www.mitwiz.com/">mitwiz</a>. Nuestra principal motivación desde entonces cara este proyecto ha sido la convicción de que se podía ofrecer algo diferente para localizar eventos que nos interesan (mejor, peor o simplemente diferente a las alternativas actuales, eso lo diréis vosotros). Y nuestro principal y primer objetivo el de llegar a lanzar <a title="Mitwiz, Crea Busca y Comparte eventos" href="http://www.mitwiz.com">una beta privada</a> como la que desde hace un par de semanas podeis probar.</p>
<p>Este primer objetivo, a priori, puede no parecer muy ambicioso, pero lanzar este proyecto sin ningún tipo de financiación mas que la nuestra (imprescindible para la publicación) y compaginándolo con nuestro trabajo diario no ha sido tarea sencilla, y sabemos que nos queda lo más difícil. Muchas distracciones y muy poco tiempo tanto para desarrollar como para pensar sobre qué, y como debe ser <a title="Mitwiz, Crea Busca y Comparte eventos" href="http://www.mitwiz.com">mitwiz</a>. Y lo mas difícil, siempre lo mas difícil, intentar pasar a un segundo plano nuestras ideas accesorias, que aunque buenas, no son el alma de mitwiz.</p>
<p>Simplemente llegar al lanzamiento de esta beta privada para nosotros es un éxito (esperamos que solo el primero de muchos), que no hemos conseguido sino con ilusión, muchísimo esfuerzo, trabajo constante y confianza en nuestras ideas, factores que siempre han estado por encima de esos momentos de debilidad que existen a la hora de emprender cualquier tipo de proyecto.</p>
<p>Pero ¿que es mitwiz? os estareis preguntando. La mejor forma de saberlo es <a title="Mitwiz, Crea Busca y Comparte eventos" href="http://www.mitwiz.com">probándolo</a>, también podeis echar un vistazo al primer post en el <a title="Mitwiz Blog" href="http://mitwiz.blogspot.com">blog (http://mitwiz.blogspot.com)</a>. Pero como linea resumen, puedo deciros que queremos que mitwiz sea un sitio en el que podáis encontrar eventos que están cerca de vosotros, en el que podáis crear eventos públicos o privados, e invitar a vuestros amigos a eventos existentes o creados por vosotros, siempre de la forma más sencilla posible, y sin mas distracciones que los eventos.</p>
<p>Por supuesto, si quereis conocer <a title="Mitwiz, Crea Busca y Comparte eventos" href="http://www.mitwiz.com">el corazón de mitwiz</a> podeis pedirnos invitaciones. Todos los comentarios/sugerencias/reportes de errores, que podeís enviar a <a title="Soporte mitwiz" href="http://mitwiz.uservoice.com/forums/27653-mitwiz">http://mitwiz.uservoice.com</a>, serán de una gran ayuda, imprescindibles para que esto llegue a funcionar.</p>
<p>Por nuestra parte seguimos trabajando, tanto para resolver vuestras peticiones como en nuestras nuevas ideas, que esperamos que algún día, hagan de mitwiz vuestro sitio de referencia en la web a la hora de encontrar que hacer, en cualquier momento, y en cualquier lugar <img src='http://jsanroman.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://jsanroman.net/2010/11/ha-comenzado-nuestra-aventura-con-mitwizcom/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://jsanroman.net/2010/11/ha-comenzado-nuestra-aventura-con-mitwizcom/</feedburner:origLink></item>
		<item>
		<title>Aprendiendo a desarrollar con tests</title>
		<link>http://feedproxy.google.com/~r/jsanroman/~3/4wDOB7abDkk/</link>
		<comments>http://jsanroman.net/2010/07/aprendiendo-a-desarrollar-con-tests/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 21:29:28 +0000</pubDate>
		<dc:creator>jsanroman</dc:creator>
				<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.jsanroman.net/?p=557</guid>
		<description><![CDATA[El proyecto en el que trabajo actualmente es mi primera experiencia mas o menos seria con el desarrollo orientado a tests. Al principio los escribía después de implementar la funcionalidad requerida, pero por recomendación de un compañero pasé a escribirlos &#8230; <a href="http://jsanroman.net/2010/07/aprendiendo-a-desarrollar-con-tests/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>El proyecto en el que trabajo actualmente es mi primera experiencia mas o menos seria con el desarrollo orientado a tests. Al principio los escribía después de implementar la funcionalidad requerida, pero por recomendación de un compañero pasé a escribirlos antes (<a href="http://es.wikipedia.org/wiki/Desarrollo_guiado_por_pruebas">TDD</a>). Escribes el test que falla porque todavía no tienes implementada la funcionalidad que lo hace pasar, implementas la funcionalidad para que pase el test, y le das las vueltas que necesites a tu código (para hacerlo mas legible o eficiente) si el test pasa tu código es válido.</p>
<p>Cuesta iniciarse en esta forma de desarrollo, cuesta escribir buenos tests, cuesta mantenerlos, pero como se suele decir es una inversión con retorno y me estoy convenciendo de que estos son imprescindibles para profesionalizar en gran parte nuestro trabajo. Es mas, ahora me acuerdo de algunos proyectos en los que trabajé anteriormente y lo bien que nos habrían venido en el testeo de algunos procesos complejos, la de tiempo que habría ahorrado y sobre todo la tranquilidad que habría aportado al equipo.</p>
<p>De todas formas, aun tenemos algunas lagunas, por lo menos yo no tengo nada claro como se debe mantener un juego de datos coherente con el que hacer pasar los tests, sin que esto lleve mas tiempo que beneficio, por el momento tenemos 2 aproximaciones:<br />
- Almacenar con dbunit un juego de datos (xml, cvs, etc) con unos identificadores reservados (por ej de 1 a 500), e importarlos a BD cada vez que pasemos los tests.<br />
- Usar una BD independiente contra la que ejecutar los tests.<br />
Usaremos la segunda opción aunque insisto, no tengo una postura clara sobre el tema y no termina de convencerme.</p>
<p>Hay quien dice que lo mejor es tener los X registros que necesitamos en xml para cada test de forma independiente, solo esos X registros ni uno mas ni uno menos. Me gusta la idea de tener muy controlados los registros que pruebas y que todo el equipo los conozca, del identificador 1 al 20 entidad en Y estado, del 20 al 40 en Z estado etc etc.</p>
<p>Al final escribir y mantener tests y sus datos de prueba no es gratis, lleva tiempo y creo que no solo cuando empiezas, pero debes convecerte de que es la forma de garantizar un software de calidad, de desarrollar con tranquilidad sabiendo que si haces algo que afecte a otra parte del sistema te vas a enterar antes que tu cliente. No creo que se escriban tests para hacer el desarrollo mas rápido sino para hacerlo mejor.</p>
<p>Recomiendo especialmente un par de podcasts de javahispano sobre el tema:</p>
<p><a href="http://www.javahispano.org/contenidos.item.action?id=1985256&amp;menuId=JH_PODCASTS  ">http://www.javahispano.org/contenidos.item.action?id=1985256&amp;menuId=JH_PODCASTS</a></p>
<p><a href="http://www.javahispano.org/contenidos.item.action?id=6813316&amp;menuId=JH_PODCASTS">http://www.javahispano.org/contenidos.item.action?id=6813316&amp;menuId=JH_PODCASTS</a></p>
<p>Y habrá que seguir leyendo y buscar mas opiniones de gente con experiencia.</p>
]]></content:encoded>
			<wfw:commentRss>http://jsanroman.net/2010/07/aprendiendo-a-desarrollar-con-tests/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://jsanroman.net/2010/07/aprendiendo-a-desarrollar-con-tests/</feedburner:origLink></item>
	</channel>
</rss>

