﻿<?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>JHONNY CASH GUEB LOG &#187; Perl for Retarded ppl</title>
	<atom:link href="http://www.fathersfate.com.mx/wordpress/category/perl-for-retarded-ppl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fathersfate.com.mx/wordpress</link>
	<description>Otro pinche weblog para desperdiciar ancho de banda en tarugadas</description>
	<lastBuildDate>Sat, 30 Jul 2011 09:23:10 +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>Aprende con tu Artista Favorito: Ines Sainz migrates Amarok 1 artwork</title>
		<link>http://www.fathersfate.com.mx/wordpress/2009/11/11/aprende-con-tu-artista-favorito-ines-sainz-migrates-amarok-1-artwork/</link>
		<comments>http://www.fathersfate.com.mx/wordpress/2009/11/11/aprende-con-tu-artista-favorito-ines-sainz-migrates-amarok-1-artwork/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 20:43:12 +0000</pubDate>
		<dc:creator>cash</dc:creator>
				<category><![CDATA[Aprende con tu artista favorito]]></category>
		<category><![CDATA[howtos]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl for Retarded ppl]]></category>

		<guid isPermaLink="false">http://www.fathersfate.com.mx/wordpress/?p=1577</guid>
		<description><![CDATA[Bonita foto del osito bimbo (la botarga de atras malpensados)&#8230; CASH: Gracias por esta participacion Ines INESITA: A ti, tenia mucho tiempo queriendo participar en tu afamado blog. CASH: Como esta eso de que ya Amarok no sirve? que no todos los pinches linuxeros decian que era la mata? Poniendose guapa para la entrevista&#8230; INESITA: [...]]]></description>
			<content:encoded><![CDATA[<p><center><img src="http://www.fathersfate.com.mx/images/is001.jpg" alt="is" /><br /><small>Bonita foto del osito bimbo (la botarga de atras malpensados)&#8230;</small></center></p>
<p><strong>CASH:</strong> Gracias por esta participacion Ines</p>
<p><strong>INESITA:</strong> A ti, tenia mucho tiempo queriendo participar en tu afamado blog.</p>
<p><strong>CASH:</strong> Como esta eso de que ya Amarok no sirve? que no todos los pinches linuxeros  decian que era la mata?</p>
<p><center><img src="http://www.fathersfate.com.mx/images/is002.jpg" alt="is" /><br /><small>Poniendose guapa para la entrevista&#8230;</small></center></p>
<p><strong>INESITA:</strong> Como lo has dicho, mi estimado, simpatico y atractivo Cash,<strong>ERA</strong>, Amarok era un proyecto que tenia una gran base de usuarios instalada, esto en la version 1.x, pero el proyecto tomo otro rumbo en la 2.x queriendo ampliar su base de usuarios cambiaron de tajo a un proyecto compilable en otras plataformas incluyendo windows con una interface totalmente diferente y quitando muchisimas funcionalidades que se tenian en la 1.x, a pesar del desagrado de la comunidad de usuarios ellos continuan en ese rumbo y lo peor aun dejando sin soporte ni actualizaciones la version anterior, los usuarios mas o menos han arreglado parchando codigo problemas surgidos, como soporte para ipods nano de la 4ta generacion y cambios en busquedas de wikipedia, pero ya son muchas cosas las que han dejado de funcionar y es impractico seguir parchando (sin albur) uno el codigo.</p>
<p><strong>CASH:</strong> Pinches linuxeros cuichis</p>
<p><center><img src="http://www.fathersfate.com.mx/images/is003.jpg" alt="is" /><br /><small>Amarok 1.x era el &#8220;Brasil&#8221; de los mundiales, el 2.x es el &#8220;Mexico&#8221;&#8230; </small></center></p>
<p><strong>INESITA:</strong> Entonces, muchos nos quedamos en busca de nuevas alternativas, las cuales hay muchas, la mas recomendable es songbird de la fundacion mozilla, sin embargo existe muchagente con coleciones muy grandes que en Amarok ya la tenian configurada (CD covers, ratings), conozco a un wey que el enfermo tenia la coleccion de 30 gigas toda taggeada y con los covers para cada cancion, Amarok guarda la imagen del cover con un nombre raro que es un &#8220;checksum&#8221; del nombre del disco y artista en bajas</p>
<pre>
[cash@influenza ]# echo -n "iron maidenpiece of mind" | md5sum
2616d94042fc7a849a3a4beff51875c6  -
</pre>
<p>Asi que me aventure a realizar un script en perl para poder migrar los covers de mi amigo y ponerlos en el mismo mp3 pqara que sean leidos por cualquier player</p>
<p><strong>CASH:</strong> Saliste mas cabrona que bonita inesita&#8230;</p>
<p><strong>INESITA:</strong> Tu no eres feo Cashito, si no fueras tan rejego y me pelaras&#8230;</p>
<p><strong>CASH:</strong> Aguantame un rato, platicanos tu script mejor&#8230;</p>
<p><center><img src="http://www.fathersfate.com.mx/images/is004.jpg" alt="is" /><br /><small>VIVA LA AMAROK!!</small></center></p>
<p><strong>INESITA:</strong> Bueno, este es solo un inicio, como dicen los gringos &#8220;WARNING: TEST YOUR SCRIPT ON A COPY OF YOUR COLLECTION&#8221; o como diria Bullwinkle, &#8220;es tu pedo si esta madre te echa a perder tus mp3, mejor copialos antes&#8221;</p>
<p>Para empezar es necesario crear una lista de reproduccion con TODA la coleccion y guardarla a disco a un arcchivo m3u</p>
<pre>
cash@cashito:~/amarokfiles$ cat 10000.m3u
#EXTINF:393,Holy Wars... The Punishment
../../cash/CarAudio/Thrash/01-Holy Wars, The Punishment Due.mp3
#EXTINF:312,Hanger 18
../../cash/CarAudio/Thrash/02-Hangar 18.mp3
#EXTINF:207,Take No Prisoners
../../cash/CarAudio/Thrash/03-Take No Prisoners.mp3
#EXTINF:340,Five Magics
</pre>
<p><strong>INESITA:</strong> Las lineas &#8220;#EXTINF:393,Holy Wars&#8230; The Punishment&#8221; no nos interesan asi que con algun script filtramos las lineas que interesen hasta que quede un archivo con las rutas</p>
<pre>
cash@cashito:~/amarokfiles$ more paths
/home/cash/CarAudio/Thrash/01 - March of the SOD.mp3
/home/cash/CarAudio/FavoritasBB/08 - Mask Mask - Elaka Arne.mp3
/home/cash/CarAudio/FavoritasBB/25 - Trampar I Min Mormors Rabatt - Zero Zero.mp3
/home/cash/CarAudio/covers/04Low - Transmission.mp3
/home/cash/CarAudio/covers/05Codeine - Atmosphere.mp3
/home/cash/CarAudio/covers/01 Summer Night City (Therion).mp3
/home/cash/CarAudio/covers/03 Gimme Gimme Gimme (Sinergy).mp3
/home/cash/CarAudio/covers/04 Money Money Money (At Vance).mp3
/home/cash/CarAudio/covers/05 Voulez-vouz (Morgana Lefay).mp3
/home/cash/CarAudio/covers/07 Take A Chance On Me (Rough Silk).mp3
/home/cash/CarAudio/covers/09 Eagle (Sargant Fury).mp3
/home/cash/CarAudio/covers/10 One Of Us (Flowing Tears).mp3
/home/cash/CarAudio/covers/11 Waterloo (Nation).mp3
/home/cash/CarAudio/covers/12 Super Trouper (Custard).mp3
/home/cash/CarAudio/covers/14 Dancing Queen (Glow).mp3
/home/cash/CarAudio/covers/07 Sign - Run to the Hills.mp3
</pre>
<p>De igual forma ponemos los covers con los nombres raros (estan en el directorio .kde/share/apps/amarok/albumcovers/large/ ) y los copiamod a un directorio, accesable por el script en este caso ( ../covers/ )</p>
<p>Instalamos los modulos perl necesarios<br />
Image::Magick<br />
MP3::Tag<br />
Digest::MD5</p>
<p>Y aqui esta el script:</p>
<pre>
#!/usr/bin/perl

$configfile = "paths";
open(CFG_FILE, $configfile) or die "Can not open file, $!";

while (<cfg_file>) {
        push @ips, $_;
}
close (CFG_FILE) or die "Can not close file correctly";

use Image::Magick;
use MP3::Tag;
use Digest::MD5  qw(md5_hex);

foreach my $raya (@ips) {
        chomp($raya);
        #print "$raya\n";
        $filename = $raya;
        $mp3 = MP3::Tag->new($filename);
        $mp3->config('write_v24',1);
        #$mp3->config("write_v24");
        $mp3->get_tags();
        if (exists $mp3->{ID3v1}) {
                #print "Filename: $filename\n";
                $artist=lc($mp3->{ID3v1}->artist);
                $album=lc($mp3->{ID3v1}->album);
                #print "-$artist-$album-\n";
        }
        my $imagename = md5_hex( $artist.$album );
#       print $imagename;
        if ( -e "../covers/$imagename") {
                print "../covers/$imagename\n";
                use constant APIC => "APIC";
                use constant TYPE => "jpg";
                use constant HEADER => ( chr(0x0) , "image/" . TYPE , chr(0x3), "Cover Image");
                use constant DEBUG => 1;
                my $image = new Image::Magick;
                if (my $x = $image->Read("../covers/$imagename")) {
                      print "Couldn't read the image $imagefile: $x\n";
                }
        #}
        my $imagedata = $image->ImageToBlob(magick => TYPE );
        undef $image;

        my $id3;

    my $id3;
    if (exists $mp3->{ID3v2}) {
        print "Using old ID3v2 tag\n" if DEBUG;
        $id3 = $mp3->{ID3v2};
    } else {
        print "Creating new ID3v2 tag\n" if DEBUG;
        $id3 = $mp3->new_tag("ID3v2");
    }

    my $frames = $id3->supported_frames();
    if (!exists $frames->{APIC}) {
        print "Something is wrong, APIC is not a supported frame!\n";
        exit 2;
    }

    my $frameids = $id3->get_frame_ids();
    if (exists $$frameids{APIC}) {
        print "Replacing existing APIC entry\n" if DEBUG;
        $id3->change_frame(APIC, HEADER, $imagedata);
    } else {
        print "Creating new APIC entry\n" if DEBUG;
        $id3->add_frame(APIC,HEADER, $imagedata);
    }

    $id3->write_tag();

}
        $mp3->close();

print "done $raya \n";
#sleep 5;
}

</cfg_file></pre>
<p><strong>CASH:</strong> Ches frikis, como se complican, por eso se van a ir al infierno</p>
<p><strong>INESITA:</strong> No te enojes cashito de mi vida&#8230; aun tenemos la esperanza que salga algun fork de la version anterior&#8230;</p>
<p><strong>CASH:</strong> Itunes es el futuro, bueno, gracias, saludos a nuncavuelvas</p>
<p><strong>INESITA:</strong> No!!!! pegame! pegame pero no me dejes!!! deje una cita con DOMINIC BARONET por venir contigo..</p>
<p><strong>CASH:</strong> Sorry mija, tengo pendientes, luego t llamo bye</p>
<p>NOTA: La entravista se hizo via email a iness@hotmail.com, no se puede asegurar que fuera ines realmente</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fathersfate.com.mx/wordpress/2009/11/11/aprende-con-tu-artista-favorito-ines-sainz-migrates-amarok-1-artwork/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Bits pecaminosos: Amarok + Twitter + Perl</title>
		<link>http://www.fathersfate.com.mx/wordpress/2009/08/06/bits-pecaminosos-amarok-twitter-perl/</link>
		<comments>http://www.fathersfate.com.mx/wordpress/2009/08/06/bits-pecaminosos-amarok-twitter-perl/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 07:00:42 +0000</pubDate>
		<dc:creator>cash</dc:creator>
				<category><![CDATA[Perl for Retarded ppl]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://www.fathersfate.com.mx/wordpress/?p=1517</guid>
		<description><![CDATA[Como dice el apartado 5.777 del codigo de tatita escriva &#8220;la ociosidad es la madre de todos los vicios&#8221;&#8230; Este hecho irrefutable pone en evidencia la pecaminosidad de los sistemas libres&#8230; nuestro equipo de investigacion ha puesto al descubierto la ociosidad de los frikis linuxeros, este programa maligno en perl agarra la informacion y postea [...]]]></description>
			<content:encoded><![CDATA[<p>Como dice el apartado 5.777 del codigo de tatita escriva &#8220;la ociosidad es la madre de todos los vicios&#8221;&#8230; Este hecho irrefutable pone en evidencia la pecaminosidad de los sistemas libres&#8230; nuestro equipo de investigacion ha puesto al descubierto la ociosidad de los frikis linuxeros, este programa maligno en perl agarra la informacion y postea automaticamente en twitter que musica pecaminosa esta escuchando en el reproductor AMAROK  y dependiendo del genero del tag del MP3 le pone comentarios y acciones..</p>
<pre>
#!/usr/bin/perl

use DCOP::Amarok::Player;
$player = DCOP::Amarok::Player->new();

my $comm="";
my $genero=$player->genre();
# Default action
my $action="Listenin 2 ";

if ($genero =~ /(a|u)eton/) {
        $action="GET A LIFE LOSER ";
}

if (($genero =~ /(M|m)etal/)||($genero =~ /(M|m)ETAL/)) {
        $action="Headbangin with ";
        $comm="\\m\/";
}

if ($genero =~ /(P|p)unk/) {
        $action="Pogo dancin with ";
}

if ($genero =~ /(S|s)ka/) {
        $action="Skankin with ";
}

if (($genero =~ /(6|7|8)0s/)||($genero =~ /(P|p)(O|o)(P|p)(6|7|8)0/)) {
        $action="Remembering with ";
}

if ($genero =~ /(h|H)ardcore/) {
        $action="Windmillin with ";
}

if ($genero =~ /(O|o)ther/) {
        $action="Cash, taguea bien loser: ";
}

if ($genero =~ /(A|a)lternativ/) {
        $action="Rockin with: ";
}

if (($genero =~ /popsp/)||($genero =~ /atin/)) {
        $action="Freseando with: ";
        $comm="(que gay)";
}

if ($genero =~ /(b|B)anda/) {
        $action="De caballitO with: ";
}

if ($genero =~ /ariachi/) {
        $action="F0lkloreando with: ";
}

my $artist=$player->artist();

if ($artist =~ /MAIDEN/) {
        $action="UP T FUCKN IRONS!: ";
}

my $twup = $action."\"".$player->title()."\" of ".$player->artist()." from \"".$player->album()."\" $comm (autopost powered by perl) ";
print "\n $twup \n";

$player->showOSD();
use Net::Twitter;

my $nt = Net::Twitter->new(
      traits   => [qw/API::REST/],
      username => "tuusernamedeltwitter",
      password => "tupassdeltwitter"
);

if ( length($player->title()) gt 1 ) {
        my $result = $nt->update($twup);
} else {
        print "me niego a postear con artista vacio";
}
</pre>
<p>Se instalo un sistema con linux que despues de la demostracion tiraremos a la basura pues se contamino con codigo pecaminoso&#8230; para correr el script</p>
<p>cash@influenza:~$ perl zamarok.pl<br />
Headbangin with &#8220;Twist Of Cain&#8221; of Danzig from &#8220;Danzig&#8221; \m/ (autopost powered by perl)  </p>
<p>Y he aqui la salida&#8230;</p>
<p><img src="http://www.fathersfate.com.mx/images/fbshot.jpg" alt="fb" /></p>
<p>Para hacer mas triste la ociocidad, lo ponen en el crontab para que se ejecute solo diariamente a cierta hora del dia y ponga en evidencia al pobre si lo agarran escuchando a musica metelera como Lucia Mendez o a New Kids on the block</p>
<p>Se le pregunto al friki, porque no uso switch en vez de tanto IF, y el devergonzado contesto: me dio hueva</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fathersfate.com.mx/wordpress/2009/08/06/bits-pecaminosos-amarok-twitter-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>use Net::SSH::Expect;</title>
		<link>http://www.fathersfate.com.mx/wordpress/2008/01/13/use-netsshexpect/</link>
		<comments>http://www.fathersfate.com.mx/wordpress/2008/01/13/use-netsshexpect/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 08:59:10 +0000</pubDate>
		<dc:creator>cash</dc:creator>
				<category><![CDATA[Perl for Retarded ppl]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.fathersfate.com.mx/wordpress/2008/01/13/use-netsshexpect/</guid>
		<description><![CDATA[Un nuevo modulo de Expect ha salido, este integra el protocolo SSH al expect-perl, para hacer un poco mas transparente la conexion y concentrar la programacion en las activodades en el shell ya conectado, sin complicarnos la vida en todas las validaciones de la conexion. El autor del modulo es Bruno Negrao Guimaraes Zica. #!/usr/bin/perl [...]]]></description>
			<content:encoded><![CDATA[<p><code>Un nuevo modulo de Expect ha salido, este integra el protocolo SSH al expect-perl, para hacer un poco mas transparente la conexion y concentrar la programacion en las activodades en el shell ya conectado, sin complicarnos la vida en todas las validaciones de la conexion.</p>
<p>El autor del modulo es Bruno Negrao Guimaraes Zica.</p>
<blockquote>
<p>#!/usr/bin/perl<br />
use Net::SSH::Expect;</p>
<p>	#<br />
	# You can do SSH authentication with user-password or without it.<br />
	#</p>
<p>	# Making an ssh connection with user-password authentication<br />
	# 1) construct the object<br />
	my $ssh = Net::SSH::Expect->new (<br />
	    host => "myserver.com",<br />
	    password=> 'pass87word',<br />
	    user => 'bnegrao',<br />
	    raw_pty => 1<br />
	);</p>
<p>	# 2) logon to the SSH server using those credentials.<br />
	# test the login output to make sure we had success<br />
	my $login_output = $ssh->login();<br />
	if ($login_output !~ /Welcome/) {<br />
	    die "Login has failed. Login output was $login_output";<br />
	}</p>
<p>	# - now you know you're logged in - #</p>
<p>	# Starting ssh without password<br />
	# 1) run the constructor<br />
	my $ssh = Net::SSH::Expect->new (<br />
	    host => "myserver.com",<br />
	    user => 'bnegrao',<br />
	    raw_pty => 1<br />
	);<br />
	# 2) now start the ssh process<br />
	$ssh->run_ssh() or die "SSH process couldn't start: $!";</p>
<p>	# 3) you should be logged on now. Test if you received the remote prompt:<br />
	($ssh->read_all(2) =~ />\s*\z/) or die "where's the remote prompt?"</p>
<p>	# - now you know you're logged in - #</p></blockquote>
<p></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fathersfate.com.mx/wordpress/2008/01/13/use-netsshexpect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automate serial devices communications with expect-perl &amp; cu</title>
		<link>http://www.fathersfate.com.mx/wordpress/2007/06/12/expect-perl-y-cu/</link>
		<comments>http://www.fathersfate.com.mx/wordpress/2007/06/12/expect-perl-y-cu/#comments</comments>
		<pubDate>Wed, 13 Jun 2007 05:19:06 +0000</pubDate>
		<dc:creator>cash</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl for Retarded ppl]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.fathersfate.com.mx/wordpress/2007/06/12/expect-perl-y-cu/</guid>
		<description><![CDATA[Initial problem: &#8220;I&#8217;m trying to use expect to automate the communications with a serial modem using cu, but i never got answer to thr AT commands from the modem .&#8221; Code: $rootexpect->expect($timeout, "nnected"); $rootexpect->send("AT\n"); $rootexpect->expect($timeout,"OK"); my $x; $rootexpect->interact($x, 'XXX'); Here is the debug output (Looks like modem is not acepting the \n after AT) spawn [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Initial problem: </strong></p>
<p>&#8220;I&#8217;m trying to use expect to automate the communications with a serial modem using cu, but i never got answer to thr AT commands from the modem .&#8221;</p>
<p>Code:<br />
<code><br />
$rootexpect->expect($timeout, "nnected");<br />
$rootexpect->send("AT\n");<br />
$rootexpect->expect($timeout,"OK");<br />
my $x;<br />
$rootexpect->interact($x, 'XXX');<br />
</code><br />
Here is the debug output (Looks like modem is not acepting the \n after AT)</p>
<p><code>spawn id(4): Does `\007Connected.\r\n'<br />
match:<br />
pattern #1: -ex `nnected'? YES!!<br />
Before match string: `\007Co'<br />
Match string: `nnected'<br />
After match string: `.\r\n'<br />
Matchlist: ()</p>
<p>spawn id(4): list of patterns:<br />
#1: -ex `OK'</p>
<p>spawn id(4): Does `.\r\n'<br />
match:<br />
pattern #1: -ex `OK'? No.</p>
<p>spawn id(4): Does `.\r\n\nAT\n'<br />
match:<br />
pattern #1: -ex `OK'? No.<br />
</code></p>
<p>With the script @ interact mode AT responds fine</p>
<p><code>at<br />
OK<br />
</code></p>
<p>I connected a cisco router&#8217;s console port (instead of the modem), changed the expect commands and the router successfully returns the output of the command &#8216;sh ver&#8217;&#8230;<br />
<strong><br />
The solution to the problem&#8230;</strong></p>
<p><code>$rootexpect->exp_internal('2');<br />
$rootexpect->expect($taim, "nnected");<br />
$rootexpect->send("AT\015\012");<br />
$rootexpect->expect($taim,"OK");<br />
$rootexpect->send("ATDT 99999999\015\012");<br />
my $x;<br />
$rootexpect->interact($x, 'XXX');<br />
</code></p>
<p><strong>Explanation:<br />
</strong> (Taken from <a href="http://www.rocketaware.com/perl/perlfaq8/How_do_I_read_and_write_the_seri.htm">http://www.rocketaware.com/perl/perlfaq8/How_do_I_read_and_write_the_seri.htm</a> )</p>
<p>Some devices will be expecting a &#8220;\r&#8221; at the end of each line rather than a &#8220;\n&#8221;. In some ports of perl, &#8220;\r&#8221; and &#8220;\n&#8221; are different from their usual (Unix) ASCII values of &#8220;\012&#8221; and &#8220;\015&#8221;. You may have to give the numeric values you want directly, using octal (&#8220;\015&#8221;), hex (&#8220;0x0D&#8221;), or as a control-character specification (&#8220;\cM&#8221;).</p>
<p>print DEV &#8220;atv1\012&#8243;; # wrong, for some devices<br />
print DEV &#8220;atv1\015&#8243;; # right, for some devices</p>
<p>Even though with normal text files, a &#8220;\n&#8221; will do the trick, there is still no unified scheme for terminating a line that is portable between Unix, DOS/Win, and Macintosh, except to terminate ALL line ends with &#8220;\015\012&#8221;, and strip what you don&#8217;t need from the output. This applies especially to socket I/O and autoflushing,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fathersfate.com.mx/wordpress/2007/06/12/expect-perl-y-cu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programando perl en Windows Vista</title>
		<link>http://www.fathersfate.com.mx/wordpress/2007/04/28/programando-perl-en-windows-vista/</link>
		<comments>http://www.fathersfate.com.mx/wordpress/2007/04/28/programando-perl-en-windows-vista/#comments</comments>
		<pubDate>Sat, 28 Apr 2007 20:07:00 +0000</pubDate>
		<dc:creator>cash</dc:creator>
				<category><![CDATA[Perl for Retarded ppl]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[Windows Vista]]></category>
		<category><![CDATA[Youtube]]></category>

		<guid isPermaLink="false">http://www.fathersfate.com.mx/wordpress/2007/04/28/pregramando-en-perl-en-windows-vista/</guid>
		<description><![CDATA[Una demostracion del poderio del &#8220;voice recognition&#8221; de Windows vista aplicado a la programacion, noten la facilidad con la que se crea el codigo&#8230; por algo los piojosos linuxeros estan aterrados de la poca oportunidad de crecer que le dejaran productos tan buenos y estables&#8230;.]]></description>
			<content:encoded><![CDATA[<p>Una demostracion del poderio del &#8220;voice recognition&#8221; de Windows vista aplicado a la programacion, noten la facilidad con la que se crea el codigo&#8230; por algo los piojosos linuxeros estan aterrados de la poca oportunidad de crecer que le dejaran productos tan buenos y estables&#8230;.</p>
<p><object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/KyLqUf4cdwc"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/KyLqUf4cdwc" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fathersfate.com.mx/wordpress/2007/04/28/programando-perl-en-windows-vista/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Defending high traffic Postfix servers from dictionary attacks II</title>
		<link>http://www.fathersfate.com.mx/wordpress/2007/02/20/defending-high-traffic-postfix-servers-from-dictionary-attacks/</link>
		<comments>http://www.fathersfate.com.mx/wordpress/2007/02/20/defending-high-traffic-postfix-servers-from-dictionary-attacks/#comments</comments>
		<pubDate>Wed, 21 Feb 2007 05:59:13 +0000</pubDate>
		<dc:creator>cash</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl for Retarded ppl]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[Slackware]]></category>

		<guid isPermaLink="false">http://www.fathersfate.com.mx/wordpress/2007/02/20/defending-high-traffic-postfix-servers-from-dictionary-attacks/</guid>
		<description><![CDATA[spamhammerd &#8211; give spammers the meathammer in real time Original project URL: http://n0rp.chemlab.org/spamhammer Original code: Steve j. Kondik (shade at chemlab.org) this code will monitor a postfix log and watch for &#8220;550&#8243; errors (user unknown). after a threshold is reached, the ip generating the excessive errors will be added to the block list. spammers are [...]]]></description>
			<content:encoded><![CDATA[<p><strong>spamhammerd</strong> &#8211; give spammers the meathammer in real time</p>
<p><strong>Original project URL:</strong></p>
<p>http://n0rp.chemlab.org/spamhammer</p>
<p><strong>Original code: </strong>Steve j. Kondik     (shade at chemlab.org)</p>
<blockquote><p>this code will monitor a postfix log and watch for <strike>&#8220;550&#8243;</strike> errors (user unknown).  after a threshold is reached, the ip generating the excessive errors will be added to the block list.  spammers are sloppy and generally tend to blast everyone on their list at the same time.</p>
<p>This is mostly useless unless used on a high-volume server.</p>
</blockquote>
<p>My tiny modifications&#8230;</p>
<p>Modified Feb 2007<br />
<strong>Changes:</strong> Selective parsing to for use with combined logs (A single logfile with postfix, amavis, SPF)<br />
Changed error from &#8220;550&#8243; to &#8220;450&#8243;<br />
Changes on the arrays numbers to match log fields.<br />
Tested on Slackware Linux.<br />
Added iptables blocking.</p>
<p><strong>Usage:</strong><br />
Apply the filter @ Postfix&#8217;s main.cf (spammers &#038; spammers.db should be created by the script before reload postfix)<br />
<code>smtpd_client_restrictions = check_client_access hash:/etc/postfix/generated/spammers</code></p>
<p>Modified Code:</p>
<p>http://www.fathersfate.com.mx/wordpress/code/spamhammer.txt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fathersfate.com.mx/wordpress/2007/02/20/defending-high-traffic-postfix-servers-from-dictionary-attacks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perl Podbrowse</title>
		<link>http://www.fathersfate.com.mx/wordpress/2007/02/11/perl-podbrowse/</link>
		<comments>http://www.fathersfate.com.mx/wordpress/2007/02/11/perl-podbrowse/#comments</comments>
		<pubDate>Sun, 11 Feb 2007 20:19:02 +0000</pubDate>
		<dc:creator>cash</dc:creator>
				<category><![CDATA[BSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl for Retarded ppl]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.fathersfate.com.mx/wordpress/2007/02/11/perl-podbrowse/</guid>
		<description><![CDATA[Uno que es neofito para esto de la programacion y que va empezando en esto del perl, es util buscar las funciones disponibles para la instalacion de perl en el sistema, funciones en la instalacion de Perl como las que se accesan como modulos, para ello se cuenta con el programa perldoc, el cual corre [...]]]></description>
			<content:encoded><![CDATA[<p>Uno que es neofito para esto de la programacion y que va empezando en esto del perl, es util buscar las funciones disponibles para la instalacion de perl en el sistema, funciones en la instalacion de Perl como las que se accesan como modulos, para ello se cuenta con el programa perldoc, el cual corre en modo texto, muy parecido a lo que es el <strong>man</strong> para los comandos en unix/linux</p>
<p>En Ubuntu/Debian:</p>
<p><strong>jhonny@cash:~$ sudo apt-get install perldoc</strong></p>
<p><code>PERLDOC(1)            User Contributed Perl Documentation           PERLDOC(1)</p>
<p>NAME<br />
       perldoc - Look up Perl documentation in Pod format.</p>
<p>SYNOPSIS<br />
       perldoc [-h] [-v] [-t] [-u] [-m] [-l] [-F] [-i] [-V] [-T] [-r] [-ddes‐<br />
       tination_file] [-oformatname] [-MFormatterClassName] [-wformatterop‐<br />
       tion:value] [-nnroff-replacement] [-X] PageName|ModuleName|ProgramName</p>
<p>       perldoc -f BuiltinFunction</p>
<p>       perldoc -q FAQ Keyword</p>
<p>       See below for more description of the switches.<br />
</code></p>
<p>Y si son amantes de que se vea en ventanita, esta el podbrowser</p>
<p>se instala en Ubuntu/Debian:</p>
<p><strong>jhonny@cash:~$ sudo apt-get install podbrowser</strong></p>
<p><a href="http://i70.photobucket.com/albums/i91/cash_jhonny/podbrowse.png" target="_blank"><img style="width: 440px; height: 396px;" src="http://i70.photobucket.com/albums/i91/cash_jhonny/podbrowse.png" border="0" alt="Photobucket - Video and Image Hosting"/></a></p>
<p>Como veran muestra la funcion/modulo y al seleccionarla se puede navegar en la introduccion, metodos, uso y funciones similares o relacionadas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fathersfate.com.mx/wordpress/2007/02/11/perl-podbrowse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pegando en VI  o como diria Bullwinkle,  los gatitos (#) se volvieron locos</title>
		<link>http://www.fathersfate.com.mx/wordpress/2007/01/02/el-vi-se-pone-piraton-al-pegar-comentarios/</link>
		<comments>http://www.fathersfate.com.mx/wordpress/2007/01/02/el-vi-se-pone-piraton-al-pegar-comentarios/#comments</comments>
		<pubDate>Tue, 02 Jan 2007 19:19:49 +0000</pubDate>
		<dc:creator>cash</dc:creator>
				<category><![CDATA[BSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl for Retarded ppl]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.fathersfate.com.mx/wordpress/?p=368</guid>
		<description><![CDATA[Desde que empece a usar ubuntu, el VI le da la chiripiorca al pegar una linea con un # al principio, la siguiente linea indenta y le pone otro #, y asi para cada linea, de manera que si pegas un chingo de codigo se hace un desmadre&#8230; # shflash # $telnet->expect($timeout, "\#"); # $telnet->send(shflashn); [...]]]></description>
			<content:encoded><![CDATA[<p>Desde que empece a usar ubuntu, el VI le da la chiripiorca al pegar una linea con un # al principio, la siguiente linea indenta y le pone otro #, y asi para cada linea, de manera que si pegas un chingo de codigo se hace un desmadre&#8230;</p>
<pre>
                # shflash
                #                 $telnet->expect($timeout, "\#");
                #                                 $telnet->send(shflashn);
                #                                                 $telnet->expect($timeout, "\#");
                #                                                                 $shint = $telnet->before();
                #                                                                                 # shmemsum
                #                                                                                                 $telnet->expect($timeout, "\#");
                #
</pre>
<p>Coregirlo deshabilitando &#8220;auto indent&#8221; con: </p>
<p>:set paste<br />
o<br />
:h pt </p>
<p>en modo comando</p>
<pre>
                # shflash
                $telnet->expect($timeout, "\#");
                $telnet->send(shflashn);
                $telnet->expect($timeout, "\#");
                $shint = $telnet->before();
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fathersfate.com.mx/wordpress/2007/01/02/el-vi-se-pone-piraton-al-pegar-comentarios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logueando en expect&#8230; (logging on expect-perl)</title>
		<link>http://www.fathersfate.com.mx/wordpress/2006/12/17/logueando-en-expect/</link>
		<comments>http://www.fathersfate.com.mx/wordpress/2006/12/17/logueando-en-expect/#comments</comments>
		<pubDate>Sun, 17 Dec 2006 07:28:22 +0000</pubDate>
		<dc:creator>cash</dc:creator>
				<category><![CDATA[cisco]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Perl for Retarded ppl]]></category>

		<guid isPermaLink="false">http://www.fathersfate.com.mx/wordpress/?p=343</guid>
		<description><![CDATA[Hace un par de dias me di de topes, pues obteniendo un reporte de una serie de comandos show enviados a un cisco (R) el log que mandaba generar se mochaba&#8230;. El codigo: #!/usr/bin/perl use expect; --snip Parametros de conexion y creacion del objeto expect --snip $telnet->log_file("$host.txt", "w"); $telnet->send_slow(0, "ter le 0\n"); $telnet->send_slow(0, "sh ver\n"); [...]]]></description>
			<content:encoded><![CDATA[<p>Hace un par de dias me di de topes, pues obteniendo un reporte de una serie de comandos show enviados a un cisco (R) el log que mandaba generar se mochaba&#8230;.</p>
<p>El codigo:</p>
<pre>
#!/usr/bin/perl
use expect;

--snip
Parametros de conexion y creacion del objeto expect
--snip

               $telnet->log_file("$host.txt", "w");
               $telnet->send_slow(0, "ter le 0\n");
               $telnet->send_slow(0, "sh ver\n");
               $telnet->send_slow(0, "sh run\n");
               $telnet->send_slow(0, "sh diag\n");
               $telnet->send_slow(0, "sh flash\n");
               $telnet->send_slow(0, "sh ip int bri\n");
               $telnet->send_slow(0, "sh interfaces\n");
               $telnet->send_slow(0, "sh ip route\n");
               $telnet->send_slow(0, "sh dial-p voice sum\n");
               $telnet->send_slow(0, "sh processes memory\n");
               $telnet->send_slow(0, "sh processes cpu\n");
               $telnet->send_slow(0, "sh processes history\n");
               $telnet->send_slow(0, "q\n");
               $telnet->send_slow(0, "\n");
               $telnet->log_file(undef);
</pre>
<p>Estos comandos generan un log de 1400 y pico de lineas, pero el log llegaba hasta la 300, mi error (pendejada) fue no forzar al programa a esperar a que terminara el comando pa mandar el otro&#8230;, de manera que se necesita una orden <strong>expect()</strong> antes de mandar el siguiente comando, esto para cada uno de los comandos enviados, el log se mochaba al terminar el ultimo comando enviado.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fathersfate.com.mx/wordpress/2006/12/17/logueando-en-expect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducción a Perl (Rollo)</title>
		<link>http://www.fathersfate.com.mx/wordpress/2006/11/10/introduccion-a-perl-rollo/</link>
		<comments>http://www.fathersfate.com.mx/wordpress/2006/11/10/introduccion-a-perl-rollo/#comments</comments>
		<pubDate>Sat, 11 Nov 2006 04:38:15 +0000</pubDate>
		<dc:creator>cash</dc:creator>
				<category><![CDATA[Perl for Retarded ppl]]></category>

		<guid isPermaLink="false">http://www.fathersfate.com.mx/wordpress/?p=314</guid>
		<description><![CDATA[Perl es la abreviación de &#8220;Practical Extraction and Report Language&#8221;. Es lo que se conoce como un lenguaje &#8220;script&#8221;, es decir, uno en el que no hace falta compilar el programa escrito o &#8220;script&#8221;. En la práctica se compila parcialmente al comienzo de su ejecución. Ha sido diseñado para &#8220;hacer las cosas fáciles fáciles y [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Perl es la abreviación de &#8220;Practical Extraction and Report Language&#8221;. Es lo que se conoce como un lenguaje &#8220;script&#8221;, es decir, uno en el que no hace falta compilar el programa escrito o &#8220;script&#8221;. En la práctica se compila parcialmente al comienzo de su ejecución. Ha sido diseñado para &#8220;hacer las cosas fáciles fáciles y las cosas difíciles posibles&#8221;.</p>
<p>Algunas de las ventajas de Perl son:</p>
<p>    * Es un buen lenguaje &#8220;pegamento&#8221;. Se pueden juntar varios programas de una forma sencilla para alcanzar una meta determinada. Los usuarios de Windows agradecerán esta propiedad ya que normalmente adolecen de un buen lenguaje tipo &#8220;script&#8221;.</p>
<p>    * Es relativamente rápido para un lenguaje tipo &#8220;script&#8221;.</p>
<p>    * Está disponible en múltiples plataformas y sistemas operativos. De hecho funciona bajo diferentes sabores de UNIX, Linux y todo tipo de Windows. Un programa que se escriba teniendo en cuenta la compatibilidad puede ser escrito en una plataforma y ejecutado en otra.</p>
<p>    * El desarrollo de aplicaciones es muy rápido.</p>
<p>    * Hay una colección enorme de módulos que pueden ser incorporados a cualquier &#8220;script&#8221; de Perl. Están disponibles en el CPAN (&#8220;Comprehensive Perl Archive Network&#8221;). En particular existe una extensión para cálculo numérico denominada PDL.</p>
<p>    * Perl es gratuito. Mucho más que eso, es &#8220;Software Libre&#8221;. Esto quiere decir que el código fuente está disponible para que cualquiera lo pueda ver o modificar, y lo que es más importante, siempre lo estará. Aunque nunca pretendas cambiar el código, es importante disponer de la posibilidad de hacerlo, ya que siempre se podrá contratar a una tercera persona para que lo modifique en el caso de que haya un error, y debería ser posible solucionarlo.</p>
<p>    * Le otorga al programador mucha libertad para que haga el programa como quiera. Tal como dice el eslogan de Perl &#8220;Hay más de una forma de hacerlo&#8221;.</p>
<p>Algunas de las desventajas de Perl son:</p>
<p>    * Es lento para algunas aplicaciones, como programación a bajo nivel, escribiendo un &#8220;driver&#8221; para una aplicación o corriendo modelos numéricos de cálculo intensivo. Si bien se pueden insertar subrutinas FORTRAN o C en Perl, teniendo lo mejor de los dos mundos, pero con algo más de complejidad.</p>
<p>    * La libertad que se le otorga al programador puede significar que el resultado sea un programa ilegible. Si no se escribe con cuidado puede llegar a ser difícil de leer. De hecho hay un concurso de Perl ofuscado.</p>
<p>    * No se pueden compilar programas Perl. Aunque actualmente se está desarrollando un compilador que realice esta tarea y hay uno comercial disponible para la plataforma Windows. Este tema no es tan crítico como suena, los programas Perl no correrán mucho más rápidos cuando se compilen, la única ventaja está en la desaparición de la fase inicial de compilación al correr la aplicación.</p>
<p>    * Utiliza muchos recursos de la máquina. Esto significa que no es tan ligero como un programa en C, pero en la práctica es ligero comparado con la potencia de computación de los ordenadores actuales.</p></blockquote>
<p>Muchos amigos me sacan curas de que me gusta complicarme la vida, que era un masoquista por estar programando en perl, la ventaja que me llevo (y aun me tiene) en Perl es la de los modulos de CPAN, gracias a ellos me ha sacado de bastantes broncas y me ha permitido automatizar bastantes chingaderas: Conexiones de red automatizadas con expect, lectura de archivos de excel, lectura de dbf&#8217;s etc, quiza lo haya en otros lenguajes, pero he hallado mas documentacion en perl.</p>
<p>Texto original de TLDP <a href="http://es.tldp.org/Presentaciones/200002hispalinux/conf-14/14-html/Introduccion.html">aqui</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fathersfate.com.mx/wordpress/2006/11/10/introduccion-a-perl-rollo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

