<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><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>morenosan</title>
	
	<link>http://morenosan.com</link>
	<description>Un blog a velocidad absurda</description>
	<lastBuildDate>Sat, 23 Jan 2010 19:42:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Morenosan" /><feedburner:info uri="morenosan" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Instalación de Satchmo en varios cómodos pasos</title>
		<link>http://feedproxy.google.com/~r/Morenosan/~3/it-oewY7XUE/</link>
		<comments>http://morenosan.com/2010/01/23/instalacion-satchmo-comodos-pasos/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 19:42:47 +0000</pubDate>
		<dc:creator>morenosan</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://morenosan.com/?p=56</guid>
		<description><![CDATA[
Durante la última semana he estado trabajando en una tienda virtual basada en Satchmo. Satchmo es un framework para la creación de tiendas virtuales web, y que está basado a su vez en Django.
Hasta hace muy poco tiempo, preparar un entorno de desarrollo y un proyecto mínimo basado en Satchmo era una tarea titánica, que [...]]]></description>
			<content:encoded><![CDATA[<p><img class="right off" title="Tokyo International Forum" src="http://farm4.static.flickr.com/3056/2994703338_cf8a4a431c_m.jpg" alt="" width="160" height="240" /></p>
<p>Durante la última semana he estado trabajando en una tienda virtual basada en <a title="Satchmo" href="http://www.satchmoproject.com/" target="_blank">Satchmo</a>. Satchmo es un framework para la creación de tiendas virtuales web, y que está basado a su vez en <a title="Django" href="http://www.djangoproject.com/" target="_blank">Django</a>.</p>
<p>Hasta hace muy poco tiempo, preparar un entorno de desarrollo y un proyecto mínimo basado en Satchmo era una tarea titánica, que llevaba horas llenas de frustración y sufrimiento, durante las cuales la vida llegaba a no tener sentido y&#8230;en fin, ya me entendeis.</p>
<p>La situación ha cambiado radicalmente con la versión 0.9, liberada el pasado Octubre. Con esta nueva versión, la instalación de Satchmo se ha simplificado enormemente y la documentación ha mejorado notablemente. Todo esto ha hecho que, al menos en Ubuntu, la instalación se haya convertido en un simple proceso de 15 minutos, desde el comienzo hasta que puedes ver funcionando el proyecto mínimo para comenzar el desarrollo.</p>
<p>A continuación, y siguiendo con la vocación de servicio publico de este blog, detallaré los pasos para instalar un entorno de desarrollo con Satchmo. Las siguientes instrucciones se basan en Ubuntu, y han sido probadas en una máquina virtual con Ubuntu 8.04.3 LTS.</p>
<p>Coged papel y lápiz. Os espero.</p>
<p>El primer paso es instalar los paquetes necesarios para la instalación de Satchmo y todas sus dependencias.</p>
<p><code>sudo apt-get install python-setuptools python-dev build-essential python-imaging mercurial</code></p>
<p>A continuación instalaremos <a title="pip" href="http://pip.openplans.org/" target="_blank">pip</a>, <a title="virtualenv" href="http://virtualenv.openplans.org/" target="_blank">virtualenv</a>, <a title="virtualenvwrapper" href="http://www.doughellmann.com/projects/virtualenvwrapper/" target="_blank">virtualenvwrapper</a> y crearemos un virtualenv para nuestro entorno de desarrollo.</p>
<p><code>sudo easy_install pip<br />
sudo pip install virtualenv<br />
sudo pip install virtualenvwrapper<br />
mkdir ~/.virtualenvs<br />
source /usr/bin/virtualenvwrapper_bashrc<br />
mkvirtualenv satchmo<br />
</code></p>
<p>Añade la linea <code>source /usr/bin/virtualenvwrapper_bashrc</code> a tu .bashrc para tener virtualenvwrapper la próxima vez que te logees.</p>
<p>Si no conoces pip, virtualenv o virtualenvwrapper, te invito a que antes de seguir descubras que son, como funcionan, que ventajas ofrecen y por que son lo mejor desde el arroz con leche, en los siguientes articulos. Otros ya lo han explicado mejor de lo que yo lo haría.</p>
<ul>
<li><a title="Entorns de treball virtuals per Python" href="http://trespams.com/2009/02/12/entorns-de-treball-virtuals-python/" target="_blank">Entorns de treball virtuals per Python</a></li>
<li><a title="Working with virtualenv" href="http://arthurkoziel.com/2008/10/22/working-virtualenv/" target="_blank">Working with virtualenv</a></li>
<li><a title="Why I like pip" href="http://www.b-list.org/weblog/2008/dec/15/pip/" target="_blank">Why I like pip</a></li>
</ul>
<p>Esperaré aquí hasta que acabes. En serio.</p>
<p>Por último, solo queda instalar las dependencias y finalmente Satchmo.</p>
<p><code>pip install -r http://bitbucket.org/chris1610/satchmo/raw/tip/scripts/requirements.txt<br />
pip install -e hg+http://bitbucket.org/chris1610/satchmo/#egg=satchmo</code></p>
<p>Una vez terminado, solo resta crear un proyecto mínimo sobre el que comenzar a trabajar. Satchmo ya viene con un script que hace precisamente eso.</p>
<p><code>clonesatchmo.py --skel=/home/juan/.virtualenvs/satchmo/src/satchmo/satchmo/projects/skeleton</code></p>
<p>Por defecto, creará un proyecto llamado store en el directorio en el que te encuentres.</p>
<p>Ahora solo queda arrancar el servidor de desarrollo de Django para probar la tienda.</p>
<p><code>cd store<br />
python manage.py runserver</code></p>
<p>Seguro que has tardado menos de 15 minutos.</p>
<h4 style="font-size: 0.8em;">Imagen © <a href="http://www.flickr.com/photos/jamesjustin/">jamesjustin</a> Some Rights Reserved.</h4>
<img src="http://feeds.feedburner.com/~r/Morenosan/~4/it-oewY7XUE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morenosan.com/2010/01/23/instalacion-satchmo-comodos-pasos/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://morenosan.com/2010/01/23/instalacion-satchmo-comodos-pasos/</feedburner:origLink></item>
		<item>
		<title>Editar, Guardar y Recargar en Java</title>
		<link>http://feedproxy.google.com/~r/Morenosan/~3/fAauDnHmm5M/</link>
		<comments>http://morenosan.com/2010/01/16/editar-guardar-recargar-en-java/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 19:15:58 +0000</pubDate>
		<dc:creator>morenosan</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://morenosan.com/?p=50</guid>
		<description><![CDATA[
Después de bastante tiempo programando únicamente en Python y Django, hace año y medio cambié de trabajo. Desde entonces he vuelto a programar en Java, desarrollando aplicaciones y servicios web, así como coordinando a un equipo de programadores web.
Pronto me di cuenta de que el equipo seguía el siguiente ciclo a la hora de desarrollar:

Hacer [...]]]></description>
			<content:encoded><![CDATA[<p><img class="right off" title="Tokyo" src="http://farm3.static.flickr.com/2153/2103170121_3790408756_m.jpg" alt="" width="240" height="160" /><br />
Después de bastante tiempo programando únicamente en Python y Django, hace año y medio cambié de trabajo. Desde entonces he vuelto a programar en Java, desarrollando aplicaciones y servicios web, así como coordinando a un equipo de programadores web.</p>
<p>Pronto me di cuenta de que el equipo seguía el siguiente ciclo a la hora de desarrollar:</p>
<ul>
<li>Hacer cambio.</li>
<li>Compilar un WAR.</li>
<li>Copiar el WAR al servidor Tomcat local.</li>
<li>Reiniciar el servidor.</li>
<li>Iniciar una sesión de debug desde Eclipse.</li>
<li>Probar.</li>
</ul>
<p>Esto hacia que cada prueba supusiera, en el mejor de los casos, esperar 5 minutos desde que se hacia un cambio hasta que este se podía probar. Lo cual nos dejaba con una productividad, digamos que mejorable.</p>
<p>Desde entonces, hemos mejorado el entorno de desarrollo, de forma que ahora podemos modificar el código fuente Java en caliente e inmediatamente ver y depurar los cambios, sin necesidad de recompilar y recargar toda la aplicación, consiguiendo un flujo de trabajo más parecido al de Django o PHP.</p>
<p>El &#8220;secreto&#8221; (entre comillas, por que está más que descubierto) se basa en tener el servidor de aplicaciones empotrado, de modo que este pueda arrancarse como un programa Java en modo debug, desde Eclipse. De esta manera conseguimos que desarrollar una aplicación web sea, a efectos del flujo de trabajo, como programar una aplicación Java &#8220;local&#8221;, pudiendo aprovechar toda las herramientas que pone a nuestra disposición el IDE, como la compilación automática y el cambio en caliente del las clases compiladas.</p>
<p>Las únicas limitaciones del cambio en caliente son las propias de la especificación <a title="JPDA" href="http://java.sun.com/javase/technologies/core/toolsapis/jpda/" target="_blank">JPDA</a>. Esto es, la actualización en caliente solo funciona mientras se modifique el cuerpo de las funciones. Cualquier modificación en los parámetros de un método o en la definición de una clase nos obligará a reiniciar el servidor (aunque no tendremos que recompilar nada).</p>
<p>En la actualidad, usamos como servidor empotrado Jetty, a través del plugin de Eclipse <a title="run-jetty-run" href="http://code.google.com/p/run-jetty-run/" target="_blank">run-jetty-run</a>.</p>
<p>A la hora de usar Run-Jetty-Run tuvimos que resolver 2 problemas:</p>
<ul>
<li>El plugin no soporta JNDI de serie, aunque aplicando este pequeño <a title="parche" href="http://code.google.com/p/run-jetty-run/issues/detail?id=11" target="_blank">parche</a> se soluciona.</li>
<li>A los usuarios de Windows, Jetty les bloqueaba los ficheros estáticos (por ejemplo css o javascript) de modo que no podían modificaros mientras el servidor estuviera en marcha (gran problema). Quedó solucionado siguiendo las instrucciones de este <a title="ticket" href="http://code.google.com/p/run-jetty-run/issues/detail?id=7" target="_blank">ticket</a>.</li>
</ul>
<p>Únicamente en un proyecto, de características muy especiales, Jetty no fue capaz de ejecutar una aplicación. En este caso, tuvimos que usar un Tomcat empotrado. Gracias al código fuente y las instrucciones de <a title="onJava" href="http://onjava.com/pub/a/onjava/2002/04/03/tomcat.html" target="_blank">un artículo en onJava</a>, no tuvimos ningún problema en ejecutar un Tomcat desde Eclipse, consiguiendo el mismo efecto que con Jetty.</p>
<p>¿Por que usamos Jetty en lugar de Tomcat? Principalmente por que run-jetty-run es más fácil de configurar y está muy bien integrado con Eclipse. Ademas Jetty arranca casi de inmediato.</p>
<p>Si tu flujo de desarrollo en Java se parece al que he descrito al inicio de esta entrada, te aseguro que vale la pena que inviertas algo de tiempo en mejorarlo. No es difícil, y los beneficios son considerables.</p>
<h4 style="font-size: 0.8em">Imagen © <a href="http://www.flickr.com/photos/johnmueller/">Extra Medium</a> Some Rights Reserved.</h4>
<img src="http://feeds.feedburner.com/~r/Morenosan/~4/fAauDnHmm5M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morenosan.com/2010/01/16/editar-guardar-recargar-en-java/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://morenosan.com/2010/01/16/editar-guardar-recargar-en-java/</feedburner:origLink></item>
		<item>
		<title>Slowblogging</title>
		<link>http://feedproxy.google.com/~r/Morenosan/~3/xpKaHCfzDV4/</link>
		<comments>http://morenosan.com/2009/09/06/slowblogging/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 21:37:47 +0000</pubDate>
		<dc:creator>morenosan</dc:creator>
				<category><![CDATA[Varios]]></category>

		<guid isPermaLink="false">http://morenosan.com/?p=37</guid>
		<description><![CDATA[
El mundo se ha lanzado con devoción hacia el microblogging. Si no estas en Twitter contando lo que cenaste ayer y como está tu gato de la colitis, no eres nadie.
Técnicamente hablando, un blog con un ratio de actualizaciones como este no debería llamarse blog. Así que en lugar de disculparme por la falta de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/yangping/266840539/"><img class="right off" title="Tokyo Tower" src="http://farm1.static.flickr.com/108/266840539_364841256e_m_d.jpg" alt="Tokyo Tower" width="160" height="240" /></a></p>
<p>El mundo se ha lanzado con devoción hacia el microblogging. Si no estas en Twitter contando lo que cenaste ayer y como está tu gato de la colitis, no eres nadie.</p>
<p>Técnicamente hablando, un blog con un ratio de actualizaciones como este no debería llamarse blog. Así que en lugar de disculparme por la falta de actualizaciones, como haría cualquier otro blogger con algo de respeto por sus (pocos) lectores, he decidido crear una nueva tendencia dentro de Internet a la que, en un alarde de genialidad, he bautizado como <em>slowblogging</em>.</p>
<p>Entrar en el mundo del <em>slowblogging</em> es muy fácil. Solo necesitas un blog y actualizarlo una vez al año.</p>
<p>Si, ya se lo que estáis pensando. No funcionará. Pero lo mismo dijeron de los SMS y las subastas por internet.</p>
<p>¿No tienes tiempo de mantener tu blog como a ti te gustaría? Ahora ya no tienes por que sentirte avergonzado y culpable. ¡Únete el movimiento <em>slowblogger</em>!</p>
<p>Por cierto, apenas ceno y no tengo gato, así que podéis seguirme en <a title="http://twitter.com/morenosan" href="http://twitter.com/morenosan" target="_blank">twitter</a> con la tranquilidad de que os aburriré igual, pero de forma original, y no como lo hace todo el mundo.</p>
<h4 style="font-size: 0.8em">Imagen © <a href="http://flickr.com/photos/yangping/">MR+G</a> Some Rights Reserved.</h4>
<img src="http://feeds.feedburner.com/~r/Morenosan/~4/xpKaHCfzDV4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morenosan.com/2009/09/06/slowblogging/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://morenosan.com/2009/09/06/slowblogging/</feedburner:origLink></item>
		<item>
		<title>Un verano muy movido</title>
		<link>http://feedproxy.google.com/~r/Morenosan/~3/7BwM-zXIJBc/</link>
		<comments>http://morenosan.com/2008/09/06/un-verano-muy-movido/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 22:46:01 +0000</pubDate>
		<dc:creator>morenosan</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Varios]]></category>

		<guid isPermaLink="false">http://morenosan.com/2008/09/06/un-verano-muy-movido/</guid>
		<description><![CDATA[Mis fieles lectores (los dos), se habrán dado cuenta de que durante el verano, este blog, que nunca se ha sido un prodigio de actualizaciones, ha registrado exactamente 0 (cero) entradas. Y es que el verano ha sido muy movido, tanto en el plano familiar como laboral. En ambos casos todo han sido excelentes noticias, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://morenosan.com/wp-content/uploads/2008/09/natsu.jpg" ilo-full-src="http://morenosan.com/wp-content/uploads/2008/09/natsu.jpg" alt="Natsu" class="right off" />Mis fieles lectores (los dos), se habrán dado cuenta de que durante el verano, este blog, que nunca se ha sido un prodigio de actualizaciones, ha registrado exactamente 0 (cero) entradas. Y es que el verano ha sido muy movido, tanto en el plano familiar como laboral. En ambos casos todo han sido excelentes noticias, que han venido acompañadas de varios cambios mas o menos previstos. Todo ello ha provocado que casi no le haya quedado un momento de paz y tranquilidad a este que os escribe (a los dos).</p>
<p>Otros que han tenido un verano movido han sido los desarrolladores de <a href="http://www.djangoproject.com/" title="Django" target="_blank">Django</a>. Finalmente, después de más de tres años desde la publicación de su primera versión, y con unos últimos meses trabajando a un ritmo frenético, Django ha liberado su versión 1.0. Esta release marca un punto de inflexión importante, tanto para nosotros lo desarrolladores, que tenemos una API estabilizada, como para todos los que ven las versiones 0.x como arenas movedizas (y que en muchos casos son los que toman las decisiones). Lo cierto es que cuando Django fue publicado, ya era un framework muy potente, maduro y estable, y durante estos años solo ha hecho que mejorar en todos los aspectos.<br />
Por mi parte, solo puedo decir que después de mas de dos años usando la versión de desarrollo en más de una veintena de proyectos diferentes, Django es exactamente el framework web para perfeccionistas con deadlines que publicita su portada, y mucho mas. Desde aquí, solo me queda dar la enhorabuena a todos los que han hecho posible esta versión 1.0. ¡Muchas gracias!</p>
<p>Afortunadamente, entre tanto ajetreo, este verano he podido volver a disfrutar nuevamente de mi columnista favorito, el divertidísimo <a href="http://www.davebarry.com/" title="Dave Barry" target="_blank">Dave Barry</a>. Desde que hace unos años dejara de escribir su columna semanal en el <a href="http://www.miamiherald.com/living/columnists/dave-barry/" title="Miami Herald">Miami Herald</a>, Dave solo escribe en momentos muy puntuales, y este verano se está produciendo una conjunción de ellos de forma casi consecutiva. Gracias a las olimpiadas, y a las convenciones republicana y demócrata en Estados Unidos, durante las últimas semanas ha sido posible disfrutar de sus crónicas casi a diario. Menos mal que a mi otro columnista favorito, el gran <a href="http://blog.diariodemallorca.es/alazar" title="Matias Vallés">Matias Vallés</a>, se le puede leer regularmente sin tener que esperar a ningún acontecimiento en particular.</p>
<p>En resumen, este verano que ya termina ha sido inolvidable. Espero que en breve podamos volver a la programación habitual.</p>
<h4 style="font-size: 0.8em">Imagen ©<a href="http://flickr.com/photos/skyseeker//">skyseeker</a> Some Rights Reserved.</h4>
<img src="http://feeds.feedburner.com/~r/Morenosan/~4/7BwM-zXIJBc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morenosan.com/2008/09/06/un-verano-muy-movido/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://morenosan.com/2008/09/06/un-verano-muy-movido/</feedburner:origLink></item>
		<item>
		<title>Requiem en Akihabara</title>
		<link>http://feedproxy.google.com/~r/Morenosan/~3/N6UGSEY5UIk/</link>
		<comments>http://morenosan.com/2008/06/12/requiem-en-akihabara/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 19:46:13 +0000</pubDate>
		<dc:creator>morenosan</dc:creator>
				<category><![CDATA[Japón]]></category>

		<guid isPermaLink="false">http://morenosan.com/2008/06/12/requiem-en-akihabara/</guid>
		<description><![CDATA[El pasado domingo, un demente llevó cabo a una masacre en el barrio de Akihabara, en Tokio, acabando con la vida de 7 personas e hiriendo a otra decena antes de ser reducido por la policía. El suceso ha conmocionado a todo el país.
Akihabara es el llamado barrio de la electrónica de Tokio. Aunque en [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://morenosan.com/wp-content/uploads/2008/06/akiba.jpg" alt="Akihabara" class="right off" />El pasado domingo, un demente llevó cabo a una masacre en el barrio de Akihabara, en Tokio, acabando con la vida de 7 personas e hiriendo a otra decena antes de ser reducido por la policía. El suceso ha conmocionado a todo el país.<br />
Akihabara es el llamado barrio de la electrónica de Tokio. Aunque en los últimos años, muchas de las grandes cadenas de tiendas de electrónica han abierto centros impresionantes en otros puntos de la ciudad, Akihabara sigue siendo el lugar por excelencia al que todavía hay que ir si quieres cualquier producto electrónico al mejor precio, sobre todo en sus tiendas más pequeñas. Akihabara es también la meca de los aficionados al manga, al anime y los videojuegos.<br />
Los domingos. la Chuo Dori, la calle principal del barrio, se corta al trafico y se llena de gente en busca de todo tipo de aparatos electrónicos, otakus a la caza de su mango o anime favorito y por supuesto muchísimos turistas en busca de gangas &#8220;Made in Japan&#8221;. Por la tarde, la calle es tomada por cosplayers y aprendices de idol, que casi siempre micrófono en mano (esto es Japón) cantan, mientras sus fans bailan las coreografías más estrafalarias.<br />
Me ha dolido especialmente que una desgracias así haya sucedido en Akihabara, una de mis lugares favoritos de Tokio, y por el que he paseado infinidad de veces. Cuando viviamos en Tokio, un paseo por Akihabara empezaba casi siempre un par de estaciones antes, en Ueno. Siempre comprábamos alguna cosa en el mercado de Ameyoko para después bajar andando hasta Akihabara.<br />
Me ha impresionado especialmente las fotos de la Chuo Dori llenas de ambulancias, policías y regueros de sangre en el asfalto. Es la última imagen que uno espera ver en Akihabara, pero que seguramente se me venga a la cabeza la próxima vez que vaya a Tokio y un Domingo por la tarde salga a dar un paseo por el barrio.</p>
<h4 style="font-size: 0.8em">Imagen ©<a href="http://www.flickr.com/photos/ivva/">ivva</a>Some Rights Reserved.</h4>
<img src="http://feeds.feedburner.com/~r/Morenosan/~4/N6UGSEY5UIk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://morenosan.com/2008/06/12/requiem-en-akihabara/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://morenosan.com/2008/06/12/requiem-en-akihabara/</feedburner:origLink></item>
	</channel>
</rss>
