<?xml version="1.0" encoding="utf-8"?>
        <?xml-stylesheet type="text/css" href="http://www.orvtech.com/styles/feed.css"?>
<rss version="2.0"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:admin="http://webns.net/mvcb/"
 xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title>Linux y el NSLU2</title>
<atom:link href="http://www.orvtech.com/rss.xml" rel="self" type="application/rss+xml" />
<link>http://www.orvtech.com</link>
<description></description>
<dc:language>es-ve</dc:language>
<dc:creator>orvtech</dc:creator>
<dc:date>2010-03-10T13:03:20-05:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />

<item>
<link>http://www.orvtech.com/archives/2010/03/10/mantén_tu_firma_al_día_en_todos_los_foros_en_que_participas/index.html</link>
<guid isPermaLink="true">http://www.orvtech.com/archives/2010/03/10/mantén_tu_firma_al_día_en_todos_los_foros_en_que_participas/index.html</guid>
<title>Mantén tu firma al día en todos los foros en que participas.</title>
<dc:date>2010-03-10T12:12:39-05:00</dc:date>
<dc:creator>orvtech</dc:creator>
<dc:subject> Linux, Scripts, NSLU2</dc:subject>
<description><![CDATA[
<p>Como buen troll que soy me mantengo entretenido y participo en varias comunidades o foros en internet. siempre quise mantener mi firma apuntando a mi ultimo articulo publicado pero al mismo tiempo me da flojera actualizar todos esos foros cada vez que publico algo nuevo.</p>

<p>Ya que tengo corriendo apache en mi <a href="http://www.orvtech.com/articles/el_nslu2/">NSLU2</a> decidí crear un script que me cree un archivo .htaccess  y así redirigir una petición HTTP en especifico a mi ultima publicación en mi blog. Para esto he decidido crear un sub-directorio en mi RootDirectory llamado '/latest'</p>
<textarea  style="height: 35px"  class="bashcode">mkdir /var/www/linuxevolution.org/htdocs/latest 
mkdir /var/www/orvtech.com/htdocs/latest</textarea>
<br />
<p>El script hace un poco mas que simplemente crear el htaccess. Me permite especificar cuales VirtualHost corriendo NanoBlogger quiero usar, creando un .htaccess para cada uno de estos como se puede ver aquí:</p>
<textarea  style="height: 110px"  class="bashcode">
#!/bin/bash
DocummentRoot="/var/www/linuxevolution.org/htdocs /var/www/orvtech.com/htdocs"

for virtualhost in $DocummentRoot
do cat $virtualhost/rss.xml  | grep link | grep archives |\
head -n1 | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' |\
awk '{print "RewriteEngine on\nRewriteRule (.*) "$0" [R=301,L]"}' > $virtualhost/latest/.htaccess
done</textarea>
<br />


<p>En mi caso tengo 2 blogs que usan NanoBlogger y este script mantiene el directorio '/latest/' apuntando a la ultima publicación en cada uno (<a href="http://www.linuxevolution.org/latest/local">www.linuxevolution.org/latest</a> la versión en ingles de este sitio y <a href="http://www.orvtech.com/latest/local">www.orvtech.com/latest</a> que seria la entrada mas reciente de este blog).</p>]]></description>

