<?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>The Power of Mind &#187; AAP</title>
	<atom:link href="http://draxus.org/weblog/tag/aap/feed/" rel="self" type="application/rss+xml" />
	<link>http://draxus.org/weblog</link>
	<description>El blog de DraXus</description>
	<lastBuildDate>Wed, 18 Jan 2012 13:43:27 +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>Haciendo un planet en python</title>
		<link>http://draxus.org/weblog/2009/05/07/haciendo-un-planet-en-python/</link>
		<comments>http://draxus.org/weblog/2009/05/07/haciendo-un-planet-en-python/#comments</comments>
		<pubDate>Thu, 07 May 2009 21:15:11 +0000</pubDate>
		<dc:creator>DraXus</dc:creator>
				<category><![CDATA[AAP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[planet]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://draxus.org/weblog/?p=1205</guid>
		<description><![CDATA[La práctica 5 de AAP consistía en crear un programa que recogiese las noticias de diferentes fuentes y las mostrase en un sólo documento HTML, lo que se viene a denominar un planet en la jerga bloguera. En mi caso lo he programado en Python haciendo uso de la librería feedparser y genero una página [...]]]></description>
			<content:encoded><![CDATA[<p>La <a href="http://geneura.ugr.es/~jmerelo/asignaturas/AAP/AAP-Practica-5.mhtml">práctica 5 de AAP</a> consistía en crear un programa que recogiese las noticias de diferentes fuentes y las mostrase en un sólo documento HTML, lo que se viene a denominar un <em>planet</em> en la jerga bloguera.</p>
<p>En mi caso lo he programado en <strong>Python</strong> haciendo uso de la librería <a href="http://www.feedparser.org/">feedparser</a> y genero una página HTML así como un feed usando la librería <a href="http://www.dalkescientific.com/Python/PyRSS2Gen.html">PyRSS2Gen</a>.</p>
<p>He usado la codificación de caracteres <strong>utf-8</strong> en todo momento, pero tengo un problema al generar el archivo html ya que no se guarda como utf-8 (si lo abrimos con un editor como geany podemos comprobar que está &#8220;sin codificación&#8221;), y luego al mostrarlo en el navegador no se ve bien. El caso es que en mi máquina sí se muestra correctamente, pero en el servidor donde lo he alojado no, como podéis ver en <a href="http://swecai.ugr.es/~planet_etsiit">http://swecai.ugr.es/~planet_etsiit</a>.  Si en el navegador seleccionáis la codificación unicode, se ve bien, e incluso en el header está el meta indicando que es utf-8. <del datetime="2009-05-07T22:42:17+00:00">¿Alguna idea de cómo solucionar esto?</del> <strong>Editado</strong>: <a href="http://bicosyes.com">blaxter</a> ha dado con la tecla en <a href="http://draxus.org/weblog/2009/05/07/haciendo-un-planet-en-python/#comment-8235">este comentario</a>. ¡Gracias!</p>
<p>Podéis descargar la aplicación libremente: <strong><a href="http://draxus.org/upload/planet.tgz">planet.tgz</a></strong>. En el fichero <em>index.html</em> viene una descripción más detallada del trabajo realizado y en la carpeta <em>scripts</em> se encuentra el fichero <em>actualizar.py</em> que se encarga de generar los ficheros <em>planet.html</em> y <em>feed.xml</em> a partir de los feeds situados en <em>sites.txt</em> cada cierto tiempo, que podemos indicar usando una tarea <em>cron</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://draxus.org/weblog/2009/05/07/haciendo-un-planet-en-python/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>AAP Práctica 1 &#8211; Recursos para la asignatura</title>
		<link>http://draxus.org/weblog/2009/03/05/aap-practica-1-recursos-para-la-asignatura/</link>
		<comments>http://draxus.org/weblog/2009/03/05/aap-practica-1-recursos-para-la-asignatura/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 19:52:06 +0000</pubDate>
		<dc:creator>DraXus</dc:creator>
				<category><![CDATA[AAP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[ugr]]></category>

		<guid isPermaLink="false">http://draxus.org/weblog/?p=1159</guid>
		<description><![CDATA[Aquí os dejo con una serie de recursos que nos pueden ser útiles para la asignatura de AAP, junto con una valoración personal sobre 5 puntos. Firebug: plugin de Firefox imprescindible para el desarrollo web e incluye un intérprete de Javascript así como un profiler y un debugger. 5/5 puntos Visual jQuery: es una herramienta [...]]]></description>
			<content:encoded><![CDATA[<p>Aquí os dejo con una serie de recursos que nos pueden ser útiles para la asignatura de <a href="http://draxus.org/weblog/category/universidad/aap/">AAP</a>, junto con una valoración personal sobre 5 puntos.</p>
<ul>
<li><strong><a href="http://getfirebug.com/">Firebug</a></strong>: plugin de Firefox imprescindible para el desarrollo web e incluye un intérprete de Javascript así como un profiler y un debugger. 5/5 puntos</li>
<li><strong><a href="http://visualjquery.com/">Visual jQuery</a></strong>: es una herramienta para la navegación por la documentación de jQuery, que nos permite encontrar fácilmente ayuda sobre un procedimiento que estemos buscando de este popular framework de Javascript. 4/5 puntos (debería estar actualizado a la última versión estable 1.3.1)</li>
<li><strong><a href="http://www.gotapi.com/">gotAPI</a></strong>: buscador vertical para distintos lenguajes de programación. Imprescindible para encontrar rapidamente ayuda sobre funciones de un determinado lenguaje (HTML, Javascript, PHP, Perl, Ruby, C++, etc.) 4/5 puntos</li>
<li><strong><a href="http://javascript.infogami.com/Javascript_in_Ten_Minutes">Javascript in Ten Minutes</a></strong>: un repaso rápido a la funcionalidad y sintaxis de Javascript. 3/5 puntos (viene bien para un vistazo rápido)</li>
<li><strong><a href="http://spellbook.infinitiv.it/wdrl/">&lt;WebDevResourceList /&gt;</a></strong>: listado de frameworks, cms, wikis, blogs, foros y demás herramientas que podemos filtrar por el lenguaje programación que utilizan (PHP, Python, Ruby, Perl, Java&#8230;). 2/5 puntos (algo tonto, pero curioso)</li>
<li><strong><a href="http://www.sprymedia.co.uk/article/Visual+Event">Visual Event</a></strong>: nos permite añadir una capa sobre la web para ver los eventos javascript que incorpora. Se puede ver un ejemplo <a href="http://www.sprymedia.co.uk/dataTables/demo_events.html">aquí</a>. 3/5 puntos (sólo funciona con algunas librerías)</li>
<li><strong><a href="http://www.w3schools.com/XML/xml_examples.asp">XML Examples</a></strong>: algunos ejemplos sobre cómo trabajar con XML, aplicando CSS, XSLT, Ajax y Javascript. 5/5 puntos (ejemplos claros e ilustrativos)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://draxus.org/weblog/2009/03/05/aap-practica-1-recursos-para-la-asignatura/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>V8, el intérprete de Javascript de Google Chrome en Linux</title>
		<link>http://draxus.org/weblog/2009/03/02/v8-el-interprete-de-javascript-de-google-chrome-en-linux/</link>
		<comments>http://draxus.org/weblog/2009/03/02/v8-el-interprete-de-javascript-de-google-chrome-en-linux/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 20:24:22 +0000</pubDate>
		<dc:creator>DraXus</dc:creator>
				<category><![CDATA[AAP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[squirrelfish]]></category>
		<category><![CDATA[tracemonkey]]></category>
		<category><![CDATA[ugr]]></category>
		<category><![CDATA[v8]]></category>

		<guid isPermaLink="false">http://draxus.org/weblog/?p=1155</guid>
		<description><![CDATA[En clase de AAP vamos a aprender a usar JavaScript no sólo como complemento al diseño web, si no como el lenguaje de programación completo que es. Para ello usaremos un intérprete que funcione desde línea de comandos. Entre otros, podemos encontrar SpiderMonkey (paquete spidermonkey-bin en Ubuntu) que está implementado en C, o por ejemplo [...]]]></description>
			<content:encoded><![CDATA[<p>En clase de <a href="http://draxus.org/weblog/2009/02/18/arquitectura-de-altas-prestaciones/">AAP</a> vamos a aprender a usar <a href="http://es.wikipedia.org/wiki/Javascript">JavaScript</a> no sólo como complemento al diseño web, si no como el lenguaje de programación completo que es. Para ello usaremos un intérprete que funcione desde línea de comandos. Entre otros, podemos encontrar <strong><a href="http://www.mozilla.org/js/spidermonkey/">SpiderMonkey</a></strong> (paquete <em>spidermonkey-bin</em> en Ubuntu) que está implementado en C, o por ejemplo <strong><a href="http://www.mozilla.org/rhino/">Rhino</a></strong> que está hecho en Java.</p>
<p>En este post pretendo mostrar cómo instalar <strong><a href="http://code.google.com/apis/v8/">V8</a></strong>, el motor de JavaScript que usa el navegador <a href="http://www.google.com/chrome">Google Chrome</a> y que está implementado en C++.</p>
<p>Primero nos descargamos el código fuente:</p>
<pre><code>svn checkout http://v8.googlecode.com/svn/trunk/ ./v8</code></pre>
<p>Para compilarlo, necesitamos tener instalado scons:</p>
<pre><code>sudo aptitude install scons</code></pre>
<p>Una vez instalado, procedemos a compilarlo:</p>
<pre><code>cd v8
scons sample=shell</code></pre>
<p>Y con esto, ya tendremos un ejecutable con el que podemos interpretar nuestros programas en JavaScript. Para facilitar las cosas podemos crear un enlace simbólico:</p>
<pre><code>sudo ln -s /home/draxus/v8/shell /usr/bin/v8</code></pre>
<p>Otros motores de última generación son <strong><a href="https://wiki.mozilla.org/JavaScript:TraceMonkey">TraceMonkey</a></strong> (Firefox 3.1) o <strong><a href="http://trac.webkit.org/wiki/SquirrelFish">SquirrelFish</a></strong> (Safari 4). Es interesante estar al tanto del rendimiento de estos motores porque están continuamente mejorando para ser competitivos en aplicaciones muy ricas en JavaScript como puede ser Gmail.</p>
]]></content:encoded>
			<wfw:commentRss>http://draxus.org/weblog/2009/03/02/v8-el-interprete-de-javascript-de-google-chrome-en-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AAP Bloque 1.2 Ejercicio 2 &#8211; Ejemplos de interfaces REST</title>
		<link>http://draxus.org/weblog/2009/02/28/aap-bloque-12-ejercicio-2-ejemplos-de-interfaces-rest/</link>
		<comments>http://draxus.org/weblog/2009/02/28/aap-bloque-12-ejercicio-2-ejemplos-de-interfaces-rest/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 16:35:35 +0000</pubDate>
		<dc:creator>DraXus</dc:creator>
				<category><![CDATA[AAP]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[lastfm]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[ugr]]></category>
		<category><![CDATA[uri]]></category>

		<guid isPermaLink="false">http://draxus.org/weblog/?p=1142</guid>
		<description><![CDATA[Hacer un programa o buscar un ejemplo que use un interfaz REST para acceder a algún servicio Web, como del.icio.us. Se denomina interfaz REST a una técnica para el acceso a recursos a través de una URI. La mayoría de los servicios webs actuales ofrecen una API, que son un conjunto de funciones y procedimientos [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Hacer un programa o buscar un ejemplo que use un interfaz REST para acceder a algún servicio Web, como <a href="http://del.icio.us">del.icio.us</a>.</p></blockquote>
<p>Se denomina interfaz <strong><acronym title="Representational State Transfer">REST</acronym></strong> a una técnica para el acceso a recursos a través de una <acronym title="Uniform Resource Identifier">URI</acronym>.</p>
<p>La mayoría de los servicios webs actuales <strong>ofrecen una <acronym title="Application Programming Interface">API</acronym></strong>, que son un conjunto de funciones y procedimientos para desarrollar aplicaciones externas, generalmente mediante la técnica REST. Veamos un par de ejemplos.</p>
<p><strong><a href="http://www.lastfm.es/">Last.fm</a></strong> es el mayor portal de recomendación de música online y una de sus múltiples funciones de <a href="http://www.lastfm.es/api">su API</a> es <a href="http://www.lastfm.es/api/show?service=270">geo.getEvents</a>, que nos da los eventos cercanos a una posición. Por ejemplo, con <a href="http://ws.audioscrobbler.com/2.0/?method=geo.getevents&#038;location=granada&#038;api_key=b25b959554ed76058ac220b7b2e0a026">http://ws.audioscrobbler.com/2.0/?method=geo.getevents&#038;location=granada&#038;api_key=b25b959554ed76058ac220b7b2e0a026</a> veremos los próximos conciertos que se van a celebrar en o cerca de Granada.</p>
<p>Podemos ver otro ejemplo en el caso de <strong><a href="http://www.flickr.com">Flickr</a></strong>, la mayor red social de fotografía online. Si usamos la función <a href="http://www.flickr.com/services/api/flickr.favorites.getPublicList.html">flickr.favorites.getPublicList</a> de <a href="http://www.flickr.com/services/api/">su API</a>, podemos obtener las fotografías públicas favoritas de un usuario de esta forma: <a href="http://api.flickr.com/services/rest/?method=flickr.favorites.getPublicList&#038;api_key=a6a323fe1aa900e0c15211f28ffdc42c&#038;user_id=92176591%40N00">http://api.flickr.com/services/rest/?method=flickr.favorites.getPublicList&#038;api_key=a6a323fe1aa900e0c15211f28ffdc42c&#038;user_id=92176591%40N00</a></p>
<p>Normalmente los resultados de estas peticiones se devuelven en formato XML o JSON, para que el procesador posterior de los datos resulte lo más cómodo posible.</p>
<p>En la mayoría de estos servicios es necesario solicitar una <em>API Key</em> para hacer las peticiones, de manera que en todo momento se sabe el uso que se hace de ella y te la pueden inhabilitar si sobrepasas los límites del servicio.</p>
<p><strong>Nota:</strong> leer comentarios.</p>
]]></content:encoded>
			<wfw:commentRss>http://draxus.org/weblog/2009/02/28/aap-bloque-12-ejercicio-2-ejemplos-de-interfaces-rest/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>AAP Bloque 1.2 Ejercicio 1 &#8211; Escalabilidad en sistemas distribuidos</title>
		<link>http://draxus.org/weblog/2009/02/28/aap-bloque-12-ejercicio-1-escalabilidad-en-sistemas-distribuidos/</link>
		<comments>http://draxus.org/weblog/2009/02/28/aap-bloque-12-ejercicio-1-escalabilidad-en-sistemas-distribuidos/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 15:49:10 +0000</pubDate>
		<dc:creator>DraXus</dc:creator>
				<category><![CDATA[AAP]]></category>
		<category><![CDATA[escalabilidad]]></category>
		<category><![CDATA[sistemas distribuidos]]></category>
		<category><![CDATA[ugr]]></category>

		<guid isPermaLink="false">http://draxus.org/weblog/?p=1139</guid>
		<description><![CDATA[Discutir cuáles son los principales obstáculos a la escalabilidad en un sistema distribuido. Se dice que un sistema es escalable si al expandirse es capaz de lograr un mejor rendimiento sin perder calidad de servicio. Algunos ejemplos de escalabilidad: Si tenemos un problema computacionalmente complejo que se está resolviendo en varias máquinas, si añadimos más [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Discutir cuáles son los principales obstáculos a la escalabilidad en un sistema distribuido. </p></blockquote>
<p>Se dice que un sistema es <strong>escalable</strong> si al expandirse es capaz de lograr un mejor rendimiento sin perder calidad de servicio.</p>
<p>Algunos <strong>ejemplos</strong> de escalabilidad:</p>
<ul>
<li>Si tenemos un problema computacionalmente complejo que se está resolviendo en varias máquinas, si añadimos más máquinas, va a tardar menos en resolverse.</li>
<li>Si un servidor web que recibe 100 peticiones por minuto pasa a recibir 1000 peticiones por minuto y el tiempo de respuesta no se ve sacrificado.</li>
</ul>
<p>Se tiende a pensar que un sistema distribuido es por definición escalable, pero esto no siempre es así ya que la parte de expansión sí se cumple, pero la de mejorar el rendimiento y no perder calidad de servicio no siempre se cumple. Esto sucede por diversas <strong>causas</strong>:</p>
<ul>
<li><strong>La latencia NO es nula</strong>: al añadir más nodos a una red distribuida, se van a introducir más retardos en la comunicación.</li>
<li><strong>El ancho de banda NO es infinito</strong>: puede llegar a pasar que uno de los nodos de la red se sature por exceso de tráfico.</li>
<li><strong>La red NO es homogénea</strong>: cada tramo de la red puede tener velocidades distintas, luego si tenemos a priori una red de alta velocidad y empezamos a añadir nodos cuya conexión es mucho más lenta, esto va a repercutir en el desempeño de la red. Asimismo puede ocurrir que se usen protocolos de red distintos, por lo que a más variedad, más latencia se tendrá.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://draxus.org/weblog/2009/02/28/aap-bloque-12-ejercicio-1-escalabilidad-en-sistemas-distribuidos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arquitectura de Altas Prestaciones</title>
		<link>http://draxus.org/weblog/2009/02/18/arquitectura-de-altas-prestaciones/</link>
		<comments>http://draxus.org/weblog/2009/02/18/arquitectura-de-altas-prestaciones/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 20:26:16 +0000</pubDate>
		<dc:creator>DraXus</dc:creator>
				<category><![CDATA[AAP]]></category>
		<category><![CDATA[ugr]]></category>

		<guid isPermaLink="false">http://draxus.org/weblog/?p=1116</guid>
		<description><![CDATA[Este cuatrimestre tengo una asignatura llamada Arquitectura de Altas Prestaciones que la imparte JJ Merelo en la ETSIIT de la Universidad de Granada. El objetivo de la asignatura es tratar de sacar el máximo partido a los sistemas informáticos actuales, desde procesadores para sistemas embebidos a un supercomputador con miles de procesadores, pasando por sistemas [...]]]></description>
			<content:encoded><![CDATA[<p>Este cuatrimestre tengo una asignatura llamada <strong><a href="http://geneura.ugr.es/~jmerelo/asignaturas/AAP/">Arquitectura de Altas Prestaciones</a></strong> que la imparte <a href="http://atalaya.blogalia.com">JJ Merelo</a> en la ETSIIT de la Universidad de Granada.</p>
<p>El objetivo de la asignatura es tratar de <strong>sacar el máximo partido a los sistemas informáticos</strong> actuales, desde <a href="http://www.arm.com/products/CPUs/embedded.html">procesadores para sistemas embebidos</a> a un <a href="http://top500.org/">supercomputador</a> con miles de procesadores, pasando por sistemas grid como el de <a href="http://www.irisgrid.es/">RedIRIS</a>.</p>
<p>Como plataforma online vamos a utilizar <strong><a href="http://aap-ugr-2007.wikispaces.com/">un wiki</a></strong> para tomar apuntes y <strong>los blogs</strong> para hacer los ejercicios de autoevaluación, que se agregarán a <strong><a href="http://geneura.ugr.es/~jmerelo/asignaturas/AAP/planet.cgi">un planet</a></strong>. Para ello he creado una categoría específica llamada <a href="http://draxus.org/weblog/category/universidad/aap/">AAP</a> con el fin de tener un RSS específico para el planet, así además de aprender yo, también aprendéis vosotros un poquito :)</p>
]]></content:encoded>
			<wfw:commentRss>http://draxus.org/weblog/2009/02/18/arquitectura-de-altas-prestaciones/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

