<?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/"
	xmlns:media="http://search.yahoo.com/mrss/">

<channel>
	<title>/home/xebuz/</title>
	<atom:link href="http://blog.jesusroldan.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jesusroldan.com</link>
	<description>&#34;Imagination, not intelligence, made us human&#34;</description>
	<lastBuildDate>Wed, 05 Mar 2014 15:08:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.3.1</generator>
	<item>
		<title>Crazy little thing called Perl: Introducción al lenguaje</title>
		<link>http://blog.jesusroldan.com/2014/03/05/crazy-little-thing-called-perl/</link>
		<comments>http://blog.jesusroldan.com/2014/03/05/crazy-little-thing-called-perl/#comments</comments>
		<pubDate>Wed, 05 Mar 2014 15:04:21 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1431</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/programacion/perl/" rel="category tag">Perl</a>, <a href="http://blog.jesusroldan.com/category/programacion/" rel="category tag">Programación</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/dev/" rel="tag">dev</a>, <a href="http://blog.jesusroldan.com/tag/linux-2/" rel="tag">linux</a>, <a href="http://blog.jesusroldan.com/tag/perl-2/" rel="tag">perl</a></p>Perl está disponible para múltimples plataformas, pueden descargarlo desde acá o desde el sistema de paquetes que utilicen. Para verificar si tienen instalado perl, en la terminal escriban perl -v, si hay salida ya lo tienen instalado. Para la instalación de librerías se utiliza CPAN, que es una colección de módulos libres para Perl. Pueden <a href='http://blog.jesusroldan.com/2014/03/05/crazy-little-thing-called-perl/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2014/03/05/crazy-little-thing-called-perl/' title='Crazy little thing called Perl: Introducción al lenguaje'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p>Perl está disponible para múltimples plataformas, pueden descargarlo desde <a href="http://www.perl.org/get.html">acá</a> o desde el sistema de paquetes que utilicen. Para verificar si tienen instalado perl, en la terminal escriban <em>perl -v</em>, si hay salida ya lo tienen instalado.</p>
