<?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>Enchufa2 &#187; OS / Software</title>
	<atom:link href="http://www.enchufa2.es/archives/category/os-software/feed" rel="self" type="application/rss+xml" />
	<link>http://www.enchufa2.es</link>
	<description>Blog personal que empezó como un proyecto y terminó como una afición. En él hablo de todo lo que me interesa: tecnología, ciencia, ordenadores, internet, comunicaciones, seguridad, política, música, curiosidades, etc.</description>
	<lastBuildDate>Thu, 02 Feb 2012 07:15:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Grrrmbfhlx&#8230;!</title>
		<link>http://www.enchufa2.es/archives/grrrmbflx.html</link>
		<comments>http://www.enchufa2.es/archives/grrrmbflx.html#comments</comments>
		<pubDate>Fri, 29 Jul 2011 08:00:46 +0000</pubDate>
		<dc:creator>Iñaki</dc:creator>
				<category><![CDATA[Frases / Citas]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[OS / Software]]></category>

		<guid isPermaLink="false">http://www.enchufa2.es/?p=2661</guid>
		<description><![CDATA[La blasfemia es el único lenguaje que de verdad conocen todos los programadores. (Sexto postulado sobre la programación de Troutman. Más tonterías no menos ciertas en la página correspondiente de Wikiquote.) Contenido extraído de Enchufa2.es: Grrrmbfhlx&#8230;!.]]></description>
			<content:encoded><![CDATA[<p class="frase">La blasfemia es el único lenguaje que de verdad conocen todos los programadores.</p>
<p>(<strong>Sexto postulado sobre la programación de Troutman</strong>. Más tonterías no menos ciertas <a href="http://en.wikiquote.org/wiki/Programming">en la página correspondiente de Wikiquote</a>.)</p>
<strong>Contenido extraído de Enchufa2.es</strong>: <a href="http://www.enchufa2.es/archives/grrrmbflx.html">Grrrmbfhlx&#8230;!</a>.]]></content:encoded>
			<wfw:commentRss>http://www.enchufa2.es/archives/grrrmbflx.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brillo de la pantalla de los ASUS Eee PC con Linux</title>
		<link>http://www.enchufa2.es/archives/brillo-de-la-pantalla-de-los-eeepc-con-linux.html</link>
		<comments>http://www.enchufa2.es/archives/brillo-de-la-pantalla-de-los-eeepc-con-linux.html#comments</comments>
		<pubDate>Wed, 15 Jun 2011 00:34:57 +0000</pubDate>
		<dc:creator>Iñaki</dc:creator>
				<category><![CDATA[Ordenadores]]></category>
		<category><![CDATA[OS / Software]]></category>

		<guid isPermaLink="false">http://www.enchufa2.es/?p=2606</guid>
		<description><![CDATA[Desde hace un año tengo un ASUS Eee PC T101MT. Estos netbooks, como otros de la gama Eee PC, vienen con Windows 7 preinstalado y, aunque lo mueven, con Linux van muchísimo mejor.  No obstante, existe un pequeño problema &#8212;no muy importante, pero molesto&#8212;: el brillo máximo de la pantalla con Linux es bastante inferior [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace un año tengo un ASUS Eee PC T101MT. Estos netbooks, como otros de la gama Eee PC, vienen con Windows 7 preinstalado y, aunque lo mueven, con Linux van muchísimo mejor.  No obstante, existe un pequeño problema &#8212;no muy importante, pero molesto&#8212;: el brillo máximo de la pantalla con Linux es bastante inferior al que obtiene con Windows. Y no encontraba la manera de solucionarlo&#8230; <a href="http://www.cnpbagwell.com/linux/asus-eee-pc-t101mt-fedora-15-install">hasta hoy</a>.</p>
<p>Así que por aquí dejo la solución para todo aquel que tenga un Eee PC con Linux y sufra este problema en silencio. Basta con editar el archivo <code>/etc/rc.local</code> y añadir la siguiente línea:</p>
<pre class="brush: plain; light: true; title: ; notranslate">setpci -s 00:02.0 f4.b=ff</pre>
<p>Reiniciar y listo.</p>
<strong>Contenido extraído de Enchufa2.es</strong>: <a href="http://www.enchufa2.es/archives/brillo-de-la-pantalla-de-los-eeepc-con-linux.html">Brillo de la pantalla de los ASUS Eee PC con Linux</a>.]]></content:encoded>
			<wfw:commentRss>http://www.enchufa2.es/archives/brillo-de-la-pantalla-de-los-eeepc-con-linux.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Linux en tu navegador</title>
		<link>http://www.enchufa2.es/archives/linux-en-tu-navegador.html</link>
		<comments>http://www.enchufa2.es/archives/linux-en-tu-navegador.html#comments</comments>
		<pubDate>Thu, 19 May 2011 00:42:45 +0000</pubDate>
		<dc:creator>Iñaki</dc:creator>
				<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[OS / Software]]></category>

		<guid isPermaLink="false">http://www.enchufa2.es/?p=2578</guid>
		<description><![CDATA[Fabrice Bellard es un extraordinario programador francés que no deja de sorprenderme con hazañas de lo más variopintas. La primera vez que encontré una mención a su nombre, fue un día que andaba yo buscando algoritmos que calculasen el dígito enésimo de π. (Inciso. Esto es posible gracias al trabajo de David H. Bailey, Peter [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bellard.org/"><strong>Fabrice Bellard</strong></a> es un extraordinario programador francés que no deja de sorprenderme con hazañas de lo más variopintas. La primera vez que encontré una mención a su nombre, fue un día que andaba yo buscando algoritmos que calculasen el dígito enésimo de π. (Inciso. Esto es posible gracias al trabajo de David H. Bailey, Peter Borwein y Simon Plouffe, tres matemáticos que, en 1995, encontraron <a href="http://en.wikipedia.org/wiki/Bailey-Borwein-Plouffe_formula">una fórmula que lleva su nombre</a> que permite calcular el enésimo decimal de π sin conocer los n-1 anteriores). Como decía, en esta búsqueda di con la <a href="http://en.wikipedia.org/wiki/Bellard%27s_formula">fórmula de Bellard</a>, la cual es un 43 % más rápida que la original. También obtuvo un <a href="http://bellard.org/pi/pi2700e9/">récord de generación de dígitos de π</a> con un ordenador personal que le duró casi un año (el récord).</p>
<p>A partir de ahí, seguí indagando un poquito acerca de este peculiar personaje. Resulta que es el creador de <a href="http://es.wikipedia.org/wiki/FFmpeg">FFmpeg</a>, una colección de software libre para el tratamiento de vídeo y audio de las más populares en Linux; de <a href="http://en.wikipedia.org/wiki/QEMU">QEMU</a>, una fantástica herramienta de virtualización, y de <a href="http://bellard.org/tcc/">TCC</a> (o Tiny C Compiler), un compilador de C pequeño y rápido que permite compilar y lanzar el kernel de Linux en menos de 15 segundos o utilizar C como un lenguaje de scripting, entre otras cosas. Ahí es nada.</p>
<p>Su última creación es <a href="http://bellard.org/jslinux/"><strong>un emulador de PC escrito en JavaScript para el navegador web</strong></a>. Aprovecha la gran velocidad de ejecución que logran los motores de JavaScript de Firefox 4 y Chrome 11 para ejecutar una pequeña versión de Linux totalmente funcional ¡dentro del navegador!</p>
<p>Él dice que lo hace por diversión, y probablemente este sea uno de esos programas que encajan en la categoría de <em>idas de olla totalmente inútiles</em>, pero no por ello deja de ser una curiosidad digna de admiración. Me quito el sombrero.</p>
<strong>Contenido extraído de Enchufa2.es</strong>: <a href="http://www.enchufa2.es/archives/linux-en-tu-navegador.html">Linux en tu navegador</a>.]]></content:encoded>
			<wfw:commentRss>http://www.enchufa2.es/archives/linux-en-tu-navegador.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cómo dar de baja tu cuenta free/open de Spotify</title>
		<link>http://www.enchufa2.es/archives/como-dar-de-baja-tu-cuenta-freeopen-de-spotify.html</link>
		<comments>http://www.enchufa2.es/archives/como-dar-de-baja-tu-cuenta-freeopen-de-spotify.html#comments</comments>
		<pubDate>Sun, 17 Apr 2011 16:25:37 +0000</pubDate>
		<dc:creator>Iñaki</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Música]]></category>
		<category><![CDATA[OS / Software]]></category>

		<guid isPermaLink="false">http://www.enchufa2.es/?p=2556</guid>
		<description><![CDATA[Carlos Capote nos cuenta en su blog Cómo dar de baja tu cuenta Spotify free/open y no morir en el intento: Últimamente se han dado dos ocasiones que han hecho que mucha gente se plantease dejar de utilizar Spotify. Una fue su apoyo a la visita del Papa. Otra los recortes a su servicio Spotify [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Carlos Capote</strong> nos cuenta en su blog <a href="http://www.carloscapote.com/era-actualidad-en-su-momento/como-dar-de-baja-tu-cuenta-spotify-freeopen-y-no-morir-en-el-intento/"><em>Cómo dar de baja tu cuenta Spotify free/open y no morir en el intento</em></a>:</p>
<blockquote><p>Últimamente se han dado dos ocasiones que han hecho que mucha gente se plantease dejar de utilizar Spotify. Una fue su <a href="http://www.xosealberte.es/?p=81">apoyo a la visita del Papa</a>. Otra <a href="http://www.spotify.com/uk/blog/archives/2011/04/14/upcoming-changes-to-spotify-free-open/">los recortes a su servicio Spotify free/open</a>. Sin embargo, ¡en Spotify no hay una opción de cancelar tu cuenta free! De hecho, en sus <a href="http://www.spotify.com/es/legal/end-user-agreement/">términos y condiciones de uso</a> sólo hacen referencia a la posibilidad de darte de baja si tienes una cuenta de pago en caso de cambio de precios.</p>
<p>[...]</p>
<p>Así no me extraña que su número de usuarios crezca y crezca tan  rápidamente. ¡Son una secta digital! En cualquier caso, hay que decir  que existe una posibilidad para escaparse. [...]</p></blockquote>
<p>El método para dar de baja tu cuenta consiste en acudir a su <a href="http://www.spotify.com/es/about/contact/contact-spotify-support/?contact">formulario de contacto</a> y solicitarla. Visita el blog de Carlos (enlace al comienzo) para conocer todos los detalles del proceso.</p>
<p>Aprovecho la ocasión para recomendar <a href="http://listen.grooveshark.com/"><strong>Grooveshark</strong></a>, un servicio online de <em>streaming</em> de música similar a Spotify, pero que no requiere instalación (se accede directamente a través del navegador). La versión gratuita inserta unos <em>banners</em> de publicidad en la parte derecha de la pantalla, pero nada de molestos anuncios sonoros entre canción y canción.</p>
<p>No obstante, si tampoco podemos soportar esa modalidad de publicidad y gracias a que Grooveshark es una aplicación web, podemos eliminarla aun utilizando una cuenta gratuita. ¿Cómo? Tenemos dos opciones.</p>
<h3>Impedir que la publicidad se cargue</h3>
<p><a href="http://www.iniqua.com/2010/03/01/remove-ads-grooveshark/">El servidor de publicidad de Grooveshark utiliza el puerto 8081</a>. Por lo tanto, si lo bloqueamos, no se cargará la publicidad y el recuadro de la derecha aparecerá gris y vacío. Para ello, en Firefox basta con seguir estos pasos:</p>
<ol>
<li>Introducir en la barra de dirección <code>about:config</code> y asegurarle que tendremos cuidado.</li>
<li>Utilizar como filtro <code>ports.banned</code>, doble click para editar y añadir el puerto 8081.</li>
<li>Ya podemos disfrutar de Grooveshark sin publicidad molesta.</li>
</ol>
<h3>Quitar la publicidad con un script de Greasemonkey</h3>
<p>¿Qué es <a href="http://www.greasespot.net/"><strong>Greasemonkey</strong></a>? Es un complemento para navegadores que nos permite asociar programas a determinadas páginas web. Esto significa que, cuando una página web se carga, inmediatamente se lanza el programa que le hayamos asociado previamente. Dichos programas son scripts en JavaScript que podemos crear nosotros mismos o <a href="http://userscripts.org/">podemos descargar hechos de la inmensa cantidad que ya hay</a>.</p>
<p>¿Qué nos permite Greasemonkey? Todo lo que imaginemos y más. Una vez que se carga una página web, el documento está enteramente a nuestra disposición para hacer lo que queramos con él. Por tanto, estos scripts pueden añadir elementos, borrar elementos, modificar elementos, etc.; de forma que se añadan funcionalidades, quiten funcionalidades, etc. A modo de ejemplo, podemos hacer que Enchufa2 tenga una apariencia en nuestro navegador distinta a la original, con tonos rositas&#8230; o <strong>podemos quitar la publicidad de Grooveshark</strong>.</p>
<p>¿Cómo? En Firefox hay que añadirlo como complemento. Ya sabéis: hay que <a href="https://addons.mozilla.org/es-ES/firefox/addon/greasemonkey/">buscarlo</a>, añadirlo a Firefox y reiniciar el navegador. Y a partir de ahí, a añadir scripts. Disponemos desde <a href="http://userscripts.org/scripts/show/56063">scripts que se limitan a quitar la publicidad</a> hasta <a href="http://userscripts.org/scripts/show/93354">scripts que la reemplazan por las letras de las canciones</a> que vamos escuchando. ¿Útil, no?</p>
<strong>Contenido extraído de Enchufa2.es</strong>: <a href="http://www.enchufa2.es/archives/como-dar-de-baja-tu-cuenta-freeopen-de-spotify.html">Cómo dar de baja tu cuenta free/open de Spotify</a>.]]></content:encoded>
			<wfw:commentRss>http://www.enchufa2.es/archives/como-dar-de-baja-tu-cuenta-freeopen-de-spotify.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>&#171;Hidden features of&#8230;&#187;</title>
		<link>http://www.enchufa2.es/archives/hidden-features-of.html</link>
		<comments>http://www.enchufa2.es/archives/hidden-features-of.html#comments</comments>
		<pubDate>Mon, 28 Mar 2011 11:48:16 +0000</pubDate>
		<dc:creator>Iñaki</dc:creator>
				<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[OS / Software]]></category>

		<guid isPermaLink="false">http://www.enchufa2.es/?p=2541</guid>
		<description><![CDATA[Todos los que hayáis picado alguna vez alguna línea de código habréis acabado en la web Stack Overflow buscando alguna duda. Se trata de una web de preguntas y respuestas sobre programación con una comunidad de usuarios bastante grande, por lo que probablemente cualquier duda que os surja esté solucionada ahí. Además, implementa un sistema [...]]]></description>
			<content:encoded><![CDATA[<p>Todos los que hayáis picado alguna vez alguna línea de código habréis acabado en la web <a href="http://stackoverflow.com/">Stack Overflow</a> buscando alguna duda. Se trata de una web de preguntas y respuestas sobre programación con una comunidad de usuarios bastante grande, por lo que probablemente cualquier duda que os surja esté solucionada ahí. Además, implementa un sistema de votación para las respuestas, por lo que, aunque un tema tenga cientos de ellas, la que dé en el clavo estará inmediatamente después de la pregunta.</p>
<p>Esta mañana he descubierto una serie de preguntas muy interesantes llamadas <strong><em>«Hidden features of&#8230;»</em></strong>. En ellas, los usuarios escriben sobre funcionalidades <em>ocultas</em> o, al menos, <em>poco conocidas</em> sobre diferentes lenguajes que no os dejarán indiferentes. Como para pasarse horas leyendo sin parar de sorprenderse. Pasen y vean:</p>
<ul>
<li><a href="http://stackoverflow.com/questions/132241/hidden-features-of-c">Hidden features of C</a></li>
<li><a href="http://stackoverflow.com/questions/75538/hidden-features-of-c">Hidden features of C++</a></li>
<li><a href="http://stackoverflow.com/questions/9033">Hidden features of C#</a></li>
<li><a href="http://stackoverflow.com/questions/102254/hidden-features-of-delphi">Hidden features of Delphi</a></li>
<li><a href="http://stackoverflow.com/questions/125008/hidden-features-of-d">Hidden features of D</a></li>
<li><a href="http://stackoverflow.com/questions/15496">Hidden features of Java</a></li>
<li><a href="http://stackoverflow.com/questions/101268">Hidden features of Python</a></li>
<li><a href="http://stackoverflow.com/questions/63998/hidden-features-of-ruby">Hidden features of Ruby</a></li>
<li><a href="http://stackoverflow.com/questions/161872/hidden-features-of-perl">Hidden features of Perl</a></li>
<li><a href="http://stackoverflow.com/questions/211378/hidden-features-of-bash">Hidden features of Bash</a></li>
<li><a href="http://stackoverflow.com/questions/61088">Hidden features of JavaScript</a></li>
<li><a href="http://stackoverflow.com/questions/102084">Hidden features of VB.NET</a></li>
<li><a href="http://stackoverflow.com/questions/54929">Hidden features of ASP.NET</a></li>
<li><a href="http://stackoverflow.com/questions/1063497/hidden-features-of-erlang">Hidden features of Erlang</a></li>
<li><a href="http://stackoverflow.com/questions/1682874/hidden-features-of-r">Hidden features of R</a></li>
<li><a href="http://stackoverflow.com/questions/954327/hidden-features-of-html">Hidden features of HTML</a></li>
<li><a href="http://stackoverflow.com/questions/628407">Hidden features of CSS</a></li>
</ul>
<p>Y seguro que encontraréis más si exploráis a fondo <a href="http://stackoverflow.com/search?q=hidden+features+of">los resultados de esta búsqueda</a>.</p>
<strong>Contenido extraído de Enchufa2.es</strong>: <a href="http://www.enchufa2.es/archives/hidden-features-of.html">&laquo;Hidden features of&#8230;&raquo;</a>.]]></content:encoded>
			<wfw:commentRss>http://www.enchufa2.es/archives/hidden-features-of.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox 4 suprime el botón RSS</title>
		<link>http://www.enchufa2.es/archives/firefox-4-suprime-el-boton-rss.html</link>
		<comments>http://www.enchufa2.es/archives/firefox-4-suprime-el-boton-rss.html#comments</comments>
		<pubDate>Sun, 20 Mar 2011 15:59:06 +0000</pubDate>
		<dc:creator>Iñaki</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[OS / Software]]></category>

		<guid isPermaLink="false">http://www.enchufa2.es/?p=2530</guid>
		<description><![CDATA[Estoy usando Firefox 4 desde que sacaron la versión RC (Release Candidate), y la verdad es que han hecho un gran trabajo. Un largo trabajo, por otra parte, pero el resultado, en general, lo vale. No entro en valoraciones objetivas de rendimiento porque no he hecho pruebas, pero la experiencia del usuario (que es lo [...]]]></description>
			<content:encoded><![CDATA[<p>Estoy usando Firefox 4 desde que sacaron la versión RC (<em>Release Candidate</em>), y la verdad es que han hecho un gran trabajo. Un largo trabajo, por otra parte, pero el resultado, en general, lo vale. No entro en valoraciones objetivas de rendimiento porque no he hecho pruebas, pero la experiencia del usuario (que es lo que cuenta al final) es muy buena.</p>
<p>No obstante, no estoy de acuerdo con todos los cambios que se han realizado. El que más me ha molestado es <strong>la supresión del botón RSS de la barra de direcciones</strong>. Era realmente útil. Tanto es así que yo diseñé algunos aspectos de Enchufa2 teniéndolo en cuenta. No veréis, por ejemplo, enlace RSS en los comentarios de las entradas ni en las categorías del blog, porque yo contaba con ese botoncito de Firefox 3 donde se muestran cómodamente todos los canales de suscripción posibles de la página actual. Ahora, con Firefox 4, la gente de Mozilla ha desplazado esta funcionalidad al menú de marcadores (oculto por defecto).</p>
<p>Al parecer, la razón de dicha desaparición es que el porcentaje de usuarios de Firefox que lo usa es realmente bajo (del 7 %, <a href="https://heatmap.mozillalabs.com/mozmetrics/?os=all&amp;colorscheme=hsl&amp;skill=all">según puede verse en esta estadística</a>). Si esa es la razón real, cabría preguntarse por qué han hecho desaparecer también el botón <em>Home</em> si lo usa un 37 % de los usuarios. También cabe argumentar que hay cosas que hay que incluir en la interfaz por defecto por poco que se usen, como por ejemplo el botón de identificación del sitio (al principio de la barra de direcciones) &#8212;o como, en mi opinión, el botón RSS&#8212;.</p>
<p><a href="http://camendesign.com/blog/rss_is_dying">Algunos se quejan de que el problema está en la interfaz</a>: el usuario medio no identifica ese icono naranja con RSS y mucho menos sabe explicar qué carajo es eso de RSS; adicionalmente, los usuarios son reacios a hacer <em>click</em> en aquello que no conocen (lo primero bien, pero esto último es difícilmente defendible ante la cantidad de virus que se propagan por ejecutables en ficheros adjuntos de emails&#8230;).</p>
<p>Mi queja es mucho más simple: no me parece significativo el porcentaje de usuarios que utiliza el botón. Me parece una estadística mucho más justa <strong>el porcentaje de usuarios que utiliza el botón RSS de todos los usuarios que utilizan las suscripciones RSS</strong>. Lo que mide Mozilla me parece normal que sea bajo. Lo que propongo yo&#8230; habría que verlo.</p>
<p>En cualquier caso, siempre podremos seguir disfrutando del botón <a href="https://addons.mozilla.org/en-US/firefox/addon/rss-icon-in-awesombar/">con una extensión</a> (vista en <a href="http://gruvix.com/11-extensiones-esenciales-para-firefox-4/">11 extensiones esenciales para Firefox 4</a>).</p>
<strong>Contenido extraído de Enchufa2.es</strong>: <a href="http://www.enchufa2.es/archives/firefox-4-suprime-el-boton-rss.html">Firefox 4 suprime el botón RSS</a>.]]></content:encoded>
			<wfw:commentRss>http://www.enchufa2.es/archives/firefox-4-suprime-el-boton-rss.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Utilizar funciones y tipos de C en Python</title>
		<link>http://www.enchufa2.es/archives/utilizar-funciones-y-tipos-de-c-en-python.html</link>
		<comments>http://www.enchufa2.es/archives/utilizar-funciones-y-tipos-de-c-en-python.html#comments</comments>
		<pubDate>Sun, 12 Dec 2010 16:59:08 +0000</pubDate>
		<dc:creator>Iñaki</dc:creator>
				<category><![CDATA[OS / Software]]></category>

		<guid isPermaLink="false">http://www.enchufa2.es/?p=2424</guid>
		<description><![CDATA[Cuando atacamos un problema con un lenguaje de programación relativamente nuevo, es razonable pensar que ya habrá código escrito en lenguajes más antiguos. De hecho, en muchos casos nos encontramos con que existen librerías en C que resuelven parte de nuestro problema. En Python, existen varias formas de reutilizar código escrito en C/C++. Hasta donde [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando atacamos un problema con un lenguaje de programación relativamente nuevo, es razonable pensar que ya habrá código escrito en lenguajes más antiguos. De hecho, en muchos casos nos encontramos con que existen librerías en C que resuelven parte de nuestro problema. En Python, existen varias formas de <strong>reutilizar código escrito en C/C++</strong>. Hasta donde yo sé, cuatro herramientas diferentes: <a href="http://docs.python.org/c-api/">Python/C API</a>, <a href="http://www.swig.org/Doc1.3/Python.html">SWIG</a>, <a href="http://docs.python.org/library/ctypes.html">Ctypes</a> y <a href="http://www.cython.org/">Cython</a>. He aquí una tabla comparativa extraída de <a href="http://www.slideshare.net/standel/python-bindings-overview">Python Bindings Overview</a>:</p>
<p><img class="aligncenter size-full wp-image-2425" title="c-python" src="http://img.enchufa2.es/2010/12/c-python.jpg" alt="" width="510" height="220" /></p>
<p>Entre los parámetros que considera, está la curva de aprendizaje (cuán sencillo es de aprender a utilizar), lo <em>pythónico</em> que es (si el código Python resultante es de mayor o menor pureza, por así decirlo), si soporta C, si soporta C++, si existe para otros lenguajes de programación y si maneja excepciones. En este artículo <strong>vamos a centrarnos en Ctypes</strong> ya que, como podéis observar, es la herramienta más sencilla y más <em>pythónica</em>. El único punto en contra es que no soporta C++ (tampoco maneja excepciones, lógicamente, porque C no tiene excepciones).</p>
<p>Ctypes es una FFI (<a href="http://en.wikipedia.org/wiki/Foreign_function_interface">Foreign Function Interface</a>) que forma parte de Python desde la versión 2.5. Nos proporciona mecanismos muy sencillos para realizar llamadas a funciones de C en nuestro código Python y tratar con tipos de datos nativos de C. A continuación, vamos a poner un ejemplo muy sencillo (es una bobada, aviso), pero suficiente para mostrar el potencial de Ctypes.</p>
<p>Supongamos que tenemos una función escrita en C que calcula la media de dos números:</p>
<pre class="brush: cpp; title: ; notranslate">#Archivo calc_mean.c

double mean(double a, double b) {
	return (a+b)/2;
}</pre>
<p>Para reutilizar esta función en nuestro programa en Python, realizaremos los siguientes pasos:</p>
<ul>
<li>Compilar el código C en una librería compartida.</li>
<li>Importar la librería compartida mediante Ctypes.</li>
<li>Asignar los tipos de datos de entrada y salida que acepta la función.</li>
<li>Utilizar la función con total normalidad, como si de una función de Python se tratase.</li>
</ul>
<h3>Crear una librería compartida</h3>
<p>Esta tarea se puede realizar <a href="http://www.adp-gmbh.ch/cpp/gcc/create_lib.html">de forma directa mediante GCC</a>, por ejemplo. Sin embargo, he encontrado una manera mucho más sencilla y elegante: mediante <a href="http://www.scons.org/"><strong>SCons</strong></a>. Consiste en crear un archivo llamado <code>SConstruct</code> en el mismo directorio donde se encuentran los archivos fuente de C (en este caso, en el mismo directorio que nuestro <code>calc_mean.c</code>) con el siguiente contenido:</p>
<pre class="brush: python; title: ; notranslate">env=Environment()
env.Replace(CFLAGS=['-O2','-Wall','-ansi','-pedantic'])
env.SharedLibrary('libmean.so', ['calc_mean.c'])</pre>
<p>Como se puede deducir, la primera línea es obligatoria, la segunda especifica las <em>flags</em> que utilizará GCC (no hace falta tocarlo) y la tercera indica que el archivo <code>calc_mean.c</code> se convertirá en una librería compartida con el nombre <code>libmean.so</code>.</p>
<p>Por último, basta con teclear en una terminal &#8212;en el mismo directorio&#8212; <code>scons</code>. Y listo: ya tenemos nuestra librería compartida.</p>
<h3>Utilizar la librería compartida</h3>
<p>Lo más directo es ver un código de ejemplo comentado.</p>
<pre class="brush: python; title: ; notranslate"># Archivo ejemplo.py

# Importamos Ctypes
from ctypes import *

# Importamos la librería compartida
libmean = CDLL('./libmean.so')
# Asignamos la función a una variable más corta y manejable
mean = libmean.mean
# Especificamos los tipos C que acepta como entrada
mean.argtypes = [c_double, c_double]
# Especificamos el tipo C que devuelve
mean.restype = c_double

# Lista para su utilización
print mean(3,8)
# Devuelve 5.5</pre>
<strong>Contenido extraído de Enchufa2.es</strong>: <a href="http://www.enchufa2.es/archives/utilizar-funciones-y-tipos-de-c-en-python.html">Utilizar funciones y tipos de C en Python</a>.]]></content:encoded>
			<wfw:commentRss>http://www.enchufa2.es/archives/utilizar-funciones-y-tipos-de-c-en-python.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>La Tierra en tu escritorio</title>
		<link>http://www.enchufa2.es/archives/la-tierra-en-tu-escritorio.html</link>
		<comments>http://www.enchufa2.es/archives/la-tierra-en-tu-escritorio.html#comments</comments>
		<pubDate>Fri, 10 Dec 2010 20:50:15 +0000</pubDate>
		<dc:creator>Iñaki</dc:creator>
				<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[OS / Software]]></category>

		<guid isPermaLink="false">http://www.enchufa2.es/?p=2416</guid>
		<description><![CDATA[¿Quieres tener en tu fondo de pantalla una imagen como ésta? ¿Con perspectivas cambiantes cada cierto tiempo y nubes casi en tiempo real? Valga entonces esta anotación como extensión de la publicada por Iván Rivera en brucknerite. Si tu escritorio es GNOME, acude al enlace anterior para seguir las instrucciones pertinentes. Si, como yo, utilizas [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>¿Quieres tener en tu fondo de pantalla una imagen como ésta? ¿Con perspectivas cambiantes cada cierto tiempo y nubes <em>casi</em> en tiempo real?</p></blockquote>
<p><a href="http://img.enchufa2.es/2010/12/xplanet.jpg"><img class="size-medium wp-image-2417 aligncenter" title="xplanet" src="http://img.enchufa2.es/2010/12/xplanet-300x168.jpg" alt="" width="300" height="168" /></a></p>
<p>Valga entonces esta anotación como extensión de <a href="http://blog.brucknerite.net/2010/12/la-tierra-en-tu-escritorio.html">la publicada por Iván Rivera en <em>brucknerite</em></a>. Si tu escritorio es GNOME, acude al enlace anterior para seguir las instrucciones pertinentes. Si, como yo, utilizas <strong>KDE 4</strong>, sigue leyendo (me tomo la libertad de fusilar el trabajo de Iván, ya que muchos pasos son iguales).</p>
<ol>
<li>Instalamos <a href="http://xplanet.sourceforge.net/">xplanet</a> (nota: el siguiente comando corresponde al gestor de paquetes de Fedora):
<pre>sudo yum install xplanet</pre>
</li>
<li>Bajamos estos dos <em>scripts</em>: <code><a href="http://img.enchufa2.es/2010/12/xplanet_background.zip">xplanet_background.sh</a></code> (por <a href="http://alumnus.caltech.edu/%7Ehari/">Hari Nair</a>, modificado por Iván y adaptado a los requerimientos de KDE por mí), y <a href="http://img.enchufa2.es/2010/12/download_clouds.zip">download_clouds.py</a> (por Michal Pasternak; el original <a href="http://xplanet.sourceforge.net/Extras/download_clouds.py">está aquí</a>).</li>
<li>Les damos permisos de ejecución y los movemos a un lugar apropiado (por ejemplo, <code>/usr/local/sbin</code>):
<pre>sudo chmod a+x xplanet_background.sh download_clouds.py
sudo mv xplanet_background.sh download_clouds.py /usr/local/sbin</pre>
</li>
<li>Creamos la configuración. Para ello podéis partir de este archivo: <a href="http://img.enchufa2.es/2010/12/xplanet.zip">xplanet.conf</a>. Este fichero tan solo hace referencia a las imágenes de base que se van a usar. Os propongo las siguientes:
<ul>
<li>Un mapa de la Tierra en condiciones (clave <code>map</code>). Puede valer el que está en el paquete <a href="http://www.celestiamotherlode.net/creators/shadmith/earth%20surface.zip">earth surface.zip</a> de un tal <a href="http://www.celestiamotherlode.net/catalog/show_creator_details.php?creator_id=154">Shadsmith</a>, en el repositorio de añadidos para <a href="http://www.shatters.net/celestia/">Celestia</a> <a href="http://www.celestiamotherlode.net/">The Celestia Motherlode</a>, un gran recurso para estas lides. Conviene convertirlo a JPG. Una forma rápida de hacerlo es con <a href="http://www.imagemagick.org/">ImageMagick</a> (doy por hecho que sabes cómo instalarlo, si no lo tienes):
<pre>convert Earth.png Earth.jpg</pre>
</li>
<li>Un mapa de nubes (clave <code>cloud_map</code>), que el <em>script</em> <code>download_clouds.py</code> descarga de un <em>mirror</em> seleccionado al azar cada tres horas (como mínimo) y que <code>xplanet_background.sh</code> coloca en su sitio.</li>
<li>Un mapa de la Tierra de noche (clave <code>night_map</code>). Yo he usado este: <a href="http://www.noirextreme.com/digital/Earth-Night4096.jpg">Earth-Night4096.jpg</a>, extraído de <a href="http://www.noirextreme.com/earth">este tutorial para crear vistas 3D fotorrealistas de la Tierra en 3DStudio</a>.</li>
<li>Un mapa de relieve (clave <code>bump_map</code>). No es más que un mapa  de elevación que muestra los puntos más bajos en negro y los más altos  en blanco. Permite mostrar sombras con la orientación adecuada en las  cordilleras. He usado el que puedes encontrar con el nombre <code>Earth-Topo4096.jpg</code> en este paquete: <a href="http://www.noirextreme.com/digital/earth1.zip">earth1.zip</a> del artículo anterior.</li>
<li>Un mapa especular (clave <code>specular_map</code>). Permite indicarle a  xplanet qué partes de la Tierra reflejarán la luz del sol, es decir,  los océanos. El que viene en el paquete de la página anterior es válido  para 3DStudio; sin embargo, nosotros necesitaremos invertirlo: la  convención de xplanet es que refleja luz todo lo que se muestra en  blanco, y el mapa viene al revés. Si no lo tocamos, el océano aparecerá  opaco y los continentes brillantes. Esta pequeña modificación puede  hacerse con cualquier programa de edición (GIMP, entre otros), pero con  ImageMagick es la mar de sencillo:
<pre>mogrify -negate Earth-Spec4096.jpg</pre>
</li>
</ul>
</li>
<li>Copiamos las imágenes al directorio <code>~/.xplanet/images/earth</code> y el fichero de configuración a <code>~/.xplanet</code>.</li>
<li>Creamos la carpeta <code>~/xplanet-img</code>.</li>
<li>Ahora es el momento de programar la ejecución de <code>xplanet_background.sh</code>: para ello, en el menú de KDE, abrimos las <code>Preferencias del sistema</code>. Pulsamos <code>Arranque y apagado &gt; Añadir script</code>. En el diálogo emergente, buscamos la ruta del <em>script</em>, que, a estas alturas, debería ser <code>/usr/local/sbin/xplanet_background.sh</code>. Pulsamos <code>Aceptar</code>.</li>
<li>En las <code>Preferencias de Escritorio</code> (ALT + D, ALT + S; o bien botón derecho &gt; <code>Preferencias de Escritorio</code>), seleccionamos el tipo de fondo <code>Presentación</code>, añadimos la carpeta creada en el paso 6 (eliminad el resto) y lo configuramos para que las imágenes se cambien cada 2 minutos. Y listo.</li>
</ol>
<p>Que lo disfrutéis.</p>
<strong>Contenido extraído de Enchufa2.es</strong>: <a href="http://www.enchufa2.es/archives/la-tierra-en-tu-escritorio.html">La Tierra en tu escritorio</a>.]]></content:encoded>
			<wfw:commentRss>http://www.enchufa2.es/archives/la-tierra-en-tu-escritorio.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Mejora del rendimiento de Linux con solo 200 líneas de código</title>
		<link>http://www.enchufa2.es/archives/mejora-del-rendimiento-de-linux-con-solo-200-lineas-de-codigo.html</link>
		<comments>http://www.enchufa2.es/archives/mejora-del-rendimiento-de-linux-con-solo-200-lineas-de-codigo.html#comments</comments>
		<pubDate>Fri, 19 Nov 2010 19:35:24 +0000</pubDate>
		<dc:creator>Iñaki</dc:creator>
				<category><![CDATA[OS / Software]]></category>

		<guid isPermaLink="false">http://www.enchufa2.es/?p=2401</guid>
		<description><![CDATA[El último parche propuesto para el kernel de Linux ha creado una gran sorpresa en la comunidad. Con solo 200 líneas de código, Mike Galbraith &#8212;el autor del cambio&#8212; ha conseguido mejorar drásticamente el rendimiento del sistema y la experiencia del usuario. Este parche agrupa automáticamente tareas de cara a competir por los recursos de [...]]]></description>
			<content:encoded><![CDATA[<p>El último parche propuesto para el kernel de Linux ha creado una gran sorpresa en la comunidad. Con <strong>solo 200 líneas de código</strong>, <strong>Mike Galbraith</strong> &#8212;el autor del cambio&#8212; <strong>ha conseguido mejorar drásticamente el rendimiento del sistema y la experiencia del usuario</strong>. Este parche agrupa automáticamente tareas de cara a competir por los recursos de CPU. De esta manera, se consigue que aplicaciones que ponen en ejecución muchos hilos luchen en igualdad de condiciones con tareas más simples que de otra manera quedan eclipsadas. El resultado <strong>no es que se ejecuten más rápido</strong>, sino que se distribuye mejor el tiempo; y la experiencia del usuario, bajo demandas fuertes del procesador, es que <strong>todo va más fluido</strong>.</p>
<p>Hay un par de vídeos en Youtube donde se muestran sendas pruebas (sobre Phoronix), sin parche y con parche, de un sistema Linux con alta carga (compilación del kernel, reproducción de vídeo en alta definición, navegador abierto, movimiento de las ventanas en el escritorio&#8230;). Veamos primero la prueba <strong>sin parche</strong>:</p>
<p align="center"><object type="application/x-shockwave-flash" style="width:500px;height:301px" data="http://www.youtube.com/v/uk70SeGA7pg&amp;showinfo=0&amp;hd=1&amp;fs=1&amp;start="><param name="allowFullScreen" value="true"></param><param name="WMode" value="transparent"></param><param name="movie" value="http://www.youtube.com/v/uk70SeGA7pg&amp;hl=es" /><a href="http://www.youtube.com/watch?v=uk70SeGA7pg#t=s">Ver v&#237;deo</a></object></p>
<p>Y ahora <strong>con parche</strong>; la diferencia es notable:</p>
<p align="center"><object type="application/x-shockwave-flash" style="width:500px;height:301px" data="http://www.youtube.com/v/prxInRdaNfc&amp;showinfo=0&amp;hd=1&amp;fs=1&amp;start="><param name="allowFullScreen" value="true"></param><param name="WMode" value="transparent"></param><param name="movie" value="http://www.youtube.com/v/prxInRdaNfc&amp;hl=es" /><a href="http://www.youtube.com/watch?v=prxInRdaNfc#t=s">Ver v&#237;deo</a></object></p>
<p>(Vía: <a href="http://www.fayerwayer.com/2010/11/linux-recibe-importante-mejora-en-solo-200-lineas-de-codigo/">FayerWayer</a>)</p>
<strong>Contenido extraído de Enchufa2.es</strong>: <a href="http://www.enchufa2.es/archives/mejora-del-rendimiento-de-linux-con-solo-200-lineas-de-codigo.html">Mejora del rendimiento de Linux con solo 200 líneas de código</a>.]]></content:encoded>
			<wfw:commentRss>http://www.enchufa2.es/archives/mejora-del-rendimiento-de-linux-con-solo-200-lineas-de-codigo.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Posicionar un elemento HTML sobre un objeto Flash</title>
		<link>http://www.enchufa2.es/archives/posicionar-un-elemento-html-sobre-un-objeto-flash.html</link>
		<comments>http://www.enchufa2.es/archives/posicionar-un-elemento-html-sobre-un-objeto-flash.html#comments</comments>
		<pubDate>Sun, 07 Nov 2010 00:41:51 +0000</pubDate>
		<dc:creator>Iñaki</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[OS / Software]]></category>

		<guid isPermaLink="false">http://www.enchufa2.es/?p=2384</guid>
		<description><![CDATA[Si entráis en el blog Puratura, veréis que existe una barra semi-transparente en la parte de abajo de la página con las propiedades CSS position: fixed y z-index:100. Esto significa que, si hacéis scroll en la página, todo se mueve salvo dicha barra, que permanece inmóvil y da la impresión de que todo se desliza [...]]]></description>
			<content:encoded><![CDATA[<p>Si entráis en el <a href="http://www.puratura.com/blog/">blog Puratura</a>, veréis que existe una barra semi-transparente en la parte de abajo de la página con las propiedades CSS <code>position: fixed</code> y <code>z-index:100</code>. Esto significa que, si hacéis <em>scroll</em> en la página, todo se mueve salvo dicha barra, que permanece inmóvil y da la impresión de que todo se desliza bajo ella. Hasta hoy tenía un problema con esto: los objetos Flash, como los vídeos de Youtube, no se deslizaban <em>por debajo</em> de ella, sino que permanecían encima echando por tierra el efecto que quería conseguir. Los que hayáis intentado algo por el estilo o hayáis implementado un menú desplegable que cayera sobre un objeto Flash, habréis comprobado que no se soluciona aplicando una propiedad <code>z-index</code> más baja a este último. No obstante, existe una solución: además de la propiedad <code>z-index</code>, hay que añadir un parámetro al objeto Flash tal y como se detalla a continuación:</p>
<pre class="brush: xml; title: ; notranslate">&lt;object style=&quot;position:relative; z-index:0;&quot; ... &gt;
 &lt;param name=&quot;WMode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;
 ...
 ...
&lt;/object&gt;</pre>
<strong>Contenido extraído de Enchufa2.es</strong>: <a href="http://www.enchufa2.es/archives/posicionar-un-elemento-html-sobre-un-objeto-flash.html">Posicionar un elemento HTML sobre un objeto Flash</a>.]]></content:encoded>
			<wfw:commentRss>http://www.enchufa2.es/archives/posicionar-un-elemento-html-sobre-un-objeto-flash.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

