<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>LuAuF</title>
	
	<link>http://luauf.com</link>
	<description />
	<lastBuildDate>Mon, 22 Feb 2010 11:00:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/luauf" /><feedburner:info uri="luauf" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by/2.5/</creativeCommons:license><feedburner:emailServiceId>luauf</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Reemplazar cadenas en archivos con sed</title>
		<link>http://feedproxy.google.com/~r/luauf/~3/SvELTvb0oGw/</link>
		<comments>http://luauf.com/2010/02/22/reemplazar-cadenas-en-archivos-con-sed/#comments</comments>
		<pubDate>Mon, 22 Feb 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-5">
<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-6">
<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-7">
<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-8">
<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>
<img src="http://feeds.feedburner.com/~r/luauf/~4/SvELTvb0oGw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/02/22/reemplazar-cadenas-en-archivos-con-sed/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://luauf.com/2010/02/22/reemplazar-cadenas-en-archivos-con-sed/</feedburner:origLink></item>
		<item>
		<title>Script para purgado de logs o archivos temporales</title>
		<link>http://feedproxy.google.com/~r/luauf/~3/RVV30Rxm8F4/</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-11">
<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-12">
<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>
<img src="http://feeds.feedburner.com/~r/luauf/~4/RVV30Rxm8F4" height="1" width="1"/>]]></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>
		<feedburner:origLink>http://luauf.com/2010/02/08/script-para-purgado-de-logs-o-archivos-temporales/</feedburner:origLink></item>
		<item>
		<title>Obtener MAC address en Symbian S60</title>
		<link>http://feedproxy.google.com/~r/luauf/~3/ZSkr9KqtcX8/</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 [...]]]></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>