</item>
<item>
<link>http://www.orvtech.com/archives/2010/03/03/el_nslu2_como_puente_para_tener_push_de_un_servidor_irc_en_el_iphone/index.html</link>
<guid isPermaLink="true">http://www.orvtech.com/archives/2010/03/03/el_nslu2_como_puente_para_tener_push_de_un_servidor_irc_en_el_iphone/index.html</guid>
<title>El NSLU2 como puente para tener PUSH de un servidor IRC en el iPhone.</title>
<dc:date>2010-03-03T12:52:14-05:00</dc:date>
<dc:creator>orvtech</dc:creator>
<dc:subject> Linux, Scripts, NSLU2, iPhone, IRC</dc:subject>
<description><![CDATA[<p>
Tengo que reconocerlo, soy adicto a la internet y mi debilidad es el IRC,
anterior mente tenia en el iPhone un cliente que se llama LimeChat que
funciona muy bien pero carece de alertas vía PUSH y por tanto no puedo estar
conectado siempre.
</p>
<p>
El problema con PUSH es que necesita pasar por un servidor central autorizado
por apple para estas alertas. Así que si uno cierra la aplicación aun queda
una conexión abierta entre el servidor central y la infraestructura al que uno se esta
conectando (por ejemplo una conexión del servidor de beejive a la infraestructura de
gtalk para alertas de gTalk).
</p>
<p>
La solución es que uno pueda tener un servidor que se mantenga conectado al
servidor de IRC y actualice ese servidor central pero entonces encontramos
otro problema, apple no va a autorizar todos estos servidors personales.
<br />
El equipo de Colloquy consiguió una solución para esto, ellos permiten que su
cliente para el iPhone se conecte a través de bouncers a el servidor que uno
quiera y han desarrollado un plugin para ZNC (entre otros bouncers) el cual
actualiza su servidor (que esta autorizado) permitiéndonos recibir alertas
cuando se menciona nuestro nick, recibimos mensajes privados, etc mientras
tenemos la aplicación cerrada. 
</p>
<br />
<p>
<b>Instalación y configuración del bouncer.</b>
<br />
Busquemos si lo tenemos disponible en nuestro repositorio:
<textarea style="height: 35px" class="bashcode" readonly>~#: apt-cache search znc
znc - an advanced IRC bouncer</textarea><br />

OK, podemos instalarlo, luego de instalarlo ejecutamos los siguientes comandos
para configurarlo y habilitar PUSH para lo cual tendremos que descargar el
plugin de colloquy.

<textarea style="height: 80px" class="bashcode" readonly>
~#: znc --makecon
~#: cd ~/
~#: curl -LO http://github.com/wired/colloquyPUSH/raw/master/znc/colloquy.cpp
~#: znc-buildmod colloquy.cpp
~#: mv colloquy.so ~/.znc/modules/</textarea> <br />

El primer comando deberia de iniciar un dialogo que nos ayudara a crear nuestro archivo de configuracion, deberian de ver algo como esto:<br />
<img src=/images/iphone/znc_configuration.png>
</p>
<br />
<p>
<b>
Configuración del cliente en el teléfono.</b><br />
Para configurar el Mobile Colloquy en nuestro iPhone solo tenemos que abrir el cliente, pinchar el botón "<b>+</b>" en la seccion de conexiones, y seleccionar "IRC Connection", de allí seguiremos estos pasos:
<div align="left"><img src="/images/iphone/colloquy_add.png"></div><br />

<ol>
  <br /><li>En 'Address' pones el FQDN o dirección IP del servidor.
  <div align=left><img src="/images/iphone/colloquy_irc.png"></div></li>
  
  <br /><li>Habilita  "Push Notifications".</li>
  
  <br /><li>Entra en "Advanced" y cambia lo necesario.
  
  <div align="left"><img src="/images/iphone/colloquy_advanced.png"></div></li>

  <br /><li>Ahora agrega un "Colloquy Boucer"  usando los datos del servidor bouncer que configuramos (znc) incluyendo el puerto, si en ZNC habilitaste SSL entonces habilita en el cliente también.
  
  <div align="left"><img src="/images/iphone/colloquy_bouncer.png"></div></li>

  <br /><li>Introduce los datos de la cuenta que creaste en ZNC, en el 'Account Name' pones tu Username y en el Password pones tu Password, no te confundas con los datos de tu nick (Nick Pass).</li>
  
  <br /><li>Regresa y pincha "Connect".</li>
</ol>
</p>]]></description>

