<?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>//barrabarra</title>
	<atom:link href="http://barrabarra.es/feed/" rel="self" type="application/rss+xml" />
	<link>http://barrabarra.es</link>
	<description>Programación web y escritorio</description>
	<lastBuildDate>Wed, 25 Jan 2012 17:27:16 +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>DimScreen</title>
		<link>http://barrabarra.es/2012/01/25/dimscreen/</link>
		<comments>http://barrabarra.es/2012/01/25/dimscreen/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 17:25:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[app]]></category>

		<guid isPermaLink="false">http://barrabarra.es/?p=800</guid>
		<description><![CDATA[Aplicación para dispositivos Android. Esta sencilla pero potente aplicación permite al usuario ahorrarse batería y molestias evitando que el dispositivo apague su pantalla y se bloquee. Gracias a esto, se puede configurar el tiempo de iluminación de la pantalla al mínimo y una vez se cumpla DimScreen reducirá al mínimo el brillo y mantendrá la [...]]]></description>
			<content:encoded><![CDATA[<p>Aplicación para dispositivos Android.</p>
<p>Esta sencilla pero potente aplicación permite al usuario ahorrarse batería y molestias evitando que el dispositivo apague su pantalla y se bloquee.</p>
<p>Gracias a esto, se puede configurar el tiempo de iluminación de la pantalla al mínimo y una vez se cumpla DimScreen reducirá al mínimo el brillo y mantendrá la pantalla en reposo, con lo que se evita perder la página se estaba leyendo, la conversación que estabas manteniendo, etc.</p>
<p>También ayudará a conservar los maltrechos botones de encendido/apagado que en algunos dispositivos son tan delicados.</p>
<p><a href="http://market.android.com/details?id=es.barrabarra.dimscreen"><br />
<img src="http://www.android.com/images/brand/60_avail_market_logo2.png" alt="Available in Android Market" /><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://barrabarra.es/2012/01/25/dimscreen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sittic S.L. Artes Gráficas</title>
		<link>http://barrabarra.es/2012/01/25/sittic-s-l-artes-graficas/</link>
		<comments>http://barrabarra.es/2012/01/25/sittic-s-l-artes-graficas/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 17:10:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Trabajo]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://barrabarra.es/?p=783</guid>
		<description><![CDATA[Página web y área de acceso para clientes de Sittic S.L. Desde su sede en San Fernando de Henares (Madrid) dirigen su negocio de artes gráficas en el que son especialistas en trabajos de impresión de gran formato. Su nueva web, además de ser completamente dinámica, incluye un área para facilitar la comunicación y los [...]]]></description>
			<content:encoded><![CDATA[<p>Página web y área de acceso para clientes de Sittic S.L.</p>
<p>Desde su sede en San Fernando de Henares (Madrid) dirigen su negocio de artes gráficas en el que son especialistas en trabajos de impresión de gran formato.</p>
<p>Su nueva web, además de ser completamente dinámica, incluye un área para facilitar la comunicación y los procesos de trabajo con sus clientes, permitiéndoles solicitar presupuestos, ver el progreso de sus trabajos, enviar ficheros mediante formularios, arrastrando los archivos desde el ordenador al navegador, mediante Dropbox o mediante cuentas de FTP. Todo ello automatizado para facilitar al máximo el desarrollo de su actividad.</p>
<p>El sitio ha sido desarrollado teniendo en cuenta las nuevas tendencias en diseño fluido y se adapta a cada dispositivo en el que se consulta, ya sea PC de sobremesa, tablet o móvil.</p>
]]></content:encoded>
			<wfw:commentRss>http://barrabarra.es/2012/01/25/sittic-s-l-artes-graficas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django no traduce algunos formularios/modelos/cadenas</title>
		<link>http://barrabarra.es/2011/11/03/django-no-traduce-algunos-formulariosmodeloscadenas/</link>
		<comments>http://barrabarra.es/2011/11/03/django-no-traduce-algunos-formulariosmodeloscadenas/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 10:49:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[traducción]]></category>

		<guid isPermaLink="false">http://barrabarra.es/?p=771</guid>
		<description><![CDATA[Esta es cortita. Django incorpora unas grandes herramientas para traducir los sitios a diversos idiomas, pero hay un pequeño pero: todo debe estar en el mismo idioma base y luego incorporar las traducciones necesarias. Esto lo he descubierto después de estar unas pocas de horas rebuscando por qué había algunos formularios y cadenas que no [...]]]></description>
			<content:encoded><![CDATA[<p>Esta es cortita.</p>
<p>Django incorpora unas grandes herramientas para traducir los sitios a diversos idiomas, pero hay un pequeño pero: todo debe estar en el mismo idioma base y luego incorporar las traducciones necesarias.</p>
<p>Esto lo he descubierto después de estar unas pocas de horas rebuscando por qué había algunos formularios y cadenas que no se mostraban correctamente en inglés y sólo aparecían en español.<br />
La clave estaba en que los formularios eran parte de una aplicación antigua que había incluido en  el proyecto (ya sabes, don&#8217;t repeat yourself) y estaban integramente en español. Así que he tenido que pasarlo a inglés y crear el archivo de traducciones a español como para el resto de aplicaciones.</p>
]]></content:encoded>
			<wfw:commentRss>http://barrabarra.es/2011/11/03/django-no-traduce-algunos-formulariosmodeloscadenas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generar distintos CSSs para versiones de escritorio y móvil con SASS</title>
		<link>http://barrabarra.es/2011/09/28/generar-distintos-csss-para-versiones-de-escritorio-y-movil-con-sass/</link>
		<comments>http://barrabarra.es/2011/09/28/generar-distintos-csss-para-versiones-de-escritorio-y-movil-con-sass/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 18:42:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Sass]]></category>

		<guid isPermaLink="false">http://barrabarra.es/?p=754</guid>
		<description><![CDATA[En los últimos trabajos que he realizado he utilizado &#8220;diseños sensibles&#8221; (responsive design en inglés) para que las webs se adaptaran a los dispositivos en los que iban a ser vistos. Así, ver la web en una pantalla de gran tamaño como puede ser la de un ordenador o un televisor mostraba la versión normal [...]]]></description>
			<content:encoded><![CDATA[<p>En los últimos trabajos que he realizado he utilizado &#8220;diseños sensibles&#8221; (responsive design en inglés) para que las webs se adaptaran a los dispositivos en los que iban a ser vistos.</p>
<p>Así, ver la web en una pantalla de gran tamaño como puede ser la de un ordenador o un televisor mostraba la versión normal extendida, mientras que había otras versiones con imágenes de menor tamaño o con el contenido en una única columna en lugar de dividirlo en 2 para netbooks y por último versiones especialmente reducidas para facilitar la navegación en smartphones y no utilizar muchos datos.</p>
<p>Pero me quedaba la espinita de que realmente no le daba la opción al usuario de ver la versión &#8220;completa&#8221; si así lo quería, y no quería seguir así, de modo que en el proyecto que tengo entre manos actualmente he utilizado dos herramientas estupendas para esto:</p>
<ul>
<li><a href="https://github.com/gregmuellegger/django-mobile">django-mobile</a></li>
<li><a href="http://sass-lang.com/">Sass y compass</a></li>
</ul>
<p>De Sass ya hablé un poco en una <a href="http://barrabarra.es/2011/09/26/instalar-y-configurar-un-entorno-virtual-con-django-y-compass-para-utilizar-sass/">entrada anterior</a>, pero gracias a <a href="https://twitter.com/#!/TheSassWay">@TheSassWay</a> sigo alucinando con lo potente que es. La base de Sass es que permite crear ficheros con reglas a partir de otros ficheros más pequeños a los que se llama partials.</p>
<p>Un fichero full.scss puede ser así:</p>
<div>
<pre>@import "partials/more";
@import "partials/global";
@import "partials/default";
@import "partials/tablet";
@import "partials/mobile";
@import "partials/wide-mobile";
@import "partials/high-px-ratio";</pre>
</div>
<p>Y otro fichero desktop.scss ser así:</p>
<div>
<pre>@import "partials/more";
@import "partials/global";
@import "partials/default";</pre>
<p>Los archivos _more.scss, _global.scss y _default.scss serán los mismos, y cuando se les pase el intérprete Compass, se generarán dos archivos distintos full.css y desktop.css con tan sólo los contenidos de los parciales indicados. <strong>Sólo se compilan los archivos *.scss que no tienen un _ como inicio del nombre, y pueden tenerse tantos archivos *.scss como se necesiten</strong>. ¿No es una maravilla? No había pensado en que se podían crear varios hasta que no me lo indicó <a href="https://twitter.com/#!/TheSassWay">@TheSassWay</a> :-D</p>
<p>¿Qué se consigue con esto? Evidentemente, tienes un css &#8220;sensible&#8221; y uno no sensible para la versión completa. Por defecto mostramos el &#8220;sensible&#8221;, pero si no piden expresamente la versión completa de la web, podremos servirla sin tener que andarnos copiando el css generado y eliminando líneas (que era lo que hacía hasta el consejo de <a href="https://twitter.com/#!/TheSassWay">@TheSassWay</a> U_U)</p>
<p>Ahora sólo queda servir el css apropiado. Para eso utilizaremos Django-mobile. Django-mobile entiende de &#8220;sabores&#8221; y por defecto interpreta las peticiones mediante un middleware y las clasifica en &#8220;full&#8221; o &#8220;mobile&#8221;. Yo lo he modificado para incluir también un sabor &#8220;tablet&#8221;.</p>
<p>Mirando un poco la documentación, nos encontramos con que en nuestras plantillas podemos utilizar la variable <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">{{ flavour }}</span> para identificar qué &#8220;sabor&#8221; se está sirviendo. Y además podemos elegir el sabor manualmente añadiendo un parámetro GET a la url del tipo <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">?flavour=full</span></p>
<p>Con lo que en nuestra plantilla podemos añadir algo del tipo:</p>
<pre>{% if flavour != 'full' %}
    &lt;a href="?flavour=full"&gt;Ver versión estándar&lt;/a&gt;
{% else %}
    &lt;a href="?flavour=mobile"&gt;Ver versión móvil&lt;/a&gt;
{% endif %}</pre>
<p>para cambiar el &#8220;sabor&#8221; actual y variar el CSS que se sirve con:</p>
<pre>{% if flavour == "full" %}
    &lt;link rel="stylesheet" type='text/css' href="{{ STATIC_URL }}css/desktop.css?v=2"&gt;
{% else %}
    &lt;link rel="stylesheet" type='text/css' href="{{ STATIC_URL }}css/full.css?v=2"&gt;
{% endif %}</pre>
<p>en la sección &lt;head&gt; de nuestra plantilla base.</p>
<p>Además de para esto, también aprovecho django-mobile para generar imágenes de distinto tamaño gracias a <a href="http://thumbnail.sorl.net/">sorl-thumbnail</a> según vayan a servirse a un dispositivo u a otro, o para ocultar completamente alguna sección.</p>
<p>Por ejemplo, en un listado de productos no tiene sentido para un móvil que se conecta a la web vía 3G descargar fotos de 1024&#215;682 pixels, cuando para el diseño sensible que se ha utilizado basta con una imagen 240&#215;160: consumo de datos que se ahorra el visitante y página que carga más rápido con algo como:</p>
<pre>{% load thumbnail %}

&lt;div id="work_list"&gt;
    {% for work in object_list %}
            &lt;div class="work"&gt;
            &lt;a href="{{ work.get_absolute_url }}"&gt;
                {% if flavour == "mobile" %}
                    {% thumbnail work.main_image "240x160" crop="center" as img %}
                    &lt;img src="{{ img.url }}" alt="{{ work.name }}" height="{{ img.height }}" width="{{ img.width }}" /&gt;
                    {% endthumbnail %}
                {% else %}{% if flavour == "tablet" %}
                    {% thumbnail work.main_image "640x426" crop="center" as img %}
                    &lt;img src="{{ img.url }}" alt="{{ work.name }}" height="{{ img.height }}" width="{{ img.width }}" /&gt;
                    {% endthumbnail %}
                {% else %}
                    {% thumbnail work.main_image "1024x682" crop="center" as img %}
                    &lt;img src="{{ img.url }}" alt="{{ work.name }}" height="{{ img.height }}" width="{{ img.width }}" /&gt;
                    {% endthumbnail %}
                {% endif %}{% endif %}
            &lt;/a&gt;
            &lt;a class="product" href="{{ work.product.get_absolute_url }}"&gt;{{ work.product }}&lt;/a&gt;
            &lt;/div&gt;
    {% endfor %}
&lt;/div&gt;</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://barrabarra.es/2011/09/28/generar-distintos-csss-para-versiones-de-escritorio-y-movil-con-sass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crear entrada ARP permanente en Router Comtrend AR-5381u BCM96328</title>
		<link>http://barrabarra.es/2011/09/27/crear-entrada-arp-permanente-en-router-comtrend-ar-5381u-bcm96328/</link>
		<comments>http://barrabarra.es/2011/09/27/crear-entrada-arp-permanente-en-router-comtrend-ar-5381u-bcm96328/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 11:31:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://barrabarra.es/?p=747</guid>
		<description><![CDATA[Esta semana he estado en casa de mis padres hasta el lunes, aprovechando que venía mi hermano con su chiquillo y el lunes al ponerme a trabajar me hacía falta acceder a ciertas cosas del pc de casa. Habitualmente lo que hago es encender el pc remotamente con Wol Wake On Lan Wan y luego accedo [...]]]></description>
			<content:encoded><![CDATA[<p>Esta semana he estado en casa de mis padres hasta el lunes, aprovechando que venía mi hermano con su chiquillo y el lunes al ponerme a trabajar me hacía falta acceder a ciertas cosas del pc de casa.</p>
<p>Habitualmente lo que hago es encender el pc remotamente con <a href="https://market.android.com/details?id=com.benfinnigan.wol">Wol Wake On Lan Wan</a> y luego accedo normalmente por ssh, pero esta vez no había manera. Lo intenté varias veces, comprobé que Dyndns.org tenía la IP a la que apuntaba actualizada y nada, no pude encenderlo ni acceder. Al final resolví lo que necesitaba de otra forma pero el asunto me dejó con la mosca detrás de la oreja.</p>
<p>Hace un momento me he puesto a mirar y ya he descubierto lo que ha ocurrido: la semana pasada reinicié el router</p>
<p>Por lo visto al hacerlo se resetea la tabla ARP del router, que cuando vuelve a encender ni la mantiene ni la restaura, así que el pc no podía responder a las llamadas de despertador porque no se las pasaba el router. Para volver a dejar la entrada permanente en el router, hay que acceder a él por telnet y hacer:</p>
<pre>arp add IP.DEL.PC DIR.ECC.ION.MAC</pre>
<p>Al entrar en la administración web del router, en Device Info, ARP, se ve que la entrada para esa IP ha cambiado de Complete a Permanent, así que sólo queda acordarse de volver a realizar el cambio tras cada reinicio.</p>
]]></content:encoded>
			<wfw:commentRss>http://barrabarra.es/2011/09/27/crear-entrada-arp-permanente-en-router-comtrend-ar-5381u-bcm96328/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Instalar y configurar un entorno virtual con Django y Compass para utilizar SASS</title>
		<link>http://barrabarra.es/2011/09/26/instalar-y-configurar-un-entorno-virtual-con-django-y-compass-para-utilizar-sass/</link>
		<comments>http://barrabarra.es/2011/09/26/instalar-y-configurar-un-entorno-virtual-con-django-y-compass-para-utilizar-sass/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 08:51:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Sass]]></category>
		<category><![CDATA[virtualenv]]></category>

		<guid isPermaLink="false">http://barrabarra.es/?p=741</guid>
		<description><![CDATA[Guía breve para instalar y configurar Django + Compass bajo un entorno virtual en Archlinux. En primer lugar me parece una herramienta indisplensable VirtualEnv y la utilidad virtualenvwrapper, que nos permitirá tener nuestros entornos de desarrollo separados para cada proyecto. Por lo tanto lo primero es instalarlo: sudo pacman -Sy python-virtualenvwrapper Una vez descargado e [...]]]></description>
			<content:encoded><![CDATA[<p>Guía breve para instalar y configurar Django + Compass bajo un entorno virtual en Archlinux.</p>
<p>En primer lugar me parece una herramienta indisplensable VirtualEnv y la utilidad virtualenvwrapper, que nos permitirá tener nuestros entornos de desarrollo separados para cada proyecto. Por lo tanto lo primero es instalarlo:</p>
<pre>sudo pacman -Sy python-virtualenvwrapper</pre>
<p>Una vez descargado e instalado, vamos a configurar el entorno creando la carpeta ~/.envs y añadiendo a nuestro ~/.bashrc las líneas</p>
<pre>export WORKON_HOME=~/.envs
source /usr/bin/virtualenvwrapper.sh<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;"> </span></pre>
<p>Refresca la terminal (source ~/.bashrc) y ya podemos empezar a utilizar nuestros entornos separados. Fácil ¿no?<br />
Vamos a crear un primer entorno:</p>
<pre>mkvirtualenv -p /usr/bin/python2.7 --no-site-packages nombre</pre>
<p>El parámetro -p nos permitirá indicarle qué versión de Python debe usarse, útil si tienes versiones más antiguas en servidores en producción que no puedes actualizar y debes instalar el entorno de desarrollo con las mismas características. El otro parámetro &#8211;no-site-packages indica al entorno que no utilice el directorio site-packages general del sistema operativo. Con eso tendremos entornos limpios y verdaderamente independientes. Por último se le indica el nombre del entorno.</p>
<p>Hecho eso nos movemos a nuestro entorno simplemente con:</p>
<pre>workon nombre</pre>
<p>Ya está. Si te fijas, el prompt habrá cambiado a algo parecido a (nombre)usuario@maquina ~ $, el (nombre) denota que estamos dentro del entorno virtual. Vamos a empezar a instalar programas:</p>
<pre>pip install django hg+https://bitbucket.org/slafs/django-compass</pre>
<p>Añadimos django-compass a nuestras INSTALLED_APPS y para utilizar compass y poder generar nuestro css a partir de SASS vamos a instalar ruby</p>
<pre>sudo pacman -S ruby</pre>
<p>Y configurarlo para que instale las gemas en el directorio de nuestro entorno virtual, añadiendo al archivo ~/.envs/postactivate las líneas:</p>
<pre>export GEM_HOME=$VIRTUAL_ENV/gems
export GEM_PATH=""</pre>
<p>A continuación, salimos y volvemos a entrar al entorno para que tenga en cuenta los últimos cambios: esto se hace con los comandos &#8220;deactivate&#8221; y &#8220;workon nombre&#8221; de nuevo. Y ya podemos instalar las gemas compass y compass-less-plugins (que me parece un maravilloso framework para poder obtener diseños &#8220;responsivos&#8221;)</p>
<pre>gem install compass compass-less-plugin</pre>
<p>Hay un problemilla con compass-less-plugin y es que creo que no se registra correctamente, así que vamos a ~/.envs/nombre/gems/compass-(version)/frameworks y creamos la carpeta less, dentro de ella pegamos las carpetas stylesheets y templates de ~/.envs/nombre/gems/compass-less-plugin-(version).<br />
Y ahora tenemos que configurar compass para que trabaje en las carpetas que queramos:</p>
<pre>~/.envs/nombre/gems/bin/compass create -r less estilos --using less
mv estilos/sass sass
mv estilos/config.rb config.rb
rm -rf estilos</pre>
<p>Abre config.rb y adáptalo a la configuración particular de tu proyecto. Configuraremos también el settings.py de nuestro proyecto añadiendo algo como:</p>
<pre>COMPASS_INPUT = os.path.join(SITE_ROOT, 'static_media', 'sass') # adáptalo
COMPASS_OUTPUT = os.path.join(SITE_ROOT, 'static_media', 'css') # adáptalo
COMPASS_STYLE = 'compact'
COMPASS_EXECUTABLE = '/home/javi/.envs/nombre/gems/bin/compass'</pre>
<p>Por último, sólo queda arrancar el servidor de pruebas y poner compass en modo vigilante para compilar los cambios que hagamos a los archivos .scss automáticamente:</p>
<pre>En una terminal: python manage.py runserver
En otra: python manage.py compass watch</pre>
<p><strong>Fuentes:</strong><br />
Este artículo se basa en la estupenda exposición &#8220;<a href="http://ontwik.com/django/responsive-web-design-with-django-compass-and-the-less-framework/">Responsive web design with Django, Compass and the Less framework</a>&#8220;, de Idan Gazit en la DjangoCon 2011</p>
]]></content:encoded>
			<wfw:commentRss>http://barrabarra.es/2011/09/26/instalar-y-configurar-un-entorno-virtual-con-django-y-compass-para-utilizar-sass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Si no se sirven los estáticos, seguramente es porque no hay aplicación para servir estáticos</title>
		<link>http://barrabarra.es/2011/09/24/si-no-se-sirven-los-estaticos-seguramente-es-porque-no-hay-aplicacion-para-servir-estaticos/</link>
		<comments>http://barrabarra.es/2011/09/24/si-no-se-sirven-los-estaticos-seguramente-es-porque-no-hay-aplicacion-para-servir-estaticos/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 08:36:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://barrabarra.es/?p=722</guid>
		<description><![CDATA[Vamos con uno de esos problemas estúpidos que te hacen perder una cantidad de tiempo impresionante. Ahora mismo llevaba desde las 8 intentando resolver un problema relacionado con el estupendo FeinCMS y es que cuando cambiaba en settings.py el atributo DEBUG a False se producía un error 500 al intentar acceder a los archivos estáticos y me [...]]]></description>
			<content:encoded><![CDATA[<p>Vamos con uno de esos problemas estúpidos que te hacen perder una cantidad de tiempo impresionante. Ahora mismo llevaba desde las 8 intentando resolver un problema relacionado con el estupendo <a href="https://github.com/matthiask/feincms">FeinCMS</a> y es que cuando cambiaba en settings.py el atributo DEBUG a False se producía un error 500 al intentar acceder a los archivos estáticos y me mostraba la plantilla estándar de error 500 de apache.</p>
<p>Casualmente, existía un problema con FeinCMS y mod_wsgi que hacía que se debieran realizar ciertos ajustes en servidores de producción al cambiar DEBUG = False y es a mensajes referentes a ese problema a los que he ido a parar primero, así que me he tirado buena parte del principio de la mañana probando a cambiar el orden de aplicaciones en INSTALLED_APPS, a precargar módulos en el urls.py base, a modificar el archivo de configuración de wsgi, y varias ocurrencias más, sin embargo, todo seguía igual: intentaba acceder a los estáticos y obtenía un error 500.</p>
<p>El problema realmente era que estaba viendo el error pero no me estaba parando a entenderlo. El error en cuestión era:</p>
<pre>VariableDoesNotExist: Failed lookup for key [feincms_page] in (variables de entorno variadas)</pre>
<p>Claro, hacía referencia a <strong>feincms_page</strong> y yo piqué y seguí buscando el error por ahí, pero el problema era más enrevesado.</p>
<p>Como estaba cansado de revisar los logs en el servidor, se me ocurrió que podía modificar la plantilla de errores 500 para que mostrara el error cada vez, y esto hizo que se me encendiese por fin la bombilla ¿por qué estaba viendo la plantilla por defecto de Apache si yo tenía una plantilla &#8220;bonita&#8221; para los errores 404 y 500? Abrí las plantillas y ahí estaba la primera parte del problema: estaba extendiendo otra plantilla que usaba un templatetag al que se le pasaba una variable <strong>feincms_page</strong>. Cambié la plantilla de base y ahora sí aparecían mis plantillas de error.</p>
<p>Pero seguía siendo extraño. Ahora no recibía un error 500, sino un 404 cuando intentaba acceder a los estáticos. ¿Estamos locos ahora o qué? Si los estáticos no los debería servir Apache sino NGINX O_o?<br />
A revisar la configuración del settings para MEDIA_URL, STATIC_URL y ADMIN_MEDIA_PREFIX (extrañamente, media y admin funcionaban correctamente). Pues no, todo está bien. Vamos a ver TEMPLATE_CONTEXT a ver si he incluído &#8216;django.core.context_processors.static&#8217;; sí, si que está.</p>
<p>Ya no se me ocurría qué más hacer. Rastreé por el servidor a ver si las carpetas y enlaces simbólicos estaban bien&#8230; todo correcto.<br />
Por último decido ir al panel de control de Webfaction a ver si hay algún problema en cómo tengo configurada la web y ¡Zas! en toda la boca: no había añadido a la web la aplicación static ni la ruta desde la que se servía, por eso al intentar acceder a los estáticos me respondía Apache y no intentaba servir los estáticos, sino páginas del cms U_U.</p>
<p>Pongo la captura como ejemplo de configuración de sitio en Webfaction: una aplicación django + 3 aplicaciones symbolic_link a static content only que apuntan a los medios de django admin y a los estáticos y media propios de nuestro proyecto:</p>
<p style="text-align: center;"><a href="http://barrabarra.es/wp-content/uploads/2011/09/webfaction-site-config-sittic.png"><img class="size-full wp-image-730 aligncenter" title="webfaction site config sittic" src="http://barrabarra.es/wp-content/uploads/2011/09/webfaction-site-config-sittic.png" alt="" width="600" height="230" /></a></p>
<p>Así que:</p>
<ol>
<li>Revisar las plantillas más básicas, como la base.html y las de error si se muestran las páginas de error estándar de Apache en lugar de las tuyas.</li>
<li>Revisar que se han creado todas las aplicaciones y que se han añadido todas con sus rutas a la web en el panel.</li>
<li>&#8230;</li>
<li>Profit!</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://barrabarra.es/2011/09/24/si-no-se-sirven-los-estaticos-seguramente-es-porque-no-hay-aplicacion-para-servir-estaticos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programa de gestión para proveedores de joyería</title>
		<link>http://barrabarra.es/2011/09/14/programa-de-gestion-para-proveedores-de-joyeria/</link>
		<comments>http://barrabarra.es/2011/09/14/programa-de-gestion-para-proveedores-de-joyeria/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 16:29:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Trabajo]]></category>

		<guid isPermaLink="false">http://barrabarra.es/?p=663</guid>
		<description><![CDATA[Desarrollado especialmente para Juan Carlos Girón distribuidor y proveedor de artículos de joyería. La aplicación permite gestionar artículos, imprimir etiquetas con códigos de barra, leer dichas etiquetas para preparar facturas y gestionar clientes, facturas y albaranes.]]></description>
			<content:encoded><![CDATA[<p>Desarrollado especialmente para Juan Carlos Girón distribuidor y proveedor de artículos de joyería.</p>
<p>La aplicación permite gestionar artículos, imprimir etiquetas con códigos de barra, leer dichas etiquetas para preparar facturas y gestionar clientes, facturas y albaranes.</p>
]]></content:encoded>
			<wfw:commentRss>http://barrabarra.es/2011/09/14/programa-de-gestion-para-proveedores-de-joyeria/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joyería Relojería Gómez</title>
		<link>http://barrabarra.es/2011/08/03/joyeria-relojeria-gomez/</link>
		<comments>http://barrabarra.es/2011/08/03/joyeria-relojeria-gomez/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 13:55:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Trabajo]]></category>

		<guid isPermaLink="false">http://barrabarra.es/?p=633</guid>
		<description><![CDATA[Tienda online para Joyería Relojería Gómez. Con dos tiendas físicas en Azuaga y Don Benito directamente desde la web pueden ofrecer sus productos a toda España. La tienda incluye carro de compra, posibilidad de elegir diferentes direcciones y métodos de envío para varios artículos, pasarela de pagos (Paypal, Transferencia bancaria y tarjetas de crédito), cuentas [...]]]></description>
			<content:encoded><![CDATA[<p>Tienda online para Joyería Relojería Gómez.</p>
<p>Con dos tiendas físicas en Azuaga y Don Benito directamente desde la web pueden ofrecer sus productos a toda España.</p>
<p>La tienda incluye carro de compra, posibilidad de elegir diferentes direcciones y métodos de envío para varios artículos, pasarela de pagos (Paypal, Transferencia bancaria y tarjetas de crédito), cuentas de usuario/clientes y contenido social (Facebook, Twitter y Google+)</p>
]]></content:encoded>
			<wfw:commentRss>http://barrabarra.es/2011/08/03/joyeria-relojeria-gomez/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tropicopter</title>
		<link>http://barrabarra.es/2011/07/01/tropicopter/</link>
		<comments>http://barrabarra.es/2011/07/01/tropicopter/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 11:58:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Destacados]]></category>
		<category><![CDATA[Trabajo]]></category>

		<guid isPermaLink="false">http://barrabarra.es/?p=600</guid>
		<description><![CDATA[Página de información y reservas para rutas turísticas, desplazamientos y excursiones en Helicóptero en la provincia de Granada.]]></description>
			<content:encoded><![CDATA[<p>Página de información y reservas para rutas turísticas, desplazamientos y excursiones en Helicóptero en la provincia de Granada.</p>
]]></content:encoded>
			<wfw:commentRss>http://barrabarra.es/2011/07/01/tropicopter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

