<?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>LuAuF &#187; Sistemas Operativos</title>
	<atom:link href="http://luauf.com/category/sistemas-operativos/feed/" rel="self" type="application/rss+xml" />
	<link>http://luauf.com</link>
	<description></description>
	<lastBuildDate>Tue, 11 May 2010 01:27:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Usar discos reales en Virtualbox</title>
		<link>http://luauf.com/2010/05/10/usar-discos-reales-en-virtualbox/</link>
		<comments>http://luauf.com/2010/05/10/usar-discos-reales-en-virtualbox/#comments</comments>
		<pubDate>Mon, 10 May 2010 11:00:50 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Miscelaneas]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Virtualización]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1176</guid>
		<description><![CDATA[Un tip para tener a mano que resuelve las siguientes dos cuestiones: Virtualizar un Sistema Operativo ya instalado en una partición existente Crear un nuevo disco virtual en Virtualbox que apunte a una partición, sobre la cual se instalará un Sistema Operativo (desde una máquina virtual) y que luego se utilizará sin virtualizar. Bien, para [...]]]></description>
			<content:encoded><![CDATA[<p>Un tip para tener a mano que resuelve las siguientes dos cuestiones:</p>
<ul>
<li>Virtualizar un Sistema Operativo ya instalado en una partición existente</li>
</ul>
<ul>
<li>Crear un nuevo disco virtual en Virtualbox que apunte a una partición, sobre la cual se instalará un Sistema Operativo (desde una máquina virtual) y que luego se utilizará sin virtualizar.</li>
</ul>
<p><span id="more-1176"></span>Bien, para uno u otro fin necesitamos crear un disco virtual (<strong>.vmdk</strong>) pero que &#8220;apunte&#8221; a una partición real. Para el primer objetivo la partición existe y ya tiene un Sistema Operativo instalado. Para el segundo objetivo debemos, al menos, crear la partición (sin necesidad de formatear ni nada, simplemente crear la partición, puedes valerte de Gparted para esta tarea).</p>
<p>Finalmente, creamos el &#8220;link&#8221;:</p>
<p>$ VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -relative -register</p>
<p>Vía: <a href="http://crysol.org/es/node/1275">CRySoL</a></p>
]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/05/10/usar-discos-reales-en-virtualbox/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>¿Como conocer mi IP privada y mi IP pública?</title>
		<link>http://luauf.com/2010/04/24/%c2%bfcomo-conocer-mi-ip-privada-y-mi-ip-publica/</link>
		<comments>http://luauf.com/2010/04/24/%c2%bfcomo-conocer-mi-ip-privada-y-mi-ip-publica/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 02:07:31 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[BSD]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[cut]]></category>
		<category><![CDATA[ifconfig]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[ip privada]]></category>
		<category><![CDATA[ip publica]]></category>
		<category><![CDATA[Redes]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[shell script]]></category>
		<category><![CDATA[Shell scripts]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1173</guid>
		<description><![CDATA[¿Como conocer mi IP privada y mi IP pública?, esa es la cuestión. Vamos a ver un pequeño script para lograr este propósito utilizando algunos comandos ya vistos y utilizados en la historia de este blog con varios distintos propósitos (ifconfig, grep, cut, awk, wget, sed) Primero, para obtener mi IP local (privada) puedo hacerlo [...]]]></description>
			<content:encoded><![CDATA[<p>¿Como conocer mi IP privada y mi IP pública?, esa es la cuestión.</p>
<p>Vamos a ver un pequeño script para lograr este propósito utilizando algunos comandos ya vistos y utilizados en la historia de este blog con varios distintos propósitos (<a href="http://luauf.com/2009/03/26/ejemplos-de-como-configurar-la-interfaz-de-red-mediante-ifconfig/">ifconfig</a>, <a href="http://luauf.com/2009/05/04/varios-ejemplos-de-uso-del-comando-grep/">grep</a>, <a href="http://luauf.com/2009/04/12/descargar-videos-de-youtube-de-la-forma-mas-facil/">cut</a>, <a href="http://luauf.com/2008/04/02/top-5-de-los-comandos-mas-utilizados/">awk</a>, <a href="http://luauf.com/2008/04/15/descargar-un-sitio-web-completo/">wget</a>, <a href="http://luauf.com/2010/02/22/reemplazar-cadenas-en-archivos-con-sed/">sed</a>)</p>
<p align="center">
<img class="aligncenter size-full wp-image-1174" title="terminal" src="http://luauf.com/wp-content/uploads/2010/04/terminal.png" alt="" width="128" height="128" />
</p>
<p><span id="more-1173"></span></p>
<p>Primero, para obtener mi IP local (privada) puedo hacerlo mediante <a href="http://luauf.com/2009/03/26/ejemplos-de-como-configurar-la-interfaz-de-red-mediante-ifconfig/">ifconfig</a>, ahora, con la ayuda de <a href="http://luauf.com/2009/05/04/varios-ejemplos-de-uso-del-comando-grep/">grep</a>, <a href="http://luauf.com/2008/04/02/top-5-de-los-comandos-mas-utilizados/">awk</a> y <a href="http://luauf.com/2009/04/12/descargar-videos-de-youtube-de-la-forma-mas-facil/">cut</a> quitaré todo lo que sobra para obtener <strong>solo</strong> la IP.</p>
<div class="syntax_hilite">
<div id="code-4">
<div class="code">ifconfig | grep <span style="color:#CC0000;">'inet:'</span>| grep -v <span style="color:#CC0000;">'127.0.0.1'</span> | cut -d: -f2 |&nbsp; awk <span style="color:#CC0000;">'{print $1}'</span></div>
</div>
</div>
<p></p>
<p>Segundo, con la ayuda de un sitio web  y <a href="http://luauf.com/2008/04/15/descargar-un-sitio-web-completo/">wget</a> obtendré mi IP pública, IP otorgada por el servidor de Internet al conectarme, por lo general es dinámica (a menos que paguemos a nuestro ISP por una IP fija). Al resultado obtenido con la ayuda de <a href="http://luauf.com/2010/02/22/reemplazar-cadenas-en-archivos-con-sed/">sed</a> le dejaré tan <strong>solo</strong> la IP.</p>
<div class="syntax_hilite">
<div id="code-5">
<div class="code">wget -q -O - checkip.<span style="">dyndns</span>.<span style="">org</span>|sed -e <span style="color:#CC0000;">'s/.*Current IP Address://'</span> -e <span style="color:#CC0000;">'s/&lt;.*$//'</span></div>
</div>
</div>
<p></p>
<p>Finalmente, el script:</p>
<div class="syntax_hilite">
<div id="code-6">
<div class="code">#!/bin/sh<br />
echo <span style="color:#CC0000;">"IP privada: "</span>$<span style="color:#006600; font-weight:bold;">&#40;</span>ifconfig | grep <span style="color:#CC0000;">'inet:'</span>| grep -v <span style="color:#CC0000;">'127.0.0.1'</span> | cut -d: -f2 | awk <span style="color:#CC0000;">'{print $1}'</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
echo <span style="color:#CC0000;">"IP pública: "</span>$<span style="color:#006600; font-weight:bold;">&#40;</span>wget -q -O - checkip.<span style="">dyndns</span>.<span style="">org</span>|sed -e <span style="color:#CC0000;">'s/.*Current IP Address://'</span> -e <span style="color:#CC0000;">'s/&lt;.*$//'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</div>
</div>
<p></p>
<p>Vía: <a href="http://belinuxmyfriend.blogspot.com/2010/04/saber-la-ip-de-red-y-publica-con-un.html">Be Linux my Friend</a></p>
]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/04/24/%c2%bfcomo-conocer-mi-ip-privada-y-mi-ip-publica/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enviar tweets desde la terminal</title>
		<link>http://luauf.com/2010/04/19/enviar-tweets-desde-la-terminal/</link>
		<comments>http://luauf.com/2010/04/19/enviar-tweets-desde-la-terminal/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 11:00:30 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Miscelaneas]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Consola]]></category>
		<category><![CDATA[cURL]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[webservice]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1170</guid>
		<description><![CDATA[Casi dos meses después de la última publicación, es necesario dar "señales de vida" del blog, que nunca fue discontinuado... pero que se mantuvo en "pausa" por falta de "inspiración"   Y para volver, que mejor que con un clásico: hacer "cosas" desde la terminal (hoy estoy muy "comillero") A las publicaciones de tiempo atrás [...]]]></description>
			<content:encoded><![CDATA[<p>Casi dos meses después de la última publicación, es necesario dar "señales de vida" del blog, que nunca fue discontinuado... pero que se mantuvo en "pausa" por falta de "inspiración" <img src='http://luauf.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />   Y para volver, que mejor que con un clásico: hacer "cosas" desde la terminal (hoy estoy muy "comillero")</p>
<p>A las publicaciones de tiempo atrás de <a href="http://luauf.com/2009/10/27/centerim-mensajeria-instantanea-para-hombres/">Center IM</a>, <a href="http://luauf.com/2008/07/06/escuchando-musica-en-modo-texto-con-mp3blaster/">mp3blaster</a> y <a href="http://luauf.com/2008/06/20/navegando-en-modo-texto-con-lynx/">Lynx</a> hoy aprenderemos a enviar tweets desde la terminal utilizando cURL-</p>
<p align="center">
<img src="http://luauf.com/wp-content/uploads/2010/04/twitter.jpg" alt="" title="twitter" width="160" height="44" class="aligncenter size-full wp-image-1171" />
</p>
<p>cURL es una herramienta, que muy probablemente tengas instalado en tu GNU/Linux o BSD, que nos permite enviar a una datos a una URL utilizando los protocolos HTTP, HTTPS, FTP, FTPS, etc.</p>
<p><span id="more-1170"></span>Bien, enviar un tweet desde la terminal es realmente muy sencillo, basta copiar la siguiente línea:</p>
<p><codeline>curl -u usuario:password -d status="Mi primer tweet desde la terminal" http://twitter.com/statuses/update.xml<br />
</codeline></p>
<p>Donde:
<ul>
<li><strong>Usuario</strong>: es tu nombre de usuario</li>
<li><strong>Contraseña</strong>: es tu clave de acceso</li>
<li><strong>status</strong>: es el texto del tweet</li>
<li><a href="http://twitter.com/statuses/update.xml">http://twitter.com/statuses/update.xml</a>: es la URL de la <a href="http://apiwiki.twitter.com/Twitter-API-Documentation">API que ofrece Twitter</a> para el envio y recepción de datos. Verás que los tweets escritos de esta forma dirán debajo "hace 'tanto tiempo' via API"</li>
</ul>
<p>Algo que obviamente puede no gustarnos de esto es escribir, a la vista de todos, la contraseña por terminal y lo que puede ser peor, que quede en el histórico. Para lo segundo, podemos borrar el <a href="http://luauf.com/2008/08/19/utilizar-el-bash-history-a-fondo/">history</a> (history -c)</p>
<p>That's all folks.</p>
<p>Vía: <a href="http://120linux.com/twitter-desde-el-terminal/">120% Linux</a></p>
]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/04/19/enviar-tweets-desde-la-terminal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reemplazar cadenas en archivos con sed</title>
		<link>http://luauf.com/2010/03/01/reemplazar-cadenas-en-archivos-con-sed/</link>
		<comments>http://luauf.com/2010/03/01/reemplazar-cadenas-en-archivos-con-sed/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 11:00:28 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[BSD]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[editor de texto]]></category>
		<category><![CDATA[filtrado de textos]]></category>
		<category><![CDATA[flujo]]></category>
		<category><![CDATA[reemplazar texto]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[transformacion de textos]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1165</guid>
		<description><![CDATA[sed es un "editor de textos" para el filtrado y la transformación de textos. Escribo "editor de texto" entre comillas pues en realidad sed no trabaja con cadenas de caracteres sino con "flujos", la diferencia con los editores de textos clásicos (interactivos) es que sed acepta como entrada estándar un archivo o cualquier otro stream; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>sed</strong> es un "editor de textos" para el filtrado y la transformación de textos. Escribo "editor de texto" entre comillas pues en realidad sed no trabaja con cadenas de caracteres sino con "flujos", la diferencia con los editores de textos clásicos (interactivos) es que <strong>sed</strong> acepta como entrada estándar un archivo o cualquier otro stream; resultado que es procesado y devuelto a la salida estándar (vea más acerca de stdin, stdout y stderr <a href="http://luauf.com/2008/06/02/el-shell-de-unix/">aquí</a>)</p>
<p style="text-align: center;"><a href="http://luauf.com/wp-content/uploads/2010/02/seda.gif"><img class="aligncenter size-thumbnail wp-image-1169" title="seda" src="http://luauf.com/wp-content/uploads/2010/02/seda-150x150.gif" alt="" width="150" height="150" /></a></p>
<p><span id="more-1165"></span>Veamos un ejemplo muy sencillito:</p>
<div class="syntax_hilite">
<div id="code-11">
<div class="code">$ cat saludo.<span style="">txt</span><br />
hola<br />
maldito<br />
mundo</div>
</div>
</div>
<p></p>
<div class="syntax_hilite">
<div id="code-12">
<div class="code">$ sed <span style="color:#CC0000;">'2d'</span> saludo.<span style="">txt</span><br />
hola<br />
mundo</div>
</div>
</div>
<p></p>
<p>No hace mucha explicación ¿no?, el <strong>comando d</strong> recibe el número de línea a eliminar. Esto es muy sencillo y es el ejemplo más básico del uso de sed; simplemente para que te vayas amigando.</p>
<p>Ahora veamos un ejemplo similar, pero reemplazando palabras:</p>
<div class="syntax_hilite">
<div id="code-13">
<div class="code">$ sed <span style="color:#CC0000;">'s/maldito/bendito/'</span> saludo.<span style="">txt</span><br />
hola<br />
bendito<br />
mundo</div>
</div>
</div>
<p></p>
<p>Ahora usamos el<strong> comando s</strong>, éste recibe una cadena a buscar y una cadena por la que se reemplazarán las coincidencias en todos sus archivos.</p>
<p>Finalmente, para cerrar esta breve introducción a sed veamos un ejemplito propuesto en <a href="http://felinfo.blogspot.com/2010/02/reemplazar-texto-en-varios-archivos.html">Feelinfo</a> ¿Cómo reemplazar textos en varios archivos en Linux?:</p>
<p>Sabiendo que "sed -i '/s/palabra-vieja/palabra-nueva/g' *.txt" reemplaza todas las ocurrencias de la palabra vieja por palabra nueva en todos los archivos:</p>
<div class="syntax_hilite">
<div id="code-14">
<div class="code">sed -i <span style="color:#CC0000;">'s/Pepe/Jose/g'</span> *.<span style="">txt</span><br />
sed -i <span style="color:#CC0000;">'s/Manolo/Manuel/g'</span> *.<span style="">txt</span><br />
sed -i <span style="color:#CC0000;">'s/Nacho/Ignacio/g'</span> *.<span style="">txt</span><br />
sed -i <span style="color:#CC0000;">'s/Inma/Inmaculada/g'</span> *.<span style="">txt</span></div>
</div>
</div>
<p></p>
<p>Bien, esto es todo por ahora. Una observación para mi como para ustedes, no nos creamos que <strong>sed</strong> se limita a solo esto... manipulando flujos podemos dominar el mundo <img src='http://luauf.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  (¿no me crees? mira este rudimentario <strong>tetris</strong> escrito con <strong>sed</strong>, <a href="http://uuner.doslash.org/forfun/sedtris.sed">sedtris.sed</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/03/01/reemplazar-cadenas-en-archivos-con-sed/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Script para purgado de logs o archivos temporales</title>
		<link>http://luauf.com/2010/02/08/script-para-purgado-de-logs-o-archivos-temporales/</link>
		<comments>http://luauf.com/2010/02/08/script-para-purgado-de-logs-o-archivos-temporales/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 11:00:45 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[shell script]]></category>
		<category><![CDATA[Shell scripts]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1163</guid>
		<description><![CDATA[Este es otro de mis pequeños scripts que suelo utilizar y/o adaptar para diferentes circunstancias. Un script sencillo, escrito para Korn Shell pero fácilmente portable a Bash u otro similar. Para ser ciertos, más que scripting, este ejemplo es una clase de find, un comando tan potente que casi que nos permite "programar" con find [...]]]></description>
			<content:encoded><![CDATA[<p>Este es otro de mis pequeños scripts que suelo utilizar y/o adaptar para diferentes circunstancias. Un script sencillo, escrito para Korn Shell pero fácilmente portable a Bash u otro similar.</p>
<p>Para ser ciertos, más que scripting, este ejemplo es una clase de <strong>find</strong>, un comando tan potente que casi que nos permite "programar" con <strong>find</strong> <img src='http://luauf.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Antes de pasar a ver el código, comento un poco la necesidad que dió origen a este pequeño ejemplar para que tu puedas interpretarlo y, por que no, adaptarlo a tu necesidad.</p>
<p>La cuestión es así, mis aplicaciones y procesos sin logs no tienen razón de ser, todo se loguea, con fines de detectar anomalías, ver errores de software e incluso para hacer auditorias.</p>
<p style="text-align: center;"><a href="http://luauf.com/wp-content/uploads/2010/02/LogFile.png"><img class="aligncenter size-medium wp-image-1164" title="LogFile" src="http://luauf.com/wp-content/uploads/2010/02/LogFile-300x134.png" alt="" width="300" height="134" /></a></p>
<p><span id="more-1163"></span>El uso excesivo de logs nos lleva a la necesidad de la existencia de una rotación o depuración de los mismos; para esa ocasión, tan solo con un <strong>find</strong> bien robusto podemos hacer esta purga.</p>
<p>Veamos el ejemplo y analicemos brevemente el código:</p>
<p>MantenimientoLogs.sh:</p>
<div class="syntax_hilite">
<div id="code-17">
<div class="code">#!/bin/ksh</p>
<p>Log<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
<span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; date <span style="color:#CC0000;">"+%Y/%m/%d %H:%M:%S, $0, $1"</span> <br />
<span style="color:#006600; font-weight:bold;">&#125;</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>
<p>echo <br />
Log <span style="color:#CC0000;">"*** $0 Init ***"</span></p>
<p>cfgFile=$<span style="color:#800000;">1</span></p>
<p>if test -z <span style="color:#CC0000;">"$"</span>; then<br />
&nbsp; &nbsp; Log <span style="color:#CC0000;">"No se especifico archivo de configuracion"</span><br />
&nbsp; &nbsp; Log <span style="color:#CC0000;">"Termina!"</span><br />
&nbsp; &nbsp; exit <span style="color:#800000;">1</span><br />
fi</p>
<p>
if test ! -f <span style="color:#CC0000;">"$cfgFile"</span>; then<br />
&nbsp; &nbsp; Log <span style="color:#CC0000;">"No se encuentra el archivo de configuracion: [$cfgFile]"</span><br />
&nbsp; &nbsp; Log <span style="color:#CC0000;">"Termina!"</span><br />
&nbsp; &nbsp; exit <span style="color:#800000;">3</span><br />
fi</p>
<p>. $cfgFile&nbsp; &nbsp; # include</p>
<p>
Log <span style="color:#CC0000;">"Purgo logs ($datePurge dias)"</span><br />
find $pathLogs \<span style="color:#006600; font-weight:bold;">&#40;</span> -name <span style="color:#CC0000;">"*.*~"</span> -o -name <span style="color:#CC0000;">"*.log"</span> \<span style="color:#006600; font-weight:bold;">&#41;</span>&nbsp; -ctime +$datePurge -exec <span style="color:#CC0000;">"rm -v {}"</span></p>
<p>Log <span style="color:#CC0000;">"Terminamos!"</span></div>
</div>
</div>
<p></p>
<p>MantenimientoLogs.cfg</p>
<div class="syntax_hilite">
<div id="code-18">
<div class="code"># path del directorio de logs<br />
pathLogs=/var/log/myapp/</p>
<p>typeset -i datePurge<br />
# tiempo que mantengo los logs<br />
datePurge=<span style="color:#800000;">30</span>*<span style="color:#800000;">3</span>&nbsp;&nbsp; &nbsp; #tres meses</div>
</div>
</div>
<p></p>
<p>El primero de los archivos es el que hace el trabajo, el segundo es solamente de configuración. El primero recibe como argumento el segundo. El único motivo de este desacople es que cuando haya algo de configuración que modificar, se haga en el archivo cfg y no en el script de mantenimiento que es el que tiene la lógica.</p>
<p>En MantenimientoLogs.cfg solo configuro el directorio que quiero purgar, y la cantidad de días que pretendo mantener los logs.</p>
<p>MantenimientoLogs.sh tiene la "lógica", entre comillas ya que no hay mucho que decir de la misma sino más bien del <strong>find</strong>. En este script lo primero que vemos es una función Log, que hace de<strong> echo</strong> pero que agrega la fecha a cada línea. Luego se hace una especie de "include" del archivo de configuración (recibido como parámetro), previo chequeo de la existencia del argumento y la existencia del archivo.  Y luego viene todo el trabajo, que lo hace el <strong>find</strong>.</p>
<p>El<strong> find</strong> en el caso del script busca todos los archivos .sql o .*~ cuya fecha de modificación sea más de N días (donde N es $datePurge y $datePurge lo habiamos configurado en el cfg). Y finalizando esta línea, a los resultados del <strong>find</strong> les ejecuta la acción "<strong>rm -v</strong>".</p>
<p>Este script es muy sencillo, no tiene nada de otro mundo, pero fue escrito para una situación muy particular que me surgió. Para mi, con una experiencia en escritura de shell scripts muy pobre, este es un buen inicio y cumplió mi cometido. Para quienes les resulte insuficiente sepan disculpar, algo es algo, al menos no es un Hola Mundo <img src='http://luauf.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/02/08/script-para-purgado-de-logs-o-archivos-temporales/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Obtener MAC address en Symbian S60</title>
		<link>http://luauf.com/2010/02/06/obtener-mac-address-en-symbian-s60/</link>
		<comments>http://luauf.com/2010/02/06/obtener-mac-address-en-symbian-s60/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 11:00:49 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Portatiles]]></category>
		<category><![CDATA[Redes]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Symbian]]></category>
		<category><![CDATA[celular]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Moviles]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1160</guid>
		<description><![CDATA[Uno de los objetivos de este blog es que me sirva como ayuda memoria, de echo aquí volqué material al que luego recurrí como referencia. Por tal motivo, se justifica la publicación del siguiente tip (la próxima vez en vez de Googlear recurriré a mi blog, mi base de conocimientos ) La cuestión es simple, [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los objetivos de este blog es que me sirva como ayuda memoria, de echo aquí volqué material al que luego recurrí como referencia. Por tal motivo, se justifica la publicación del siguiente tip (la próxima vez en vez de Googlear recurriré a mi blog, mi base de conocimientos <img src='http://luauf.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  )</p>
<p>La cuestión es simple, tuve en mis manos por primera vez un móvil con <strong>Symbian OS S60</strong> y necesitaba obtener la MAC Address, caso contrario no iba a poder conectarme a mi red doméstica (filtrada por MAC dicho sea de paso).</p>
<p>La cuestión fue simple, estando el teléfono en stand by, hay que marcar <strong>*#62209526# </strong>número equivalente a la cadena alfanumérica a <strong>*#MAC0WLAN#</strong><strong> </strong></p>
<p><span id="more-1160"></span></p>
<p style="text-align: center;"><a href="http://luauf.com/wp-content/uploads/2010/02/symbian_logo.png"><img class="aligncenter size-full wp-image-1161" title="symbian_logo" src="http://luauf.com/wp-content/uploads/2010/02/symbian_logo.png" alt="" width="147" height="68" /></a></p>
<p>Dicho sea de paso, y en una de esas casualidades de la vida, a solo unas horas de operar un terminal con Symbian leo la noticia de que Nokia empezaba a cumplir su promesa de empezar a liberar Symbian bajo licencia EPL (Eclipse Public Licence).</p>
<p>Sin ánimo a aburrirlos con clases de historia, quiero aclarar por que digo "Nokia empezaba a cumplir su promesa". Symbian era un Sistema Operativo propietario, desarrollado en conjunto por grandes y reconocidas marcas como Nokia, Sony Ericsson, Samsung, <strong>Siemens</strong>, Benq, Lenovo, LG, Motorola, Mitsubishi Electric, Panasonic, etc.</p>
<p>Luego de que Nokia no obtuviera los resultados esperados con terminales "Linux-Like", arremetió para quedarse con la mayoría de  las acciones de Symbian y así en junio de 2008 quedarse con la mayoría de ellas. Cuando se conoció esta noticia, Nokia prometió liberar el código de Symbian, estrategia que lo favorecería gracias a la comunidad de desarrolladores que se forma alrededor de todo proyecto de código abierto. Antes de ayer, esa promesa se empezó a hacer realidad.</p>
<p>Espero, para la próxima vez que nombre Symbian en este Blog sea para empezar a desarrollar al menos algún "Hola Mundo" <img src='http://luauf.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/02/06/obtener-mac-address-en-symbian-s60/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Otra sátira de código fuente, esta vez: Windows 7</title>
		<link>http://luauf.com/2009/12/26/otra-satira-de-codigo-fuente-esta-vez-windows-7/</link>
		<comments>http://luauf.com/2009/12/26/otra-satira-de-codigo-fuente-esta-vez-windows-7/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 14:20:45 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Miscelaneas]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Codigo fuente]]></category>
		<category><![CDATA[satira]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1144</guid>
		<description><![CDATA[Luego de las exitosas publicaciones del código fuente de Windows 98, código fuente de Windows Vista y otra de Windows ¿2001? hoy se suma una más, Windows 7. #include “dos.h” #include “win95.h” #include “win98.h” #include “winNT.h” #include “monopoly.h” #include “backdoor.h” #define TIPO_INSTALACION = DIFICIL #include “sco_unix.h” class windows7 extends Windows XP implements Nothing &#123; &#125; [...]]]></description>
			<content:encoded><![CDATA[<p>Luego de las exitosas <img src="../wp-includes/images/smilies/icon_wink.gif" alt=";-)" /> publicaciones del <a href="../2008/07/03/codigo-fuente-de-windows-98/">código fuente de Windows 98</a>, <a href="../2008/04/28/windows-vista-open-source/">código fuente de Windows Vista</a> y <a href="http://luauf.com/2009/03/30/nueva-satira-del-codigo-fuente-de-windows/">otra de Windows ¿2001?</a> hoy se suma una más, Windows 7.</p>
<p align="center">
<a href="http://luauf.com/wp-content/uploads/2009/12/windows7.jpg"><img src="http://luauf.com/wp-content/uploads/2009/12/windows7.jpg" alt="" title="windows7" width="174" height="240" class="aligncenter size-full wp-image-1145" /></a>
</p>
<p><span id="more-1144"></span></p>
<div class="syntax_hilite">
<div id="c-20">
<div class="c"><span style="color: #339933;">#include “dos.h”</span><br />
<span style="color: #339933;">#include “win95.h”</span><br />
<span style="color: #339933;">#include “win98.h”</span><br />
<span style="color: #339933;">#include “winNT.h”</span><br />
<span style="color: #339933;">#include “monopoly.h”</span><br />
<span style="color: #339933;">#include “backdoor.h”</span><br />
<span style="color: #339933;">#define TIPO_INSTALACION = DIFICIL</span><br />
<span style="color: #339933;">#include “sco_unix.h”</span></p>
<p>
class windows7 extends Windows XP implements Nothing <br />
<span style="color: #66cc66;">&#123;</span><br />
<span style="color: #66cc66;">&#125;</span></p>
<p><span style="color: #993333;">int</span> &nbsp; &nbsp; totalNewFeatures &nbsp; &nbsp;&nbsp; &nbsp;=&nbsp; <span style="color: #cc66cc;">3</span>;<br />
<span style="color: #993333;">int</span> &nbsp; &nbsp; totalWorkingNewFeatures = &nbsp; <span style="color: #cc66cc;">0</span>;<br />
<span style="color: #993333;">float</span> &nbsp; numberOfBugs &nbsp;&nbsp;&nbsp;= &nbsp; &nbsp;345889E+<span style="color: #cc66cc;">08</span>;<br />
boolean readyForrelease &nbsp; &nbsp; &nbsp; &nbsp; = &nbsp; <span style="color: #000000; font-weight: bold;">FALSE</span>;</p>
<p><span style="color: #993333;">void</span> main <br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; display_copyright_message<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; <span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span>!CRASHED<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>first_tiem_install<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span>installedRAM &lt;2GB || <span style="color: #66cc66;">&#40;</span>processorSpeed &lt;4GHz<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MessageBox<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Error: hardware incompatible."</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; GetKeyPress<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BSOD<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; Make10GBswapfile<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; SearchAndDestroy<span style="color: #66cc66;">&#40;</span>FIREFOX|OPENOFFICEORG|ANYTHING_GOOGLE<span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; AddRandomDriver<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; MessageBox<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Error: Controlador incompatible."</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; GetKeyPress<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; BSOD<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span></p>
<p>&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//printf(”Bienvenido a Windows NT”);</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//printf(”Bienvenido a Windows 2000″);</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//printf(”Bienvenido a Windows XP”);</span><br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">//printf(”Bienvenido a Windows VISTA”);</span><br />
&nbsp; &nbsp; <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #66cc66;">&#40;</span>”Bienvenido a Windows <span style="color: #cc66cc;">7</span>″<span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>still_not_crashed<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; CheckUserLicense<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; DoubleCheckUserLicense<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; TripleCheckUserLicense<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; RelayUserDetailsToRedmond<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; DisplayFancyGraphics<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; FlickerLED<span style="color: #66cc66;">&#40;</span>hard_drive<span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; RunWindowsVISTA<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> LotsMoreMoney;</p>
<p>&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></p>
<p>No digas nada, ya no tienen gracias estas publicaciones, lo se! pero finalizando el año, fin de semana y en la semana sandwich entre las festividades de Navidad y Año Nuevo mucho más no se puede pedir.</p>
<p>Felicidades!</p>
<p>Vía: <a href="http://www.linux-os.com.ar/linuxos/codigo-fuente-windows-7/">Linux-OS</a></p>
]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2009/12/26/otra-satira-de-codigo-fuente-esta-vez-windows-7/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Configurar el uso de memoria de intercambio en Linux</title>
		<link>http://luauf.com/2009/11/20/configurar-el-uso-de-memoria-de-intercambio-en-linux/</link>
		<comments>http://luauf.com/2009/11/20/configurar-el-uso-de-memoria-de-intercambio-en-linux/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 16:06:16 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Disco]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[intercambio]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[memoria virtual]]></category>
		<category><![CDATA[swap]]></category>
		<category><![CDATA[swappiness]]></category>
		<category><![CDATA[tweak]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1136</guid>
		<description><![CDATA[¿Que es "swappiness y como puedo cambiarlo? Esa sería la pregunta inicial y la que da motivo a esta publicación. Pero sería apropiado hacer antes una breve introducción. En la mayoría de los sistemas operativos existe una memoria de intercambio utilizada por el sistema operativo para volcar páginas de memoria en disco cuando esta se [...]]]></description>
			<content:encoded><![CDATA[<p><strong>¿Que es "swappiness y como puedo cambiarlo? </strong>Esa sería la pregunta inicial y la que da motivo a esta publicación. Pero sería apropiado hacer antes una breve introducción.</p>
<p>En la mayoría de los sistemas operativos existe una memoria de intercambio utilizada por el sistema operativo para volcar páginas de memoria en disco cuando esta se encuentra colpsada o antes inclusive.</p>
<p>Si utilizas aplicaciones que requieren buen uso de memoria, tales como suites de oficina, editores de video y más que nada juegos, es posible que necesites más memoria de la memoria física que dispones. Esa memoria es la memoria de intercambio (fìsicamente ubicada en disco, en el caso de GNU/Linux en una partición del tipo swap). La memoria de intercambio también se utiliza en otros escenarios, como la hibernación, eventos imprevisibles o para optimizar el uso de la memoria fìsica.</p>
<p align="center">
<a href="http://luauf.com/wp-content/uploads/2009/11/image002.jpg"><img src="http://luauf.com/wp-content/uploads/2009/11/image002-300x201.jpg" alt="image002" title="image002" width="300" height="201" class="aligncenter size-medium wp-image-1138" /></a>
</p>
<p><span id="more-1136"></span>Lo cierto es que el uso de memoria de intercambio aumenta nuestra memoria disponible pero hace que el sistema funcione algo más lento debido a que no es lo mismo trabajar con memoria RAM que con memoria secundaria (disco).</p>
<p>Lo ideal para cualquier PC es disponer primero de todo de mucha memoria RAM, eso beneficiará mucho el desempeño del sistema. Luego, si eres como yo (partidarios del no-swap), en GNU/Linux puedes ajustar la forma en que el Kernel utilizará la memoria de intercambio con el valor de <strong>swappiness</strong>.</p>
<p>El valor de swappiness controla la tendencia del Kernel para mover los procesos de la memoria física y al disco de intercambio.</p>
<p>Swappiness puede tener un valor de entre 0 y 100, donde:</p>
<ul>
<li> Swappiness = 0 hace que el Kernel evite el intercambio de la memoria física a la memoria de intercampo por el mayor tiempo posible</li>
<li> Swappiness = 100 hace que el Kernel utilice de forma  "agresiva" el intercambio entre memoria física y de intercambio</li>
</ul>
<p>Por defecto, sistemas operativos como Ubuntu GNU/Linux tienen un valor de swappiness = 60. Reducir este valor predeterminado probablemente mejorará el rendimiento global de una <strong>instalación típica de escritorio</strong>. Pero el valor elegido dependerá mucho del uso particular que se le de al sistema.</p>
<ul>
<li>¿Como chequear el valor de intercambio?</li>
</ul>
<div class="syntax_hilite">
<div id="code-23">
<div class="code">$ cat /proc/sys/vm/swappiness<br />
<span style="color:#800000;">60</span><br />
$</div>
</div>
</div>
<p></p>
<ul>
<li>¿Como cambiar el valor de swappiness? Editar el archivo <strong>/etc/sysctl.conf</strong>, cambiar <strong>vm.swappiness=60</strong> por <strong>vm.swappiness=10</strong>, por ejemplo. Si no existe la variable, debes agregarla al final del archivo. </li>
</ul>
<ul>
<li>¿Como hacer que los cambios tengan efecto? Reiniciar el sistema.</li>
</ul>
<p>Para cambiar el valor de swappiness sin reiniciar el sistema, solo para la sesión actual puedes ejecutar:</p>
<div class="syntax_hilite">
<div id="code-24">
<div class="code">sudo sysctl vm.<span style="">swappiness</span>=<span style="color:#800000;">10</span></div>
</div>
</div>
<p></p>
<p>Vía: <a href="http://guvnr.com/pc/optimise-swap-swappiness/">guvnr</a></p>
]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2009/11/20/configurar-el-uso-de-memoria-de-intercambio-en-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>at, otra forma de programar tareas</title>
		<link>http://luauf.com/2009/11/16/at-otra-forma-de-programar-tareas/</link>
		<comments>http://luauf.com/2009/11/16/at-otra-forma-de-programar-tareas/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 15:12:04 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[at]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[programadas]]></category>
		<category><![CDATA[tareas]]></category>
		<category><![CDATA[tareas programadas]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1133</guid>
		<description><![CDATA[Hasta ahora solo conocía el cron como programador de tareas para Linux. Gracias a un blog amigo, El CoDiGo K, acabo de conocer el comando at. Primero de todo es necesario aclarar que el cron ejecuta periódicamente las tareas programadas en el crontab. Mientras que at permite programar tareas, que se ejecutarán el la fecha/hora [...]]]></description>
			<content:encoded><![CDATA[<p>Hasta ahora solo conocía el <a href="http://luauf.com/2009/03/09/cron-cheat-sheet/">cron</a> como programador de tareas para Linux. Gracias a un blog amigo, <a href="http://www.elcodigok.com.ar">El CoDiGo K</a>, acabo de conocer el comando <strong>at</strong>.</p>
<p style="text-align: center;"><a href="http://luauf.com/wp-content/uploads/2009/11/at.png"><img class="aligncenter size-thumbnail wp-image-1134" title="at" src="http://luauf.com/wp-content/uploads/2009/11/at-150x150.png" alt="at" width="150" height="150" /></a></p>
<p>Primero de todo es necesario aclarar que el <strong>cron</strong> ejecuta periódicamente las tareas programadas en el <strong>crontab</strong>. Mientras que <strong>at</strong> permite programar  tareas, que se ejecutarán el la fecha/hora programada, <strong>por única vez</strong>.</p>
<p><span id="more-1133"></span>El uso de <strong>at</strong> es muy sencillo, veamos paso a paso que necesitamos saber y como lo podemos utilizar:</p>
<ul>
<li>Lo que necesitamos saber, una noción del tiempo:</li>
</ul>
<div class="syntax_hilite">
<div id="code-31">
<div class="code">$ date<br />
dom nov <span style="color:#800000;">15</span> <span style="color:#800000;">12</span>:<span style="color:#800000;">29</span>:<span style="color:#800000;">41</span> ART <span style="color:#800000;">2009</span></div>
</div>
</div>
<p></p>
<ul>
<li>Programar una tarea o varias tareas, en el ejemplo, varios flush de un server mysql:</li>
</ul>
<div class="syntax_hilite">
<div id="code-32">
<div class="code">$ at <span style="color:#800000;">22</span>:<span style="color:#800000;">00</span> <span style="color:#800000;">15</span> nov<br />
warning: commands will be executed using /bin/sh<br />
&gt; mysqladmin flush-hosts<br />
&gt; mysqladmin flush-logs<br />
&gt; mysqladmin flush-privileges<br />
&gt; mysqladmin flush-status<br />
&gt; mysqladmin flush-status<br />
&gt; mysqladmin flush-threads<br />
at&gt; &lt;EOT&gt;<br />
job <span style="color:#800000;">1</span> at Sun Nov <span style="color:#800000;">15</span> <span style="color:#800000;">22</span>:<span style="color:#800000;">00</span>:<span style="color:#800000;">00</span> <span style="color:#800000;">2009</span><br />
$ <br />
$ #Ctrl+D es la combinación de teclas que confirma las tareas y sale del shell del at</div>
</div>
</div>
<p></p>
<ul>
<li>Programar una tarea de una forma más "elegante", escribir un script con las tareas de mantenimiento y programar la ejecución del script:</li>
</ul>
<div class="syntax_hilite">
<div id="code-33">
<div class="code">$ cat flushMySQL<br />
#!/bin/sh<br />
mysqladmin flush-hosts<br />
mysqladmin flush-logs<br />
mysqladmin flush-privileges<br />
mysqladmin flush-status<br />
mysqladmin flush-status<br />
mysqladmin flush-threads</div>
</div>
</div>
<p></p>
<div class="syntax_hilite">
<div id="code-34">
<div class="code">at -f flushMySQL <span style="color:#800000;">22</span>:<span style="color:#800000;">00</span> <span style="color:#800000;">15</span> nov</div>
</div>
</div>
<p></p>
<ul>
<li>Consultar tareas programadas:</li>
</ul>
<div class="syntax_hilite">
<div id="code-35">
<div class="code">$ at -l<br />
<span style="color:#800000;">1</span>&nbsp; &nbsp;Sun Nov <span style="color:#800000;">15</span> <span style="color:#800000;">22</span>:<span style="color:#800000;">00</span>:<span style="color:#800000;">00</span> <span style="color:#800000;">2009</span> a luciano<br />
$<br />
$ atq<br />
<span style="color:#800000;">1</span>&nbsp; &nbsp;Sun Nov <span style="color:#800000;">15</span> <span style="color:#800000;">22</span>:<span style="color:#800000;">00</span>:<span style="color:#800000;">00</span> <span style="color:#800000;">2009</span> a luciano</div>
</div>
</div>
<p></p>
<ul>
<li>Borrar una tarea programada:</li>
</ul>
<div class="syntax_hilite">
<div id="code-36">
<div class="code">$ atrm <span style="color:#800000;">1</span><br />
$ at -l<br />
$</div>
</div>
</div>
<p></p>
<p>Vía: <a href="http://www.elcodigok.com.ar/2009/11/programar-tareas-con-at/">El CoDiGo K</a></p>
]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2009/11/16/at-otra-forma-de-programar-tareas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hola Mundo en Smalltalk para Linux</title>
		<link>http://luauf.com/2009/10/28/hola-mundo-en-smalltalk-para-linux/</link>
		<comments>http://luauf.com/2009/10/28/hola-mundo-en-smalltalk-para-linux/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 23:05:57 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[hello world]]></category>
		<category><![CDATA[hola mundo]]></category>
		<category><![CDATA[Lenguajes de Programación]]></category>
		<category><![CDATA[Objetos]]></category>
		<category><![CDATA[POO]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Smalltalk]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1126</guid>
		<description><![CDATA[A los clásicos Hola Mundo, que más de una vez hemos escrito en este blog (para C++, en C compilado con GCC y MinGW,  con JavaFX,  C# con Mono y en ejemplos de strings en Phyton) hoy se suma Smalltalk. Para los jóvenes, les cuento que Smalltalk fue un adelantado a la época, fue el [...]]]></description>
			<content:encoded><![CDATA[<p>A los clásicos Hola Mundo, que más de una vez hemos escrito en este blog (para <a href="http://luauf.com/2009/09/24/escribir-compilar-y-ejecutar-el-hola-mundo-en-c-sobre-linux/">C++</a>, <a href="http://luauf.com/2008/04/27/gcc-para-windows/">en C compilado con GCC y MinGW</a>,  con <a href="http://luauf.com/2008/04/10/mis-primeros-pasos-con-javafx/">JavaFX</a>,  <a href="http://luauf.com/2008/05/18/programas-basicos-en-csharp-con-mono/">C# con Mono</a> y en <a href="http://luauf.com/2008/08/24/strings-functions-en-python/">ejemplos de strings en Phyton</a>) hoy se suma Smalltalk.</p>
<p>Para los jóvenes, les cuento que Smalltalk fue un adelantado a la época, fue el primer lenguaje completamente orientado a objetos (cuando digo "un adelantado" lo digo porque estamos hablando del año 1970). Imaginensé en la década del '70 a alguien hablando de objetos, sin dudas lo iban a internar en un psiquiatrico.</p>
<p style="text-align: center;"><a href="http://luauf.com/wp-content/uploads/2009/10/balloon_small_transp.gif"><img class="alignnone size-full wp-image-1127" title="balloon_small_transp" src="http://luauf.com/wp-content/uploads/2009/10/balloon_small_transp.gif" alt="balloon_small_transp" width="125" height="92" /></a></p>
<p>Como primer y vago acercamiento a este lenguaje, hoy nos aseguraremos de tener instalado (o instalar) un interprete (máquina virtual) en nuestro Sistema Operativo Unix y de ejecutar un "Hola Mundo".</p>
<p><span id="more-1126"></span></p>
<ul>
<li>Revisamos si tenemos instalado la máquina virtual de Smalltalk (como verás, yo no la tengo instalada), por lo tanto, la instalo:</li>
</ul>
<div class="syntax_hilite">
<div id="code-41">
<div class="code">$ whereis gst<br />
gst:<br />
$ sudo apt-get install gnu-smalltalk<br />
<span style="color:#006600; font-weight:bold;">&#91;</span>sudo<span style="color:#006600; font-weight:bold;">&#93;</span> password for usuario:<br />
Leyendo lista de paquetes... <span style="">Hecho</span><br />
Creando árbol de dependencias<br />
Leyendo la información de estado... <span style="">Hecho</span><br />
Se instalarán los siguientes paquetes extras:<br />
gnu-smalltalk-common libgst7 libsigsegv0<br />
Paquetes sugeridos:<br />
gnu-smalltalk-doc<br />
Se instalarán los siguientes paquetes NUEVOS:<br />
gnu-smalltalk gnu-smalltalk-common libgst7 libsigsegv0<br />
...<br />
...<br />
...<br />
$ <br />
$ #Ahora vemos que ya está instalada:<br />
$ whereis gst<br />
gst: /usr/bin/gst /usr/share/man/man1/gst.<span style="color:#800000;">1</span>.<span style="">gz</span><br />
$ which gst<br />
/usr/bin/gst</div>
</div>
</div>
<p></p>
<ul>
<li>Escribimos nuestro primer programa en Smalltalk, algo que luzca así:</li>
</ul>
<div class="syntax_hilite">
<div id="code-42">
<div class="code">$ cat holamundo.<span style="">st</span> <br />
<span style="color:#CC0000;">"Programa Hola Mundo"</span></p>
<p><span style="color:#CC0000;">'Hola Mundo!'</span> printNl !</p>
<p>$</p></div>
</div>
</div>
<p></p>
<ul>
<li>Lo ejecutamos:</li>
</ul>
<div class="syntax_hilite">
<div id="code-43">
<div class="code">$ gst holamundo.<span style="">st</span> <br />
<span style="color:#CC0000;">'Hola Mundo!'</span><br />
$</div>
</div>
</div>
<p></p>
<ul>
<li>¿Feliz? <img src='http://luauf.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  si quieres ver un poco más del lenguaje, lo más práctico que te puedo sugerir es utilizar el shell interactivo. Veamos el mismo ejemplo:</li>
</ul>
<div class="syntax_hilite">
<div id="code-44">
<div class="code">$ gst -q<br />
GNU Smalltalk ready</p>
<p>st&gt; <span style="color:#CC0000;">'Hola Mundo!'</span> printNl !<br />
<span style="color:#CC0000;">'Hola Mundo'</span><br />
st&gt;</div>
</div>
</div>
<p></p>
<p>Vía: <a href="http://www.thegeekstuff.com/2009/10/smalltalk-hello-world-example-how-to-write-and-execute-smalltalk-program-on-linux-os/">The Geek Stuff</a></p>
]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2009/10/28/hola-mundo-en-smalltalk-para-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