<p>Para la instalación de librerías se utiliza <a href="http://www.cpan.org/"><strong>CPAN</strong></a>, que es una colección de módulos libres para Perl. Pueden descargar este script o sino instalarlo desde los repositorios, por ejemplo, en un Linux basado en Debian basta correr:</p><pre class="crayon-plain-tag">aptitude install cpanminus</pre><p>
Una vez instalado, para instalar módulos deben correr desde la consola el siguiente comando (teniendo en cuenta que el nombre del módulo es case-sensitive):</p><pre class="crayon-plain-tag">cpan install Modulo</pre><p>
<img class="aligncenter" alt="" src="http://www.tiraecol.net/modules/comic/cache/images/tiraecol-15.png" width="700" height="244" /></p>
<p><strong>Variables</strong><br />
Perl maneja tres tipos de variables:</p>
<ul>
<li>Scalar</li>
<li>Array</li>
<li>Hash</li>
</ul>
<p><strong>Scalar</strong><br />
Las variables escalares representan un valor simple. Los valores escalares pueden ser cadenas, enteros o números de coma flotante y se definen anteponiendo el signo <strong>$</strong> al nombre de la variable.<br />
No hay necesidad de pre-declarar sus tipos de variables , Perl los convertirá automáticamente entre ellos según sea necesario.</p><pre class="crayon-plain-tag">my $animal = "tortuga";
my $answer = 42;</pre><p>
<strong>Array</strong><br />
Las variables de tipo Array representan una lista de valores. Se declaran anteponiendo el signo <strong>@</strong> al nombre de la variable</p><pre class="crayon-plain-tag">my @animals = ("turtle", "llama", "cat");
my @numbers = (23, 42, 69);
my @mixed   = ("whale", 666, 1.23);</pre><p>
Los Arrays son indexados a cero. Se puede acceder a los valores de la siguiente manera:</p><pre class="crayon-plain-tag">print $animals[0];              # imprime "turtle". Se utiliza $ porque es un valor scalar
print $animals[1];              # imprime "llama"</pre><p>
La variable especial $#nombrearray nos indica el índice del último elemento.</p><pre class="crayon-plain-tag">print $#mixed;                # imprime 2
print $mixed[$#mixed];        # último elemento, imprime 1.23</pre><p>
Si utilizamos @mixed en contexto escalar, obtendremos el tamaño de nuestro Array:</p><pre class="crayon-plain-tag">$arrayLength = @mixed;
print $arraylength;            #imprime 3</pre><p>
Para obtener múltiples valores de nuestro Array:</p><pre class="crayon-plain-tag">@animals[0,1];           # Devuelve ("turtle", "llama"), @ porque devuelve un array;
@animals[0..2];          # Devuelve ("turtle", "llama", "cat");
@animals[1..$#animals];  # Devuelve todo excepto el primer elemento</pre><p>
<p><strong>Hash</strong><br />
Un hash representa un conjunto de pares clave / valor. En realidad hash son tipo de Arrays, con la excepción de que el índice puede ser un número o una cadena. Están precedidos por el signo <strong>%</strong> de la siguiente manera:</p><pre class="crayon-plain-tag">my %fruta_color = ("manzana", "rojo", "banana", "amarillo");</pre><p>
Se pueden utilizar los espacios en blanco y el operador =&gt; para dejarlo mas claro:</p><pre class="crayon-plain-tag">my %fruta_color = (
    manzana =&gt; "red",
    banana =&gt; "amarillo",
);</pre><p>
Para obtener un elemento del hash:</p><pre class="crayon-plain-tag">$fruta_color{"manzana"}       # Devuelve "rojo"</pre><p>
Podemos obtener una lista con las claves o valores con las funciones predefinidas keys() y values():</p><pre class="crayon-plain-tag">my @frutas = keys(%fruta_color);
my colores = values(%fruta_color);</pre><p>
<strong>Alcance de las variables</strong></p>
<p>En la sección anterior declaramos:</p><pre class="crayon-plain-tag">my $animal = "tortuga";</pre><p>
El modificador my no es necesario, también se puede usar:</p><pre class="crayon-plain-tag">$animal = "tortuga";</pre><p>
Sin embargo, el uso anterior creará variables globales a través de su programa, que es mala práctica de programación. my crea variables con ámbito local. Las variables locales están disponibles en el ámbito del bloque (es decir, un grupo de estados rodeadas de llaves) en el que están definidos.</p><pre class="crayon-plain-tag">my $x = "foo";
my $condicion = 1;
if ($condicion) {
    my $y = "bar";
    print $x;           # imprime "foo"
    print $y;           # imprime "bar"
}
print $x;               # imprime "foo"
print $y;               # no imprime nada ; $y no está en ese scope</pre><p>
<p><strong>Tabla de conversiones de tipos</strong></p>
<table>
<thead>
<tr>
<th> </th>
<th>(1,2,3)</th>
<th>[1,2,3]</th>
<th>{a=>x}</th>
<th>(a=>1)</th>
<th>&#8220;pepe&#8221;</th>
</tr>
</thead>
<tbody>
<tr>
<th>Arity</th>
<td>Lista</td>
<td>Scalar</td>
<td>Hash Ref.</td>
<td>Hash</td>
<td>Scalar</td>
</tr>
<tr>
<th>Elemento</th>
<td>$x[0]</td>
<td>$x->[1]</td>
<td>$x->{a}</td>
<td>$x{a}</td>
<td>$x</td>
</tr>
<tr>
<th>Lista</th>
<td>@x</td>
<td>@{$x}</td>
<td>%{$x}</td>
<td>%x</td>
<td>($x)</td>
</tr>
<tr>
<th>Hash</th>
<td>&#8211;</td>
<td>&#8211;</td>
<td>%{$x}</td>
<td>%x</td>
<td>{e=> $x}</td>
</tr>
<tr>
<th>Ref.</th>
<td>\@x</td>
<td>$x</td>
<td>$x</td>
<td>\%x</td>
<td>\$x</td>
</tr>
<tr>
<th>Ref. Copia</th>
<td>[@x]</td>
<td>[@{$x}]</td>
<td>{%{$x}}</td>
<td>{%x}</td>
<td>[$x]</td>
</tr>
</tbody>
</table>
<p></br><br />
<strong>Sintaxis básica</strong><br />
<strong>if, elsif, else, unless</strong></p><pre class="crayon-plain-tag"># La sintaxis es muy similar a otros lenguajes
if ($var == 3) {
  do_magic();
}

# unless se usa para un if negativo
if (!$var) {
  do_magic();
}
unless ($var) {
  do_magic();
}

# Por supuesto también existe else
if ($var) {
    do_magic();
} else {
   do_another_magic();
}
# y se pueden anidar
if ($var) {
   do_magic();
} elsif ($another_var) {
   do_another_magic();
} else {
   do_something_else();
}</pre><p> </p>
<p><strong>while, do while, until</strong></p><pre class="crayon-plain-tag">my $counter = 10;
 
while ($counter &gt; 0) {
   say $counter;
   $counter -= 1;
}

do {
  say $counter;
  $counter += 1;
} while ($counter < 10);


until( $counter > 20 ){
   say "$counter";
   $counter += 1;
}

say 'tadaaa';</pre><p> </p>
<p><strong>for, for each</strong></p>
<pre class="crayon-plain-tag"># for ( init; condition; increment )
for( $i = 1; $i &lt; 20; $i = $i + 1 ){
    print "value: $i\n";
}

my @list = (1, 20, 33, 45, 59);
foreach $i (@list){
    say '$i';
}</pre> </p>
<p><strong>Funciones</strong><br />
En realidad las funciones son subrutinas, quizás sea porque el lenguaje es viejo :P &#8230; la sintáxis es también bastante común.</p><pre class="crayon-plain-tag">sub name{
   # blablabla
   return $x;
}</pre><p> </p>
<p>Para pasar parámetros se hace de esta forma</p><pre class="crayon-plain-tag">sub TestScalar{
   my $x = @_;      #parámetro scalar 
   # blabla
}
sub TestArray{
   my @list = @_;   #parámetro array
   # blabla
}
sub TestHash {
   my (%hash) = @_; #parámetro hash
   # blabla
}

# Si esperamos varios parámetros, se pueden acceder desde la variable @_ como un array
sub TestScalar{
   my $x = @_[0]; 
   my $y = @_[1]; 
   # blabla
}</pre><p> </p>
<p><strong>Variables privadas </strong></p><pre class="crayon-plain-tag">sub TestPrivateVars{
   my $var; # inaccesible fuera de TestPrivateVars()
   $varx;   # accesible fuera de TestPrivateVars(), no hacerlo

   my ($another, @my_array, %my_hash); # declaración múltiple privada
}</pre><p> </p>
<p><strong>TDD con Perl</strong><br />
<img class="aligncenter" alt="TDD" src="http://www.aaroncohen.me/wp-content/uploads/2013/04/2011-04-28.tdd_-700x299.png" /><br />
Para hacer TDD en necesario bajar un paquete de CPAN, Test::More.<br />
Acá un ejemplo de como correr un test, sobre una función específica.</p>
<pre class="crayon-plain-tag"># En esta línea declaramos el uso de Test::More
# y le decimos que solo se corre una vez
use Test::More test =&gt; 1;

# is() es la función que ejecuta el test, consta de 3 parámetros
# 1ro función a ejecutar con sus respectivos parámetros
# 2do resultado esperado
# 3ro nombre descriptivo
is(replace("hola"), "chau", "Reemplazo de nombres");
is(replace("chay"), "chau", "Reemplazo de nombres");

# Esta es la función que se ejecuta
sub replace( my ($text) = @_;
    $text =~ s/\bhola\b/chau/gi;
    return $text;
}

#Con esta función declaramos el fin del testing
done_testing()</pre> </p>
<p><em>Próximo post: Expresiones regulares en Perl. O sea: Perl.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2014/03/05/crazy-little-thing-called-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bundles de juegos, varias opciones disponibles</title>
		<link>http://blog.jesusroldan.com/2014/02/27/bundles-de-juegos-varias-opciones-disponibles/</link>
		<comments>http://blog.jesusroldan.com/2014/02/27/bundles-de-juegos-varias-opciones-disponibles/#comments</comments>
		<pubDate>Thu, 27 Feb 2014 16:30:20 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[Juegos]]></category>
		<category><![CDATA[Sitios]]></category>
		<category><![CDATA[bundles]]></category>
		<category><![CDATA[juegos]]></category>
		<category><![CDATA[steam]]></category>
		<category><![CDATA[videojuegos]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1401</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/android/juegos/" rel="category tag">Juegos</a>, <a href="http://blog.jesusroldan.com/category/sitios/" rel="category tag">Sitios</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/bundles/" rel="tag">bundles</a>, <a href="http://blog.jesusroldan.com/tag/juegos-2/" rel="tag">juegos</a>, <a href="http://blog.jesusroldan.com/tag/steam/" rel="tag">steam</a>, <a href="http://blog.jesusroldan.com/tag/videojuegos/" rel="tag">videojuegos</a></p>The Humble Bundle &#8211; http://humblebundle.com/ Por lejos el más conocido de todos, no hace falta que explique como funciona Bundle Star &#8211; bundlestars.com Este sitio está bueno por varios motivos. Primero tiene una buena cantidad de bundles, suele tener entre 8-10 al mismo tiempo, todos muy diferentes y suelen ser con alguna temática o tipo <a href='http://blog.jesusroldan.com/2014/02/27/bundles-de-juegos-varias-opciones-disponibles/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2014/02/27/bundles-de-juegos-varias-opciones-disponibles/' title='Bundles de juegos, varias opciones disponibles'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p><a href="http://humblebundle.com/"><img class="size-medium wp-image-1403" alt="Humble Bundle" src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/Humble-Bundle-500x123.png" width="500" height="123" /></a><br />
<strong>The Humble Bundle</strong> &#8211; <em><a href="http://humblebundle.com/">http://humblebundle.com/</a></em><br />
Por lejos el más conocido de todos, no hace falta que explique como funciona <img src='http://blog.jesusroldan.com/wp-content/plugins/smilies-themer/adiumicons/biggrin.png' alt=':D' class='wp-smiley' /> <br />
</br><br />
<a href="http://www.bundlestars.com"><img src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/bundlestars2.png" alt="bundlestars2" width="480" height="118" class="size-full wp-image-1408" /></a><br />
<strong>Bundle Star</strong> &#8211; <em><a href="http://bundlestars.com">bundlestars.com</a></em><br />
Este sitio está bueno por varios motivos. Primero tiene una buena cantidad de bundles, suele tener entre 8-10 al mismo tiempo, todos muy diferentes y suelen ser con alguna temática o tipo de juego similar, no es tan aleatorio como otros. Rondan entre los 3 y 5 USD.<br />
Por otro lado, también tiene un Store de juegos individuales y DLCs, con descuentos entre 35% y 70%.<br />
</br><br />
<a href="http://www.indiegala.com/"><img src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/Indie-Gala.png" alt="Indie Gala" width="430" height="193" class="size-full wp-image-1410" /></a><br />
<strong>The Indie Gala</strong> &#8211; <em><a href="http://www.indiegala.com/">www.indiegala.com</a></em><br />
Sistema parecido al de Humble Bundle, con unos juegos desbloqueables a 1 USD, las primeras 12 horas del bundle se paga 3.99 USD para desbloquear los juegos, después 5.99 USD. También tiene 2 juegos que se muestran más adelante, para los que pagaron el precio del desbloqueo. Dato a tener en cuenta, algunas keys son para Desura.<br />
</br><br />
<a href="http://groupees.com"><img src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/Groupees-500x139.png" alt="Groupees" width="500" height="139" class="alignnone size-medium wp-image-1411" /></a><br />
<strong>Groupees</strong> &#8211; <em><a href="http://groupees.com">groupees.com</a></em><br />
Este tiene un sistema raro. Te da 8 juegos para elegir y te regala 3 más, de esos 8 podés elegir entra 4 y 8. Te sugiere un valor aproximado para pagar pero podés optar por 2 USD como mínimo. Además tenés la opción de donar 20% a <a title="Fotas" href="http://www.fotas.org/">Friends of the Animal Shelter</a> y bundles que no son de juegos (epbus, comics, etc)<br />
Venden juegos que salen de Steam Greenlight, es una buena forma de apoyar desarrolladores indie.<br />
</br><br />
<a href="http://www.blinkbundle.com"><img src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/blink-bundle.gif" alt="blink bundle" width="300" height="212" class="size-full wp-image-1413" /></a> <a href="http://www.blinkbundle.com"><img src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/blink-bundle.jpg" alt="blink-bundle" width="372" height="212" class="size-full wp-image-1414" /></a><br />
<strong>Blink Bundle</strong> &#8211; <em><a href="http://www.blinkbundle.com">blinkbundle.com</a></em><br />
Un piso de 1.99 USD para 4 juegos, el resto se desbloquean con 4.99 y tiene un juego extra bonus. Todos para Windows, Linux, Mac, Steam. Suele tener juegos interesantes.<br />
</br><br />
<a href="http://bigbadbundle.bundledragon.com"><img src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/bbbLogo-500x461.png" alt="bbbLogo" width="300" height="240" class="size-medium wp-image-1417" /></a><br />
<strong>Big Bad Bundle</strong> &#8211; <em><a href="http://bigbadbundle.bundledragon.com">bigbadbundle.bundledragon.com</a></em><br />
Tiene 3 niveles de compra progresivos y cada nivel contiene 4 juegos. Los valores mínimos para desbloquear cada nivel sería 1 USD, 5 USD y 8 USD. Todos disponibles para Steam.<br />
</br><br />
<a href="http://www.flyingbundle.com"><img src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/Flyingbundle1-500x375.png" alt="Flyingbundle1" width="400" height="2 75" class="alignnone size-medium wp-image-1420" /></a><br />
<strong>Flying Bundle</strong> &#8211; <em><a href="http://www.flyingbundle.com">flyingbundle.com</a></em><br />
Constra de varios juegos, con clave Steam y/o Desura y hay que pagar mínimo 3 USD para desbloquarlos. Tiene un juego sorpresa pero no se si lo sacás una vez que pagás o después de un tiempo.<br />
</br><br />
<a href="http://www.dailyroyale.com/"><img src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/Daily-Royale.png" alt="Daily Royale" width="330" height="49" class="size-full wp-image-1422" /></a><br />
<strong>Daily Royale</strong> &#8211; <em><a href="http://www.dailyroyale.com/">dailyroyale.com/</a></em><br />
Tiene un sistema diferente, en lugar de ofrecer un paquete de juegos, es uno solo con un descuento alto y cantidad de keys limitadas para vender.<br />
</br><br />
<a href="https://indiegamestand.com"><img src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/Indie-Game-Stand.png" alt="Indie Game Stand" width="377" height="106" class="size-full wp-image-1423" /></a><br />
<strong>Indie Game Stand</strong> &#8211; <em><a href="https://indiegamestand.com">indiegamestand.com</a></em><br />
Este sitio vende un solo juego a la vez, con un mínimo de 1 USD para la clave de Steam. Agregando un poco te ganás la OST, con 10 USD te ganás el juego anterior que vendían más otro juego sorpresa y si están entre los top 3 de contribuidores ganan una remera de la página. Además, fuera de la oferta diaria, tiene un store.<br />
</br><br />
<a href="https://ikoid.com/"><img src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/ikoid_black-500x130.png" alt="ikoid_black" width="500" height="130" class="size-medium wp-image-1424" /></a><br />
<strong>Ikoid</strong> &#8211; <em><a href="https://ikoid.com/">ikoid.com/</a></em><br />
También tiene un sistema diferente, tiene 3 juegos bastante baratos (menos de 2 USD) y se desbloquean más juegos dependiendo de la cantidad de shares en FB o +1 en Google+ o tweets, depende del bundle. Buena forma de hacerse promoción.<br />
</br><br />
<a href="http://bundle-in-a-box.com/"><img src="http://blog.jesusroldan.com/wp-content/uploads/2014/02/Bundle-in-a-box.png" alt="Bundle in a box" width="442" height="105" class="alignnone size-full wp-image-1425" /></a><br />
<del datetime="2014-02-26T17:14:06+00:00">Dick</del>Bundle in a box &#8211; <em><a href="http://bundle-in-a-box.com/">bundle-in-a-box.com</em>/</a><br />
Tiene varios juegos desbloqueables con 0.99 USD y varios que se desbloquean pasando el promedio a lo Humble Bundle (también incluye OST). Detalle, algunos juegos se descargan, otros tienen clave Steam, otros Desura; para Windows y/o Mac y/o Linux.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2014/02/27/bundles-de-juegos-varias-opciones-disponibles/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<enclosure url="http://blog.jesusroldan.com/wp-content/uploads/2014/02/Indie-Gala-150x150.png" length="13759" type="image/jpg" /><media:content url="http://blog.jesusroldan.com/wp-content/uploads/2014/02/Indie-Gala-150x150.png" width="150" height="150" medium="image" type="image/png" />	</item>
		<item>
		<title>jQuery: Selectores y Traversing</title>
		<link>http://blog.jesusroldan.com/2014/02/26/jquery-selectores-y-traversing/</link>
		<comments>http://blog.jesusroldan.com/2014/02/26/jquery-selectores-y-traversing/#comments</comments>
		<pubDate>Wed, 26 Feb 2014 15:56:32 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1398</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/programacion/html5/" rel="category tag">HTML5</a>, <a href="http://blog.jesusroldan.com/category/programacion/javascript-programacion/" rel="category tag">Javascript</a>, <a href="http://blog.jesusroldan.com/category/programacion/javascript-programacion/jquery-javascript-programacion/" rel="category tag">jQuery</a>, <a href="http://blog.jesusroldan.com/category/programacion/" rel="category tag">Programación</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/html5-2/" rel="tag">html5</a>, <a href="http://blog.jesusroldan.com/tag/javascript/" rel="tag">javascript</a>, <a href="http://blog.jesusroldan.com/tag/jquery/" rel="tag">jquery</a></p>Voy a poner esto acá, haciendo las veces de ayudamemoria. Además para el que no sepa, siempre viene bien tener un listado e investigarlos. Selectores/Traversing (que no encontré una traducción buena) en jQuery. Selectores básicos [crayon-562e17833a795163507260/] Selectores &#8220;avanzados&#8221; [crayon-562e17833a7a0288936227/] Traversing [crayon-562e17833a7a8173882550/]<table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2014/02/26/jquery-selectores-y-traversing/' title='jQuery: Selectores y Traversing'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p>Voy a poner esto acá, haciendo las veces de ayudamemoria. Además para el que no sepa, siempre viene bien tener un listado e investigarlos.<br />
Selectores/Traversing (que no encontré una traducción buena) en jQuery.</p>
<p><strong>Selectores básicos</strong><br />
<pre class="crayon-plain-tag">$("#idName")          // Por id
  $(".className")       // Por clase

  $(document)           // DOM (Document Object Model)
  $(window)             // DOM + imágenes + iframes

  $("*")                // todos los elementos
  $("div.title")        // <div class="title"> </div>
  $("div:first")        // Primer div

  $("article h1")       // Todos los h1 dentro de article
  $("article > h1")     // Todos los h1 hijos directo de article

  $("[href]")           // Todos los elementos que tengan href
  $("li:nth-child(n)")  // El elmento n - *cuenta desde 1*

  $("tr:even")          // TableRows pares	
  $("p:hidden")         // Todos los <p> ocultos (con .hide())</pre>
<p><strong>Selectores &#8220;avanzados&#8221;</strong><br />
<pre class="crayon-plain-tag">$(":input")           // Todos los inputs
  $(":text")                 // Todos los elementos type="text"
  $(":checked")              // Todos los elementos chequeados
  $(":focus")                // Todos los elementos que tengan foco

  $("[href='index.html']")   // href que sean igual a index.html
  $("[href!='index.html']")  // href que no sean igual a "index.html"
  $("[href$='.html']")       // href que terminen en ".html"
  $("[href^='https://']")    // href que empiezen en "https://"
  $("[href*='cuenta']")      // href que contengan "cuenta"

  $("#nav ul li:first-child")   // Primer li dentro de un/los ul que estén dentro de #nav</pre>
<p><strong>Traversing </strong><br />
<pre class="crayon-plain-tag">$("#nav ul:first li:eq(2)")   // 3er li, dentro del 1er ul que esté en #nav *inicia en 0*
  $("#nav ul:eq(0) li:eq(-1)")  // Último li, dentro del 1er ul que esté en #nav
  $("#nav ul li:gt(2)")         // Los li que tengan un index mayor a 2
  $("#nav ul li:lt(2)")         // Los li que tengan un index menor a 2

  $("#post").not("p")           // Todos los elementos que no sean <p>
  $("#nav ul li").not(":even")  // Todos los li que no sean pares
  $("#nav ul").children(":contains('Simulador')")   // .children() busca todos los hijos del elemento, :contains() filtra por texto
  $("#nav ul li p").parent(".active") // Selecciona el li que tenga un p activo
  
  $( "#nav ul li" ).each(function( index ) { 
      console.log( index + ": " + $( this ).text() );
  });

  if ( $("#nav").is("div") ) { ... }    

  // Otras opciones:
  // .end() .find() .first() .last() .has() .next() .nextAll() .prev() .prevAll() ...
  // https://api.jquery.com/category/traversing/</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2014/02/26/jquery-selectores-y-traversing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery Doge &#8211; such plugin</title>
		<link>http://blog.jesusroldan.com/2013/12/23/jquery-doge-such-plugin/</link>
		<comments>http://blog.jesusroldan.com/2013/12/23/jquery-doge-such-plugin/#comments</comments>
		<pubDate>Mon, 23 Dec 2013 14:31:40 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Sitios]]></category>
		<category><![CDATA[doge]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[meme]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1385</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'><a href='http://blog.jesusroldan.com/2013/12/23/jquery-doge-such-plugin/' title='jQuery Doge - such plugin'><img src='http://blog.jesusroldan.com/wp-content/uploads/2013/12/687474703a2f2f692e696d6775722e636f6d2f6439597559776f2e706e67.png' border='0'   /></a></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/programacion/html5/" rel="category tag">HTML5</a>, <a href="http://blog.jesusroldan.com/category/programacion/javascript-programacion/" rel="category tag">Javascript</a>, <a href="http://blog.jesusroldan.com/category/programacion/" rel="category tag">Programación</a>, <a href="http://blog.jesusroldan.com/category/sitios/" rel="category tag">Sitios</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/doge/" rel="tag">doge</a>, <a href="http://blog.jesusroldan.com/tag/github/" rel="tag">github</a>, <a href="http://blog.jesusroldan.com/tag/javascript/" rel="tag">javascript</a>, <a href="http://blog.jesusroldan.com/tag/jquery/" rel="tag">jquery</a>, <a href="http://blog.jesusroldan.com/tag/meme/" rel="tag">meme</a></p>Hace unos días había liberado un plugin de jQuery bastante tonto, y ahora hice un update del mismo con unos cuantos bugs corregidos y además ahora pemite parametrizarlo, así pasa a estar un poco mas usable de lo que estaba antes. Es mi primer plugin así que quizás no está tan optimizado&#8230; aunque considero que <a href='http://blog.jesusroldan.com/2013/12/23/jquery-doge-such-plugin/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2013/12/23/jquery-doge-such-plugin/' title='jQuery Doge - such plugin'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p>Hace unos días había liberado un plugin de jQuery bastante tonto, y ahora hice un update del mismo con unos cuantos bugs corregidos y además ahora pemite parametrizarlo, así pasa a estar un poco mas usable de lo que estaba antes.<br />
Es mi primer plugin así que quizás no está tan optimizado&#8230; aunque considero que no es tan inestable como pensé que podía quedar <img src='http://blog.jesusroldan.com/wp-content/plugins/smilies-themer/adiumicons/happy.png' alt=':)' class='wp-smiley' /> </p>
<p>Pueden descargarlo <a href="https://github.com/xeBuz/jquery-doge">desde GitHub</a> o ver un ejemplo del funcionamiento <a href="http://jesusroldan.com/doge/demo.html" >desde esta demo</a></p>
<p>El uso básico es el siguiente, solo deben pasarle un listado de palabras a mostrar, ya incluye algunas por defecto (wow, so doge y asi):</p><pre class="crayon-plain-tag">$(document).ready( function() {
   // Create an array with some words
   $('body').doge({ 
       wordList : ["such page", "lorem impsum", "so cool", "much jquery", "kitten", "such demo", "Kitten Ipsum"]
   });
});</pre><p> </p>
<p>También se puede parametrizar un poco, con estas opciones:</p>
<pre class="crayon-plain-tag">$(document).ready( function() {
   $('body').doge({ 
       wordList : ["such page", "lorem impsum", "so cool", "much jquery", "text", "such demo", "Kitten Ipsum"],
       showDoge : true,
       fontSize : "2em",
       fontBorder: true,
       dogeImage : "doge.png",
       colours : ["red", "green", "orange", "violet", "aqua", "yellow", "slateblue", "purple", "pink", "lime", "fuchsia", "gold", "indigo"],
       textDuration: 1200,
       textRespawn: 1000,       
   });
});</pre> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2013/12/23/jquery-doge-such-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<enclosure url="http://blog.jesusroldan.com/wp-content/uploads/2013/12/687474703a2f2f692e696d6775722e636f6d2f6439597559776f2e706e67-150x150.png" length="55457" type="image/jpg" /><media:content url="http://blog.jesusroldan.com/wp-content/uploads/2013/12/687474703a2f2f692e696d6775722e636f6d2f6439597559776f2e706e67-150x150.png" width="150" height="150" medium="image" type="image/png" />	</item>
		<item>
		<title>Licencia para ir al cine</title>
		<link>http://blog.jesusroldan.com/2013/07/01/licencia-para-ir-al-cine/</link>
		<comments>http://blog.jesusroldan.com/2013/07/01/licencia-para-ir-al-cine/#comments</comments>
		<pubDate>Mon, 01 Jul 2013 20:00:30 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[cine]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[Tweet largo]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1357</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/personal/" rel="category tag">Personal</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/cine-2/" rel="tag">cine</a>, <a href="http://blog.jesusroldan.com/tag/random/" rel="tag">random</a>, <a href="http://blog.jesusroldan.com/tag/tweet-largo/" rel="tag">Tweet largo</a></p>Así como existe una licencia para conducir que te permite manejar un vehículo debería existir un carnet que te habilite la entrada a los cines. La deberías sacar con un exámen previo con normas de convivencia y reglas básicas. Este carnet se renovaría, podrías sacar entradas con un ID único y asi llevar un registro. <a href='http://blog.jesusroldan.com/2013/07/01/licencia-para-ir-al-cine/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2013/07/01/licencia-para-ir-al-cine/' title='Licencia para ir al cine'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p>Así como existe una licencia para conducir que te permite manejar un vehículo debería existir un carnet que te habilite la entrada a los cines. La deberías sacar con un exámen previo con normas de convivencia y reglas básicas.<br />
Este carnet se renovaría, podrías sacar entradas con un ID único y asi llevar un registro.</p>
<p>Se podría imponer un sistema de puntos, que te descuenten por:</p>
<ul>
<li>Hablar: 3 puntos</li>
<li>Hablar por teléfono: 5 puntos.</li>
<li>Spoilear: 10 puntos.</li>
<li>Revolver el pochoclo: 1 punto.</li>
<li>Abrir caramelos: 2 puntos.</li>
<li>Tomar gaseosa cuando ya no hay nada: 2 puntos.</li>
<li>Ir con un bebé: 5 puntos.</li>
</ul>
<p>Al perder x cantidad de puntos, se te revoca la licencia por unos meses y para renovarla hay que hacer un curso.</p>
<p>No aseguraríamos que, al ir al cine, no renegaríamos con pelotudos que no saben comportarse <img src='http://blog.jesusroldan.com/wp-content/plugins/smilies-themer/adiumicons/biggrin.png' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2013/07/01/licencia-para-ir-al-cine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Barra de progreso de Arch Linux para Python</title>
		<link>http://blog.jesusroldan.com/2012/10/21/barra-de-progreso-de-arch-linux-para-python/</link>
		<comments>http://blog.jesusroldan.com/2012/10/21/barra-de-progreso-de-arch-linux-para-python/#comments</comments>
		<pubDate>Sun, 21 Oct 2012 20:49:21 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[iLoveCandy]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pacman]]></category>
		<category><![CDATA[progressbar]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1313</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/gnu-linux/arch-linux/" rel="category tag">Arch Linux</a>, <a href="http://blog.jesusroldan.com/category/programacion/bash-programacion/" rel="category tag">Bash</a>, <a href="http://blog.jesusroldan.com/category/programacion/" rel="category tag">Programación</a>, <a href="http://blog.jesusroldan.com/category/programacion/python/" rel="category tag">Python</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/arch/" rel="tag">arch</a>, <a href="http://blog.jesusroldan.com/tag/ilovecandy/" rel="tag">iLoveCandy</a>, <a href="http://blog.jesusroldan.com/tag/linux-2/" rel="tag">linux</a>, <a href="http://blog.jesusroldan.com/tag/pacman/" rel="tag">pacman</a>, <a href="http://blog.jesusroldan.com/tag/progressbar/" rel="tag">progressbar</a>, <a href="http://blog.jesusroldan.com/tag/python-2/" rel="tag">python</a></p>Hace unos días me puse a portar la barra de progreso que tiene el sistema de paquetes de Arch Linux (activando la opción ILoveCandy) a Python 3 3.X y 2.7. De momento está en fase de prueba, pero es dentro de todo funcional, prometo ir actualizándola cuando pueda. Para poder instalarlo, pueden bajarse los fuentes <a href='http://blog.jesusroldan.com/2012/10/21/barra-de-progreso-de-arch-linux-para-python/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2012/10/21/barra-de-progreso-de-arch-linux-para-python/' title='Barra de progreso de Arch Linux para Python'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p>Hace unos días me puse a <em>portar</em> la barra de progreso que tiene el sistema de paquetes de <a title="Tips Linuxeros: Optimizar pacman y la instalación de aplicaciones en Arch Linux" href="http://blog.jesusroldan.com/2011/12/28/tips-para-mejorar-la-instacion-de-aplicaciones-en-arch/"><strong>Arch Linux</strong></a> (activando la opción <strong>ILoveCandy</strong>) a Python <del datetime="2012-10-24T20:25:55+00:00">3</del> 3.X y 2.7. De momento está en fase de prueba, pero es dentro de todo funcional, prometo ir actualizándola cuando pueda.</p>
<p>Para poder instalarlo, pueden bajarse los fuentes <a title="GitHub" href="https://github.com/xeBuz/pacman-progressbar">desde <strong>GitHub</strong></a> (es licencia Beer-ware, una adaptación de BSD) o mejor aún directamente desde PyPi:</p><pre class="crayon-plain-tag">sudo pip install pacmanprogressbar</pre><p>
<p>La utilización es la siguiente (proximamente voy a hacer que se pueda iterar directamente):</p><pre class="crayon-plain-tag">#!/usr/bin/env python
import time
from pacmanprogressbar import Pacman

if __name__ == "__main__":
    p = Pacman(end=100)

    for x in range(p.len):
        p.update()
        time.sleep(.2)</pre><p>
Una vez instanciada la clase, tiene dos métodos públicos:</p>
<ul>
<li><strong>update([value])</strong>, actualiza el progreso sumándole el valor del parámetro, por defecto suma 1.</li>
<li><strong>progress(value)</strong>, en vez de sumarizar, se le pasa directamente el valor del progreso.</li>
</ul>
<p>La salida en consola sería más o menos como esta:<br />
<a href="http://blog.jesusroldan.com/wp-content/uploads/2012/10/animacion.gif"><img class="aligncenter size-full wp-image-1314" title="animacion" src="http://blog.jesusroldan.com/wp-content/uploads/2012/10/animacion.gif" alt="" width="677" height="297" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2012/10/21/barra-de-progreso-de-arch-linux-para-python/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<enclosure url="http://blog.jesusroldan.com/wp-content/uploads/2012/10/animacion-150x150.gif" length="1772" type="image/jpg" /><media:content url="http://blog.jesusroldan.com/wp-content/uploads/2012/10/animacion-150x150.gif" width="150" height="150" medium="image" type="image/gif" />	</item>
		<item>
		<title>Script para grabar la consola en un .gif animado</title>
		<link>http://blog.jesusroldan.com/2012/10/17/script-para-grabar-la-consola-en-un-gif-animado/</link>
		<comments>http://blog.jesusroldan.com/2012/10/17/script-para-grabar-la-consola-en-un-gif-animado/#comments</comments>
		<pubDate>Thu, 18 Oct 2012 02:03:52 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[animado]]></category>
		<category><![CDATA[animate]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[bofh]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[gif]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1300</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'><a href='http://blog.jesusroldan.com/2012/10/17/script-para-grabar-la-consola-en-un-gif-animado/' title='Script para grabar la consola en un .gif animado'><img src='http://blog.jesusroldan.com/wp-content/uploads/2011/07/gnome-terminal.png' border='0'   /></a></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/programacion/bash-programacion/" rel="category tag">Bash</a>, <a href="http://blog.jesusroldan.com/category/programacion/" rel="category tag">Programación</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/animado/" rel="tag">animado</a>, <a href="http://blog.jesusroldan.com/tag/animate/" rel="tag">animate</a>, <a href="http://blog.jesusroldan.com/tag/bash/" rel="tag">bash</a>, <a href="http://blog.jesusroldan.com/tag/bofh/" rel="tag">bofh</a>, <a href="http://blog.jesusroldan.com/tag/console/" rel="tag">console</a>, <a href="http://blog.jesusroldan.com/tag/gif/" rel="tag">gif</a>, <a href="http://blog.jesusroldan.com/tag/imagemagick/" rel="tag">imagemagick</a>, <a href="http://blog.jesusroldan.com/tag/linux-2/" rel="tag">linux</a></p>Hoy me surgió una necesidad, que me pareció bastante simple pero no encontré herramientas simples que me lo solucionaran. Les dejo este script, que graba un gif de la consola durante X segundos (idea de @shinax y @rootmyword). Ese valor se lo pasamos por parámetro (no lo valido ni tiene default, porque la vida es <a href='http://blog.jesusroldan.com/2012/10/17/script-para-grabar-la-consola-en-un-gif-animado/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2012/10/17/script-para-grabar-la-consola-en-un-gif-animado/' title='Script para grabar la consola en un .gif animado'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p>Hoy me surgió una necesidad, que me pareció bastante simple pero no encontré herramientas simples que me lo solucionaran. Les dejo este script, que graba un gif de la consola durante X segundos (idea de @shinax y @rootmyword). Ese valor se lo pasamos por parámetro (no lo valido ni tiene default, porque la vida es demasiado corta para controlarlo) . Hay que correr el script con un &#038; al final de la línea, asi pasa a correr en background y podemos usar la consola.</p>
<pre class="crayon-plain-tag">#!/bin/bash
clear
mkdir temp_gif

segs=`expr $1 \* 5`

for (( i = 1; i &lt;= $segs ; i++ ));
do
	printf -v number "%06d" $i
	import -window $WINDOWID temp_gif/$number.gif 
	sleep 0.2
done

convert -delay 20 -loop 0 temp_gif/*.gif animacion.gif

rm -R temp_gif</pre> </p>
<p>El código terminó siendo más simple de lo que pensaba, toda la magia la hace <strong>ImageMagick</strong>. Explico por línea, porque la idea siempre es aprender como funciona:<br />
Línea 5. Toma el primer parámetro que le demos, lo multiplica por 5 porque cada imagen la saco cada 0.2 segundos <img src='http://blog.jesusroldan.com/wp-content/plugins/smilies-themer/adiumicons/wink.png' alt=';)' class='wp-smiley' /> <br />
Línea 9. El <strong>printf</strong> lo utilizo para formatear &#038;i, neceito hacer un zero-padding, o sea, rellenar con ceros a la izquierda, para que después el conversor me tome el orden correcto. El parámetro -v indica que no lo imprima, sino que lo almacene en una variable.<br />
Línea 10. ImageMagick se encarga de guardar la imágen de la ventana que le digo, para $WINDOWSID creo que es necesario <strong>xorg-xwininfo</strong>, ya lo tenía instalado.<br />
Línea 13. Toma todas las imágenes de la carpeta, las concatena con un delay de 0.2 segundos y hace un loop infinito.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2012/10/17/script-para-grabar-la-consola-en-un-gif-animado/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Post-charla] Introducción al desarrollo web de videojuegos</title>
		<link>http://blog.jesusroldan.com/2012/09/07/post-charla-introduccion-al-desarrollo-web-de-videojuegos/</link>
		<comments>http://blog.jesusroldan.com/2012/09/07/post-charla-introduccion-al-desarrollo-web-de-videojuegos/#comments</comments>
		<pubDate>Fri, 07 Sep 2012 14:33:06 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[crafty]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[vi]]></category>
		<category><![CDATA[videojuegos]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1280</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'><a href='http://blog.jesusroldan.com/2012/09/07/post-charla-introduccion-al-desarrollo-web-de-videojuegos/' title='[Post-charla] Introducción al desarrollo web de videojuegos'><img src='http://blog.jesusroldan.com/wp-content/uploads/2012/09/Logo_Uni-Code.png' border='0'   /></a></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/programacion/html5/" rel="category tag">HTML5</a>, <a href="http://blog.jesusroldan.com/category/programacion/" rel="category tag">Programación</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/crafty/" rel="tag">crafty</a>, <a href="http://blog.jesusroldan.com/tag/js/" rel="tag">js</a>, <a href="http://blog.jesusroldan.com/tag/vi/" rel="tag">vi</a>, <a href="http://blog.jesusroldan.com/tag/videojuegos/" rel="tag">videojuegos</a></p>Antes que nada gracias a todos los que fueron ayer a la charla de desarrollo de videojuegos y a la gente de UNI-CODE por la invitación. Les dejo algunos links que había prometido o temas que quedaron en el aire. Cualquier cosa avisen. Los slides están online acá, es recomendable verlo a pantalla completa (espero <a href='http://blog.jesusroldan.com/2012/09/07/post-charla-introduccion-al-desarrollo-web-de-videojuegos/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2012/09/07/post-charla-introduccion-al-desarrollo-web-de-videojuegos/' title='[Post-charla] Introducción al desarrollo web de videojuegos'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p><a href="http://blog.jesusroldan.com/wp-content/uploads/2012/09/supermeatboy.png"><img src="http://blog.jesusroldan.com/wp-content/uploads/2012/09/supermeatboy.png" alt="" title="supermeatboy" width="400" height="314" class="aligncenter size-full wp-image-1293" /></a></p>
<p>Antes que nada gracias a todos los que fueron ayer a la <a href="http://blog.jesusroldan.com/2012/09/05/charla-introduccion-al-desarrollo-web-de-videojuegos/" title="[Charla] Introducción al desarrollo web de videojuegos">charla de desarrollo de videojuegos</a> y a la gente de <a href="http://uni-code-group.blogspot.com.ar/" title="UNI-CODE" target="_blank"><strong>UNI-CODE</strong></a> por la invitación. Les dejo algunos links que había prometido o temas que quedaron en el aire. Cualquier cosa avisen.</p>
<ul>
<li>Los slides están <a href="http://jesusroldan.com/Charlas/Crafty/crafty.html">online acá</a>, es recomendable verlo a pantalla completa (espero que el touchpad no los trollée como a mi).</li>
<li>El código fuente de <a href="https://github.com/xeBuz/Charlas/tree/master/Crafty%20-%20Framework%20para%20videojuegos">los slides está en GitHub</a>. Usé <a href="https://github.com/cykod/CoderDeck">CoderDeck</a> porque me permitía correr código JS y modificarlo mientras daba la charla.</li>
<li>Esta es la <a href="http://craftyjs.com/api/">documentación de Crafty</a>.</li>
<li>Los componente extras de Crafty se pueden ver <a href="http://craftycomponents.com/">en este sitio</a>. Inlcuso ahí está <a href="http://craftycomponents.com/boilerplate">Craftyboilerplate</a> y <a href="http://flexpi.com/">Flexpi</a></li>
<li><a href="http://leo-koppelkamm.de/polyCreator/">Este sitio tiene el creador de polígonos</a>, porque hacerlos a mano es muy denso.</li>
<li>En un momento se comentó de un grupo de gente que se juntaba cada tanto pero nadie tenía demasiados datos, eran de <a href="http://www.indiegamedev.org/">IndieGameDev</a>.</li>
<li>Vayan preparándose para la <a href="http://gamejamcordoba.com/">GlobalGameJam</a> <img src='http://blog.jesusroldan.com/wp-content/plugins/smilies-themer/adiumicons/wink.png' alt=';)' class='wp-smiley' /> </li>
</ul>
<p><a href="http://blog.jesusroldan.com/wp-content/uploads/2012/09/Logo_Uni-Code.png"><img src="http://blog.jesusroldan.com/wp-content/uploads/2012/09/Logo_Uni-Code-150x150.png" alt="" title="Logo_Uni-Code" width="150" height="150" class="aligncenter size-thumbnail wp-image-1287" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2012/09/07/post-charla-introduccion-al-desarrollo-web-de-videojuegos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<enclosure url="http://blog.jesusroldan.com/wp-content/uploads/2012/09/Logo_Uni-Code-150x150.png" length="20167" type="image/jpg" /><media:content url="http://blog.jesusroldan.com/wp-content/uploads/2012/09/Logo_Uni-Code-150x150.png" width="150" height="150" medium="image" type="image/png" />	</item>
		<item>
		<title>[Charla] Introducción al desarrollo web de videojuegos</title>
		<link>http://blog.jesusroldan.com/2012/09/05/charla-introduccion-al-desarrollo-web-de-videojuegos/</link>
		<comments>http://blog.jesusroldan.com/2012/09/05/charla-introduccion-al-desarrollo-web-de-videojuegos/#comments</comments>
		<pubDate>Wed, 05 Sep 2012 12:54:41 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[crafty]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[programacion web]]></category>
		<category><![CDATA[videojuegos]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1267</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'><a href='http://blog.jesusroldan.com/2012/09/05/charla-introduccion-al-desarrollo-web-de-videojuegos/' title='[Charla] Introducción al desarrollo web de videojuegos'><img src='http://blog.jesusroldan.com/wp-content/uploads/2012/09/Flyer-6-9-12.jpg' border='0'   /></a></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/programacion/html5/" rel="category tag">HTML5</a>, <a href="http://blog.jesusroldan.com/category/personal/" rel="category tag">Personal</a>, <a href="http://blog.jesusroldan.com/category/programacion/" rel="category tag">Programación</a>, <a href="http://blog.jesusroldan.com/category/gnu-linux/tutoriales/" rel="category tag">Tutoriales</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/crafty/" rel="tag">crafty</a>, <a href="http://blog.jesusroldan.com/tag/framework/" rel="tag">framework</a>, <a href="http://blog.jesusroldan.com/tag/gnu/" rel="tag">gnu</a>, <a href="http://blog.jesusroldan.com/tag/html/" rel="tag">html</a>, <a href="http://blog.jesusroldan.com/tag/html5-2/" rel="tag">html5</a>, <a href="http://blog.jesusroldan.com/tag/programacion-web/" rel="tag">programacion web</a>, <a href="http://blog.jesusroldan.com/tag/videojuegos/" rel="tag">videojuegos</a></p>El jueves 6 a las 19hs voy a estar en la UTN de Córdoba para dar una charla sobre desarrollo de videojuegos para navegadores (en HTML5, todos sabemos que Flash es malvado) invitado por la gente de UNI-CODE, un grupo de estudiantes que se encarga de divulgación de tecnología libre de humo. La charla es <a href='http://blog.jesusroldan.com/2012/09/05/charla-introduccion-al-desarrollo-web-de-videojuegos/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2012/09/05/charla-introduccion-al-desarrollo-web-de-videojuegos/' title='[Charla] Introducción al desarrollo web de videojuegos'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p>El jueves 6 a las 19hs voy a estar en la UTN de Córdoba para dar una charla sobre desarrollo de videojuegos para navegadores (en HTML5, todos sabemos que Flash es malvado) invitado por la gente de <a href="http://uni-code-group.blogspot.com.ar/" title="UNI-CODE" target="_blank"><strong>UNI-CODE</strong></a>, un grupo de estudiantes que se encarga de divulgación de tecnología libre de humo.</p>
<p>La charla es abierta para todos y está de más decir que es gratis, va a ser muy introductoria con algunos conceptos básicos. También se va a mostrar un framework, <a href="http://craftyjs.com/" title="Crafty"><strong>Crafty</strong></a>, para simplificar el desarrollo. Si bien está pensada para programadores, la idea es juntar gente con ganas, quien sabe, puede surgir algun proyecto entre las personas que asistan. Las ganas de muchos están, falta organizarnos.</p>
<p><a href="http://blog.jesusroldan.com/wp-content/uploads/2012/09/Flyer-6-9-12.jpg"><img src="http://blog.jesusroldan.com/wp-content/uploads/2012/09/Flyer-6-9-12-353x500.jpg" alt="Desarrollo de videojuegos" title="Flyer" width="353" height="500" class="aligncenter size-medium wp-image-1268" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2012/09/05/charla-introduccion-al-desarrollo-web-de-videojuegos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<enclosure url="http://blog.jesusroldan.com/wp-content/uploads/2012/09/Flyer-6-9-12-150x150.jpg" length="11346" type="image/jpg" /><media:content url="http://blog.jesusroldan.com/wp-content/uploads/2012/09/Flyer-6-9-12-150x150.jpg" width="150" height="150" medium="image" type="image/jpeg" />	</item>
		<item>
		<title>Cadena de memes: Libros</title>
		<link>http://blog.jesusroldan.com/2012/08/11/cadena-de-memes-libros/</link>
		<comments>http://blog.jesusroldan.com/2012/08/11/cadena-de-memes-libros/#comments</comments>
		<pubDate>Sat, 11 Aug 2012 16:22:52 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[Libros]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1239</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/libros/" rel="category tag">Libros</a></p><p></p>Si, 2012 y existen las cadenas de memes. Está me pareció muy interesante, la vi en Ciencia Kanija (hace ya unos días y tuve el post en borrador) y me gustó la idea Un libro que cambió mi vida Es difícil decir que libro me cambió la vida, porque quizás todos en alguna medida lo <a href='http://blog.jesusroldan.com/2012/08/11/cadena-de-memes-libros/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2012/08/11/cadena-de-memes-libros/' title='Cadena de memes: Libros'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p>Si, 2012 y existen las cadenas de memes. Está me pareció muy interesante, la vi en <a href="http://www.cienciakanija.com/2012/07/21/cadena-de-memes-libros/">Ciencia Kanija</a> (hace ya unos días y tuve el post en borrador) y me gustó la idea <img src='http://blog.jesusroldan.com/wp-content/plugins/smilies-themer/adiumicons/biggrin.png' alt=':D' class='wp-smiley' /> </p>
<p><strong>Un libro que cambió mi vida</strong><br />
Es difícil decir que libro me cambió la vida, porque quizás todos en alguna medida lo hagan&#8230; pero, le tengo mucho cariño a  La peste del francés Albert Camus porque fue uno de los primeros libros que recuerde haber agarrado por mi cuenta para leer por gusto.</p>
<p><strong>Un libro que tuve que leer más de una vez</strong><br />
Si bien no soy muy amante de releer los libros, en algunos caso en particular, como en El Señor de los Anillos, puede leer el libro una y otra vez. También puedo agregar a la lista El extraño caso del doctor Jekyll y el señor Hyde de Robert Louis Stevenson, que si bien es una historia muy conocida, adaptada muchísimas veces y todos sabemos que pasa&#8230;está tan bien escrito el libro que se puede leer una y otra vez.<br />
Obviamente esto no cuenta para libros que me vi obligado a empezar de nuevo por dejarlos un tiempo largo :P</p>
<p><strong>Un libro que me llevaría a una isla desierta</strong><br />
La Biblia. Es grande y tiene muchas hojas, ideal para cuando escasee el papel higiénico. OOOOKKK. Un manual de supervivencia sería mi segunda opción, claro.</p>
<p><strong>Un libro que me hizo reír</strong><a href="http://blog.jesusroldan.com/wp-content/uploads/2012/08/41201217484.jpg"><img src="http://blog.jesusroldan.com/wp-content/uploads/2012/08/41201217484-300x300.jpg" alt="" title="biblioteca" width="300" height="300" class="alignright size-medium wp-image-1255" /></a><br />
¡Uf! Muchísimos. Puedon nombrar la &#8220;Guía del autoestopista galáctico&#8221; de Douglas Adams o Discworld de Terry Pratchett pero voy a caer en la obviedad. Un libro que leí hace poco que me hizo reir mucho fue &#8220;Los Enanos Gullys&#8221; de Parkinson Dan, basado en la cosmogonía de Dragonlance. Una aventura épica que mezcla a la raza mas insulsa y a la más poderosa de todo Krynn. Un dragón (Verden) castigado por Takhisis tiene que defender a una tribu de enanos Gullys, en una combinación que no falla.</p>
<p><strong>Un libro que me hizo llorar</strong><br />
No se si llorar, pero la Saga de Los Confines de Liliana Bodoc tiene momentos por demás tristes, la muerte de los personajes que mas se hacen querer es muy duro, por momentos mirás al libro y decís &#8220;¡Liliana basta de matar gente buena!&#8221;</p>
<p><strong>Un libro que me hubiera gustado escribir</strong><br />
Idem al item anterior, una fantasía tokieana con referencias a las invasiones españolas en América, es una formula infalible.</p>
<p><strong>Un libro que aborrezco</strong><br />
Cualquier libro que me obligaron a leer en el colegio entra en esta categoría, pero sobre todo: Juan Salvador Gaviota. Los libros de autoayuda y los de Coelho, el Arjona de la literatura,  completan el podio.</p>
<p><strong>Un libro que me decepcionó</strong><br />
No se si &#8220;decepción&#8221; sea la palabra, pero Los Pilares de la Tierra de Ken Follet me pareció un libro estúpidamente largo. Quizás un arquitecto lo aprecie más que un desarrollador de software. Y el final es lo más &#8220;meh&#8221; que leí. Curiosamente el post de dónde saqué la cadena habla del mismo libro&#8230; es que, es muy tedioso.</p>
<p><strong>Un libro que estoy leyendo ahora</strong><br />
Ayer empecé El Silmarillón, pero lo dejé a los 5 minutos porque la edición es vieja (tiene mi edad) y está impecable, me da cosa arruinarlo. Así que ahora estoy con las obras completas de H.P. Lovecraft.</p>
<p><strong>Un libro que pretendo leer</strong><br />
Read all the books! La lista es larguísima&#8230; quisiera tener el tiempo suficiente.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2012/08/11/cadena-de-memes-libros/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<enclosure url="http://blog.jesusroldan.com/wp-content/uploads/2012/08/41201217484-150x150.jpg" length="11536" type="image/jpg" /><media:content url="http://blog.jesusroldan.com/wp-content/uploads/2012/08/41201217484-150x150.jpg" width="150" height="150" medium="image" type="image/jpeg" />	</item>
		<item>
		<title>Script para generar playlists dinámicas en MPD</title>
		<link>http://blog.jesusroldan.com/2012/08/10/script-para-generar-playlists-dinamicas-en-mpd/</link>
		<comments>http://blog.jesusroldan.com/2012/08/10/script-para-generar-playlists-dinamicas-en-mpd/#comments</comments>
		<pubDate>Fri, 10 Aug 2012 13:55:24 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[last.fm]]></category>
		<category><![CDATA[mpd]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=80</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/programacion/" rel="category tag">Programación</a>, <a href="http://blog.jesusroldan.com/category/programacion/python/" rel="category tag">Python</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/git/" rel="tag">git</a>, <a href="http://blog.jesusroldan.com/tag/last-fm/" rel="tag">last.fm</a>, <a href="http://blog.jesusroldan.com/tag/mpd/" rel="tag">mpd</a>, <a href="http://blog.jesusroldan.com/tag/python-2/" rel="tag">python</a>, <a href="http://blog.jesusroldan.com/tag/script/" rel="tag">script</a></p>Revisando scripts viejos, me encontré con este que quizás a alguno le puede servir. La idea es ir generando dinámicamente la lista de reproducción de un server MPD usando la API de Last.fm para encontrar artistas similares en el disco. Si bien ya hay clientes que tienen esta funcionalidad, como Ario, suelo conectarme por SSH <a href='http://blog.jesusroldan.com/2012/08/10/script-para-generar-playlists-dinamicas-en-mpd/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2012/08/10/script-para-generar-playlists-dinamicas-en-mpd/' title='Script para generar playlists dinámicas en MPD '>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p>Revisando scripts viejos, me encontré con este que quizás a alguno le puede servir. La idea es ir generando dinámicamente la lista de reproducción de un server <a href="http://mpd.wikia.com/" target="_blank">MPD</a> usando la <a href="http://www.last.fm/api" target="_blank">API</a> de <a href="http://www.last.fm/user/xeBuz" title="Last.fm" target="_blank">Last.fm</a> para encontrar artistas similares en el disco.<br />
Si bien ya hay clientes que tienen esta funcionalidad, como <a href="http://mpd.wikia.com/wiki/Client:Ario" title="Ario" target="_blank">Ario</a>, suelo conectarme por SSH al server y me resulta cómodo correr el script este cuando no se que escuchar.</p>
<pre class="crayon-plain-tag">#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import random
from mpd import (MPDClient, CommandError)
from audioscrobbler import AudioScrobblerQuery

""" MPD """
mpd_host = 'localhost'
mpd_port = '6600'
mpd_connection = {'host': mpd_host, 'port': mpd_port}
client = MPDClient()

COUNT_SONGS = 5

def mpd_connect():
    try:
        client.connect(**mpd_connection)
    except SocketError:
        return False
    return True


def main():
    if not mpd_connect():
        sys.exit(1)

    # Meh, no se si se hace esto, pero bueh
    recommended_artists = []
    recommended_songs = []

    # Obtengo la cancion que esta sonando en este momento
    current = client.currentsong()

    # Saco sólo el artista del diccionario que me devuelve current
    current_artist = AudioScrobblerQuery(artist=current['artist'])

    # En base a todos los artistas similares, me fijo cuales tengo en el
    # server MPD, y los almaceno para usarlos despues.
    for artist in current_artist.similar():
        if float(client.count("artist", artist.name)['songs']) &gt; 0:
            recommended_artists.append(artist.name)


    # Podria hacerlo mas efectivo, pero la idea es hacerlo lo mas random que
    # pueda, asi que desordeno la lista de similares, que siempre viene ya
    # ordenada por compatibilidad del current_artist
    random.shuffle(recommended_artists)

    while len(recommended_songs) < COUNT_SONGS:
        artist = random.choice(recommended_artists)
        recommended_songs.append(
                    random.choice(client.search('artist', artist)))

    for song in recommended_songs:
        print song["artist"], "-", song["title"]
        client.add(song["file"])

if __name__ == '__main__':
    main()</pre> </p>
<p>Descarga desde aca: <a href="https://gist.github.com/1100627" title="Github">GIST</a>, seguramente la iré modificando, la idea es dejarla corriendo como un servicio.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2012/08/10/script-para-generar-playlists-dinamicas-en-mpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HeavySaurios, metal para chicos (y no tan chicos)</title>
		<link>http://blog.jesusroldan.com/2012/07/16/heavysaurios-metal-para-chicos-y-no-tan-chicos/</link>
		<comments>http://blog.jesusroldan.com/2012/07/16/heavysaurios-metal-para-chicos-y-no-tan-chicos/#comments</comments>
		<pubDate>Mon, 16 Jul 2012 18:47:44 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[Música]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[hard rock]]></category>
		<category><![CDATA[heavy metal]]></category>
		<category><![CDATA[heavysaurios]]></category>
		<category><![CDATA[hevisaurus]]></category>
		<category><![CDATA[metal]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[musica]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[power metal]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1223</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'><a href='http://blog.jesusroldan.com/2012/07/16/heavysaurios-metal-para-chicos-y-no-tan-chicos/' title='HeavySaurios, metal para chicos (y no tan chicos)'><img src='http://blog.jesusroldan.com/wp-content/uploads/2012/07/heavy_0.jpg' border='0'   /></a></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/musica/" rel="category tag">Música</a>, <a href="http://blog.jesusroldan.com/category/personal/" rel="category tag">Personal</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/hard-rock/" rel="tag">hard rock</a>, <a href="http://blog.jesusroldan.com/tag/heavy-metal/" rel="tag">heavy metal</a>, <a href="http://blog.jesusroldan.com/tag/heavysaurios/" rel="tag">heavysaurios</a>, <a href="http://blog.jesusroldan.com/tag/hevisaurus/" rel="tag">hevisaurus</a>, <a href="http://blog.jesusroldan.com/tag/metal/" rel="tag">metal</a>, <a href="http://blog.jesusroldan.com/tag/mp3/" rel="tag">mp3</a>, <a href="http://blog.jesusroldan.com/tag/musica-2/" rel="tag">musica</a>, <a href="http://blog.jesusroldan.com/tag/ogg/" rel="tag">ogg</a>, <a href="http://blog.jesusroldan.com/tag/power-metal/" rel="tag">power metal</a></p>Si bien al inicio estuve en contra de la banda porque era una copia de Hevisaurus, una banda finlandesa, con el tiempo terminé aceptando que la idea llevada al español era muy buena. Con sólo mirarlos se destacan, es una fucking banda de dinosaurios que tocan heavy metal. con letras orientadas a los chicos pero <a href='http://blog.jesusroldan.com/2012/07/16/heavysaurios-metal-para-chicos-y-no-tan-chicos/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2012/07/16/heavysaurios-metal-para-chicos-y-no-tan-chicos/' title='HeavySaurios, metal para chicos (y no tan chicos)'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p><a href="http://blog.jesusroldan.com/wp-content/uploads/2012/07/heavy_0.jpg"><img class="aligncenter size-full wp-image-1224" title="heavy_0" src="http://blog.jesusroldan.com/wp-content/uploads/2012/07/heavy_0.jpg" alt="" width="347" height="344" /></a></p>
<p>Si bien al inicio estuve en contra de la banda porque era una copia de <a href="http://www.hevisaurus.com/">Hevisaurus</a>, una banda finlandesa, con el tiempo terminé aceptando que la idea llevada al español era muy buena.<br />
Con sólo mirarlos se destacan, <strong>es una fucking banda de dinosaurios que tocan heavy metal.</strong> con letras orientadas a los chicos pero con música que puede disfrutar cualquiera.<br />
<a href="http://www.heavysaurios.com/">HeavySaurios</a> llega de la mano de Sony en Argentina para mostrarle a los más peques que no tiene que &#8220;tirarse un paso&#8221; ni aplaudir como imbéciles en los programas de Disney o Discovery Kids.</p>
<p>Cómo verán, la puesta en escena es muy atrayente, y los temas muy pegadizos. Uno de mis preferidos&#8230;</p>
<p><center><iframe width="560" height="315" src="http://www.youtube.com/embed/c8Vw_CIT_iQ" allowfullscreen="" frameborder="0"></iframe></center>&nbsp;<br />
<span id="more-1223"></span><br />
<center><br />
Pueden descargar el disco acá (porque no se consigue fácil)</p>
<h2>
<a href="http://www.multiupload.nl/TADR9X2MG2">Formato MP3</a><br />
<a href="http://www.multiupload.nl/7PKRL4TVSJ">Formato OGG</a><br />
</h2>
<p></center></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2012/07/16/heavysaurios-metal-para-chicos-y-no-tan-chicos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<enclosure url="http://blog.jesusroldan.com/wp-content/uploads/2012/07/heavy_0-150x150.jpg" length="13399" type="image/jpg" /><media:content url="http://blog.jesusroldan.com/wp-content/uploads/2012/07/heavy_0-150x150.jpg" width="150" height="150" medium="image" type="image/jpeg" />	</item>
		<item>
		<title>Un &#8220;bot&#8221; de Twitter, con Python en un par de minutos</title>
		<link>http://blog.jesusroldan.com/2012/07/04/un-bot-de-twitter-con-python-en-un-par-de-minutos/</link>
		<comments>http://blog.jesusroldan.com/2012/07/04/un-bot-de-twitter-con-python-en-un-par-de-minutos/#comments</comments>
		<pubDate>Wed, 04 Jul 2012 18:40:32 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[foursquare]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tweepy]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1197</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'><a href='http://blog.jesusroldan.com/2012/07/04/un-bot-de-twitter-con-python-en-un-par-de-minutos/' title='Un "bot" de Twitter, con Python en un par de minutos'><img src='http://www.seosmarty.com/wp-content/uploads/2010/08/retweet-bot.jpg' border='0'   /></a></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/programacion/" rel="category tag">Programación</a>, <a href="http://blog.jesusroldan.com/category/programacion/python/" rel="category tag">Python</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/bot/" rel="tag">bot</a>, <a href="http://blog.jesusroldan.com/tag/foursquare/" rel="tag">foursquare</a>, <a href="http://blog.jesusroldan.com/tag/programacion-2/" rel="tag">programacion</a>, <a href="http://blog.jesusroldan.com/tag/python-2/" rel="tag">python</a>, <a href="http://blog.jesusroldan.com/tag/tweepy/" rel="tag">tweepy</a>, <a href="http://blog.jesusroldan.com/tag/twitter/" rel="tag">twitter</a></p>Hace falta un bot que busque los tweets de Foursquare y responda &#8220;WHO CARES?!&#8221; — Commander Shepard (@MissFillys) July 3, 2012 Todo comenzó con ese tweet de @MissFillys y cómo estaba aburrido lo intenté hacer. Ante mi sorpresa fué mas simple de lo que pensaba. Primero deben registrar la aplicación en el área de desarrollo <a href='http://blog.jesusroldan.com/2012/07/04/un-bot-de-twitter-con-python-en-un-par-de-minutos/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2012/07/04/un-bot-de-twitter-con-python-en-un-par-de-minutos/' title='Un "bot" de Twitter, con Python en un par de minutos'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<blockquote class="twitter-tweet tw-align-right"><p>Hace falta un bot que busque los tweets de Foursquare y responda &#8220;WHO CARES?!&#8221;</p>
<p>— Commander Shepard (@MissFillys) <a href="https://twitter.com/MissFillys/status/220272671894671360" data-datetime="2012-07-03T21:47:52+00:00">July 3, 2012</a></p></blockquote>
<p><script charset="utf-8" type="text/javascript" src="//platform.twitter.com/widgets.js"></script><br />
Todo comenzó con ese tweet de @MissFillys y cómo estaba aburrido lo intenté hacer. Ante mi sorpresa fué mas simple de lo que pensaba. Primero deben registrar la aplicación en el <a href="https://dev.twitter.com/apps">área de desarrollo de Twitter</a>, particularmente usé una cuenta nueva, porque seguro lo reportan como spam o algún tipo de violación a las políticas de Twitter y no quería que caiga mi cuenta también. Para interactuar con Twitter desde Python usé <strong><a title="Tweepy" href="https://github.com/tweepy/tweepy">tweepy</a></strong>, una librería bastante completa, y sobre todo, muy simple de usar</p>
<p>Esto es lo necesario para conectarse, los datos de Costumer_Key y Access_Key los sacan cuando registran la aplicación. Bastante simple, con este código ya podemos interactuar con la API</p><pre class="crayon-plain-tag">#!/usr/bin/python
# -*- coding: utf-8 -*-

import tweepy

#Twitter information
CONSUMER_KEY = &quot;AsdAsdDsa&quot;
CONSUMER_SECRET=&quot;QwertrQWEREwtr&quot;
ACCESS_KEY=&quot;Asdasd-qeq123123123&quot;
ACCESS_SECRET=&quot;asdasd342-123213123wqeqweqw&quot;

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
API = tweepy.API(auth)</pre><p>
<p>Para este caso, lo que hago es buscar en la public timeline. Como la librería no tiene implementada la búsqueda por source, no queda otra que traer los 20 resultados y validar si alguno viene desde desde Foursquare. Es un bucle bastante simple, en caso de que exista, se utiliza el método API.update_status() con el username, in_reply_to y algún texto que querramos ponerle.</p><pre class="crayon-plain-tag">...
public = API.public_timeline()
for tweet in public:
    if tweet.source =='foursquare':
	API.update_status( &quot;@&quot;+ tweet.author.screen_name + &quot;WHO CARES?!&quot; , tweet.id)</pre><p>
<p>También pueden usar búsquedas más específicas. Por ejemplo, <em>personas</em> que hablan de Tinelli. <a href="https://dev.twitter.com/docs/using-search">Acá</a> pueden sacar ayuda sobre cómo realizar búsquedas y <a href="http://packages.python.org/tweepy/html/api.html">acá</a> pueden leer la documentación de la librería</p><pre class="crayon-plain-tag">...
assholes = API.search('Tinelli')
for tweet in assholes:
	API.update_status( &quot;@&quot;+ tweet.author.screen_name + &quot;Se te est&aacute; pudriendo el cerebro...&quot; , tweet.id)</pre><p>	</p>
<p>El código final quedó <a href="https://gist.github.com/3044158">más o menos así</a>, sólo necesitan ponerlo en un loop donde quieran. Quizás les sirva y puedan hacer algo interesante, como por ejemplo @pepperMaido <img src='http://blog.jesusroldan.com/wp-content/plugins/smilies-themer/adiumicons/biggrin.png' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2012/07/04/un-bot-de-twitter-con-python-en-un-par-de-minutos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GNU/Linux para amas de casa. #BarCampCBA</title>
		<link>http://blog.jesusroldan.com/2012/06/19/gnulinux-para-amas-de-casa-barcamp/</link>
		<comments>http://blog.jesusroldan.com/2012/06/19/gnulinux-para-amas-de-casa-barcamp/#comments</comments>
		<pubDate>Tue, 19 Jun 2012 17:47:45 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[charla]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[software libre]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1175</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/gnu-linux/" rel="category tag">GNU/Linux</a>, <a href="http://blog.jesusroldan.com/category/personal/" rel="category tag">Personal</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/barcamp/" rel="tag">barcamp</a>, <a href="http://blog.jesusroldan.com/tag/charla/" rel="tag">charla</a>, <a href="http://blog.jesusroldan.com/tag/gnu/" rel="tag">gnu</a>, <a href="http://blog.jesusroldan.com/tag/linux-2/" rel="tag">linux</a>, <a href="http://blog.jesusroldan.com/tag/software-libre/" rel="tag">software libre</a></p>El sábado pasado fue el BarCampCBA en Córdoba, que dicho sea de paso salió excelente. Aproveché la ocasión, sabiendo que el púbico era bastante heterogéneo para dar una charla sobre GNU/Linux y Software Libre, desde lo básico, sin caer en evangelizaciones. La idea era demostrar que cualquiera puede usar Linux, que las opciones de software <a href='http://blog.jesusroldan.com/2012/06/19/gnulinux-para-amas-de-casa-barcamp/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2012/06/19/gnulinux-para-amas-de-casa-barcamp/' title='GNU/Linux para amas de casa. #BarCampCBA'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p><a href="http://blog.jesusroldan.com/wp-content/uploads/2012/06/gnu_linux.png"><img src="http://blog.jesusroldan.com/wp-content/uploads/2012/06/gnu_linux.png" alt="" title="gnu_linux" width="600" height="239" class="aligncenter size-full wp-image-1179" /></a></p>
<p>El sábado pasado fue el <a href="http://barcampcordoba.org/">BarCampCBA</a> en Córdoba, que dicho sea de paso salió excelente.<br />
Aproveché la ocasión, sabiendo que el púbico era bastante heterogéneo para dar una charla sobre GNU/Linux y Software Libre, desde lo básico, sin caer en evangelizaciones. La idea era demostrar que cualquiera puede usar Linux, que las opciones de software satisfacen las necesidades de la mayoría e incluso que instalarlo es bastante sencillo. Salí bastante conforme, no me abuchearon jaja y aprendí de algunos errores que después corregiré. </p>
<p>Les dejo aca <a href="http://jesusroldan.com/Charlas/linux.html" title="GNU/Linux para amas de casa">la charla</a>, como no fue grabado ni trasmitida por streaming, sólo son las diapositivas. Algunas van a parecer medio colgadas, sin texto ni nada.</p>
<p>La presentación está hecha completamente con software libre. El framework que usé para los slides es <a href="http://bartaz.github.com/impress.js" title="impress.js">impress.js</a>, para mostrar las imágenes usé <a href="http://reallysimpleworks.com/slideshow/">Really Simple™ Slideshow</a> y después GIMP para editar detalles y gedit para escribir el código. Una vez que le agarrás la mano es bastante simple de hacer.<br />
Si quieren el código fuente está subido a <a href="https://github.com/xeBuz/Charlas" title="GitHub">GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2012/06/19/gnulinux-para-amas-de-casa-barcamp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<enclosure url="http://blog.jesusroldan.com/wp-content/uploads/2012/06/gnu_linux-150x150.png" length="16697" type="image/jpg" /><media:content url="http://blog.jesusroldan.com/wp-content/uploads/2012/06/gnu_linux-150x150.png" width="150" height="150" medium="image" type="image/png" />	</item>
		<item>
		<title>Cron, automatizar scripts como un titán</title>
		<link>http://blog.jesusroldan.com/2012/05/22/cron-automatizar-scripts-como-un-titan/</link>
		<comments>http://blog.jesusroldan.com/2012/05/22/cron-automatizar-scripts-como-un-titan/#comments</comments>
		<pubDate>Tue, 22 May 2012 16:48:07 +0000</pubDate>
		<dc:creator><![CDATA[xeBuz]]></dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[vi]]></category>

		<guid isPermaLink="false">http://blog.jesusroldan.com/?p=1150</guid>
		<description><![CDATA[<table cellpadding='10'><tr><td valign='top'><a href='http://blog.jesusroldan.com/2012/05/22/cron-automatizar-scripts-como-un-titan/' title='Cron, automatizar scripts como un titán'><img src='http://blog.jesusroldan.com/wp-content/uploads/2011/09/GNULINUX.png' border='0'   /></a></td><td valign='top' align='left'><p>Categories: <a href="http://blog.jesusroldan.com/category/gnu-linux/" rel="category tag">GNU/Linux</a>, <a href="http://blog.jesusroldan.com/category/gnu-linux/tips-gnu-linux/" rel="category tag">Tips</a></p><p>Tags: <a href="http://blog.jesusroldan.com/tag/arch/" rel="tag">arch</a>, <a href="http://blog.jesusroldan.com/tag/cron/" rel="tag">cron</a>, <a href="http://blog.jesusroldan.com/tag/linux-2/" rel="tag">linux</a>, <a href="http://blog.jesusroldan.com/tag/vi/" rel="tag">vi</a></p>Hace un tiempo escribí sobre la utilización del comando at, ahora le toca el turno a cron. ¿Tron? No, cron. ¡Troz! (?). ¿Qué es cron? Es un administrador de procesos que se ejecuta a un interválo de tiempo específico. Si vienen del Dark Side, sería el equivalente a las Tareas Programadas de W. La instalación <a href='http://blog.jesusroldan.com/2012/05/22/cron-automatizar-scripts-como-un-titan/' class='excerpt-more'>[...]</a><table width='100%'><tr><td align=right><p><b>(<a href='http://blog.jesusroldan.com/2012/05/22/cron-automatizar-scripts-como-un-titan/' title='Cron, automatizar scripts como un titán'>Read more...</a>)</b></p></td></tr></table></td></tr></table>]]></description>
				<content:encoded><![CDATA[<p>Hace un tiempo escribí sobre <a title="Comando at, automatizar scripts sin usar crontab" href="http://blog.jesusroldan.com/2012/01/23/comando-at-automatizar-scripts-sin-usar-crontab/">la utilización del comando <strong>at</strong></a>, ahora le toca el turno a <strong>cron</strong>. ¿Tron? No, cron. ¡Troz! (?).<br />
¿Qué es cron? Es un administrador de procesos que se ejecuta a un interválo de tiempo específico. Si vienen del Dark Side, sería el equivalente a las <em>Tareas Programadas</em> de W.</p>
<p>La instalación es simple (está en los repos o incluso ya instalada, en toda distribución que se jacte de ser tal), en fín, en Arch podrían hacer:</p><pre class="crayon-plain-tag">pacman -S --needed cronie</pre><p>
<p>Al principio puede resultar extraña la configuracion de crontab, pero con el tiempo termina siendo más simple de lo que aparenta y se puede lograr cosas muy buenas de una forma muy sencilla.</p>
<p>Primero, tenemos 5 espacios para colocar los tiempos, que se dividen en minutos, horas, días del mes, meses y días de la semana; si alguno de estos datos no se rellena, se debe colocar un asterísco, que significa &#8220;todos&#8221; (para que sea entendible y hasta leíble). Después de eso se coloca la ruta completa del script que quieren que se ejecute en ese determinado lapso de tiempo.</p>
<p>En cualquier campo, asumiendo que ya entendimos los rangos de cada uno, podemos colocar tanto un valor específico, varios valores separados por coma o un rango separado por un guión. Por ejemplo:</p>
[code lang=&#8221;bash&#8221;]
#Se ejecuta a las 5 de la mañana, en punto<br />
0 5 * * * * /home/jesus/Scripts/tomar_cafe.sh</p>
<p>#Se ejecuta a las 5 y a las 17 horas, en punto<br />
0 5,17 * * * /home/jesus/Scripts/loquesea.sh</p>
<p>#Se ejecuta *desde* las 5, cada hora &quot;en punto&quot; *hasta* las 17hs.<br />
0 5-17 * * * /home/jesus/Scripts/latigo.sh</p>
<p>#Similar al anterior, pero ejecuta cada minuto entre las 5 y las 17<br />
#miren el primer valor, le estan dicieno &quot;todos&quot;<br />
* 5,17 * * * echo &quot;trabajen mas duro&quot;<br />
[/code]
<p>¿Cómo ver las tareas pendientes en cron?<br />
<strong>crontab -l</strong> lista las del usuario activo, para ver las de otro usuario, deben ejecutar crontab -u user -l</p>
<p>¿Cómo se modifican las tareas?<br />
Con <strong>crontab -e</strong> se nos abre el archivo para modificar, con el editor que tengamos por defecto. Para cambiarlo debemos cambiar: <em>export EDITOR=&#8221;/usr/bin/nano&#8221;</em>. Como por defecto se abre con vi, por favor no toquen el teclado si no saben como funciona y llamen a un mayor responsable a cargo.<br />
También pueden editar los archivos de otros usuarios, con <strong>contab -u user -e </strong>.</p>
<p>Ahora bien, aquí viene lo bueno jóven, algunos ejemplos:</p>
[code lang=&#8221;bash&#8221;]
#Corre cada minuto, siempre.<br />
* * * * * /home/xebuz/script/cada_minuto.sh</p>
<p>#Cada 5 minutos<br />
*/5 * * * * /home/xebuz/script/cada_cinco_minutos.sh</p>
<p>#Cada hora, de 8 a 18, de lunes a viernes<br />
00 08-18 * * 1-5 /home/xebuz/script/laboral.sh</p>
<p>#Una vez cada mes y medio<br />
* * */15 */1 * /home/xebuz/goldequilmes.sh</p>
<p>#Cada 4 años<br />
* * * */48 * /home/xebuz/script/mundial.sh<br />
[/code]
<p>¿Muy engorroso para escribir? ¿Sos un lazy-sysadmin? Existen también algunos (llamémosle) <a title="Tips Linuxeros: Alias para Todos" href="http://blog.jesusroldan.com/2011/09/02/tips-para-linux-alias-para-todos/">alias</a>, para agilizar la administración, són cómodos y reemplazan a todos los campos de tiempo, es decir, sólo deben poner el alias y despues el script.</p>
[code lang=&#8221;bash&#8221;]
#Tiempos específicos<br />
@hourly<br />
@daily<br />
@weekly<br />
@monthly<br />
#Este se ejecuta (como lo indica el nombre), cuando se resetea el equipo<br />
@reboot<br />
[/code]
<p><em>Gracias, vuelva prontos.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jesusroldan.com/2012/05/22/cron-automatizar-scripts-como-un-titan/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<enclosure url="http://blog.jesusroldan.com/wp-content/uploads/2011/09/GNULINUX-150x150.png" length="27398" type="image/jpg" /><media:content url="http://blog.jesusroldan.com/wp-content/uploads/2011/09/GNULINUX-150x150.png" width="150" height="150" medium="image" type="image/png" />	</item>
	</channel>
</rss>
