<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2spanishfull.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>debianHackers</title>
	
	<link>http://www.debianhackers.net</link>
	<description>[Disclaimer] Blog altamente "unstable"</description>
	<lastBuildDate>Fri, 17 May 2013 22:11:33 +0000</lastBuildDate>
	<language>es-ES</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/DebianHackers" /><feedburner:info uri="debianhackers" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by-nc/3.0/</creativeCommons:license><feedburner:emailServiceId>DebianHackers</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/content?lg=es&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FDebianHackers" src="http://eur.i1.yimg.com/eur.yimg.com/i/es/my/addto1.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.feedness.com/alta/http://feeds.feedburner.com/DebianHackers" src="http://www.feedness.com/ayuda/wp-content/square_b_sh_feed.gif">Subscribe with Feedness</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/DebianHackers" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FDebianHackers" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FDebianHackers" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FDebianHackers" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2FDebianHackers" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FDebianHackers" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2FDebianHackers" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><item>
		<title />
		<link>http://feedproxy.google.com/~r/DebianHackers/~3/q-nArXjc9fU/2214</link>
		<comments>http://www.debianhackers.net/2214#comments</comments>
		<pubDate>Fri, 17 May 2013 22:03:59 +0000</pubDate>
		<dc:creator>Diego Martínez Castañeda</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.debianhackers.net/?p=2214</guid>
		<description><![CDATA[El fin de semana pasado se celebró en Jaén la ConectaCon y alguien consideró que era buena idea invitar a Dabo. Y allá se fue, hasta la capital jiennense con el encargo de dar una charla, la colección de camisetas &#8230; <a href="http://www.debianhackers.net/2214">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>El fin de semana pasado se celebró en Jaén la <a href="http://www.conectaconjaen.org">ConectaCon</a> y alguien consideró que era buena idea invitar a Dabo. Y allá se fue, hasta la capital jiennense con el encargo de dar una charla, la colección de camisetas frikis y la intención de hacerlo al revés. Ni una diapositiva, ni un vídeo, nada de material audiovisual sobre el que apoyarse, sólo un viejo portátil con poca potencia y un par de gigas de RAM, una conexión a internet y una charla en vivo.</p>
<p>http://4.bp.blogspot.com/-cQhh78XEww8/UZJyNlnnwsI/AAAAAAAACoM/-E0PMsc0rbM/s640/dabo.jpg</p>
<p>Fotografía de Lorenzo Martínez, <a href="http://www.securitybydefault.com/2013/05/mi-experiencia-personal-en-conectacon.html">securitybydefault</a>.</p>
<p>La ponencia se tituló &#8220;<a href="http://conectaconjaen.org/?q=p/36.xhtml">Seguridad y optimización, el camino del guerrero hacia la paz interior del GLAMP</a>&#8221; y, básicamente consistió en poner a prueba (aka putear) cuatro servidores propios para probar que la seguridad previene dolores de cabeza.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DebianHackers?a=q-nArXjc9fU:ida_sBspnts:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DebianHackers?i=q-nArXjc9fU:ida_sBspnts:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=q-nArXjc9fU:ida_sBspnts:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=q-nArXjc9fU:ida_sBspnts:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DebianHackers/~4/q-nArXjc9fU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.debianhackers.net/2214/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.debianhackers.net/2214</feedburner:origLink></item>
		<item>
		<title>Instalar Skype en debian multiarquitectura</title>
		<link>http://feedproxy.google.com/~r/DebianHackers/~3/WeTu082lVQM/instalar-skype-en-debian-multiarquitectura</link>
		<comments>http://www.debianhackers.net/instalar-skype-en-debian-multiarquitectura#comments</comments>
		<pubDate>Tue, 07 May 2013 07:00:25 +0000</pubDate>
		<dc:creator>Diego Martínez Castañeda</dc:creator>
				<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[Debian GNU/Linux]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Instalaciones]]></category>
		<category><![CDATA[Trucos]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[multiarch]]></category>
		<category><![CDATA[multiarquitectura]]></category>
		<category><![CDATA[Skype]]></category>

		<guid isPermaLink="false">http://www.debianhackers.net/?p=2200</guid>
		<description><![CDATA[Si, lo sé, los títulos empiezan a rayar lo imposible pero prometo estarme tranquilo una temporada. Una de las partes, a mi juicio, más interesantes del anuncio de la liberación de Debian GNU/Linux 7, «wheezy», es la inclusión oficial de &#8230; <a href="http://www.debianhackers.net/instalar-skype-en-debian-multiarquitectura">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.debianhackers.net/wp-content/uploads/2011/05/Skype.png"><img src="http://www.debianhackers.net/wp-content/uploads/2011/05/Skype-150x150.png" alt="Skype" width="150" height="150" class="alignleft size-thumbnail wp-image-1015" /></a></p>
<p>Si, lo sé, los títulos empiezan a rayar lo imposible pero prometo estarme tranquilo una temporada.</p>
<p>Una de las partes, a mi juicio, más interesantes del anuncio de <a href="http://www.debianhackers.net/debian-7-0-wheezy-ya-esta-con-nosotros" title="Debian 7.0 “Wheezy” ya está con nosotros -;)" target="_blank">la liberación de Debian GNU/Linux 7</a>, «wheezy», es la inclusión oficial de la multiarquitectura. La posibilidad de instalar un software hecho a medida para una determinada arquitectura en otra y sin que esto suponga un quebradero de cabeza (como venía siendo últimamente), es un avance enorme. Hace algún tiempo publiqué una entrada dedicada a este tema, <a href="http://www.debianhackers.net/entendiendo-la-multiarquitectura-en-debian-gnulinux-con-citrix" title="Entendiendo la multiarquitectura en Debian GNU/Linux con Citrix" target="_blank">Entendiendo la multiarquitectura en Debian GNU/Linux con Citrix</a> y ya en la primera línea dejaba claro que el cliente ICA es para un entorno corporativo y que la verdadera prueba de fuego sería Skype. Bien, pues ha llegado el día de las pruebas.</p>
<p>Han coincidido varios factores. Por un lado, la última actualización ya estaba pidiendo la desinstalación de la librería <code>ia32-libs</code>; hace dos días se liberó wheezy con este tema presente en todas las notas, avisos y comentarios; y, además, hoy estoy de ese humor en que el cuerpo te pide riesgos.</p>
<p>Pero volvamos al tema. Lo primero de todo es hacer una pequeña actualización y limpieza del sistema antes de empezar:</p>
<p><code>diego@denox:~$ sudo aptitude update<br />
diego@denox:~$ sudo aptitude full-upgrade</code></p>
<p>Probablemente, desinstalará varios paquetes, entre ellos la mencionada <code>ia32-libs</code> y todas sus dependencias. Nada de lágrimas, eso es lo que perseguimos. A continuación, añadimos la segunda arquitectura a <code>dpkg</code>, en mi caso, <code>i386</code>:</p>
<p><code>diego@denox:~$ sudo dpkg --add-architecture i386</code></p>
<p>El resto es sencillo. Podría usar <code>dpkg</code> para comprobar las dependencias pero ya he dicho que hoy estoy guerrero, así que instalo directamente skype (<a href="http://www.skype.com/go/getskype-linux-deb-32" title="skype for debian" target="_blank">bajado de la web oficial</a>):</p>
<p><code><br />
diego@denox:~$ sudo dpkg -i skype-debian_4.1.0.20-1_i386.deb<br />
Seleccionando el paquete skype previamente no seleccionado.<br />
(Leyendo la base de datos ... 126982 ficheros o directorios instalados actualmente.)<br />
Desempaquetando skype (de skype-debian_4.1.0.20-1_i386.deb) ...<br />
dpkg: problemas de dependencias impiden la configuración de skype:<br />
 skype depende de libqtwebkit4 (>= 2.1.0~2011week13).</p>
<p>dpkg: error al procesar skype (--install):<br />
 problemas de dependencias - se deja sin configurar<br />
Procesando disparadores para mime-support ...<br />
Procesando disparadores para gnome-menus ...<br />
Procesando disparadores para desktop-file-utils ...<br />
Se encontraron errores al procesar:<br />
 skype<br />
</code></p>
<p>Nos comenta que depende de <code>libqtwebkit4</code> y, al tratar de instalar dicha librería sin indicar la arquitectura, nos corrije:<br />
<code><br />
diego@denox:~$ sudo aptitude install libqtwebkit4<br />
Se configurarán los siguientes paquetes que están ahora parcialmente instalados:<br />
  skype:i386{b}<br />
No se instalará, actualizará o eliminará ningún paquete.<br />
0 paquetes actualizados, 0 nuevos instalados, 0 para eliminar y 0 sin actualizar.<br />
Necesito descargar 0 B de ficheros. Después de desempaquetar se usarán 0 B.<br />
No se satisfacen las dependencias de los siguientes paquetes:<br />
 skype:i386 : Depende: libqtwebkit4:i386 (>= 2.1.0~2011week13) pero no será instalado.<br />
Las acciones siguientes resolverán estas dependencias</p>
<p>     Eliminar los paquetes siguientes:<br />
1)     skype:i386                     </p>
<p>¿Acepta esta solución? [Y/n/q/?]</code></p>
<p>Hace incapié varias veces en que tanto skype como la librería de la que depende están disponibles para la arquitectura <code>i386</code>, únicamente. Así pues, sólo tenemos que complacer al <code>dpkg</code>, indicándole la arquitectura deseada:</p>
<p><code>diego@denox:~$ sudo aptitude install libqtwebkit4:i386<br />
Se instalarán los siguiente paquetes NUEVOS:<br />
  libgstreamer-plugins-base0.10-0:i386{a} libgstreamer0.10-0:i386{a} liborc-0.4-0:i386{a} libqtwebkit4:i386<br />
Se configurarán los siguientes paquetes que están ahora parcialmente instalados:<br />
  skype:i386<br />
0 paquetes actualizados, 4 nuevos instalados, 0 para eliminar y 0 sin actualizar.<br />
Necesito descargar 8.876 kB de ficheros. Después de desempaquetar se usarán 32,5 MB.<br />
¿Quiere continuar? [Y/n/?]</code></p>
<p>Y pensar que tenía cierto reparo y hasta miedo&#8230; </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DebianHackers?a=WeTu082lVQM:DonZ3xoCMl0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DebianHackers?i=WeTu082lVQM:DonZ3xoCMl0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=WeTu082lVQM:DonZ3xoCMl0:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=WeTu082lVQM:DonZ3xoCMl0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=WeTu082lVQM:DonZ3xoCMl0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DebianHackers/~4/WeTu082lVQM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.debianhackers.net/instalar-skype-en-debian-multiarquitectura/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.debianhackers.net/instalar-skype-en-debian-multiarquitectura</feedburner:origLink></item>
		<item>
		<title>Debian 7.0 “Wheezy” ya está con nosotros -;)</title>
		<link>http://feedproxy.google.com/~r/DebianHackers/~3/pd_lvNaE3PU/debian-7-0-wheezy-ya-esta-con-nosotros</link>
		<comments>http://www.debianhackers.net/debian-7-0-wheezy-ya-esta-con-nosotros#comments</comments>
		<pubDate>Sun, 05 May 2013 11:00:29 +0000</pubDate>
		<dc:creator>dabo</dc:creator>
				<category><![CDATA[Actualizaciones]]></category>
		<category><![CDATA[Debian GNU/Linux]]></category>
		<category><![CDATA[Debian Stable]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Debian 7]]></category>
		<category><![CDATA[Debian Wheezy]]></category>

		<guid isPermaLink="false">http://www.debianhackers.net/?p=2192</guid>
		<description><![CDATA[Y nosotros con ellos, con vosotros&#8230; Después de un largo tiempo de desarrollo, la versión 7 de Debian ya es una realidad. Tal y como leemos en el anuncio de la release: 12800 paquetes nuevos, para un total de más &#8230; <a href="http://www.debianhackers.net/debian-7-0-wheezy-ya-esta-con-nosotros">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Y nosotros con ellos, con vosotros&#8230; Después de un largo tiempo de desarrollo,<strong> la versión 7 de Debian</strong> ya es una realidad. Tal y como leemos en el <strong><a title="Acceso" href="http://www.debian.org/News/2013/20130504">anuncio de la release</a></strong>:</p>
<blockquote>
<p style="text-align: justify;"><strong>12800 paquetes nuevos</strong>, para un total de más de 37493 paquetes, GNOME 3.4, KDE 4.8.4, Xfce 4.8, y LXDE&#8221;.</p>
<p style="text-align: justify;">Esta nueva versión de Debian incluye varias funcionalidades interesantes, como, por ejemplo, el <a href="http://www.debian.org/News/2011/20110726b">soporte multiarquitectura</a>, varias <a href="http://www.debian.org/News/2012/20120425">herramientas específicas para desplegar infraestructura de nube privada</a>, un instalador mejorado, y un completo conjunto de <strong>códecs</strong> y reproductores multimedia que eliminan la necesidad de utilizar repositorios de terceros.</p>
<p style="text-align: justify;">El soporte <strong>multiarquitectura</strong>, uno de los principales objetivos para <q>Wheezy</q>, permitirá a los usuarios de Debian instalar paquetes para múltiples arquitecturas en la misma máquina. Esto significa que ya es posible, por primera vez, <strong>instalar software para 32 bits y 64 bits en el mismo sistema</strong> y tener todas las dependencias relevantes resueltas automáticamente.</p>
<p>El proceso de instalación se ha mejorado mucho: ahora <strong>se puede instalar Debian usando software de síntesis de voz</strong>, por ejemplo para personas con discapacidad visual que no usan un dispositivo Braille. Gracias al esfuerzo combinado de un gran número de traductores el sistema de instalación está disponible en <strong>73 idiomas</strong>, y en más de una docena de ellos también se pueden utilizar con el software de síntesis de voz.</p>
<p>Además, por primera vez, Debian soporta la i<strong>nstalación y arranque usando UEFI para PCs</strong> nuevos de 64 bits (<code>amd64</code>), aunque aún no hay soporte para <q>arranque seguro</q></p></blockquote>
<p style="text-align: justify;">Por cierto, ojo al <strong>cambio con los ficheros temporales:</strong></p>
<blockquote>
<p style="text-align: justify;">En publicaciones anteriores, se montaban sistemas de ficheros temporales (<code>tmpfs</code>) en <code>/lib/init/rw</code>, <code>/dev/shm/</code> y opcionalmente en <code>/var/lock</code> y <code>/var/run</code>. Se ha eliminado <code>/lib/init/rw</code>, y los otros sistemas de ficheros se han movido bajo <code>/run</code>. <code>/var/run</code> y <code>/var/lock</code> según la configuración de <code>RAMRUN</code> y <code>RAMLOCK</code> en <code>/etc/default/rcS</code>. Todos estos sistemas de ficheros <code>tmpfs</code> son configurables ahora a través de <code>/etc/default/tmpfs</code>; la configuración anterior no se migra de forma automática.</p>
</blockquote>
<p style="text-align: justify;">Como veis, el esfuerzo ha sido grande y es fruto del trabajo de <strong>una comunidad orgullosa de colaborar con Debian, activa y generosa</strong>. Para los que en nuestro día a día estamos con versiones de desarrollo (Testing o Sid), quizás en nuestros escritorios no veamos estos cambios de una forma tan plausible, pero en los servidores el cambio no es menor.</p>
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-2170" alt="Debian 7 Wheezy" src="http://www.debianhackers.net/wp-content/uploads/2013/04/debian-wheezy-300x230.jpg" width="300" height="230" /></p>
<p style="text-align: justify;">Sólo hay que ver la lista de paquetes nuevos para darse cuenta.<a title="Acceso" href="http://www.debian.org/releases/wheezy/amd64/"> La guía de instalación</a> es muy completa y en este caso, <strong>el proceso de actualización de Debian 6 a 7</strong>, es un poco más delicado que cuando migramos de Lenny a Squeeze, pero a falta de ponerme a migrar alguno en producción, <a title="Acceso" href="http://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.es.html">las instrucciones para hacerlo son claras</a> y ahí se citan posibles problemas más de escritorio que de servers, pero si te puedes fiar de alguien a la hora de actualizar un servidor, pon a Debian muy arriba en la lista ;-;).</p>
<p style="text-align: justify;">Eso sí, no olvides que el fin de soporte para Debian 6 es en julio, aunque como pasó con otras releases, entraron actualizaciones de seguridad pasado el plazo. <a title="Acceso" href="http://en.wikipedia.org/wiki/Debian">Fuente e imagen</a>.</p>
<p style="text-align: justify;">Para los <strong>SysAdmins, nuevas versiones en Debian 7</strong>. <em>Apache 2.2.22, BIND 9.8, lighttpd 1.4.31, MySQL 5.5, PHP 5.4, OpenSSH 6.0, PostgreSQL 9.1, Python 2.7 / 3.2</em>.</p>
<p style="text-align: justify;"><img class="alignnone" alt="fin de soporte Debian 6 Squeeze y ciclo de vida de Debian 7" src="http://upload.wikimedia.org/wikipedia/en/timeline/9a632af61cf2dee6c06f79b43110bcd2.png" width="600" /></p>
<p style="text-align: justify;">Así que&#8230;<strong>Bienvenido Wheezy</strong> y gracias Debian por hacerlo posible !!!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DebianHackers?a=pd_lvNaE3PU:jjouEpUkE5s:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DebianHackers?i=pd_lvNaE3PU:jjouEpUkE5s:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=pd_lvNaE3PU:jjouEpUkE5s:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=pd_lvNaE3PU:jjouEpUkE5s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=pd_lvNaE3PU:jjouEpUkE5s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DebianHackers/~4/pd_lvNaE3PU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.debianhackers.net/debian-7-0-wheezy-ya-esta-con-nosotros/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://www.debianhackers.net/debian-7-0-wheezy-ya-esta-con-nosotros</feedburner:origLink></item>
		<item>
		<title>Creando clases y objetos flexibles de forma dinámica con eval y ArrayObject en PHP</title>
		<link>http://feedproxy.google.com/~r/DebianHackers/~3/dZeKUFPw1sE/creando-clases-y-objetos-flexibles-de-forma-dinamica-con-eval-y-arrayobject-en-php</link>
		<comments>http://www.debianhackers.net/creando-clases-y-objetos-flexibles-de-forma-dinamica-con-eval-y-arrayobject-en-php#comments</comments>
		<pubDate>Wed, 01 May 2013 20:57:17 +0000</pubDate>
		<dc:creator>eugeniabahit</dc:creator>
				<category><![CDATA[Académico]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Trucos]]></category>
		<category><![CDATA[ArrayObject]]></category>
		<category><![CDATA[clases al vuelo]]></category>
		<category><![CDATA[clases anónimas]]></category>
		<category><![CDATA[clases on the fly]]></category>
		<category><![CDATA[hacks php]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[snippets]]></category>

		<guid isPermaLink="false">http://www.debianhackers.net/?p=2179</guid>
		<description><![CDATA[Debo reconocer que hasta ahora no me había pasado tener la necesidad inevitable y &#8220;real&#8221; de crear clases &#8220;on the fly&#8221; (clases al vuelo) hasta que el objeto colector de Europio Engine me enfrentó a ello. Les explico el problema &#8230; <a href="http://www.debianhackers.net/creando-clases-y-objetos-flexibles-de-forma-dinamica-con-eval-y-arrayobject-en-php">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Debo reconocer que hasta ahora no me había pasado tener la necesidad inevitable y &#8220;real&#8221; de crear clases &#8220;on the fly&#8221; (clases al vuelo) hasta que el objeto colector de <a title="Europio Engine: motor PHP para aplicaciones MVC" href="http://www.europio.org" target="_blank">Europio Engine</a> me enfrentó a ello.</p>
<p>Les explico el problema para que puedan entender cuál fue la motivación para crear este tipo de clases:<br />
<strong><a title="Europio Engine: motor PHP para aplicaciones MVC" href="http://www.europio.org" target="_blank">Europio Engine</a></strong>, cuenta con objetos genéricos necesarios en cualquier aplicación. Entre ellos, <code>CollectorObject</code>: un objeto colector.</p>
<p>Como explico en el capítulo XVII de <a href="http://www.bubok.es/libros/219288/Teoria-sintacticogramatical-de-objetos" target="_blank">mi libro sobre Teoría de Objetos</a>, el objeto colector para un tipo dado, debe ser un Singleton, es decir un objeto de instancia única, pues solo podrá existir una -y solo una- colección para un mismo objeto.</p>
<p>En <a title="Europio Engine: motor PHP para aplicaciones MVC" href="http://www.europio.org" target="_blank">Europio Engine</a> <code>CollectorObject</code> es un colector genérico. Llamando a <code>CollectorObject::get('NombreDelObjeto')</code> se puede obtener toda la colección de objetos <code>NombreDelObjeto</code> persistentes en el sistema a través de <code>CollectorObject::$collection</code>.</p>
<p>Sin embargo, al ser un objeto de instancia única, si la colección no era recuperada ANTES de solicitar una nueva colección, la última llamada sobrescribía a la primera.</p>
<p>Es entonces que no solo a nivel práctico se hacía necesario poder crear &#8220;on the fly&#8221; un <code>NombreDelObjeto<strong>Collection</strong></code> sino además, ¡a nivel conceptual! Pues un colector genérico, no puede ser de instancia única. Pero, si dejaba de ser de instancia única, dejaba de ser un colector. Así nació la necesidad de crear una clase al vuelo y después de mucho investigar, descubrí que la única forma de hacerlo &#8220;sin rodeos ni códigos raros&#8221;, era utilizando <code><a href="http://www.php.net/manual/en/function.eval.php" target="_blank">eval()</a></code>.</p>
<p><span id="more-2179"></span></p>
<p>Con una simple línea como esta que sigue, quedaba todo resuelto:</p>
<pre># ...

$nombre_del_objeto = "Producto";
$nombre_de_la_nueva_clase = "{$nombre_del_objeto}Collection";
eval("class $nombre_de_la_nueva_clase extends CollectorObject {};");

# ...</pre>
<p>Lo anterior, creará al vuelo la clase <code>ProductoCollection</code> produciendo el siguiente código:</p>
<pre>class ProductoCollection extends CollectorObject { }</pre>
<p>Que al heredar de <code>CollectorObject</code> generaría un Singleton Colector sin más rodeos. Y a raíz de esto, comencé a pensar en la Standard PHP Library (SPL) y su tan discutido <code>ArrayObject</code>.</p>
<p>Para quiénes no estén del todo al tanto, <code>ArrayObject</code> es una clase de PHP que permite tratar a un array como si fuese un objeto (sé que es discutible pero no viene al caso ya que solo se trata de experimentar). Para que se entienda mejor, lo mostraré directamente con el código:</p>
<pre><strong># Ejemplo Nº1: iniciar un array-objeto vacío</strong>
$persona = new ArrayObject(array(), 2);  # array-objeto inicializado
$persona-&gt;nombre = "Eugenia";  # Agrego la "propiedad" nombre al array-objeto 
$persona-&gt;apellido = "Bahit";
$persona-&gt;edad = 34;
print_r($persona);</pre>
<p>Lo anterior producirá:</p>
<pre>ArrayObject Object
(
    [storage:ArrayObject:private] =&gt; Array
        (
            [nombre] =&gt; Eugenia
            [apellido] =&gt; Bahit
            [edad] =&gt; 34
        )

)</pre>
<p>Otro ejemplo, pero esta vez, creando un objeto desde un array asociativo:</p>
<pre><strong># Ejemplo Nº2: iniciar un array-objeto partiendo de un aray asociativo existente</strong>
$datos = array(
    "nombre" =&gt; "Eugenia",
    "apellido" =&gt; "Bahit",
    "edad" =&gt; 34
);
$persona = new ArrayObject($datos, 2);
print $persona-&gt;nombre;  # Salida: Eugenia</pre>
<p>Como pueden ver, la clase <code>ArrayObject</code> no es para nada compleja de entender e incorporándola a <code>eval()</code>, me podría dar la posibilidad de <strong>crear clases al vuelo y prácticamente anónimas, produciendo objetos de diversos tipos</strong>. ¿Cómo? Creando una simple clase &#8220;estática&#8221; que se encargue de todo:</p>
<pre>class Object {

    public static function set($clsName, $array=array()) {
        if(!class_exists($clsName)) {
            eval("
                class $clsName extends ArrayObject {
                    public function __construct(\$array=array()) {
                        parent::__construct(\$array, 2);
                    }
                }
            ;");
        }
        return new $clsName($array);
    }
}</pre>
<p>De esta forma, crear una clase al vuelo, podría hacerse de dos formas:</p>
<pre><strong># Omitiendo crear la instancia al nuevo (y por qué no, anónimo) objeto</strong>

$persona = Object::get('Persona');
# Un objeto Persona ya se encuentra disponible
print_r($persona);
<em>/*
Persona Object
(
    [storage:ArrayObject:private] =&gt; Array
        (
        )

)
*/</em>

<strong># Creando la instancia al nuevo objeto para que la cosa no parezca tan anónima</strong>

Object::set('Persona');  # Creo la clase al vuelo
$persona = new Persona();  # Creo una instancia del nuevo objeto Persona que antes no existía
print_r($persona);
<em>/*
Persona Object
(
    [storage:ArrayObject:private] =&gt; Array
        (
        )

)
*/</em></pre>
<p>Y por supuesto, vale aclarar que en cualquiera de los dos casos, tanto la llamada a <code>Object::set('ClassName');</code> como la instancia al nuevo objeto <code>$obj = new ClassName();</code> podrán recibir como parámetro, un array asociativo que emule las propiedades del nuevo objeto.</p>
<p>¡Espero que disfruten del experimento!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DebianHackers?a=dZeKUFPw1sE:KPSGBcoek8Q:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DebianHackers?i=dZeKUFPw1sE:KPSGBcoek8Q:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=dZeKUFPw1sE:KPSGBcoek8Q:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=dZeKUFPw1sE:KPSGBcoek8Q:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=dZeKUFPw1sE:KPSGBcoek8Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DebianHackers/~4/dZeKUFPw1sE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.debianhackers.net/creando-clases-y-objetos-flexibles-de-forma-dinamica-con-eval-y-arrayobject-en-php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.debianhackers.net/creando-clases-y-objetos-flexibles-de-forma-dinamica-con-eval-y-arrayobject-en-php</feedburner:origLink></item>
		<item>
		<title>05-05-2013. Debian Wheezy is Coming!!!</title>
		<link>http://feedproxy.google.com/~r/DebianHackers/~3/P3daVBo2ZwA/05-05-2013-debian-whezzy-is-comming</link>
		<comments>http://www.debianhackers.net/05-05-2013-debian-whezzy-is-comming#comments</comments>
		<pubDate>Thu, 25 Apr 2013 08:13:55 +0000</pubDate>
		<dc:creator>dabo</dc:creator>
				<category><![CDATA[Debian GNU/Linux]]></category>
		<category><![CDATA[Debian Stable]]></category>
		<category><![CDATA[Debian 7]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[wheezy]]></category>

		<guid isPermaLink="false">http://www.debianhackers.net/?p=2169</guid>
		<description><![CDATA[Los que usamos Testing o Sid ya hemos visto lo que nos trae Debian 7, pero no es un lanzamiento menor. Debian Whezzy estará disponible el 5 mayo, únete a la fiesta -;)]]></description>
				<content:encoded><![CDATA[<p>Los que usamos Testing o Sid ya hemos visto lo que nos trae Debian 7, pero no es un lanzamiento menor. <strong>Debian Whezzy</strong> <a title="Acceso" href="http://bits.debian.org/2013/04/release-date.html">estará disponible </a>el <strong>5 mayo</strong>, <a title="Acceso" href="http://wiki.debian.org/ReleasePartyWheezy">únete a la fiesta</a> -;)</p>
<p><img class="aligncenter size-full wp-image-2170" alt="Debian 7 Wheezy" src="http://www.debianhackers.net/wp-content/uploads/2013/04/debian-wheezy.jpg" width="624" height="480" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DebianHackers?a=P3daVBo2ZwA:mXnb9CWsnAY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DebianHackers?i=P3daVBo2ZwA:mXnb9CWsnAY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=P3daVBo2ZwA:mXnb9CWsnAY:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=P3daVBo2ZwA:mXnb9CWsnAY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=P3daVBo2ZwA:mXnb9CWsnAY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DebianHackers/~4/P3daVBo2ZwA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.debianhackers.net/05-05-2013-debian-whezzy-is-comming/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.debianhackers.net/05-05-2013-debian-whezzy-is-comming</feedburner:origLink></item>
		<item>
		<title>Hackers and Developers nº6. Descarga disponible | Por @HackDevMagazine</title>
		<link>http://feedproxy.google.com/~r/DebianHackers/~3/ltcaDkteync/hackers-and-developers-no6-descarga-disponible-por-hackdevmagazine</link>
		<comments>http://www.debianhackers.net/hackers-and-developers-no6-descarga-disponible-por-hackdevmagazine#comments</comments>
		<pubDate>Wed, 24 Apr 2013 14:56:47 +0000</pubDate>
		<dc:creator>dabo</dc:creator>
				<category><![CDATA[Académico]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[hackers & developers]]></category>
		<category><![CDATA[magazine]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[revista]]></category>

		<guid isPermaLink="false">http://www.debianhackers.net/?p=2161</guid>
		<description><![CDATA[Una vez más y fieles a la cita mensual, tenemos una nueva entrega de &#8220;Hackers And Developers&#8221; con un interesante índice de contenidos. ¿La has descargado ya? En esta edición: Distribuyendo tus aplicaciones Python en PyPI Manual de Perl (Parte &#8230; <a href="http://www.debianhackers.net/hackers-and-developers-no6-descarga-disponible-por-hackdevmagazine">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Una vez más y fieles a la cita mensual, tenemos una <strong>nueva entrega de &#8220;Hackers And Developers&#8221;</strong> con un interesante índice de contenidos. ¿La has descargado ya?</p>
<p><a href="http://www.debianhackers.net/wp-content/uploads/2013/04/hackers-developers-6.png"><img class="aligncenter size-full wp-image-2162" alt="Hackers and developers nº 6" src="http://www.debianhackers.net/wp-content/uploads/2013/04/hackers-developers-6.png" width="964" height="174" /></a></p>
<p><strong>En esta edición:</strong></p>
<blockquote><p>Distribuyendo tus aplicaciones Python en PyPI<br />
Manual de Perl (Parte IV)<br />
Equipos Ágiles: Parte II<br />
Permiso denegado<br />
Pásate a GNU/Linux con ArchLinux: NGiNX+PHP+MariaDB<br />
Refactoring: otra práctica de la Programación eXtrema<br />
Configurando GitWeb en Ubuntu Server<br />
Draw.io: diagramas para tus proyectos<br />
Automatizando tus aplicaciones con Cron<br />
ASCII Art<br />
Zona U!</p></blockquote>
<p><a title="Descarga" href="http://www.hdmagazine.org/?magazine=HackersAndDevelopers&amp;num=6">Descarga</a> | <a title="Acceso" href="http://www.hdmagazine.org/">Otras entregas anteriores</a></p>
<p style="text-align: justify;">Como siempre, todo un orgullo para nosotros tener a nuestra <a title="Acceso" href="https://twitter.com/eugeniabahit">Eugenia</a> en un proyecto con tanto peso y enhorabuena al resto del team -;). No es fácil mantener un proyecto así y <strong>puedes ayudar</strong> a que se siga publicando a través de una <a title="Acceso" href="http://www.hdmagazine.org/donar">donación</a>.</p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DebianHackers?a=ltcaDkteync:dlqqxRkM1dU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DebianHackers?i=ltcaDkteync:dlqqxRkM1dU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=ltcaDkteync:dlqqxRkM1dU:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=ltcaDkteync:dlqqxRkM1dU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=ltcaDkteync:dlqqxRkM1dU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DebianHackers/~4/ltcaDkteync" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.debianhackers.net/hackers-and-developers-no6-descarga-disponible-por-hackdevmagazine/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.debianhackers.net/hackers-and-developers-no6-descarga-disponible-por-hackdevmagazine</feedburner:origLink></item>
		<item>
		<title>#FLISOL 2013 (Festival Latinoamericano de Instalación de Software Libre)</title>
		<link>http://feedproxy.google.com/~r/DebianHackers/~3/t9ShsVSAFaI/flisol-2013-festival-latinoamericano-de-instalacion-de-software-libre</link>
		<comments>http://www.debianhackers.net/flisol-2013-festival-latinoamericano-de-instalacion-de-software-libre#comments</comments>
		<pubDate>Thu, 11 Apr 2013 11:08:26 +0000</pubDate>
		<dc:creator>dabo</dc:creator>
				<category><![CDATA[Instalaciones]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[Sofware Libre]]></category>
		<category><![CDATA[Debian GNU/Linux]]></category>
		<category><![CDATA[FLISOL]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[instalacion]]></category>
		<category><![CDATA[software libre]]></category>

		<guid isPermaLink="false">http://www.debianhackers.net/?p=2151</guid>
		<description><![CDATA[Vaya desde DebianHackers todos nuestro apoyo a una iniciativa tan interesante para acercar el mundo del Software Libre desde el FLISOL. Un evento que este año se realiza el último sábado de abril (recordad, próximo día 27) en más de &#8230; <a href="http://www.debianhackers.net/flisol-2013-festival-latinoamericano-de-instalacion-de-software-libre">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.debianhackers.net/wp-content/uploads/2013/04/FLISOL.png"><img class="size-full wp-image-2153 alignleft" alt="FLISOL 2013" src="http://www.debianhackers.net/wp-content/uploads/2013/04/FLISOL.png" width="150" height="146" /></a>Vaya <strong>desde DebianHackers todos nuestro</strong> apoyo a una iniciativa tan interesante para acercar el mundo del Software Libre desde el <a title="Acceso" href="http://installfest.info/FLISOL2013">FLISOL</a>. Un evento que este año se realiza el último sábado de abril (recordad, <strong>próximo día 27</strong>) en más de 200 localidades de todo el mundo.</p>
<p style="text-align: justify;">Cabe destacar que<strong> Debian GNU/Linux tiene un gran protagonismo</strong> ya que como podemos leer en <a title="Acceso" href="http://installfest.info/FLISOL2013/Espana/Oviedo?highlight=%28\bCategoryCity\b%29">la web del proyecto</a> (en mi caso, tengo muy cerca Oviedo y si puedo, intentaré acudir al evento):</p>
<blockquote>
<p style="text-align: justify;">El <strong>IV FLISOL Oviedo (Asturias)</strong> tendrá lugar el sábado 27 de abril de 2013 en el <a href="http://20alolivar.org">El Olivar, C/ Oscura, 1/3 (Oviedo)</a> y consistirá en unas <strong>jornadas de iniciación a la informática con software libre</strong>, destinada a personas con pocos conocimientos sobre el tema. No se tratarán aspectos técnicos o avanzados.</p>
<p style="text-align: justify;">La actividad consistirá en una charla-debate de introducción al software libre, seguido de una “toma de contacto” de los participantes con el uso de sistemas GNU y la posibilidad de instalarlo a quien se lleve su ordenador a las jornadas y quiera. Posteriormente al día del evento, habrá otros días de encuentro con los asistentes para tratar de resolver dudas y preguntas que puedan surgir.</p>
<p style="text-align: justify;">Tráete tu ordenador y si quieres,<strong> llévate un sistema 100% libre en él instalado</strong> (<a href="http://exegnulinux.net/es">Exe GNU/Linux</a> / <a href="http://debian.org/">Debian GNU/Linux</a>).</p>
</blockquote>
<p style="text-align: justify;">Si puedo, como os he dicho me pasaré por allí el día 27 y de cualquier modo, <strong>os animamos a acudir quienes podáis, o haceros eco</strong> de la iniciativa. Mucha suerte !!!</p>
<p>Aprovecho la ocasión para dar las <strong>gracias al amigo</strong> <a title="Acceso" href="http://houseofsysadmins.ning.com/profile/JulianBrazuelo">Julián Brazuelo</a> por el aviso -;).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DebianHackers?a=t9ShsVSAFaI:jHx2ZiaoXE4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DebianHackers?i=t9ShsVSAFaI:jHx2ZiaoXE4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=t9ShsVSAFaI:jHx2ZiaoXE4:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=t9ShsVSAFaI:jHx2ZiaoXE4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=t9ShsVSAFaI:jHx2ZiaoXE4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DebianHackers/~4/t9ShsVSAFaI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.debianhackers.net/flisol-2013-festival-latinoamericano-de-instalacion-de-software-libre/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.debianhackers.net/flisol-2013-festival-latinoamericano-de-instalacion-de-software-libre</feedburner:origLink></item>
		<item>
		<title>C, Perl, Java, Python, Ruby, PHP ¿quién es más veloz?</title>
		<link>http://feedproxy.google.com/~r/DebianHackers/~3/SurmXjqRlAU/c-perl-java-python-php-quien-es-mas-veloz</link>
		<comments>http://www.debianhackers.net/c-perl-java-python-php-quien-es-mas-veloz#comments</comments>
		<pubDate>Sat, 06 Apr 2013 19:03:39 +0000</pubDate>
		<dc:creator>eugeniabahit</dc:creator>
				<category><![CDATA[Académico]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[compilar]]></category>
		<category><![CDATA[fibonacci]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.debianhackers.net/?p=2125</guid>
		<description><![CDATA[Esta mañana estaba algo aburrida y se me ocurrió hacer un experimento: comparar la velocidad a la que se ejecuta un mismo algoritmo en diversos lenguajes de programación. Para ello, hice un pequeño algoritmo que imprime parte de la serie &#8230; <a href="http://www.debianhackers.net/c-perl-java-python-php-quien-es-mas-veloz">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Esta mañana estaba algo aburrida y se me ocurrió hacer un experimento: comparar la velocidad a la que se ejecuta un mismo algoritmo en diversos lenguajes de programación. Para ello, hice un pequeño algoritmo que imprime parte de la serie de Fibonacci, en los siguientes lenguajes:<br />
<span id="more-2125"></span><br />
<strong>En C. Archivo: foo.c</strong></p>
<pre>#include &lt;stdio.h&gt;

foo(int a, int b) {
    if (a + b &gt; 0) printf("%i ", a + b);
    if (a + b &lt; 100000000) foo(b, a + b);
}

main() {
    foo(-1, 1);
    printf("\n");
}</pre>
<p><strong>En Java. Archivo: Foo.java</strong></p>
<pre>public class Foo {

    public static void main(String[] args) {
        Foo f = new Foo();
        f.foo(-1, 1);
        System.out.print("\n");
    }

    public void foo(int a, int b) {
        if (a + b &gt; 0) { System.out.print(a + b + " "); }
        if (a + b &lt; 100000000) { this.foo(b, a + b); }
    }

}</pre>
<p><strong>En Perl. Archivo: foo.pl</strong></p>
<pre>#!/usr/bin/perl

sub foo {
    ($a, $b) = @_;
    if($a + $b &gt; 0) { print $a + $b . " "; }
    if($a + $b &lt; 100000000) { foo($b, $a + $b); }
}

foo(-1, 1);
print "\n";</pre>
<p><strong>En Python. Archivo: foo.py</strong></p>
<pre>#!/usr/bin/python
from sys import stdout


def foo(a, b):
    if a + b > 0:
        stdout.write("%i " % (a + b))
    if a + b < 100000000:
        foo(b, a + b)


foo(-1, 1)
print ""</pre>
<p><strong>En PHP. Archivo: foo.php</strong></p>
<pre>#!/usr/bin/php
&lt;?php

function foo($a, $b) {
    if($a + $b > 0) print $a + $b . " ";
    if($a + $b < 100000000) foo($b, $a + $b);
}

foo(-1, 1);
print chr(10);

?&gt;</pre>
<p><strong>[nuevo] En Ruby. Archivo: foo.rb</strong></p>
<pre>#!/usr/bin/ruby


def foo(a, b)
    if (a + b) > 0
        print a + b , " "
    end
    
    if (a + b) < 100000000
        foo(b, a + b)
    end
end

foo(-1, 1)
puts " "</pre>
<p>Exceptuando los archivos en C y Java que deberán ser compilados (ver más adelante), al resto de los archivos les asigné permisos de ejecución para que sea más cómodo correrlos:</p>
<pre>chmod +x foo.php foo.py foo.pl foo.rb</pre>
<p>Y a continuación, me dediqué primero, a comparar la velocidad de compilación entre Java y C y obtuve estos resultados:</p>
<p><strong>Tiempo de compilación en C:</strong></p>
<pre>time gcc foo.c -o fooc

<b>real	0m1.970s</b>
user	0m0.028s
sys	0m0.048s
</pre>
<p><strong>Tiempo de compilación en Java:</strong></p>
<pre>time javac Foo.java

<b>real	0m3.769s</b>
user	0m0.816s
sys	0m0.100s
</pre>
<p>Se podría decir que la compilación en C, tardó (más o menos) la mitad del tiempo que la compilación en Java.</p>
<p>Finalmente ejecuté cada uno de los micro-programas, dos veces cada uno: la primera, para que se cachearan y la segunda, para comparar la diferencia en la velocidad de ejecución y ésto, fue lo que obtuve:</p>
<p><b>Tiempo de ejecución en C: 0.002 segundos</b></p>
<pre>eugenia@trisquel:~$ time ./fooc
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811 
514229 832040 1346269 2178309 3524578 5702887 9227465 
14930352 24157817 39088169 63245986 102334155 

real	0m0.002s
user	0m0.000s
sys	0m0.000s
</pre>
<p><b>Tiempo de ejecución en Java: 0.143 segundos</b></p>
<pre>eugenia@trisquel:~$ time java Foo
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811 
514229 832040 1346269 2178309 3524578 5702887 9227465 
14930352 24157817 39088169 63245986 102334155 

real	0m0.143s
user	0m0.112s
sys	0m0.028s
</pre>
<p><b>Tiempo de ejecución en Perl: 0.003 segundos</b></p>
<pre>eugenia@trisquel:~$ time ./foo.pl
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811 
514229 832040 1346269 2178309 3524578 5702887 9227465 
14930352 24157817 39088169 63245986 102334155 

real	0m0.003s
user	0m0.000s
sys	0m0.000s
</pre>
<p><b>Tiempo de ejecución en Python: 0.038 segundos</b></p>
<pre>eugenia@trisquel:~$ time ./foo.py
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811 
514229 832040 1346269 2178309 3524578 5702887 9227465 
14930352 24157817 39088169 63245986 102334155 

real	0m0.038s
user	0m0.024s
sys	0m0.012s
</pre>
<p><b>Tiempo de ejecución en PHP: 0.027 segundos</b></p>
<pre>eugenia@trisquel:~$ time ./foo.php
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811 
514229 832040 1346269 2178309 3524578 5702887 9227465 
14930352 24157817 39088169 63245986 102334155 

real	0m0.027s
user	0m0.020s
sys	0m0.004s
</pre>
<p><b>Tiempo de ejecución en Ruby: 0.009 segundos</b></p>
<pre>eugenia@trisquel:~$ time ./foo.rb
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811 
514229 832040 1346269 2178309 3524578 5702887 9227465 
14930352 24157817 39088169 63245986 102334155  

real	0m0.009s
user	0m0.004s
sys	0m0.004s
</pre>
<p>Si se tratara de una carrera de autos <img src='http://www.debianhackers.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  la tabla de posiciones sería como la siguiente:</p>
<pre>================================================
     <b>Turismo Compilación</b>
================================================
Primer puesto:   C
Segundo puesto:  Java

================================================
     <b>Turismo Ejecución</b>
================================================

PUESTO       PILOTO        TIEMPO (en segundos)
------------------------------------------------
1º           C             0.002
2º           Perl          0.003
3º           Ruby          0.009 ¡Nuevo competidor! <img src='http://www.debianhackers.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> 

4º           PHP           0.027
5º           Python        0.038

6º           Java          0.143
</pre>
<p>Es decir que PHP demoró 13.5 veces más que C; Python, 12.6 veces más que Perl y Java... mejor no lo comparo con ninguno <img src='http://www.debianhackers.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DebianHackers?a=SurmXjqRlAU:F9tvIh5zNcI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DebianHackers?i=SurmXjqRlAU:F9tvIh5zNcI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=SurmXjqRlAU:F9tvIh5zNcI:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=SurmXjqRlAU:F9tvIh5zNcI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=SurmXjqRlAU:F9tvIh5zNcI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DebianHackers/~4/SurmXjqRlAU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.debianhackers.net/c-perl-java-python-php-quien-es-mas-veloz/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.debianhackers.net/c-perl-java-python-php-quien-es-mas-veloz</feedburner:origLink></item>
		<item>
		<title>112 años de debianhackers</title>
		<link>http://feedproxy.google.com/~r/DebianHackers/~3/qLXcPoNeIgc/11-anos-de-debianhackers</link>
		<comments>http://www.debianhackers.net/11-anos-de-debianhackers#comments</comments>
		<pubDate>Thu, 21 Mar 2013 11:00:44 +0000</pubDate>
		<dc:creator>Debish</dc:creator>
				<category><![CDATA[debianhackers]]></category>
		<category><![CDATA[Aniversario]]></category>
		<category><![CDATA[celebracion]]></category>
		<category><![CDATA[Dabo]]></category>
		<category><![CDATA[debish]]></category>
		<category><![CDATA[Eugenia Bahit]]></category>
		<category><![CDATA[n1mh]]></category>
		<category><![CDATA[tercer]]></category>

		<guid isPermaLink="false">http://www.debianhackers.net/?p=2087</guid>
		<description><![CDATA[El pasado lunes dieciocho de marzo, debianhackers.net cumplió tres años. Y, como no podía ser menos en un equipo tan bien avenido, nos enteramos tarde, a eso del mediodía y justo después de que debish publicase una entrada que, todavía &#8230; <a href="http://www.debianhackers.net/11-anos-de-debianhackers">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div style="text-align:justify">El pasado lunes dieciocho de marzo, <a href="http://www.debianhackers.net/proximamente" title="Próximamente…" target="_blank">debianhackers.net cumplió tres años</a>. Y, como no podía ser menos en un equipo tan bien avenido, nos enteramos tarde, a eso del mediodía y justo después de que debish publicase una entrada que, todavía hoy, intento descrifrar. Creo que está codificada con criptografía cuántica.</p>
<p>Pero no imporota, porque somos gente de bien, casi profesionales (algunos) y al rato surgió la idea (debish, again <img src='http://www.debianhackers.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ): haríamos una entrada conjunta para celebrar el aniversario porque no todos los días se cumple otra nueva vuelta alrededor del sol. Así, imbuídos por el espirítu de algún escritor de fichero <a href="http://www.debianhackers.net/la-fabula-de-la-impresora" title="la fábula de la impresora" target="_blank">README</a>, nos pusimos a aporrear los teclados con furia. Y sólo tardamos tres días en cerrarlo. El resultado, a continuación.<br />
n1mh.</div>
<h1>Debish</h1>
<div style="text-align:justify">Hace no tanto recibí <a href="http://www.debianeando.net/debian-hackers/"><strong>aquel estrambótico mail</strong></a> de Dabo hablando de ninjas, katanas y el copón hecho haiku. Una forma más que original de invitarme a participar en el tinglado este que aún gobierna la katana de Forat. Como no podía ser de otra manera, <a href="http://www.debianhackers.net/bienvenido-debish-a-debianhackers-otra-incorporacion-mas"><strong>acepté encantado</strong></a>, y ya llevo por aquí un año dando guerra, a sumar a los otros dos de Diego y Dabo al frente a mi llegada.</p>
<p>En total tres añazos on-line, 24/7 y sin interrupciones. Tres añazos de mucho y de poco, de momentos buenos y momentos mejores. Tres años escribiendo lo que queremos, cuando queremos y como queremos. Tres años trabajando para vosotros, que a fin de cuentas sois el motor de todo esto. Tres años de homenaje a <a href="http://debian.org"><strong>Debian</strong></a> y a su comunidad de desarrolladores y usuarios.</p>
<p style="text-align: justify;">¿Que por qué a Debian? Por su elegancia, por su buen hacer, por su versatilidad, por la estructura y contenido de sus repositorios, por <a href="http://www.muylinux.com/wp-content/uploads/2012/10/huevo-pascua-aptitude.png"><strong>aptitude</strong></a> y, por supuesto, por su <a href="http://www.debian.org/social_contract.es.html"><strong>contrato social</strong></a>. Por lo mucho que ofrece y lo poco que pide a cambio.</p>
<p>¿Y ahora? Pues más de lo mismo: pulsos, ideas, locuras, aventuras y desventuras, lo que salga. La guía seguirá siendo nuestra pasión por Debian y el software libre. Y que lo sea por muchos años.</p></div>
<h1>n1mh</h1>
<div style="text-align:justify">Más de mil días. Ese es el tiempo que ha pasado desde que nos decidiéramos a poner nuestras tonterías y paranoias sobre <a href="http://debian.org" title="debian" target="_blank">Debian</a>, <a href="http://kernel.org" title="linux" target="_blank">Linux</a> y demás hierbas en otro blog, en un lugar que nos permitiese separar nuestras vivencias del día a día de nuestra pasión. Tengo que admitir que yo lo hice por mi madre, porque ya estaba empezando a decirme que escribía demasiadas cosas técnicas en mi <a href="http://n1mh.org" title="n1mh.org" target="_blank">blog</a> y hay cosas que no se discuten.</p>
<p>Al menos, esa era la idea de partida, tener un sitio tranquilo, coqueto, donde establecer una conversación enriquecedora con gente de gustos afines y, sobre todo, donde aprender. Porque ese es el camino que hemos elegido, mucho tiempo atrás: compartir para aprender. Y desde el primer momento, esta página web se planteó como un diálogo con la que consideramos una gran comunidad de adeptos, practicantes y, en muchos casos, amigos.</p>
<p>¿Cómo seguirá esta historia? Como hasta ahora, supongo, con cada uno de los cuatro jinetes de este particular apocalipsis volcando sus ideas sin un calendario fijo, sin una temática estipulada (salvo el hilo conductor del software libre) y con menos vergüenza de la deseada. Porque, seamos francos, un poco más de seriedad no vendría mal&#8230; pero ya no sería debianhackers. Además de la katana de <a title="forat" href="http://forat.info" target="_blank">Forat</a> con la que Dabo hace <a title="Feliz SysAdminDay Debianitas -;)" href="http://www.debianhackers.net/feliz-sysadminday-debianitas">prácticas de ninja</a> mientra ojea «El arte de la guerra», la anarquía es una de nuestras señas de identidad. Sino, no se explica que una de las entradas más visitadas y, sin duda, la más comentada, sea una en la que Eugenia nos invita a <a title="Hackea tu imaginación: retira dinero de PayPal desde Argentina y Latam… con todos los lujos" href="http://www.debianhackers.net/hackea-tu-imaginacion-retira-dinero-de-paypal-desde-argentina-y-latam-con-todos-los-lujos">hackear la imaginación</a>. O que debish haya cruzado la delgada línea del abstracto y me noquee (al menos a mí) con una explicación sobre <a title="Big-O-notation: evalúa el rendimiento de tus algoritmos" href="http://www.debianhackers.net/big-o-notation-evalua-el-rendimiento-de-tus-algoritmos">cómo evaluar algoritmos</a>.</p>
<p>Y como prueba de nuestras señas de identidad, fijémonos en esta entrada de conmemoración: publicada unos días después del verdadero aniversario porque no nos dimos cuenta de la fecha. Anarquía pura.</p></div>
<h1>Dabo</h1>
<div style="text-align:justify">Pues sí&#8230; son 3 (años) ya con otros (3) grandes compañeros como Euge, Debish y n1mh.</p>
<p>Es un buen momento para daros las gracias a quienes tenéis a bien hacernos un hueco en vuestras pantallas. También a los que nos apoyáis desde diferentes medios o sitios web, incluso a quienes podáis pensar que no os tuvimos en cuenta en algún momento. Nada más lejos de la realidad, hemos intentado no olvidar esos detalles que muchas veces, entre dósis de tiempo que uno no tiene tanto como quisiera, pueden pasar desapercibidos.</p>
<p>Cierto es que todo a nuestra manera, como dicen quienes me preceden de una forma un tanto o muy anárquica, aunque yo prefiero decir: &#8220;en libertad&#8221;. Tan libres como nuestro sistema operativo. Para mi, el mejor vínculo posible con una orgullosa comunidad de usuarios que estamos ahí por encima de modas pasajeras o flames.</p>
<p>¿A qué huele Debian? algo tendrá para calar tan hondo me han comentado en más de una ocasión. No sabría responder con exactitud, lo que sí sé es que pasan los años y no encuentro un sistema operativo que me aporte tanto. Bien sea en los servidores o en mis estaciones de trabajo.</p>
<p>Como podéis ver, no salgo de esta espiral que me lleva a las entrañas del corazón del Software libre con mayúsculas, en lo personal y profesional.  Espero seguir un montón de años más junto a quienes firman esta entrada y los que estáis leyendo.</p>
<p>Se llama Debian GNU/Linux y a este lado, la vida se mueve a ritmo de &#8220;.deb&#8221;&#8230;</p></div>
<h1>Eugenia</h1>
<div style="text-align:justify">Nuevo aniversario de Debian Hackers que me toma de sorpresa, abstinente de nicotina y alquitrán <img src='http://www.debianhackers.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>&#8230; tres años en Internet; los tres mejores compañeros de equipo y una de las mejores experiencias de mi vida&#8230; Si Debian y GNU/Linux significaban mucho en mi vida, Debian Hackers fue quien hizo que lo significaran todo.</p>
<p>Gracias por permitirme ser parte de este gran proyecto <img src='http://www.debianhackers.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Feliz Aniversario, colegas! Happy Hacking!</p></div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DebianHackers?a=qLXcPoNeIgc:XiptCXotztQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DebianHackers?i=qLXcPoNeIgc:XiptCXotztQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=qLXcPoNeIgc:XiptCXotztQ:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=qLXcPoNeIgc:XiptCXotztQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=qLXcPoNeIgc:XiptCXotztQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DebianHackers/~4/qLXcPoNeIgc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.debianhackers.net/11-anos-de-debianhackers/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.debianhackers.net/11-anos-de-debianhackers</feedburner:origLink></item>
		<item>
		<title>Big-O-notation: evalúa el rendimiento de tus algoritmos</title>
		<link>http://feedproxy.google.com/~r/DebianHackers/~3/OpLjnlmxsZg/big-o-notation-evalua-el-rendimiento-de-tus-algoritmos</link>
		<comments>http://www.debianhackers.net/big-o-notation-evalua-el-rendimiento-de-tus-algoritmos#comments</comments>
		<pubDate>Mon, 18 Mar 2013 10:00:40 +0000</pubDate>
		<dc:creator>Debish</dc:creator>
				<category><![CDATA[Elementals]]></category>
		<category><![CDATA[algoritmo]]></category>
		<category><![CDATA[big-o-notation]]></category>
		<category><![CDATA[rendimiento]]></category>

		<guid isPermaLink="false">http://www.debianhackers.net/?p=2049</guid>
		<description><![CDATA[En ciertas ocasiones, nos vemos en la necesidad de abordar un problema desde la base, partir de cero y diseñar paso a paso un protocolo para resolverlo de la forma más eficiente posible. Esto ocurre, por ejemplo, en el campo &#8230; <a href="http://www.debianhackers.net/big-o-notation-evalua-el-rendimiento-de-tus-algoritmos">Sigue leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.debianhackers.net/wp-content/uploads/2013/03/algoritmos.png"><img class="aligncenter size-medium wp-image-2071" alt="big-o-notation" src="http://www.debianhackers.net/wp-content/uploads/2013/03/algoritmos-300x193.png" width="300" height="193" /></a></p>
<p style="text-align: justify;">En ciertas ocasiones, nos vemos en la necesidad de abordar un problema desde la base, partir de cero y diseñar paso a paso un protocolo para resolverlo de la forma más <strong>eficiente</strong> posible. Esto ocurre, por ejemplo, en el campo de la <a href="http://www.google.com/url?sa=t&amp;rct=j&amp;q=bioinform%C3%A1tica&amp;source=web&amp;cd=1&amp;cad=rja&amp;ved=0CDAQFjAA&amp;url=http%3A%2F%2Fes.wikipedia.org%2Fwiki%2FBioinform%25C3%25A1tica&amp;ei=BU9GUaitCozb7Ab114GgDA&amp;usg=AFQjCNF22FzYjUsjb_urQOe5R9_u1EsT3g&amp;bvm=bv.43828540,d.ZGU"><strong>bioinformática</strong></a>, donde ciertos problemas pueden requerir un planteamiento independiente a pesar de ser de la misma naturaleza que otros muchos. En estos casos y en otros tantos (modelización matemática, ingeniería, estadística, etc) es necesario comenzar a trabajar a nivel de <strong>algoritmo</strong> para poder alcanzar soluciones válidas y sobre todo viables (en tiempo y recursos) a nuestro problema.<span id="more-2049"></span></p>
<p style="text-align: justify;">Es por ello que habitualmente una de las preocupaciones principales a la hora de diseñar un algoritmo es <strong>cómo de rápido</strong> funcionará. Y en este punto es habitual encontrar a quien piensa que una serie de medidas puntuales en una máquina concreta pueden arrojar resultados significativos y extrapolables a otras máquinas. <strong>Error</strong>, gran <strong>error</strong>. La forma de evaluar la eficiencia de un algoritmo debe ser <em>universal</em> (independiente de hardware) y además estar basada en el funcionamiento natural de cualquier algoritmo, las <em>operaciones</em>. Así, lo mas lógico es tratar de comprender y evaluar el número de operaciones que nuestro algoritmo llevará a cabo. Y de igual forma, la cantidad de memoria que el algoritmo necesitará para funcionar. Imaginemos un algoritmo sencillo que opera sobre dos <em>strings</em> de tamaños <em>m</em> y <em>n</em>, comparando su contenido. En este caso, el número de operaciones es proporcional al producto del tamaño de los inputs (los strings) y podemos afirmar que el algoritmo es de orden <em>m·n. </em>En caso de que ambos fueran del mismo tamaño, estaríamos hablando de un algoritmo de orden <em>m². </em>Tanto en un caso como en otro, la notación utilizada es la denominada <a href="http://en.wikipedia.org/wiki/Big_O_notation"><strong>big-O-notation</strong></a>, siendo O(<em>mn</em>) para el primer caso y O(<em>m²</em>) para el segundo. También cabe la posibilidad de que la eficiencia del algoritmo sea independiente del tamaño del input (por ejemplo, acceder al índice de un array) lo cual se denotaría O(1), o que la dependencia sea de tipo polinómico, exponencial, etc.</p>
<p style="text-align: justify;">Es fundamental comprender la complejidad de cada algoritmo candidato para así poder evaluar cuál va a ser la diferencia en cuanto a eficiencia entre unos y otros. Por ejemplo, un algoritmo de orden exponencial duplica el número de operaciones con un input <em>n</em>+1 en comparación a un input <em>n</em>. Es posible que te permita realizar un análisis exhaustivo de tus datos, pero también que el número de operaciones que requiera para inputs moderados sea inaceptable. Un breve resumen qué tipo de algoritmo aumenta su complejidad más al aumentar el input sería:</p>
<p style="text-align: center;"><em>n</em>! &gt; 2^<em>n</em> &gt; <em>n</em>³ &gt; <em>n</em>² &gt; n·log <em>n</em> &gt; log <em>n</em> &gt; 1</p>
<p style="text-align: justify;"> Por todo lo anterior, a la hora abordar el diseño del algoritmo debemos considerar siempre el <strong>mejor caso</strong> (donde el algoritmo sea exigido en sus mínimos), <strong>caso promedio</strong> y <strong>peor de los casos</strong>, para poder determinar si el algoritmo va a poder ser implementado y ejecutado para resolver nuestro problema concreto. En ocasiones, el problema nos permitirá movernos en el mejor de los casos la mayor parte de las veces y pocas en el peor de los casos, pero puede haber otras ocasiones en que ocurra al revés, y debe ser algo a tener siempre en cuenta para cada problemática en particular.</p>
<p style="text-align: justify;"> En definitiva, se trata de evaluar cómo va a responder el algoritmo en <strong>términos universales</strong> y considerando siempre todos los <strong>casos posibles de uso</strong>, para así asegurar que su futura implementación y funcionamiento ocurran acordes a las necesidades y limitaciones inherentes al problema que enfrentamos. Más vale invertir algo más de tiempo en diseñar un buen algoritmo, que hacerlo a la ligera y tener que tirar todo el trabajo de implementación porque al final resulta no ser viable. Evaluad, valorad y entonces y sólo entonces, <strong>implementad</strong>.</p>
<p><strong>Happy hacking!</strong></p>
<p>&nbsp;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/DebianHackers?a=OpLjnlmxsZg:G5BKCb5Muvo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/DebianHackers?i=OpLjnlmxsZg:G5BKCb5Muvo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=OpLjnlmxsZg:G5BKCb5Muvo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=YwkR-u9nhCs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=OpLjnlmxsZg:G5BKCb5Muvo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/DebianHackers?a=OpLjnlmxsZg:G5BKCb5Muvo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/DebianHackers?d=yIl2AUoC8zA" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DebianHackers/~4/OpLjnlmxsZg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.debianhackers.net/big-o-notation-evalua-el-rendimiento-de-tus-algoritmos/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.debianhackers.net/big-o-notation-evalua-el-rendimiento-de-tus-algoritmos</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.543 seconds -->