</item>
<item>
<link>http://www.orvtech.com/archives/2010/02/23/encontrar_archivos_con_formato_ms-dos/index.html</link>
<guid isPermaLink="true">http://www.orvtech.com/archives/2010/02/23/encontrar_archivos_con_formato_ms-dos/index.html</guid>
<title>Encontrar archivos con formato MS-DOS. </title>
<dc:date>2010-02-23T11:18:30-05:00</dc:date>
<dc:creator>orvtech</dc:creator>
<dc:subject> Linux, Scripts</dc:subject>
<description><![CDATA[<p>
Recientemente tuve un montón de problemas con una aplicación web la cual fue modificada bajo MS Windows y tenia el formato MS-DOS. Encontré un montón de errores en los logs de cron el cual corría estos scripts de perl, para no darle largas a la historia, me toco encontrar todos estos scripts y modificarlos, como no fui yo quien subio los scripts al servidor no tenia ni idea de en que subdirectorio podían estar ni cuantos eran. Aquí esta el script que use para conseguir los archivos: 
</p>

<textarea style="height: 35px" class="bashcode" readonly>grep -IUl --color '^M' -R ./*</textarea>
<br />
<p>Este script generara una lista de archivos que están formateados como MS-DOS, fácilmente se podría hacer un 'for/while loop' y pasarlos por alguna aplicación como dos2unix. 
<a class="DiggThisButton">('<img src="http://digg.com/img/diggThisCompact.png" height="18" width="120" alt="DiggThis" />’)</a>
<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></p>]]></description>

</item>
<item>
<link>http://www.orvtech.com/archives/2009/11/30/el_nslu2_como_un_puente_de_last_fm_a_twitter/index.html</link>
<guid isPermaLink="true">http://www.orvtech.com/archives/2009/11/30/el_nslu2_como_un_puente_de_last_fm_a_twitter/index.html</guid>
<title>El NSLU2 como un puente de last.fm a twitter.</title>
<dc:date>2009-11-30T16:57:10-05:00</dc:date>
<dc:creator>orvtech</dc:creator>
<dc:subject> Linux, Scripts, NSLU2, Twitter, last_fm, IRC</dc:subject>
<description><![CDATA[<p>Este script nació de la necesidad (ocio?) de actualizar mi estado en <a href="http://twitter.com/m1n1m3">twitter</a> con la canción que estaba escuchando en mi iPhone. El detalle esta en que solo actualizara mi perfil si la canción esta marcada como 'loved' en last.fm también detecta que día de la semana es y evalúa si es necesario agregar el hash tag <a href="http://twitter.com/#search?q=%23mm"><i>#mm</i></a>.</p>

<textarea class="bashcode" readonly>twitter_user="<your_twitter_user_here>"
twitter_passwd="your_twitter_password_here"
URL="http://twitter.com/statuses/update.xml"
tags="#lastfm"
lastfm_api="<your_api_from_lastfm_here>"
lastfm_user="<your_lastfm_user_here>"
bit_ly_user="<your_bit.ly_user_here>"
bit_ly_apikey="<your_bit.ly_api_key_here>"

fmtwitted=`cat /tmp/lastfm2twitter.tmp | \
sed -e 's/status=Just played: //g' -e 's/#.*//g' | \
grep '[a-z]'|sed -e 's/\ //g' -e 's/\-/./g'`

fmcurrent=`curl -s "http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&limit=1&user=$lastfm_user&api_key=$lastfm_api" | \
grep -E '<name>|</name>|<artist\ |</artist>' |\
head -n2| sed -e 's/<[^>]*>//g' | tr '\n' '.' |\
sed -e 's/\ //g' -e 's/.$//g'`


lastfm_song_url=`curl -s "http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&limit=1&user=$lastfm_user&api_key=$lastfm_api" |\
grep -E '<url>|</url>' | sed -e 's/<[^>]*>//g' |\
head -n1| tr '\n' '.' | sed -e 's/\ //g' -e 's/.$//g'`
bit_ly_url=`curl -s "http://api.bit.ly/shorten?version=2.0.1&longUrl=$lastfm_song_url&login=$bit_ly_user&apiKey=$bit_ly_apikey" | \
grep shortUrl | sed -e 's/\"/\ /g' | awk '{print $3}'`

today_mm=`date +%A`
if [[ $today_mm == "Monday"  ]] 
  then tags="$tags #mm"
fi


if grep $fmcurrent /tmp/lastfm_loved.tmp  > /dev/null
  then if [[ "$fmtwitted" == "$fmcurrent" ]]
      then exit 0
        else curl -s "http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&limit=1&user=$lastfm_user&api_key=$lastfm_api" | \
	grep -E '<name>|</name>|<artist\ |</artist>' |\
	head -n2| sed -e 's/<[^>]*>//g' | tr '\n' '-' | \
	sed -e 's/^[ \t]*//' -e 's/-/\ -\ /g' -e 's/- $//g' -e 's/\ $//g' |\
	awk '{print "status=Just played: "$0}' > /tmp/lastfm2twitter.tmp
	lastfm2twitter=`cat /tmp/lastfm2twitter.tmp; 
	echo $bit_ly_url 
	echo $tags | tr '\n' ' '`
	echo $lastfm2twitter > /tmp/lastfm2twitter.tmp
	curl -s -u $twitter_user:$twitter_passwd -d @/tmp/lastfm2twitter.tmp $URL > /dev/null
	  fi
	  else exit 0
fi</textarea>
<br />
<p>Como se pueden dar cuenta estoy usando bit.ly para acortar las URLs de last.fm para lo cual tendrán que obtener una API Key. Aun tengo que optimizar el script guardando las peticiones de curl en un archivo y formar algo así como un cache o base de datos local de last.fm a bit.ly.
</p><p>
El script detecta si el mensaje sobrepasa el limite de 140 caracteres permitido por twitter y acorta el mensaje antes de enviarlo. 
</p> ]]></description>