<img src="http://feeds.feedburner.com/~r/luauf/~4/ZSkr9KqtcX8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/02/06/obtener-mac-address-en-symbian-s60/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://luauf.com/2010/02/06/obtener-mac-address-en-symbian-s60/</feedburner:origLink></item>
		<item>
		<title>El editor de textos de Gnome (Gedit) disponible para Windows</title>
		<link>http://feedproxy.google.com/~r/luauf/~3/LOe8gLNNZs0/</link>
		<comments>http://luauf.com/2010/02/04/el-editor-de-textos-de-gnome-gedit-disponible-para-windows/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 11:00:47 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Editores]]></category>
		<category><![CDATA[Código]]></category>
		<category><![CDATA[Codigo fuente]]></category>
		<category><![CDATA[fuentes]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[texto]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1157</guid>
		<description><![CDATA[Las disputas "religiosas" acerca de los Sistemas Operativos no son sanas (a menos que se hagan bajo un marco de broma, como lo suelo hacer yo en mi desempeño profesional   ).
Creo que todos debemos coincidir en que los extremos no son buenos ¿no? por lo tanto, que Gnome tenga portado su editor de [...]]]></description>
			<content:encoded><![CDATA[<p>Las disputas "religiosas" acerca de los Sistemas Operativos no son sanas (a menos que se hagan bajo un marco de broma, como lo suelo hacer yo en mi desempeño profesional <img src='http://luauf.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ).</p>
<p>Creo que todos debemos coincidir en que <strong>los extremos no son buenos</strong> ¿no? por lo tanto, que <strong>Gnome</strong> tenga portado su editor de textos y tantas otras de sus aplicaciones a Windows no significa ninguna <strong>ofensa</strong>, ni <strong>traición</strong>, ni nada de ello. Al contrario, desde mi punto de vista esto es hasta una ventaja, pues muchos usuarios de Windows o Linux (que en sus hogares utilicen un Sistema Operativo y en su trabajo otro) pueden utilizar sus aplicaciones favoritas an uno u otro SO.Entonces... para <strong>algunos casos</strong>, lo que importa son las aplicaciones, no los Sistemas Operativos.</p>
<p>En mi caso, entre estas aplicaciones que uso en uno y otro SO son Gimp, Dia, MySQL Workbench, Google Chrome, Firefox, etc. Y a este listado ahora se le suma Gedit.</p>
<p style="text-align: center;"><a href="http://luauf.com/wp-content/uploads/2010/01/gedit.jpg"><img class="aligncenter size-medium wp-image-1158" title="gedit" src="http://luauf.com/wp-content/uploads/2010/01/gedit-300x172.jpg" alt="" width="300" height="172" /></a></p>
<p><span id="more-1157"></span><strong>Gedit</strong> es el equivalente al <strong>Notepad</strong> (Bloc de Notas) de Windows en Gnome. Pero decir "equivalente" es <strong>mucho halago</strong> para el Notepad, pues Gedit es mucho más potente, dado que no solo sirve para escribir texto plano, sino también incorpora:</p>
<ul>
<li>Soporte para varios lenguajes de programación (con resaltado y autocompletado)</li>
<li>Corrección ortográfica</li>
<li>Solapas (o tabs o pestañas o como gustes llamarlas)</li>
<li>Plugins para ampliar la funcionalidad de la aplicación</li>
</ul>
<p>Enlace: <a href="http://ftp.acc.umu.se/pub/GNOME/binaries/win32/gedit/">Gedit</a></p>
<p>Vía: <a href="http://programandoideas.com/2010/01/gedit-editor-de-textos-avanzado-de-linux-disponible-en-windows/">Programando ideas</a></p>
<img src="http://feeds.feedburner.com/~r/luauf/~4/LOe8gLNNZs0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/02/04/el-editor-de-textos-de-gnome-gedit-disponible-para-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://luauf.com/2010/02/04/el-editor-de-textos-de-gnome-gedit-disponible-para-windows/</feedburner:origLink></item>
		<item>
		<title>Alocando y realoncando memoria en C/C++</title>
		<link>http://feedproxy.google.com/~r/luauf/~3/9BEkeoh0yYs/</link>
		<comments>http://luauf.com/2010/02/01/alocando-y-realoncando-memoria-en-cc/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 11:00:25 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[asignacion]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[dinamica]]></category>
		<category><![CDATA[malloc]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[realloc]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1153</guid>
		<description><![CDATA[Algo muy poco atractivo para muchos programadores que llegan a C/C++ luego de hacer experiencia en otros lenguajes es la asignación de memoria dinámica (punteros, mallocs y reallocs).

Repasemos un poco de teoría y luego veamos un ejemplo sencillo e indoloro  

Las variables y arrays en C/C++ ocupan un espacio de memoria limitado e invariable [...]]]></description>
			<content:encoded><![CDATA[<p>Algo muy poco atractivo para muchos programadores que llegan a <strong>C/C++</strong> luego de hacer experiencia en otros lenguajes es la<strong> asignación de memoria dinámica</strong> (punteros, mallocs y reallocs).</p>
<p style="text-align: center;"><a href="http://luauf.com/wp-content/uploads/2010/01/free-the-mallocs.png"><img class="aligncenter size-thumbnail wp-image-1154" title="free-the-mallocs" src="http://luauf.com/wp-content/uploads/2010/01/free-the-mallocs-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Repasemos un poco de teoría y luego veamos un ejemplo sencillo e indoloro <img src='http://luauf.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><span id="more-1153"></span></p>
<p>Las variables y arrays en C/C++ ocupan un espacio de memoria <strong>limitado</strong> e <strong>invariable</strong> durante la ejecución de un programa.</p>
<p>Para utilizar variables capaces de "crecer" en <strong>tiempo de ejecución</strong>, es decir, asignar memoria dinámicamente, es necesario recurrir a los punteros y luego a una serie de funciones útiles para trabajar con ellos (malloc, sizeof, realloc, free).</p>
<p>Los programadores suelen (solemos) escapar al uso de punteros pues si cometemos errores (nos olvidamos de liberar memoria "free", o pisamos memoria o hacemos de nuestros programas verdaderos "chupa-memoria") nuestros programas tienden a volverse "inestables". De todas formas, no es para huir despavoridos, al contrario, simplemente hay que ser precavidos y recuerda "malloc never fails" <img src='http://luauf.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p style="text-align: center;"><a href="http://luauf.com/wp-content/uploads/2010/01/malloc-never-fails.png"><img class="aligncenter size-thumbnail wp-image-1155" title="malloc-never-fails" src="http://luauf.com/wp-content/uploads/2010/01/malloc-never-fails-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Sin más palabras, vamos a ver dos<strong> ejemplos bien comentados</strong>, en el primero de ellos conoceremos a los famosos <strong>punteros</strong> y las funciones <strong>malloc</strong>, <strong>sizeof</strong> y <strong>free</strong>. En el segundo ejemplo, agregamos la función <strong>realloc</strong>.</p>
<div class="syntax_hilite">
<div id="c-15">
<div class="c"><span style="color: #339933;">#include &lt;stdlib.h&gt;&nbsp;&nbsp;/* stándard library, en inglés para que no me discutan si utilizar los términos biblioteca o librería <img src='http://luauf.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> */</span></p>
<p><span style="color: #993333;">int</span>* &nbsp; &nbsp;ptr;&nbsp; &nbsp;&nbsp; &nbsp;<span style="color: #808080; font-style: italic;">/* puntero a enteros */</span></p>
<p>...</p>
<p><span style="color: #808080; font-style: italic;">/**<br />
&nbsp;* La función malloc reserva un &quot;hueco&quot; (zona de memoria) de un tamaño de, 300 veces el tamaño de un entero (este valor es en bytes).<br />
&nbsp;* También se puede ver el uso del sizeof para indicar obtener el tamaño, en bytes, de un entero.<br />
&nbsp;*/</span><br />
ptr = <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span>*<span style="color: #66cc66;">&#41;</span>malloc <span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">300</span>*<span style="color: #993333;">sizeof</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">int</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;</p>
<p>...</p>
<p><span style="color: #808080; font-style: italic;">/**<br />
&nbsp;* Si malloc no puede asignar el espacio indicado (por ejemplo, si no hay memoria disponible) devuelve un puntero nulo.<br />
&nbsp;*/</span></p>
<p><span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>ptr==<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; fprintf<span style="color: #66cc66;">&#40;</span>stderr,<span style="color: #ff0000;">"No puedo alocar memoria!"</span><span style="color: #66cc66;">&#41;</span>; fflush<span style="color: #66cc66;">&#40;</span>stderr<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; exit<span style="color: #66cc66;">&#40;</span>EXIT_FAILURE<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#125;</span></p>
<p>
ptr<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#93;</span> = <span style="color: #cc66cc;">16</span>;&nbsp; <span style="color: #808080; font-style: italic;">/* Aquí trabajo con una parte de memoria asginada, zona que antes del malloc no existía */</span></p>
<p>free<span style="color: #66cc66;">&#40;</span>ptr<span style="color: #66cc66;">&#41;</span>;&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/* terminado el uso de la memoria, no olvides liberarla */</span><br />
ptr=<span style="color: #000000; font-weight: bold;">NULL</span>;&nbsp; &nbsp;&nbsp; &nbsp;<span style="color: #808080; font-style: italic;">/* Es buena práctica dejar los punteros apuntando a NULL (hacia ningún lado) luego de su uso */</span></div>
</div>
</div>
<p></p>
<div class="syntax_hilite">
<div id="c-16">
<div class="c"><span style="color: #993333;">char</span> &nbsp; &nbsp;*ptr;&nbsp; <span style="color: #808080; font-style: italic;">/* declaramos un punterito a char */</span><br />
<span style="color: #993333;">int</span> &nbsp; &nbsp; size;</p>
<p>size = <span style="color: #cc66cc;">8</span> * <span style="color: #993333;">sizeof</span><span style="color: #66cc66;">&#40;</span><span style="color: #993333;">char</span><span style="color: #66cc66;">&#41;</span>;&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/* asignamos a size un número, que representa la cantidad de bytes que alocaremos luego*/</span></p>
<p><span style="color: #808080; font-style: italic;">/* asignamos un &quot;hueco&quot; de ocho bytes para ptr*/</span><br />
ptr = <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">char</span> *<span style="color: #66cc66;">&#41;</span> malloc<span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">&#40;</span>size_t<span style="color: #66cc66;">&#41;</span> size<span style="color: #66cc66;">&#41;</span>; </p>
<p>...</p>
<p><span style="color: #808080; font-style: italic;">/**<br />
&nbsp;* Suponte que necesitamos nos que nos &quot;quedamos cortos&quot; con el espacio de memoria asignado.<br />
&nbsp;* Con la función podemos cambiar el tamaño de una zona de memoria dinámica&nbsp; previamente pedida mediante la instrucción malloc. <br />
&nbsp;*/</span><br />
size *= <span style="color: #cc66cc;">2</span>;&nbsp; <span style="color: #808080; font-style: italic;">/* duplicamos el valor de size */</span><br />
ptr = <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">char</span> *<span style="color: #66cc66;">&#41;</span> realloc<span style="color: #66cc66;">&#40;</span>ptr, <span style="color: #66cc66;">&#40;</span>size_t<span style="color: #66cc66;">&#41;</span> size<span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #808080; font-style: italic;">/**<br />
&nbsp;* Tal como malloc, realloc, si no puede asignar el espacio indicado (por ejemplo, si no hay memoria disponible) devuelve un puntero nulo.<br />
&nbsp;*/</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>ptr==<span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; fprintf<span style="color: #66cc66;">&#40;</span>stderr,<span style="color: #ff0000;">"No puedo realocar memoria!"</span><span style="color: #66cc66;">&#41;</span>; fflush<span style="color: #66cc66;">&#40;</span>stderr<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; exit<span style="color: #66cc66;">&#40;</span>EXIT_FAILURE<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#125;</span></p>
<p>...</p>
<p><span style="color: #808080; font-style: italic;">/**<br />
&nbsp;* Un detalle, no menor, realloc puede devolvernos una zona de memoria en otra posición y el puntero devuelto por realloc puede, por lo tanto, ser diferente al devuelto en primera instancia por malloc.<br />
&nbsp;* No obstante, realloc se encarca que el contenido apuntado por el puntero sea el mismo.<br />
&nbsp;* Es decir, todo este &quot;manejo&quot; de memoria es trasparente para el programador<br />
&nbsp;*/</span></p>
<p>free<span style="color: #66cc66;">&#40;</span>ptr<span style="color: #66cc66;">&#41;</span>&nbsp; &nbsp;<span style="color: #808080; font-style: italic;">/* Free the malloc()s */</span></div>
</div>
</div>
<p></p>
<p>Un comentario final, estas funciones vistas son estándares de C y se pueden encontrar, donde más que, en la librería (o biblioteca como dicen los puristas) <strong>stdlib</strong>.</p>
<img src="http://feeds.feedburner.com/~r/luauf/~4/9BEkeoh0yYs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/02/01/alocando-y-realoncando-memoria-en-cc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://luauf.com/2010/02/01/alocando-y-realoncando-memoria-en-cc/</feedburner:origLink></item>
		<item>
		<title>Educación 2.0</title>
		<link>http://feedproxy.google.com/~r/luauf/~3/9uSpLzOTU9Y/</link>
		<comments>http://luauf.com/2010/01/18/educacion-2-0/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 22:37:26 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Actualidad]]></category>
		<category><![CDATA[Miscelaneas]]></category>
		<category><![CDATA[educación]]></category>
		<category><![CDATA[universidad]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1148</guid>
		<description><![CDATA[Facebook es todo un éxito, aunque lamentablemente muchos lo traten como un simple fotolog y no sepan reconocerlo en toda su dimensión, Facebook es un gran exponente de la Web 2.0.

Personalmente me costó, y aún me cuesta explotar al máximo el concepto de Web 2.0. No puedo jactarme de ser un gran usuario de la [...]]]></description>
			<content:encoded><![CDATA[<p>Facebook es todo un éxito, aunque lamentablemente muchos lo traten como un simple fotolog y no sepan reconocerlo en toda su dimensión, Facebook es un gran exponente de la Web 2.0.</p>
<p style="text-align: center;"><a href="http://luauf.com/wp-content/uploads/2010/01/web20.jpg"><img class="aligncenter size-thumbnail wp-image-1149" title="web20" src="http://luauf.com/wp-content/uploads/2010/01/web20-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>Personalmente me costó, y aún me cuesta explotar al máximo el concepto de Web 2.0. No puedo jactarme de ser un gran usuario de la web 2.0 por solo tener una cuenta en Facebook, Twitter, LinkedIn y este blog.</p>
<p><span id="more-1148"></span>El alcance de las redes sociales y las comunidades de usuario es un concepto verde a explorar en todos los contextos.</p>
<p>Ejemplo de ello es la exposición del Lic. Andrés Pedreño Muñoz, reconocido catedrático español, en la que expone sus estudios acerca del "2.0", ya sea en la web, educación, universidad e ideas. Quiero compartir con los lectores, así como un alumno lo hizo conmigo, la disertación acerca de la mencionada personalidad acerca de la Universidad 2.0.</p>
<p>A continuación publico el video y el enlace al texto del mismo. El video puede resultarte más divertido que la lectura, no obstante debes tener más de una hora para verlo en su totalidad <img src='http://luauf.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Una vez que hayas visto el video, de acuerdo a tu visión optimista o pesimista puedes plantearte ¿el modelo de educación actual está obsoleto? ¿el uso de las comunidades de usuarios virtuales es explotada por las instituciones educativas? etc. (notarán en mis preguntas cierto tono pesimista)</p>
<p>En fin, para escuchar (o leer), interpretar, entender y por sobre todas las cosas hacer vuestro propio juicio propio.</p>
<p><strong>¿Qué puede ser la Universidad 2.0?: visión y estrategias de actuación</strong><br />
Andrés Pedreño Muñoz<br />
Instituto de Economía Internacional<br />
Universidad de Alicante</p>
<p style="text-align: center;">
<object data="http://www.uimp20.es/flashplayer/player.swf?0.5358532754483047" type="application/x-shockwave-flash" height="360" width="440"><param name="movie" value="http://www.uimp20.es/flashplayer/player.swf?0.5358532754483047"><param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="never"><param name="flashvars" value="config={&quot;showErrors&quot;: false,&quot;clip&quot;:{&quot;provider&quot;:&quot;rtmp&quot;,&quot;autoPlay&quot;:false,&quot;url&quot;:&quot;604F_10_08_2009_2.flv&quot;},&quot;logo&quot;:{&quot;url&quot;:&quot;http://www.uimp20.es/flashplayer/videouimp.png&quot;,&quot;fullscreenOnly&quot;:false,&quot;zIndex&quot;:0,&quot;top&quot;:&quot;60pct&quot;,&quot;left&quot;:&quot;50pct&quot;,&quot;width&quot;:&quot;90pct&quot;},&quot;canvas&quot;:{&quot;backgroundColor&quot;:&quot;#000000&quot;},&quot;contextMenu&quot;:[{&quot;En directo desde la UIMP&quot;:&quot;http://www.uimp.es/&quot;}],&quot;plugins&quot;:{&quot;rtmp&quot;:{&quot;url&quot;:&quot;http://www.uimp20.es/flashplayer/rtmp.swf&quot;},&quot;controls&quot;:{&quot;url&quot;:&quot;http://www.uimp20.es/flashplayer/tube.swf&quot;}},&quot;playlist&quot;:[{&quot;provider&quot;:&quot;rtmp&quot;,&quot;autoPlay&quot;:true,&quot;url&quot;:&quot;604F_10_08_2009_2.flv&quot;}]}"></object>
</p>
<p>Enlace al texto completo en <a href="http://utopias-realidades.blogspot.com/2009/08/universidad-20.html">Utopías y Realidades</a></p>
<img src="http://feeds.feedburner.com/~r/luauf/~4/9uSpLzOTU9Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/01/18/educacion-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://luauf.com/2010/01/18/educacion-2-0/</feedburner:origLink></item>
		<item>
		<title>Balance del año que dejamos atrás</title>
		<link>http://feedproxy.google.com/~r/luauf/~3/4K_QDm-LnPo/</link>
		<comments>http://luauf.com/2010/01/06/balance-del-ano-que-dejamos-atras/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 21:02:17 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Miscelaneas]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[estadisticas]]></category>
		<category><![CDATA[lecturas]]></category>
		<category><![CDATA[luauf]]></category>
		<category><![CDATA[noticias]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1146</guid>
		<description><![CDATA[Este blog no se caracteriza por realizar resúmenes de publicaciones ni tampoco de emitir noticias diarias, salvo que sean de impacto según el ojo de quien escribe.
De todas formas, un resumen del 2009 no viene mal (ante la ausencia de tiempo para realizar una publicación de más desarrollo).
El 2009, segundo año del blog, ha sido [...]]]></description>
			<content:encoded><![CDATA[<p>Este blog no se caracteriza por realizar resúmenes de publicaciones ni tampoco de emitir noticias diarias, salvo que sean de impacto según el ojo de quien escribe.</p>
<p>De todas formas, un resumen del 2009 no viene mal (ante la ausencia de tiempo para realizar una publicación de más desarrollo).</p>
<p>El 2009, segundo año del blog, ha sido un año con menos de la mitad de publicaciones de su año de nacimiento (2008), no obstante y a pesar de la baja producción, a paso lento pero firme el mismo se fue consolidando y sigue colmando las espectativas  de su creación.</p>
<p>Obviamente, cuando se hace referencia a la "baja producción", el tiempo es un factor determinante que parece hacerce cada vez más pequeño, pero no por eso voy a dejar de lado el trabajo realizado, y lo que es más importante aún, la motivación no desapareció jamás!</p>
<p><span id="more-1146"></span>De todo lo dicho se deduce como corolario que el proyecto sigue en pie.</p>
<p>Que el 2010 sea un año de nuevos objetivos y desafios para todos, son los deseos de este escritor.</p>
<p>Como anexo, un breve TOP 5 de lo más visto en 2009:</p>
<ul>
<li><a href="http://luauf.com/2008/08/05/ejemplo-de-aplicacion-web-con-netbeans-y-visual-web-javaserver-faces/">Ejemplo de aplicación web con NetBeans y Visual Web JavaServer Faces</a></li>
<li><a href="http://luauf.com/2008/05/22/instalar-windows-desde-una-unidad-usb-booteable/">Instalar Windows desde una unidad USB booteable</a></li>
<li><a href="http://luauf.com/2008/05/21/introduccion-a-java-servlets-con-netbeans/">Introducción a Java Servlets con NetBeans</a></li>
<li><a href="http://luauf.com/2008/06/04/struct-union-y-enum-en-c/">Struct, Union y Enum en C</a></li>
<li><a href="http://luauf.com/2008/05/28/instalar-postgresql-en-ubuntu/">Instalar PostgreSQL en Ubuntu</a></li>
</ul>
<p>Las estadísticas suelen ser frías, pues el TOP 5 de lo más visto en 2009 corresponden a artículos publicados en 2008 <img src='http://luauf.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Pero como dije anteriormente, la motivación sigue estando y el deseo y esfuerzo por no bajar las persianas también (de echo, hasta ahora, jamás se pasó dicha idea por mi mente).</p>
<p>PD: si queremos buscar otros motivos de la mencionada "baja producción", ya que vivo en Argentina, también puedo echarle la culpa a la crisis financiera, la gripe A, el Denge, al campo, a Clarin y a todo grupo desestabilizador o a cualquiera que se oponga a "profundizar el modelo" <img src='http://luauf.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  (lease todo lo anterior con tono irónico)</p>
<img src="http://feeds.feedburner.com/~r/luauf/~4/4K_QDm-LnPo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2010/01/06/balance-del-ano-que-dejamos-atras/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://luauf.com/2010/01/06/balance-del-ano-que-dejamos-atras/</feedburner:origLink></item>
		<item>
		<title>Otra sátira de código fuente, esta vez: Windows 7</title>
		<link>http://feedproxy.google.com/~r/luauf/~3/4A0pFYOb-wE/</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;
int &#160; &#160; totalNewFeatures &#160; &#160;&#160; &#160;=&#160; 3;
int &#160; &#160; [...]]]></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-18">
<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>
<img src="http://feeds.feedburner.com/~r/luauf/~4/4A0pFYOb-wE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2009/12/26/otra-satira-de-codigo-fuente-esta-vez-windows-7/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://luauf.com/2009/12/26/otra-satira-de-codigo-fuente-esta-vez-windows-7/</feedburner:origLink></item>
		<item>
		<title>XSL: Lenguaje de hojas de estilo extensible</title>
		<link>http://feedproxy.google.com/~r/luauf/~3/g0TkAKKphpU/</link>
		<comments>http://luauf.com/2009/11/30/xsl-lenguaje-de-hojas-de-estilo-extensible/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 15:48:35 +0000</pubDate>
		<dc:creator>Luciano</dc:creator>
				<category><![CDATA[Miscelaneas]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[extensible]]></category>
		<category><![CDATA[hojas de estilo]]></category>
		<category><![CDATA[lenguaje]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://luauf.com/?p=1139</guid>
		<description><![CDATA[Leyendo una publicación a la que hago referencia al final del artículo, creí una buena oportunidad para hacer un acercamiento a la familia de lenguajes basados en XML, más específicamente XSL y más específicamente aún XSLT.
XSL, representa lo las siglas Extensible Stylesheet Language (lenguaje de hojas de estilo extensible), la T que agrega XSL (XSLT) [...]]]></description>
			<content:encoded><![CDATA[<p>Leyendo una publicación a la que hago referencia al final del artículo, creí una buena oportunidad para hacer un acercamiento a la familia de lenguajes basados en XML, más específicamente XSL y más específicamente aún XSLT.</p>
<p>XSL, representa lo las siglas E<strong>x</strong>tensible <strong>S</strong>tylesheet <strong>L</strong>anguage (lenguaje de hojas de estilo extensible), la T que agrega XSL (XSLT) correndonde a "Transformations". Otros lenguajes de la familia son XSL-FO (Formatting Objects) y XPath o XML Path Language (no basado en XML) y utilizado para refererise a porciones o ramas de un documento xml específicando su path.</p>
<p>XSLT nos permite describir la forma en que serán formateados o transformados los archivos codificados en XML para ser mostrados.</p>
<p style="text-align: center;"><a href="http://luauf.com/wp-content/uploads/2009/11/XSL.gif"><img class="aligncenter size-medium wp-image-1140" title="XSL" src="http://luauf.com/wp-content/uploads/2009/11/XSL-300x189.gif" alt="XSL" width="300" height="189" /></a></p>
<p>Debido a la creciente manipulación de archivos XML, no está de más conocer un poco de XSLT para poder recuperar información de nuestros archivos pero de una forma elegante para su visualización.</p>
<p><span id="more-1139"></span></p>
<p>En esta introducción nos limitaremos a un ejemplo práctico, y es importante saber que por hacer esto no significa que somos expertos en XSLT, al contrario, pero por algún lugar se empieza ¿no?</p>
<p>Bien, imagina que tenemos el siguiente archivo xml con información de libros:</p>
<div class="syntax_hilite">
<div id="xml-22">
<div class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;</span>?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">"1.0"</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">"iso-8859-1"</span>?<span style="font-weight: bold; color: black;">&gt;</span></span></p>
<p><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;LIBROS<span style="font-weight: bold; color: black;">&gt;</span></span></span></p>
<p>&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;LIBRO<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;TITULO<span style="font-weight: bold; color: black;">&gt;</span></span></span>El Hobbit<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/TITULO<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;AUTOR<span style="font-weight: bold; color: black;">&gt;</span></span></span>J.R.R. Tolkien<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/AUTOR<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;EDITORIAL<span style="font-weight: bold; color: black;">&gt;</span></span></span>Anaya<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/EDITORIAL<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;WEB</span> <span style="color: #000066;">URL</span>=<span style="color: #ff0000;">"http://www.elhobbit.com"</span><span style="font-weight: bold; color: black;">&gt;</span></span>elhobbit.com<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/WEB<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/LIBRO<span style="font-weight: bold; color: black;">&gt;</span></span></span></p>
<p>&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;LIBRO<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;TITULO<span style="font-weight: bold; color: black;">&gt;</span></span></span>El Caballo de Troya<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/TITULO<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;AUTOR<span style="font-weight: bold; color: black;">&gt;</span></span></span>J.J. Benitez<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/AUTOR<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;EDITORIAL<span style="font-weight: bold; color: black;">&gt;</span></span></span>CIFI<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/EDITORIAL<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;WEB</span> <span style="color: #000066;">URL</span>=<span style="color: #ff0000;">"http://www.elcaballodetroya.com"</span><span style="font-weight: bold; color: black;">&gt;</span></span>elcaballodetroya.com<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/WEB<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/LIBRO<span style="font-weight: bold; color: black;">&gt;</span></span></span></p>
<p>&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;LIBRO<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;TITULO<span style="font-weight: bold; color: black;">&gt;</span></span></span>1984<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/TITULO<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;AUTOR<span style="font-weight: bold; color: black;">&gt;</span></span></span>George Orwell<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/AUTOR<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;EDITORIAL<span style="font-weight: bold; color: black;">&gt;</span></span></span>Raven<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/EDITORIAL<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;WEB</span> <span style="color: #000066;">URL</span>=<span style="color: #ff0000;">"http://www.georgeorwell.com"</span><span style="font-weight: bold; color: black;">&gt;</span></span>georgeorwell.com<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/WEB<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/LIBRO<span style="font-weight: bold; color: black;">&gt;</span></span></span></p>
<p><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/LIBROS<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</div>
</div>
<p></p>
<p>Ahora, imagina que queremos mostrar en forma prolija y ordenada un listado LIBRO - AUTOR.</p>
<p>Para hacer esto, debemos escribir un documento XSLT y utilizar la etiqueta <strong>xsl:for-each</strong> con la cual recorreremos todos los libros dado un <strong>path</strong> (en nuestro caso LIBROS/LIBRO) gracias al atributo <strong>select</strong> de la etiqueta.</p>
<p>Luego, para cada uno de los valores de los elementos de LIBROS, con la etiqueta xsl:value-of los recuperarmos y los incluiremos en un documento que combina etiquetas de XHTML (por ejemplo, la etiqueta BR).</p>
<p>Entonces el código del documento XSLT quedaría así:</p>
<div class="syntax_hilite">
<div id="xml-23">
<div class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;xsl</span>:for-each <span style="color: #000066;">select</span>=<span style="color: #ff0000;">"LIBROS/LIBRO"</span><span style="font-weight: bold; color: black;">&gt;</span></span><br />
&nbsp; &nbsp; Titulo:<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;xsl</span>:value-of <span style="color: #000066;">select</span>=<span style="color: #ff0000;">"TITULO"</span><span style="font-weight: bold; color: black;">/&gt;</span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;br</span><span style="font-weight: bold; color: black;">/&gt;</span></span><br />
&nbsp; &nbsp; Autor:<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;xsl</span>:value-of <span style="color: #000066;">select</span>=<span style="color: #ff0000;">"AUTOR"</span><span style="font-weight: bold; color: black;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/xsl</span>:for-each<span style="font-weight: bold; color: black;">&gt;</span></span></div>
</div>
</div>
<p></p>
<p>Y la visualización sería así:</p>
<blockquote><p>
Titulo:El Hobbit<br />
Autor:J.R.R. Tolkien</p>
<p>Titulo:El Caballo de Troya<br />
Autor:J.J. Benitez</p>
<p>Titulo:1984<br />
Autor:George Orwell
</p></blockquote>
<p>Finalmente, para ordenarlo debemos utilizar la etiqueta <strong>xsl:sort</strong> dentro de la iteración <strong>xsl:for-each</strong>:</p>
<div class="syntax_hilite">
<div id="xml-24">
<div class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;xsl</span>:sort <span style="color: #000066;">select</span>=<span style="color: #ff0000;">"titulo"</span><span style="font-weight: bold; color: black;">/&gt;</span></span></div>
</div>
</div>
<p></p>
<p>Y así termina el primer acercamiento de este blog a la familia de lenguajes XML, esperemos seguir transitando esta senda juntos.</p>
<p>Vía: <a href="http://lineadecodigo.com/xslt/ordenando-un-fichero-xml/">Linea de Codigo</a></p>
<img src="http://feeds.feedburner.com/~r/luauf/~4/g0TkAKKphpU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2009/11/30/xsl-lenguaje-de-hojas-de-estilo-extensible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://luauf.com/2009/11/30/xsl-lenguaje-de-hojas-de-estilo-extensible/</feedburner:origLink></item>
		<item>
		<title>Configurar el uso de memoria de intercambio en Linux</title>
		<link>http://feedproxy.google.com/~r/luauf/~3/0W2KBcryVMQ/</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 encuentra [...]]]></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-27">
<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-28">
<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>
<img src="http://feeds.feedburner.com/~r/luauf/~4/0W2KBcryVMQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://luauf.com/2009/11/20/configurar-el-uso-de-memoria-de-intercambio-en-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://luauf.com/2009/11/20/configurar-el-uso-de-memoria-de-intercambio-en-linux/</feedburner:origLink></item>
	</channel>
</rss>