</item>
<item>
<link>http://www.orvtech.com/archives/2009/11/03/script_para_monitorear_recursos_del_sistema_en_el_nslu2/index.html</link>
<guid isPermaLink="true">http://www.orvtech.com/archives/2009/11/03/script_para_monitorear_recursos_del_sistema_en_el_nslu2/index.html</guid>
<title>Script para monitorear recursos del sistema en el NSLU2</title>
<dc:date>2009-11-03T11:37:17-05:00</dc:date>
<dc:creator>orvtech</dc:creator>
<dc:subject> Linux, Scripts, NSLU2, IRC</dc:subject>
<description><![CDATA[<p>
Este script muestra la utilización de recursos en el NSLU2 siempre y cuando este corriendo algún firmware de la comunidad (basado en Linux claro). La salida del script produce código HTML simple. Esta hecho en BASH y algo de JavaScript para poder mostrar la información. Esto seria el producto del script:
<br /><br />
<script src="http://www.orvtech.com/resources.js" type="text/javascript"></script>
</p>

<br /><p>Código fuente de resources.sh:</p>
<textarea class="bashcode" readonly>

#GETTING THE DAYS OF UPTIME
let UP_TIME=`uptime | awk '{print $3" "$5}' | sed 's/:/ /g' |\
awk '{print "("$1"*24)+"$2}'`

#CALCULATING FREE RAM PERCENTAGE
mem_total=`grep MemTotal /proc/meminfo|awk '{print $2}'`
mem_free=`grep MemFree /proc/meminfo|awk '{print $2}'`
percent=$(echo "scale=2; $mem_free/$mem_total*100" | bc -l)

#GETTING THE AVERAGE LOAD OF THE SERVER 
load_10=`uptime | awk '{print $11}'|sed 's/,//g'`

#BUILDING THE *.js FILE
echo "var resources=\"<b>Last Updated: </b> `date`<br /><b>UP Days: 
</b>$UP_TIME<br /><b>Free RAM:</b> $percent% ($mem_free kB)<br />
<b>Load: </b>$load_10<br />\";"
echo "document.write(resources);"</textarea>

<p>Luego puedes redirigir la salida de el script a un archivo en tu RootDirectory. En mi caso estoy usando /resources.js y lo ejecuto cada 5 minutos usando un cronjob.</p>
<br /><p>Código fuente de resources.js:</p>

<textarea style="height: 55px" class="bashcode" readonly>var resources="<b>Last Updated: </b> Tue Nov  3 12:00:02 EST 2009<br />
<b>UP Days: </b>2549<br /><b>Free RAM:</b> 5.00% (1552 kB)<br /><b>Load: 
</b>0.21<br />";
document.write(resources);</textarea>

<p>Luego uso el siguiente código para mostrar la información:</p>
<textarea style="height: 35px" class="bashcode" readonly>
<script src="http://www.orvtech.com/resources.js" type="text/javascript"><
/script></textarea>]]></description>

</item>
<item>
<link>http://www.orvtech.com/archives/2009/11/01/ya_casi_estamos_listos/index.html</link>
<guid isPermaLink="true">http://www.orvtech.com/archives/2009/11/01/ya_casi_estamos_listos/index.html</guid>
<title>Ya casi estamos listos</title>
<dc:date>2009-11-01T20:08:45-05:00</dc:date>
<dc:creator>orvtech</dc:creator>
<dc:subject> Linux, NSLU2</dc:subject>
<description><![CDATA[<p>
Ya casi han pasado dos años desde el ultima actualización del website, actualmente hemos migrado de un sitio basado en HTML estático sin manejador de contenido el cual tenia que ser editado usando vim a nanoblogger adaptando el template que teníamos antes. Actualmente tenemos algunos detalles y problemitas que necesitan ser solucionados como mantener el mismo CSS entre el contenido viejo y el contenido nuevo hasta que este sea completamente migrado. 
</p><p>
He estado trabajando en un plug-in que use picasa para publicar las fotos de las galerías. lo liberare tan pronto sea puesto a prueba. La habilidad de tener contenido en múltiples idiomas es algo que siempre he querido pero actualmente se hace sumamente difícil y he optado por tener dos dominios con sitios web completamente independientes. 
</p><p>
En unas dos semanas ya debería de tener internet en casa y no necesitare de usar 'wifi prestada' de mis vecinos, para entonces ya debería de estar trabajando en el stage3 de gentoo de la ultima versión liberada para el NSLU2.<p>]]></description>

</item>
<item>
<link>http://www.orvtech.com/archives/2009/11/01/linux_en_el_nslu2/index.html</link>
<guid isPermaLink="true">http://www.orvtech.com/archives/2009/11/01/linux_en_el_nslu2/index.html</guid>
<title>Linux en el NSLU2</title>
<dc:date>2009-11-01T13:16:16-05:00</dc:date>
<dc:creator>orvtech</dc:creator>
<dc:subject> Linux, NSLU2</dc:subject>
<description><![CDATA[El NSLU2 (conocido como "slug") se vende como un dispositivo NAS (Network Attached Storage) pero en realidad es mucho mas útil que un simple NAS. Es un sistema embedido completo y barato con su firmware basada en Linux. Lo mejor de todo es que su fabricante (Linksys) usa el kernel de linux y ha liberado su código lo que trajo como consecuencia el nacimiento de proyectos llevados por la comunidad como Unslung y OpenSlug.]]></description>

</item>
</channel>
</rss>
