<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GeekColima</title>
	<atom:link href="http://www.geekcolima.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geekcolima.com</link>
	<description>Un geek atrapado en Colima.</description>
	<lastBuildDate>Fri, 12 Mar 2010 17:52:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
   <image>
    <title>GeekColima</title>
    <url>http://www.gravatar.com/avatar/51106a69a2533354821e28b02f2b8f17?s=</url>
    <link>http://www.geekcolima.com</link>
   </image>
		<item>
		<title>Problemas de gobernabilidad</title>
		<link>http://www.geekcolima.com/2010/03/12/problemas-de-gobernabilidad/</link>
		<comments>http://www.geekcolima.com/2010/03/12/problemas-de-gobernabilidad/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 17:51:42 +0000</pubDate>
		<dc:creator>Ruben</dc:creator>
				<category><![CDATA[Frases]]></category>
		<category><![CDATA[citas]]></category>

		<guid isPermaLink="false">http://www.geekcolima.com/?p=452</guid>
		<description><![CDATA[&#8220;El problema más importante, o uno de los problemas más importantes, porque hay varios; es decir, uno de los muchos problemas más importantes de la clase dirigente consiste en encontrar a la persona que realice tareas de gobierno; o mejor dicho, a quién va a encargarse de encontrar a gente que se encargue de realizarlas [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;El problema más importante, o uno de los problemas más importantes, porque hay varios; es decir, uno de los muchos problemas más importantes de la clase dirigente consiste en encontrar a la persona que realice tareas de gobierno; o mejor dicho, a quién va a encargarse de encontrar a gente que se encargue de realizarlas para ellos.</p>
<p><strong>Resumamos:</strong> es un hecho bien conocido que las personas que más deseos tienen de gobernar a la gente son, ipso facto, las menos adecuadas para ello.</p>
<p><strong>Abreviemos el resumen:</strong> a cualquiera que sea capaz de nombrarse Presidente a sí mismo, no debería permitírsele en modo alguno realizar dicha tarea.</p>
<p><strong>Abreviemos el resumen del resumen:</strong> la gente es un problema.&#8221;</p></blockquote>
<p><a href="http://es.wikipedia.org/wiki/Douglas_Adams">Douglas Adams</a> en <a href="http://es.wikipedia.org/wiki/El_restaurante_del_fin_del_mundo">El restaurante del fin del mundo</a></p>
<h3  class="related_post_title">Si te gusto este artículo, lee tambien:</h3><ul class="related_post"><li><a href="http://www.geekcolima.com/2009/05/13/8-escribe-tus-propios-metodos/" title="Aprende a programar, 8. Escribe tus propios métodos">Aprende a programar, 8. Escribe tus propios métodos</a> (0)</li><li><a href="http://www.geekcolima.com/2008/10/02/atencion-linuxeros-de-colima/" title="Atencion Linuxeros de Colima">Atencion Linuxeros de Colima</a> (0)</li><li><a href="http://www.geekcolima.com/2008/08/29/mi-top10-de-extensiones-para-firefox/" title="Mi Top10 de extensiones para Firefox">Mi Top10 de extensiones para Firefox</a> (0)</li><li><a href="http://www.geekcolima.com/2010/02/11/usando-google-chrome-para-desarrollo-web/" title="Usando Google Chrome para desarrollo Web">Usando Google Chrome para desarrollo Web</a> (0)</li><li><a href="http://www.geekcolima.com/2008/09/01/google-chrome-el-navegador-estilo-google/" title="Google Chrome &#8211; El Navegador estilo Google">Google Chrome &#8211; El Navegador estilo Google</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.geekcolima.com/2010/03/12/problemas-de-gobernabilidad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usando Google Chrome para desarrollo Web</title>
		<link>http://www.geekcolima.com/2010/02/11/usando-google-chrome-para-desarrollo-web/</link>
		<comments>http://www.geekcolima.com/2010/02/11/usando-google-chrome-para-desarrollo-web/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 18:13:17 +0000</pubDate>
		<dc:creator>Ruben</dc:creator>
				<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[extensiones]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[goole chrome]]></category>
		<category><![CDATA[Navegadores]]></category>

		<guid isPermaLink="false">http://www.geekcolima.com/?p=441</guid>
		<description><![CDATA[
Con Google Chrome disponible para los principales SO Windows, Linux y Mac, se presenta como una gran alternativa a Internet Explorer y Safari, y ahora con el soporte para extensiones tambien disponible para todas las plataformas, es tambien una alternativa real para Firefox.
Ahora, la principal razón para usar Firefox para desarrollar es Firebug. Y aunque [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.geekcolima.com/wp-content/uploads/2010/02/chromewebdev.jpg" alt="" title="chromewebdev" width="240" height="40" class="aligncenter size-full wp-image-449" /></p>
<p>Con Google Chrome disponible para los principales SO Windows, Linux y Mac, se presenta como una gran alternativa a Internet Explorer y Safari, y ahora con el soporte para extensiones tambien disponible para todas las plataformas, es tambien una alternativa real para Firefox.</p>
<p>Ahora, la principal razón para usar Firefox para desarrollar es Firebug. Y aunque ya hay una extensión de <a href="https://chrome.google.com/extensions/detail/bmagokdooijbeehmkpknfglimnifench">Firebug para Google Chrome</a>, sigue sin tener todo lo que su homonimo de Firefox tiene.</p>
<p>Hace algunos años los desarrolladores de Webkit se dieron cuenta de esto y fue cuando sacaron unas conjunto de herramientas similares que llamaron &#8220;Herramientas para Desarrolladores&#8221;. La ventaja de estas herramientas es que ya vienen incluidas en Google Chrome, por lo que para accesar a ellas solo hay que hacer lo siguiente:</p>
<p>Windows/Linux: Click en el icono de la pagina > Opciones para Desarrolladores > Herramientas del desarrollador<br />
Mac: Menu Ver > Opciones para Desarrolladores > Herramientas para desarrolladores</p>
<p>Estas &#8220;Herramientas para Desarrolladores&#8221; incluyen:</p>
<p><strong>Consola de Javascript [Console]</strong><br />
<img src="http://www.geekcolima.com/wp-content/uploads/2010/02/ConsolaJavascript-300x172.jpg" alt="" title="ConsolaJavascript" width="300" height="172" class="aligncenter size-medium wp-image-448" /><br />
La consola de Javascript muestra errores de una manera sencilla de entender, también nos permite probar lineas de Javascript, también nos permite registrar los valores de variables y lo tiempos de ejecución.<br />
<span id="more-441"></span><br />
<strong>Panel de Elementos [Elements]</strong><br />
<img src="http://www.geekcolima.com/wp-content/uploads/2010/02/Elementos-300x172.jpg" alt="" title="Elementos" width="300" height="172" class="aligncenter size-medium wp-image-447" /><br />
Esta fantastica herramienta nos permite ver el código HTML y editarlo, al igual que el CSS.</p>
<p><strong>Recursos [Resources]</strong><br />
<img src="http://www.geekcolima.com/wp-content/uploads/2010/02/Recursos-300x172.jpg" alt="" title="Recursos" width="300" height="172" class="aligncenter size-medium wp-image-446" /><br />
Finalmente esta herramienta nos permite ver los tiempos de carga de todos los elementos de un sitio, desde las imagenes hasta los scripts. También nos presenta una gráfica en la que nos muestra cuanto tiempo tardo en descargar cada componente, una gráfica en la que nos muestra el tamaño, nos permite ordenarlos por nombre, tamaño, etc.  Es excelente para saber que imagenes se tienen que reducir el tamaño para optimizar su carga.</p>
<p><strong>Extensiones</strong></p>
<p>Como mencioné anteriormente, lo que hace de Google Chrome una alternativa real para Firefox son las extensiones. Así que veamos algunas que nos puedan ayudar a mejorar la experiencia de desarrollo web.</p>
<p><strong><a href="https://chrome.google.com/extensions/detail/ognampngfcbddbfemdapefohjiobgbdl">Speed Tracer</a></strong><br />
<img src="http://www.geekcolima.com/wp-content/uploads/2010/02/speedtracer-300x247.jpg" alt="" title="speedtracer" width="300" height="247" class="aligncenter size-medium wp-image-443" /><br />
Speed Tracer es una herramienta para ayudar a identificar problemas de rendimiento en los sitios web. Muestra exactamente como se usa el tiempo al cargar los elementos, para ayudar a optimizar la carga del sitio.</p>
<p><strong><a href="https://chrome.google.com/extensions/detail/gbkffbkamcejhkcaocmkdeiiccpmjfdi">Pendule</a></strong><br />
<img src="http://www.geekcolima.com/wp-content/uploads/2010/02/pendule-300x108.jpg" alt="" title="pendule" width="300" height="108" class="aligncenter size-medium wp-image-445" /><br />
Pendule es el sustituto perfecto para Web Developer de Firefox. Incluye casi todas las opciones de esa extensión, mas algunas otras que le agregó el desarrollador.</p>
<p><strong><a href="https://chrome.google.com/extensions/detail/idhfcdbheobinplaamokffboaccidbal">Resolution Test</a></strong><br />
<img src="http://www.geekcolima.com/wp-content/uploads/2010/02/resolutiontest-144x300.jpg" alt="" title="resolutiontest" width="144" height="300" class="aligncenter size-medium wp-image-442" /><br />
Resolution Test nos permite redimensionar la ventana de Google Chrome para probar como se vería nuestro sitio web con distintas resoluciones.</p>
<p><strong><a href="https://chrome.google.com/extensions/detail/ckibcdccnfeookdmbahgiakhnjcddpki">Webpage Screenshot</a></strong><br />
<img src="http://www.geekcolima.com/wp-content/uploads/2010/02/webpagescreenshoot-300x228.jpg" alt="" title="webpagescreenshoot" width="300" height="228" class="aligncenter size-medium wp-image-444" /><br />
Cuando necesitamos hacer una captura de pantalla, pero necesitamos que salga completo, Webpage Screenshot nos ayuda en esa tarea con solo dar un click en el boton de la extensión.</p>
<p><strong><a href="https://chrome.google.com/extensions/detail/homgcnaoacgigpkkljjjekpignblkeae">Chrome Sniffer</a></strong><br />
<img src="http://www.geekcolima.com/wp-content/uploads/2010/02/chromesniffer.jpg" alt="" title="chromesniffer" width="100" height="100" class="aligncenter size-full wp-image-432" /><br />
Esta ya la había mencionado anteriormente, nos muestra como hicieron un sitio web en particular. Ya sea hayan usado un CMS, o hayan usado alguna otra herramienta para su desarrollo. Por ejemplo, en mi blog marca que uso Wordpress y jQuery.</p>
<p>Espero que esta pequeña reseña haga que mas y mas personas se decidan a pasarse a Google Chrome y dejen de hacerle cara de asco a este excelente navegador.</p>
<p>Fuente: <a href="http://net.tutsplus.com/articles/general/why-web-developers-should-switch-to-google-chrome/">Why Web Developers Should Switch to Google Chrome</a></p>
<h3  class="related_post_title">Articulos Relacionados:</h3><ul class="related_post"><li><a href="http://www.geekcolima.com/2009/11/12/crear-una-extension-para-google-chrome/" title="Crear una extensión para Google Chrome">Crear una extensión para Google Chrome</a> (3)</li><li><a href="http://www.geekcolima.com/2008/09/01/google-chrome-el-navegador-estilo-google/" title="Google Chrome &#8211; El Navegador estilo Google">Google Chrome &#8211; El Navegador estilo Google</a> (0)</li><li><a href="http://www.geekcolima.com/2010/02/10/extensiones-indispensables-para-google-chrome-con-alternativa-para-firefox/" title="Extensiones indispensables para Google Chrome (con alternativa para Firefox)">Extensiones indispensables para Google Chrome (con alternativa para Firefox)</a> (0)</li><li><a href="http://www.geekcolima.com/2009/08/25/9-clases/" title="Aprende a programar, 9.Clases">Aprende a programar, 9.Clases</a> (0)</li><li><a href="http://www.geekcolima.com/2009/05/13/8-escribe-tus-propios-metodos/" title="Aprende a programar, 8. Escribe tus propios métodos">Aprende a programar, 8. Escribe tus propios métodos</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.geekcolima.com/2010/02/11/usando-google-chrome-para-desarrollo-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extensiones indispensables para Google Chrome (con alternativa para Firefox)</title>
		<link>http://www.geekcolima.com/2010/02/10/extensiones-indispensables-para-google-chrome-con-alternativa-para-firefox/</link>
		<comments>http://www.geekcolima.com/2010/02/10/extensiones-indispensables-para-google-chrome-con-alternativa-para-firefox/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 19:35:32 +0000</pubDate>
		<dc:creator>Ruben</dc:creator>
				<category><![CDATA[Google Chrome]]></category>
		<category><![CDATA[Navegadores]]></category>
		<category><![CDATA[extensiones]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[google chrome]]></category>

		<guid isPermaLink="false">http://www.geekcolima.com/?p=427</guid>
		<description><![CDATA[
Desde que salió Google Chrome beta para Mac lo he estado usando, ya no uso Firefox ni Safari (salvo contadas excepciones). Y cuando habilitaron las extensiones en la version dev de Google Chrome, me pase a esa version sin pensarlo dos veces, y la verdad no me arrepiento nada.
Es bastante estable a pesar de ser [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.geekcolima.com/wp-content/uploads/2010/02/chrome-ff-300x268.jpg" alt="" title="chrome-ff" width="300" height="268" class="aligncenter size-medium wp-image-435" /></p>
<p>Desde que salió Google Chrome beta para Mac lo he estado usando, ya no uso Firefox ni Safari (salvo contadas excepciones). Y cuando habilitaron las extensiones en la version dev de Google Chrome, me pase a esa version sin pensarlo dos veces, y la verdad no me arrepiento nada.</p>
<p>Es bastante estable a pesar de ser dev, ya trae el Administrador de Tareas, el Administrador de Marcadores, pero sobre todo, soporte para practicamente todas las extensiones que hay en <a href="http://chrome.google.com/extensions">http://chrome.google.com/extensions</a>.</p>
<p>Las extensiones que encuentro como indispensables son las siguientes:</p>
<blockquote><p><img src="http://www.geekcolima.com/wp-content/uploads/2010/02/lastpass-300x225.jpg" alt="" title="lastpass" width="300" height="225" class="aligncenter size-medium wp-image-429" /><br />
LastPass: Nos permite guardar todas las contraseñas que usemos y sincronizarlas entre navegadores, contiene un generador de contraseñas y todo esta bien encriptado para mantener las contraseñas lo mas privadas posibles.<br />
[<a href="https://chrome.google.com/extensions/detail/hdokiejnpimakedhajhdlcegeplioahd">LastPass para Chrome</a> | <a href="https://addons.mozilla.org/es-ES/firefox/addon/8542">LastPass para Firefox</a>]</p></blockquote>
<p><span id="more-427"></span><br />
<img src="http://www.geekcolima.com/wp-content/uploads/2010/02/diigo-300x120.jpg" alt="" title="diigo" width="300" height="120" class="aligncenter size-medium wp-image-431" /><br />
Diigo: Es un sitio para guardar los marcadores al estilo de delicious, con la ventaja de que nos permite resaltar texto y poner notitas adhesivas para remarcar lo que mas nos interesa de la pagina que agregamos a los marcadores. Hagan de cuenta que es delicious pero con vitaminas.<br />
[<a href="https://chrome.google.com/extensions/detail/oojbgadfejifecebmdnhhkbhdjaphole">Diigo para Chrome</a> | <a href="https://addons.mozilla.org/es-ES/firefox/addon/2792">Diigo para Firefox</a>]</p>
<blockquote><p><img src="http://www.geekcolima.com/wp-content/uploads/2010/02/adthwart-300x228.jpg" alt="" title="adthwart" width="300" height="228" class="aligncenter size-medium wp-image-433" /><br />
AdThwart: Es el similar para Firefox de Adblock. Nos quita los anuncios que aparecen mientras navegamos. (También hay una version de Adblock para Chrome, pero en lo personal prefiero AdTwarth)<br />
[<a href="https://chrome.google.com/extensions/detail/cfhdojbkjhnklbpkdaibdccddilifddb">AdThwart para Chrome</a> | <a href="https://addons.mozilla.org/es-ES/firefox/addon/1865">Adblock para Firefox</a>]</p></blockquote>
<p><img src="http://www.geekcolima.com/wp-content/uploads/2010/02/flashblock-300x248.jpg" alt="" title="flashblock" width="300" height="248" class="aligncenter size-medium wp-image-430" /><br />
FlashBlock: Esta hace lo mismo que FlashBlock para Firefox. Nos quita todas las animaciones de Flash y las reemplaza por un cuadro, que al darle click nos activa la animación. Es muy útil sobre todo en las Mac, que hacen que el ventilador comience a girar como loco al ver cualquier cosa Flash.<br />
[<a href="https://chrome.google.com/extensions/detail/gofhjkjmkpinhpoiabjplobcaignabnl">FlashBlock para Chrome</a> | <a href="https://addons.mozilla.org/es-ES/firefox/addon/433">FlashBlock para Firefox</a>]</p>
<blockquote><p><img src="http://www.geekcolima.com/wp-content/uploads/2010/02/chromesniffer.jpg" alt="" title="chromesniffer" width="100" height="100" class="aligncenter size-full wp-image-432" /><br />
ChromeSniffer: ¿Nunca te ha pasado que entras a un sitio web y quieres saber que CMS usan? Ya sea Joomla, Wordpress, Magento, etc. Esta extensión te va a decir que sistema CMS están usando para que no tengas que andar investigando.<br />
[<a href="https://chrome.google.com/extensions/detail/homgcnaoacgigpkkljjjekpignblkeae">ChromeSniffer para Chrome</a> | <a href="https://addons.mozilla.org/es-ES/firefox/addon/10229">Wappalyzer para Firefox</a>]</p></blockquote>
<p><img src="http://www.geekcolima.com/wp-content/uploads/2010/02/docs-300x211.jpg" alt="" title="docs" width="300" height="211" class="aligncenter size-medium wp-image-434" /><br />
Docs PDF/Powerpoint Viewer: Finalmente esta extensión es para no andar bajando todos los archivos PDF que te encuentras, sino que los abre con el visor de Google Docs. Muy útil si no quieres instalar el Adobe Reader o similares.<br />
[<a href="https://chrome.google.com/extensions/detail/nnbmlagghjjcbdhgmkedmbmedengocbn">Docs PDF/Powerpoint Viewer para Chrome</a> | <a href="https://addons.mozilla.org/es-ES/firefox/addon/6350">Open IT Online para Firefox</a>]</p>
<p>De pilón esta extensión que no tiene (que yo sepa) similar para Firefox:</p>
<blockquote><p><img src="http://www.geekcolima.com/wp-content/uploads/2010/02/onenumber-300x233.jpg" alt="" title="onenumber" width="300" height="233" class="aligncenter size-medium wp-image-428" /><br />
OneNumber: ¿Cansado de abrir GMail para ver que no tienes correos, Google Reader para ver que no tienes items, o Google Wave para ver que no tienes Waves? Pues ahora con esta extension te aparece en la barra de herramientas si tienes algo sin leer. Si te distraes muy facilmente esta no es tan recomendable, pero es muy útil si te sabes contener a la tentación.<br />
[<a href="https://chrome.google.com/extensions/detail/cfkohgkpafhkpdcnfadadcibfboapggi">OneNumber para Chrome</a>]</p></blockquote>
<h3  class="related_post_title">Articulos Relacionados:</h3><ul class="related_post"><li><a href="http://www.geekcolima.com/2009/11/12/crear-una-extension-para-google-chrome/" title="Crear una extensión para Google Chrome">Crear una extensión para Google Chrome</a> (3)</li><li><a href="http://www.geekcolima.com/2008/08/29/mi-top10-de-extensiones-para-firefox/" title="Mi Top10 de extensiones para Firefox">Mi Top10 de extensiones para Firefox</a> (0)</li><li><a href="http://www.geekcolima.com/2010/02/11/usando-google-chrome-para-desarrollo-web/" title="Usando Google Chrome para desarrollo Web">Usando Google Chrome para desarrollo Web</a> (0)</li><li><a href="http://www.geekcolima.com/2009/04/20/addons-para-firefox-desarrollo-web/" title="Addons para Firefox: Desarrollo Web">Addons para Firefox: Desarrollo Web</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.geekcolima.com/2010/02/10/extensiones-indispensables-para-google-chrome-con-alternativa-para-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EZTV caído</title>
		<link>http://www.geekcolima.com/2010/01/15/eztv-caido/</link>
		<comments>http://www.geekcolima.com/2010/01/15/eztv-caido/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 19:20:23 +0000</pubDate>
		<dc:creator>Ruben</dc:creator>
				<category><![CDATA[Series]]></category>
		<category><![CDATA[eztv]]></category>
		<category><![CDATA[torrents]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.geekcolima.com/?p=421</guid>
		<description><![CDATA[
Cansados de ver eztv down, no sufran mas por ver que no carga la página de eztv. Ultimamente su sitio falla mas que de costumbre y muchas personas no saben donde mas buscar sus series favoritas.
Pero eso es porque no saben que tienen una cuenta de twitter en la que día con día publican los [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.geekcolima.com/wp-content/uploads/2010/01/eztvdown.jpg"><img src="http://www.geekcolima.com/wp-content/uploads/2010/01/eztvdown-300x61.jpg" alt="" title="eztvdown" width="300" height="61" class="aligncenter size-medium wp-image-422" /></a></p>
<p>Cansados de ver <a href="http://downforeveryoneorjustme.com/eztv.itt">eztv down</a>, no sufran mas por ver que no carga la página de <a href="http://www.eztv.it">eztv</a>. Ultimamente su sitio falla mas que de costumbre y muchas personas no saben donde mas buscar sus series favoritas.</p>
<p>Pero eso es porque no saben que tienen una cuenta de twitter en la que día con día publican los nuevos capítulos que tienen disponibles.<span id="more-421"></span> Pueden seguirlos en <a href="http://twitter.com/eztv_it">http://www.twitter.com/eztv_it</a> y ya no perderse sus series favoritas.</p>
<p>Otra solución un poco mas rudimentaria sería abrir su pagina de torrents en <a href="http://torrent.zoink.it/">re.zoink.it</a>, rudimentaria porque ahi aparecen todos los enlaces revueltos y se tarda un poco en cargar porque tiene muchos, muchos, muchísimos enlaces. Pero igual cumple su función.</p>
<p>Por cierto, les recomiendo muchísimo ver la nueva temporada de Dexter. Esta buenísima. ^_^</p>
<h3  class="related_post_title">Articulos Relacionados:</h3><ul class="related_post"><li><a href="http://www.geekcolima.com/2009/10/25/trackers-de-eztv/" title="Trackers de EZTV">Trackers de EZTV</a> (2)</li><li><a href="http://www.geekcolima.com/2008/09/24/la-internet-serie-de-discovery-channel-buscadores/" title="La Internet (Serie de Discovery Channel) Buscadores">La Internet (Serie de Discovery Channel) Buscadores</a> (0)</li><li><a href="http://www.geekcolima.com/2008/09/11/la-internet-serie-de-discovery-channel/" title="La Internet (Serie de Discovery Channel)">La Internet (Serie de Discovery Channel)</a> (0)</li><li><a href="http://www.geekcolima.com/2008/09/11/mythbusters/" title="Series para Geeks: Mythbusters">Series para Geeks: Mythbusters</a> (0)</li><li><a href="http://www.geekcolima.com/2008/08/30/twitter/" title="Aplicaciones Web Escenciales: Twitter">Aplicaciones Web Escenciales: Twitter</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.geekcolima.com/2010/01/15/eztv-caido/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Crear una extensión para Google Chrome</title>
		<link>http://www.geekcolima.com/2009/11/12/crear-una-extension-para-google-chrome/</link>
		<comments>http://www.geekcolima.com/2009/11/12/crear-una-extension-para-google-chrome/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 23:39:33 +0000</pubDate>
		<dc:creator>Ruben</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[extensiones]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[hola mundo]]></category>

		<guid isPermaLink="false">http://www.geekcolima.com/?p=402</guid>
		<description><![CDATA[Este pequeño tutorial que saqué de la página de Google Chrome nos explica como crear una extensión de una manera muy sencilla y práctica.
Preparando el navegador
Lo primero que tenemos que hacer es suscribirnos a la versión dev de Google Chrome (en el tutorial original recomiendan Windows, sin embargo yo lo probé con Mac y funcionó [...]]]></description>
			<content:encoded><![CDATA[<p>Este pequeño tutorial que saqué de la página de Google Chrome nos explica como crear una extensión de una manera muy sencilla y práctica.</p>
<p><strong>Preparando el navegador</strong></p>
<p>Lo primero que tenemos que hacer es suscribirnos a la versión dev de Google Chrome (en el tutorial original recomiendan Windows, sin embargo yo lo probé con Mac y funcionó igual de bien).</p>
<p><strong>Creando y cargando una extensión</strong></p>
<p>Para este tutorial crearemos una extensión que ponga un botón en la barra de herramientas inferior de Google Chrome. <span id="more-402"></span></p>
<p>Creamos una carpeta con el nombre que queramos darle a la extensión, yo, por ejemplo, le puse <span style="text-decoration: underline;">hola_mundo</span>.</p>
<p>Dentro de la carpeta creamos un archivo de texto llamado <span style="text-decoration: underline;">manifest.json</span>, y ponemos lo siguiente en el archivo:</p>
<pre>{
  &quot;name&quot;: &quot;Mi Primera Extension&quot;,
  &quot;version&quot;: &quot;1.0&quot;,
  &quot;description&quot;: &quot;Mi primer extensi&oacute;n para Google Chrome.&quot;,
  &quot;toolstrips&quot;: [
    &quot;mi_toolstrip.html&quot;
  ],
  &quot;permissions&quot;: [
    &quot;http://api.flickr.com/&quot;
  ]
}</pre>
<p>En la misma carpeta creamos un archivo de texto llamado <span style="text-decoration: underline;">mi_toolstrip.html</span> y ponemos esto en el archivo:</p>
<pre>&lt;div class=&quot;toolstrip-button&quot;&gt;
  &lt;span&gt;Hola Mundo!&lt;/span&gt;
&lt;/div&gt;</pre>
<p><strong>Cargando la extensión</strong></p>
<p>Abrimos el administrador de extensiones en Google Chrome escribiendo esta URL en la barra de dirección:</p>
<p><span style="text-decoration: underline;">chrome://extensions</span></p>
<p><a href="http://www.geekcolima.com/wp-content/uploads/2009/11/Installed_Extensions.jpg"><img src="http://www.geekcolima.com/wp-content/uploads/2009/11/Installed_Extensions-300x164.jpg" alt="Installed_Extensions" title="Installed_Extensions" width="300" height="164" class="aligncenter size-medium wp-image-411" /></a></p>
<p>Le das click en el botón <span style="text-decoration: underline;">Load Extensions</span> y seleccionas la carpeta donde tienes guardada tu extensión y le das click en OK. </p>
<p><a href="http://www.geekcolima.com/wp-content/uploads/2009/11/Load_Extension.jpg"><img src="http://www.geekcolima.com/wp-content/uploads/2009/11/Load_Extension-300x155.jpg" alt="Load_Extension" title="Load_Extension" width="300" height="155" class="aligncenter size-medium wp-image-412" /></a></p>
<p>Si la extensión es válida, la información de la extensión aparecerá en el apartado de Extensiones Instaladas.</p>
<p><a href="http://www.geekcolima.com/wp-content/uploads/2009/11/Installed-Extensions-2.jpg"><img src="http://www.geekcolima.com/wp-content/uploads/2009/11/Installed-Extensions-2-300x76.jpg" alt="Installed Extensions 2" title="Installed Extensions 2" width="300" height="76" class="aligncenter size-medium wp-image-414" /></a></p>
<p>Y si todo funcionó bien, verás el botón que dice Hola Mundo en la barra de abajo del navegador.</p>
<p><a href="http://www.geekcolima.com/wp-content/uploads/2009/11/Hola_mundo.jpg"><img src="http://www.geekcolima.com/wp-content/uploads/2009/11/Hola_mundo.jpg" alt="Hola_mundo" title="Hola_mundo" width="104" height="37" class="aligncenter size-full wp-image-410" /></a></p>
<p><strong>Agregando código a la extensión</strong></p>
<p>Ahora hagamos que ese botón haga algo, aparte de verse bien.</p>
<p>Dentro de la carpeta de la extensión creamos un archivo llamado <span style="text-decoration: underline;">hola_mundo.html</span>, y le ponemos el siguiente código:</p>
<pre>&lt;style&gt;
img {
  margin:5px;
  border:2px solid black;
  vertical-align:middle;
  width:75px;
  height:75px;
}
&lt;/style&gt;

&lt;script&gt;
var req = new XMLHttpRequest();
req.open(
    &quot;GET&quot;,
    &quot;http://api.flickr.com/services/rest/?&quot; +
        &quot;method=flickr.photos.search&amp;&quot; +
        &quot;api_key=90485e931f687a9b9c2a66bf58a3861a&amp;&quot; +
        &quot;text=hello%20world&amp;&quot; +
        &quot;safe_search=1&amp;&quot; +  // 1 is &quot;safe&quot;
        &quot;content_type=1&amp;&quot; +  // 1 is &quot;photos only&quot;
        &quot;sort=relevance&amp;&quot; +  // another good one is &quot;interestingness-desc&quot;
        &quot;per_page=95&quot;,
    true);
req.onload = showPhotos;
req.send(null);

function showPhotos() {
  var photos = req.responseXML.getElementsByTagName(&quot;photo&quot;);

  for (var i = 0, photo; photo = photos[i]; i++) {
    var img = document.createElement(&quot;image&quot;);
    img.src = constructImageURL(photo);
    document.body.appendChild(img);
  }
}

// See: http://www.flickr.com/services/api/misc.urls.html
function constructImageURL(photo) {
  return &quot;http://farm&quot; + photo.getAttribute(&quot;farm&quot;) +
      &quot;.static.flickr.com/&quot; + photo.getAttribute(&quot;server&quot;) +
      &quot;/&quot; + photo.getAttribute(&quot;id&quot;) +
      &quot;_&quot; + photo.getAttribute(&quot;secret&quot;) +
      &quot;_s.jpg&quot;;
}
&lt;/script&gt;</pre>
<p>Editamos <span style="text-decoration: underline;">mi_toolstrip.html</span> y hacemos que el código quede así:</p>
<pre>&lt;div class=&quot;toolstrip-button&quot; onclick=&quot;window.open(&#x27;hola_mundo.html&#x27;)&quot;&gt;
  &lt;span&gt;Hola Mundo!&lt;/span&gt;
&lt;/div&gt;</pre>
<p>Regresamos a <span style="text-decoration: underline;">chrome://extensions</span>, y damos click en <span style="text-decoration: underline;">Reload Extension</span> para cargar la nueva versión de la extensión.<br />
<a href="http://www.geekcolima.com/wp-content/uploads/2009/11/Reload.jpg"><img src="http://www.geekcolima.com/wp-content/uploads/2009/11/Reload-300x79.jpg" alt="Reload" title="Reload" width="300" height="79" class="aligncenter size-medium wp-image-413" /></a></p>
<p>Luego le damos click en el botón y con esto, nos debe de aparecer el documento <span style="text-decoration: underline;">hola_mundo.html</span> que se debe de ver algo así:</p>
<p><a href="http://www.geekcolima.com/wp-content/uploads/2009/11/Hola_mundo_final.jpg"><img src="http://www.geekcolima.com/wp-content/uploads/2009/11/Hola_mundo_final-300x184.jpg" alt="Hola_mundo_final" title="Hola_mundo_final" width="300" height="184" class="aligncenter size-medium wp-image-409" /></a></p>
<p>Felicidades por tu primera extensión para Google Chrome ^_^</p>
<h3  class="related_post_title">Articulos Relacionados:</h3><ul class="related_post"><li><a href="http://www.geekcolima.com/2010/02/11/usando-google-chrome-para-desarrollo-web/" title="Usando Google Chrome para desarrollo Web">Usando Google Chrome para desarrollo Web</a> (0)</li><li><a href="http://www.geekcolima.com/2010/02/10/extensiones-indispensables-para-google-chrome-con-alternativa-para-firefox/" title="Extensiones indispensables para Google Chrome (con alternativa para Firefox)">Extensiones indispensables para Google Chrome (con alternativa para Firefox)</a> (0)</li><li><a href="http://www.geekcolima.com/2009/08/25/9-clases/" title="Aprende a programar, 9.Clases">Aprende a programar, 9.Clases</a> (0)</li><li><a href="http://www.geekcolima.com/2009/05/13/8-escribe-tus-propios-metodos/" title="Aprende a programar, 8. Escribe tus propios métodos">Aprende a programar, 8. Escribe tus propios métodos</a> (0)</li><li><a href="http://www.geekcolima.com/2009/04/21/7-arreglos-e-iteraciones/" title="Aprende a programar, 7. Arreglos e iteraciones">Aprende a programar, 7. Arreglos e iteraciones</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.geekcolima.com/2009/11/12/crear-una-extension-para-google-chrome/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Writeroom y alternativas&#8230;</title>
		<link>http://www.geekcolima.com/2009/10/30/writeroom-y-alternativas/</link>
		<comments>http://www.geekcolima.com/2009/10/30/writeroom-y-alternativas/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 00:53:03 +0000</pubDate>
		<dc:creator>Ruben</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.geekcolima.com/?p=396</guid>
		<description><![CDATA[Si hay algo de lo que padezco es de no poder concentrarme nunca en lo que hago. Ya sea porque me distrae twitter, google reader, algun juego o hasta conversaciones por el messenger. Por eso encontrar algun editor de texto que me permita trabajar libre de distracciones se me hace algo muy valioso (no tanto [...]]]></description>
			<content:encoded><![CDATA[<p>Si hay algo de lo que padezco es de no poder concentrarme nunca en lo que hago. Ya sea porque me distrae twitter, google reader, algun juego o hasta conversaciones por el messenger. Por eso encontrar algun editor de texto que me permita trabajar libre de distracciones se me hace algo muy valioso (no tanto como para pagar por eso).</p>
<p><img src="http://www.geekcolima.com/wp-content/uploads/2009/10/writeroom.jpg" alt="writeroom" title="writeroom" width="479" height="125" class="aligncenter size-full wp-image-397" /></p>
<p>Writeroom viene a cubrir esa necesidad y como lo pudieron deducir tiene el pequeño defecto de que la versión actual no es gratuita y para colmo, es un poco cara (<a href="http://www.hogbaysoftware.com/products/writeroom">$24.95 USD</a>). Pero no todo esta perdido. Porque buscando por internet encontre que la primera versión de ese programa es gratuita y está disponible para la descarga sin ningun problema.<span id="more-396"></span></p>
<p><a href="https://writeroom.s3.amazonaws.com/WriteRoom-1.0.dmg ">Writeroom 1.0</a> (Disponible solo para Mac)</p>
<p>Así se ve el programa, genial, no?</p>
<p><a href="http://www.geekcolima.com/wp-content/uploads/2009/10/writeroom_pantalla.jpg"><img src="http://www.geekcolima.com/wp-content/uploads/2009/10/writeroom_pantalla-300x187.jpg" alt="writeroom_pantalla" title="writeroom_pantalla" width="300" height="187" class="aligncenter size-medium wp-image-398" /></a></p>
<p><strong>Alternativas</strong></p>
<p><a href="http://www.codealchemists.com/jdarkroom/">JDarkRoom</a>.- No soy muy partidario de usar aplicaciones hechas en Java porque se me hacen exageradamente lentas. Sin embargo esta aplicación es muy parecida a writeroom y puede ser usada en Windows, Linux y Mac.</p>
<p><a href="http://they.misled.us/dark-room">Dark Room</a>.- Es solo para Windows y necesita tener instalado el <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&#038;displaylang=en">Framework .NET 2.0</a>.</p>
<p><a href="http://writemonkey.com/">WriteMonkey</a>.- También para Windows. Se ve un poco mas completo que Dark Room, aunque este en realidad no lo he probado.</p>
<p><a href="http://darkcopy.com/">DarkCopy</a>.- Esta alternativa me gusto por el hecho de que esta no es un aplicación para descargar o instalar, sino un sitio web que puedes usar en pantalla completa y que cumple la misma función de escribir sin distracciones.</p>
<h3  class="related_post_title">Articulos Relacionados:</h3><ul class="related_post"><li><a href="http://www.geekcolima.com/2008/11/14/extractnow/" title="ExtractNow">ExtractNow</a> (0)</li><li><a href="http://www.geekcolima.com/2008/11/14/shutdownguard/" title="ShutdownGuard">ShutdownGuard</a> (0)</li><li><a href="http://www.geekcolima.com/2008/09/24/probando-la-nueva-beta-de-windows-live-messenger-9/" title="Probando la Nueva Beta de Windows Live Messenger 9">Probando la Nueva Beta de Windows Live Messenger 9</a> (0)</li><li><a href="http://www.geekcolima.com/2008/10/02/atencion-linuxeros-de-colima/" title="Atencion Linuxeros de Colima">Atencion Linuxeros de Colima</a> (0)</li><li><a href="http://www.geekcolima.com/2008/09/28/livelinux-gamersnet/" title="Distribiciones de Linux: live.linuX-gamers.net">Distribiciones de Linux: live.linuX-gamers.net</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.geekcolima.com/2009/10/30/writeroom-y-alternativas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trackers de EZTV</title>
		<link>http://www.geekcolima.com/2009/10/25/trackers-de-eztv/</link>
		<comments>http://www.geekcolima.com/2009/10/25/trackers-de-eztv/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 18:40:45 +0000</pubDate>
		<dc:creator>Ruben</dc:creator>
				<category><![CDATA[Series]]></category>
		<category><![CDATA[descargas]]></category>
		<category><![CDATA[eztv]]></category>
		<category><![CDATA[torrents]]></category>

		<guid isPermaLink="false">http://www.geekcolima.com/?p=393</guid>
		<description><![CDATA[
No hay como ver series cuando uno quiere. Usar bittorrent sigue siendo una muy buena alternativa para descargar series. Aunque el problema de este es que, cuando no hay muchas personas interesadas en ver lo mismo que tu, descargar las series se vuelve un problema.
Así me paso con la segunda temporada de la serie True [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.geekcolima.com/wp-content/uploads/2009/10/eztv-logo.jpg" alt="eztv-logo" title="eztv-logo" width="470" height="141" class="aligncenter size-full wp-image-394" /><br />
No hay como ver series cuando uno quiere. Usar <a href="http://www.bittorrent.com/">bittorrent</a> sigue siendo una muy buena alternativa para descargar series. Aunque el problema de este es que, cuando no hay muchas personas interesadas en ver lo mismo que tu, descargar las series se vuelve un problema.</p>
<p>Así me paso con la segunda temporada de la serie True Blood. La segunda temporada ya esta completa y quise descargarla de <a href="http://fulltvseasons.com/torrents.php?mode=details&amp;id=1001912">fulltvseasons.com</a> , pero al no ser tan popular como yo creía no pasó del 7.7% y estuve a punto de rendirme. Pero buscando en <a href="http://www.mininova.org/">mininova.org</a> vi que el usuario <a href="http://www.mininova.org/user/EZTV">EZTV</a> la había subido completa (aunque de capítulo en capítulo). De ahí llegué a esta página <a href="http://torrent.zoink.it/">http://torrent.zoink.it/</a>, que es una lista de los torrents de EZTV y finalmente ahi encontré todos los capítulos de la serie.</p>
<p>Pero ahi no termina la historia,<span id="more-393"></span> felizmente di click en cada uno de los capítulos y los agregué a mi administrador de descargas <a href="http://www.utorrent.com/">µTorrent</a> y vi como se descargaban uno a uno los capítulos pero por alguna razón se brincaba el 4 y el 3. Decía que no tenían seeds (o sea que ningún usuario lo estaba compartiendo completo). Y googleando llegué a una solución en el sitio de <a href="http://eztv.it/">EZTV</a>, que por cierto el sitio esta caído!!! Y tuve que que recurrir a la <a href="http://74.125.155.132/search?q=cache:8XSLdW2OzVoJ:eztv.it/forum/4554/eztv-help-read-before-asking-questions/+site:eztv.it+eztv+trackers&amp;hl=en&amp;client=safari&amp;strip=1">caché de google</a>.</p>
<p>Donde finalmente encontré que lo único que hay que hacer es agregar algún tracker de esta lista al torrent y con suerte, habrá usuarios en otro tracker que nos pueda compartir el capítulo. (Yo para no buscar de uno en uno, los agregué todos y funciono ^_^)</p>
<ul>
<li>http://tracker1.istole.it:60500/announce</li>
<li>http://tracker2.istole.it:60500/announce</li>
<li>http://tracker3.istole.it:60500/announce</li>
<li>http://tracker4.istole.it:60500/announce</li>
<li>http://tv.tracker.prq.to/announce</li>
<li>http://tracker.prq.to/announce</li>
<li>http://tracker.thepiratebay.org/announce</li>
<li>http://vip.tracker.thepiratebay.org/announce</li>
<li>http://tpb.tracker.thepiratebay.org/announce</li>
<li>http://tpb.tracker.thepiratebay.org:80/announce</li>
<li>http://open.tracker.thepiratebay.org/announce</li>
<li>http://www.torrent-downloads.to:2710/announce</li>
<li>http://denis.stalker.h3q.com:6969/announce</li>
<li>http://tracker.zerotracker.com:2710/announce</li>
<li>http://tv.tracker.thepiratebay.org/announce</li>
<li>http://eztv.tracker.thepiratebay.org/announce</li>
</ul>
<p>Sufrí para encontrarlos y no encontré ningún sitio en español que los tuviera, así que los pongo a disposición de ustedes para que no sufran lo que yo sufrí. </p>
<h3  class="related_post_title">Articulos Relacionados:</h3><ul class="related_post"><li><a href="http://www.geekcolima.com/2010/01/15/eztv-caido/" title="EZTV caído">EZTV caído</a> (2)</li><li><a href="http://www.geekcolima.com/2008/09/24/la-internet-serie-de-discovery-channel-buscadores/" title="La Internet (Serie de Discovery Channel) Buscadores">La Internet (Serie de Discovery Channel) Buscadores</a> (0)</li><li><a href="http://www.geekcolima.com/2008/09/11/la-internet-serie-de-discovery-channel/" title="La Internet (Serie de Discovery Channel)">La Internet (Serie de Discovery Channel)</a> (0)</li><li><a href="http://www.geekcolima.com/2008/09/11/mythbusters/" title="Series para Geeks: Mythbusters">Series para Geeks: Mythbusters</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.geekcolima.com/2009/10/25/trackers-de-eztv/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Exploit</title>
		<link>http://www.geekcolima.com/2009/10/21/exploit/</link>
		<comments>http://www.geekcolima.com/2009/10/21/exploit/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 01:14:50 +0000</pubDate>
		<dc:creator>Ruben</dc:creator>
				<category><![CDATA[Juegos]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.geekcolima.com/?p=387</guid>
		<description><![CDATA[Si hay algo que me gusta hacer para relajarme y perder el tiempo de vez en cuando es poner juegos de Flash. Y aquí iré poniendo de vez en cuando algún juego que me llame la atención.

En este juego de puzzle nos hacemos pasar por un cracker en el que debemos resolver los acertijos que [...]]]></description>
			<content:encoded><![CDATA[<p>Si hay algo que me gusta hacer para relajarme y perder el tiempo de vez en cuando es poner juegos de Flash. Y aquí iré poniendo de vez en cuando algún juego que me llame la atención.</p>
<p><a href="http://www.newgrounds.com/portal/view/486656"><img src="http://www.geekcolima.com/wp-content/uploads/2009/10/Exploit.jpg" alt="Exploit" title="Exploit" width="512" height="509" class="aligncenter size-full wp-image-388" /></a></p>
<p>En este juego de puzzle nos hacemos pasar por un cracker en el que debemos resolver los acertijos que nos vayan proponiendo para romper la seguridad de los nodos. El juego en realidad está bastante sencillo de entender, pero conforme vamos pasando de nivel, las cosas se van complicando hasta llegar a la total desesperación.</p>
<h3  class="related_post_title">Si te gusto este artículo, lee tambien:</h3><ul class="related_post"><li><a href="http://www.geekcolima.com/2008/10/10/que-usarias-si-dejara-de-existir-google/" title="¿Que usarías si dejara de existir Google?">¿Que usarías si dejara de existir Google?</a> (2)</li><li><a href="http://www.geekcolima.com/2008/10/10/la-crisis-en-eua/" title="La Crisis en EUA">La Crisis en EUA</a> (0)</li><li><a href="http://www.geekcolima.com/2008/09/19/mav/" title="Micro Vehiculos Aereos (MAV por sus siglas en ingles)">Micro Vehiculos Aereos (MAV por sus siglas en ingles)</a> (0)</li><li><a href="http://www.geekcolima.com/2009/05/13/colima-digital-la-mejor-foto-de-abril/" title="Colima Digital: La mejor foto de Abril">Colima Digital: La mejor foto de Abril</a> (1)</li><li><a href="http://www.geekcolima.com/2008/09/22/la-guerra-de-los-navegadores/" title="La Guerra de los Navegadores">La Guerra de los Navegadores</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.geekcolima.com/2009/10/21/exploit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aprende a programar, 9.Clases</title>
		<link>http://www.geekcolima.com/2009/08/25/9-clases/</link>
		<comments>http://www.geekcolima.com/2009/08/25/9-clases/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 18:28:01 +0000</pubDate>
		<dc:creator>Ruben</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.geekcolima.com/?p=377</guid>
		<description><![CDATA[Página original: http://pine.fm/LearnToProgram/?Chapter=09
Hasta ahora hemos visto diferentes tipos, o clases, de objetos: cadenas (string), enteros (integer), flotantes (floats), arreglos (arrays) y algunos cuantos objetos especiales (true, false y nil) de los cuales hablaremos mas tarde. En Ruby, estas clases siempre se escriben en ingles y llevan la primer letra mayúscula: String, Integer, Float, Array&#8230; etc. [...]]]></description>
			<content:encoded><![CDATA[<p>Página original: <a href="http://pine.fm/LearnToProgram/?Chapter=09">http://pine.fm/LearnToProgram/?Chapter=09</a></p>
<p>Hasta ahora hemos visto diferentes tipos, o clases, de objetos: cadenas (string), enteros (integer), flotantes (floats), arreglos (arrays) y algunos cuantos objetos especiales (<strong>true</strong>, <strong>false</strong> y <strong>nil</strong>) de los cuales hablaremos mas tarde. En Ruby, estas clases siempre se escriben en ingles y llevan la primer letra mayúscula: <strong>String</strong>, <strong>Integer</strong>, <strong>Float</strong>, <strong>Array</strong>&#8230; etc. Generalmente, si queremos crear un nuevo objeto de una cierta clase, usamos <strong>new</strong>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">a = <span style="color:#CC0066; font-weight:bold;">Array</span>.<span style="color:#9900CC;">new</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">12345</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#008000; font-style:italic;"># Agregamos el arreglo</span>
b = <span style="color:#CC0066; font-weight:bold;">String</span>.<span style="color:#9900CC;">new</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'hola'</span> <span style="color:#008000; font-style:italic;"># Agregamos la cadena</span>
c = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">new</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'a = '</span><span style="color:#006600; font-weight:bold;">+</span>a.<span style="color:#9900CC;">to_s</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'b = '</span><span style="color:#006600; font-weight:bold;">+</span>b.<span style="color:#9900CC;">to_s</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'c = '</span><span style="color:#006600; font-weight:bold;">+</span>c.<span style="color:#9900CC;">to_s</span></pre></td></tr></table></div>

<pre>a = 12345
b = hola
c = Thu May 14 12:01:13 -0500 2009</pre>
<p><span id="more-377"></span><br />
Ya que podemos crear arreglos y cadenas usando [...] y &#8216;&#8230;&#8217; respectivamente, rara vez los creamos usando <strong>new</strong>. (Aunque no es tan obvio para el ejemplo anterior, <strong>String.new</strong> crea una cadena vacía, y <strong>Array.new</strong> crea un arreglo vacío.) Los números son una excepción, no podemos crear un entero con <strong>Integer.new</strong>. Solo tenemos que escribir el entero.</p>
<p><strong>La clase Time</strong></p>
<p>Los objetos <strong>Time</strong> representan un momento en el tiempo. Puedes sumar (o restar) números al tiempo para obtener nuevos momentos: agregar <strong>1.5</strong> a un momento hace que aparezca el tiempo con un segundo y medio de mas:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">tiempo = <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">new</span>			<span style="color:#008000; font-style:italic;"># El momento en que se escribió este texto</span>
tiempo2 = tiempo <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#006666;">60</span>		<span style="color:#008000; font-style:italic;"># Un minuto mas tarde</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> tiempo
<span style="color:#CC0066; font-weight:bold;">puts</span> tiempo2</pre></td></tr></table></div>

<pre>Thu May 14 12:09:34 -0500 2009
Thu May 14 12:10:34 -0500 2009</pre>
<p>También puedes especificar un momento en el tiempo usando <strong>Time.mktime</strong>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">mktime</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">2000</span>, <span style="color:#006666;">1</span>, <span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>			<span style="color:#008000; font-style:italic;"># Y2K</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">mktime</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">1976</span>, <span style="color:#006666;">8</span>, <span style="color:#006666;">3</span>, <span style="color:#006666;">10</span>, <span style="color:#006666;">11</span><span style="color:#006600; font-weight:bold;">&#41;</span>	<span style="color:#008000; font-style:italic;"># Cuando nació el autor</span></pre></td></tr></table></div>

<pre>Sat Jan 01 00:00:00 -0600 2000
Tue Aug 03 10:11:00 -0600 1976</pre>
<p>Los paréntesis son para agrupar los parámetros de <strong>mktime</strong>. Mientras mas parámetros agregues, mas preciso será el tiempo.</p>
<p>Puedes comparar el tiempo usando los métodos de comparación (un tiempo anterior es menor a un tiempo mas tarde), y si restas un tiempo de otro, puedes obtener los segundos que hay entre ellos.</p>
<p><strong>Unas cosas para intentar</strong></p>
<p>Mil millones de segundos&#8230; Investiga en que segundo naciste (si se puede). Y después averigua cuando cumplirás (o cuando cumpliste) mil millones de segundos, y escribelo en tu agenda para que no lo olvides.</p>
<p>Feliz cumpleaños&#8230; Pregunta a una persona el año en que nació, luego el mes, y luego el día. Calcula su edad y felicitalo por cada cumpleaños que haya tenido.</p>
<p><strong>La clase Hash</strong></p>
<p>Otra clase muy útil es la <strong>Hash</strong>. Un Hash es muy parecido a un arreglo (array): tiene muchos elementos que pueden apuntar a varios objetos. Sin embargo, en un arreglo, los elementos están alineados en una sola fila y cada uno esta enumerado (desde el cero). En un hash, los elementos no están en fila (solo están agrupados), y puedes usar cualquier objeto para referir a un espacio, no solo un numero. Es bueno usar hashes cuando tienes un montón de cosas de las que quieres mantener registro, pero no necesariamente tienen que estar en orden. Por ejemplo, los colores usados en el código del tutorial:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">arregloColores = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#008000; font-style:italic;"># Que sería lo mismo que Array.new</span>
hashColores = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span> 	<span style="color:#008000; font-style:italic;"># Que sería lo mismo que Hash.new</span>
&nbsp;
arregloColores <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>			= <span style="color:#996600;">'verde'</span>
arregloColores <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>			= <span style="color:#996600;">'negro'</span>
arregloColores <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">2</span><span style="color:#006600; font-weight:bold;">&#93;</span>			= <span style="color:#996600;">'cafe'</span>
hashColores <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'comentarios'</span><span style="color:#006600; font-weight:bold;">&#93;</span>	= <span style="color:#996600;">'verde'</span>
hashColores <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'variables'</span><span style="color:#006600; font-weight:bold;">&#93;</span> 	= <span style="color:#996600;">'negro'</span>
hashColores <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'cadenas'</span><span style="color:#006600; font-weight:bold;">&#93;</span>		= <span style="color:#996600;">'cafe'</span>
&nbsp;
arregloColores.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>color<span style="color:#006600; font-weight:bold;">|</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> color
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
hashColores.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>tipoDeCodigo, color<span style="color:#006600; font-weight:bold;">|</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> tipoDeCodigo <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">': '</span> <span style="color:#006600; font-weight:bold;">+</span> color
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<pre>verde
negro
cafe
comentarios: verde
cadenas: cafe
variables: negro</pre>
<p>Si uso un arreglo, tengo que recordar que el elemento <strong>0</strong> es para comentarios, el <strong>1</strong> es para variables, etc. Pero si usamos un hash, es mucho mas sencillo. El elemento <strong>&#8216;comentarios&#8217;</strong> guarda el color de los comentarios. No hay que recordar nada. Tal vez te diste cuenta que, cuando usamos <strong>each</strong>, los objetos en el hash no salieron en el mismo orden que los metimos. Los arreglos son para mantener las cosas en orden, un hash, no.</p>
<p>Aunque normalmente se utilizan cadenas para nombrar a los elementos de un hash. Se puede usar cualquier tipo de objetos, entre ellos un mismo hash o hasta un arreglo (aunque no se me ocurre ninguna razón para hacer eso&#8230;):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">hashRaro = <span style="color:#CC00FF; font-weight:bold;">Hash</span>.<span style="color:#9900CC;">new</span>
&nbsp;
hashRaro <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">12</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#996600;">'monos'</span>
hashRaro <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#996600;">'vacio'</span>
hashRaro <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#996600;">'no hay mejor tiempo que el presente'</span></pre></td></tr></table></div>

<p>Los arreglos y hash son buenos para diferentes cosas, y es tu decisión usar cada uno para algún problema en particular.</p>
<p><strong>Extendiendo las clases</strong></p>
<p>Al final del ultimo capítulo, escribiste un programa que nos regresaba escrito en letras, los números que escribiéramos. No era un método de entero, era solo un &#8220;programa&#8221; genérico de métodos. Pero, ¿no sería mejor si en lugar de tener que escribir <strong>numeroEspanol 22</strong>, escribieramos <strong>22.to_es</strong>? Veamos como se podría hacer algo asi:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#CC0066; font-weight:bold;">Integer</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> to_es
		<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0000FF; font-weight:bold;">self</span> == <span style="color:#006666;">5</span>
			espanol = <span style="color:#996600;">'cinco'</span>
		<span style="color:#9966CC; font-weight:bold;">else</span>
			espanol = <span style="color:#996600;">'cincuenta y ocho'</span>
		<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
		espanol
	<span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Probemoslo  con un par de numeros</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> 5.<span style="color:#9900CC;">to_es</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> 58.<span style="color:#9900CC;">to_es</span></pre></td></tr></table></div>

<pre>cinco
cincuenta y ocho</pre>
<p>Bueno, parece que funciona. :)</p>
<p>Así que hemos definido un método entero entrando en la clase <strong>Integer</strong>, definiendo el método ahí, y saliendo de la clase. Ahora todos los enteros tienen este método (bastante incompleto). De hecho, si no te gusta como trabaja el método <strong>to_s</strong>, puedes redefinirlo mas o menos de la misma manera, aunque no es recomendable. Es mejor dejar estos viejos métodos tal y como están y mejor hacer unos nuevos si queremos hacer algo diferente.</p>
<p><strong>Creando Clases</strong></p>
<p>Ya hemos visto diversas clases de objetos. Sin embargo, de vez en cuando nos encontraremos que hay tipos de objetos que Ruby no tiene. Por suerte, crear una clase nueva es tan sencillo como extender una clase vieja. Supongamos que queremos hacer unos dados en Ruby. Así es como haríamos la clase Dado:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> Dado
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> echar
		<span style="color:#006666;">1</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#CC0066; font-weight:bold;">rand</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">6</span><span style="color:#006600; font-weight:bold;">&#41;</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Hagamos un par de dados...</span>
dados = <span style="color:#006600; font-weight:bold;">&#91;</span>Dado.<span style="color:#9900CC;">new</span>, Dado.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># ... y echemoslos</span>
dados.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>dado<span style="color:#006600; font-weight:bold;">|</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> dado.<span style="color:#9900CC;">echar</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<pre>4
5</pre>
<p>(Si te saltaste la sección de números aleatorios, <strong>rand(6)</strong> nos da un numero aleatorio entre <strong>0</strong> y <strong>5</strong>.)</p>
<p>Y eso es todo! Objetos de nuestra propia creación.</p>
<p>Podemos definir todo tipo de métodos para nuestros objetos&#8230; pero hay algo que no estamos tomando en cuenta. Trabajar con estos objetos se siente como si estuviéramos programando antes de aprender acerca de las variables. Mira los dados por ejemplo. Podemos echarlos, y cada vez que lo hacemos nos da diferentes números. Pero si quisiéramos mantener ese número, tendríamos que crear una variable que apunte a ese número.</p>
<p>Sin embargo, si intentamos guardar el numero que salió en una variable (local) de <strong>echar</strong>, se borraría una vez que <strong>echar</strong> terminara. Necesitaríamos guardar el número en otro tipo de variable:</p>
<p><strong>Variables de Instancia</strong></p>
<p>Normalmente, cuando queremos hablar de una cadena, solo le decimos una cadena. Sin embargo, también podríamos decirle objeto cadena (string object). Algunas programadores pueden llamar a una instancia de la clase <strong>String</strong>, pero es solo una manera elegante (y larga) de decir string. Una instancia de una clase es un objeto de esa clase.</p>
<p>Así que una variable de instancia no es mas que una variable del objeto. Las variables locales de los métodos duran hasta que el método haya terminado. Una variable de instancia de objeto, por otro lado, dura tanto como dure el objeto. Para diferenciar una variable de instancia de una local, las de instancia tienen una @ al inicio de su nombre:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> Dado
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> echar
		<span style="color:#0066ff; font-weight:bold;">@numeroMostrado</span> = <span style="color:#006666;">1</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#CC0066; font-weight:bold;">rand</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">6</span><span style="color:#006600; font-weight:bold;">&#41;</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> mostrar
		<span style="color:#0066ff; font-weight:bold;">@numeroMostrado</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
dado = Dado.<span style="color:#9900CC;">new</span>
dado.<span style="color:#9900CC;">echar</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> dado.<span style="color:#9900CC;">mostrar</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> dado.<span style="color:#9900CC;">mostrar</span>
dado.<span style="color:#9900CC;">echar</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> dado.<span style="color:#9900CC;">mostrar</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> dado.<span style="color:#9900CC;">mostrar</span></pre></td></tr></table></div>

<pre>6
6

5
5</pre>
<p>Perfecto! Así que <strong>echar</strong>, echa los dados y <strong>mostrar</strong> nos dice en cual numero que se esta mostrando. Pero, ¿que sucede si intentamos ver el numero mostrado antes de echar los dados?</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> Dado
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> echar
		<span style="color:#0066ff; font-weight:bold;">@numeroMostrado</span> = <span style="color:#006666;">1</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#CC0066; font-weight:bold;">rand</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">6</span><span style="color:#006600; font-weight:bold;">&#41;</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> mostrar
		<span style="color:#0066ff; font-weight:bold;">@numeroMostrado</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#008000; font-style:italic;">#	Como no voy a usar este dado otra vez,</span>
<span style="color:#008000; font-style:italic;">#	No necesito guardarlo en una variable</span>
<span style="color:#CC0066; font-weight:bold;">puts</span> Dado.<span style="color:#9900CC;">new</span>.<span style="color:#9900CC;">mostrar</span></pre></td></tr></table></div>

<pre>nil</pre>
<p>Bueno, por lo menos no nos regreso un error. Aun así, no tiene sentido &#8220;des-echar&#8221; un dado, o lo que sea que <strong>nil</strong> significa aquí. Estaría mejor si pudiéramos tener un número echado justo cuando se crea el objeto. Para eso es inicializar (<strong>initialize</strong>):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> Dado
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> initialize
		<span style="color:#008000; font-style:italic;">#	Solo echaré el dado, aunque</span>
		<span style="color:#008000; font-style:italic;">#	podriamos hacer algo mas si quisieramos</span>
		<span style="color:#008000; font-style:italic;">#	como hacer que el dado muestre el 6.</span>
		echar
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> echar
		<span style="color:#0066ff; font-weight:bold;">@numeroMostrado</span> = <span style="color:#006666;">1</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#CC0066; font-weight:bold;">rand</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">6</span><span style="color:#006600; font-weight:bold;">&#41;</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> mostrar
		<span style="color:#0066ff; font-weight:bold;">@numeroMostrado</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">puts</span> Dado.<span style="color:#9900CC;">new</span>.<span style="color:#9900CC;">mostrar</span></pre></td></tr></table></div>

<pre>3</pre>
<p>Cuando se crea un objeto, el método <strong>initialize</strong> (si es que está definido) siempre es llamado.</p>
<p>Nuestros dados están casi perfectos. Lo único que faltaría es una manera de decir que número mostrar&#8230; ¿porque no escribes un método llamado <strong>trampa</strong> que haga eso? Regresa cuando lo hayas hecho (y probado que funciona). Asegurate que no puedan hacer que el dado muestre un 7.</p>
<p>Ahora veamos otro ejemplo para que nos quede mas claro como funciona. Digamos que queremos hacer una mascota virtual, un bebé dragón. Como la mayoría de los bebés, debe de poder comer, dormir y defecar, lo que significa que necesitaremos poder darle de comer, ponerlo en la cama y pasearlo. Internamente, nuestro dragón necesitara mantener un registro de si esta hambriento, cansado o si tiene que ir al baño, pero no podremos ver eso cuando interactuemos con el dragón, exactamente como pasa con un bebé humano, no podemos preguntarle &#8220;¿Tienes hambre?&#8221;. También le agregaremos otras maneras divertidas para interactuar con nuestro bebé dragón, y cuando nazca le pondremos un nombre. (Lo que sea que pases al nuevo método es pasado también al método <strong>initialize</strong>). Bien, comencemos:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> Dragon
&nbsp;
 	<span style="color:#9966CC; font-weight:bold;">def</span> initialize nombre
		<span style="color:#0066ff; font-weight:bold;">@nombre</span> = nombre
		<span style="color:#0066ff; font-weight:bold;">@dormido</span> = <span style="color:#0000FF; font-weight:bold;">false</span>
		<span style="color:#0066ff; font-weight:bold;">@algoenElEstomago</span> = <span style="color:#006666;">10</span> <span style="color:#008000; font-style:italic;">#	Está lleno</span>
		<span style="color:#0066ff; font-weight:bold;">@algoenElIntestino</span> = <span style="color:#006666;">0</span> <span style="color:#008000; font-style:italic;">#	No tiene que ir al baño</span>
&nbsp;
		<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">' ha nacido.'</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> alimentar
		<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Alimentas a '</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'.'</span>
		<span style="color:#0066ff; font-weight:bold;">@algoenElEstomago</span> = <span style="color:#006666;">10</span>
		tiempoPasa
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> caminar
		<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Haces que '</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">' camine.'</span>
		<span style="color:#0066ff; font-weight:bold;">@algoenElEstomago</span> = <span style="color:#006666;">0</span>
		tiempoPasa
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> acostar
		<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Haces que '</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">' se acueste.'</span>
		<span style="color:#0066ff; font-weight:bold;">@dormido</span> = <span style="color:#0000FF; font-weight:bold;">true</span>
		3.<span style="color:#9900CC;">times</span> <span style="color:#9966CC; font-weight:bold;">do</span>
			<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@dormido</span>
				tiempoPasa
			<span style="color:#9966CC; font-weight:bold;">end</span>
			<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@dormido</span>
				<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">' ronca, llenando la habitacion de humo.'</span>
			<span style="color:#9966CC; font-weight:bold;">end</span>
		<span style="color:#9966CC; font-weight:bold;">end</span>
		<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@dormido</span>
			<span style="color:#0066ff; font-weight:bold;">@dormido</span> = <span style="color:#0000FF; font-weight:bold;">false</span>
			<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">' se esta despertando lentamente.'</span>
		<span style="color:#9966CC; font-weight:bold;">end</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> jugar
		<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Juegas con '</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'.'</span>
		<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">' se rie y quema tus pestañas.'</span>
		tiempoPasa
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> arrullar
		<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Arrullas suavemente a '</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'.'</span>
		<span style="color:#0066ff; font-weight:bold;">@dormido</span> = <span style="color:#0000FF; font-weight:bold;">true</span>
		<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'El se comienza a dormir...'</span>
		tiempoPasa
		<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@dormido</span>
			<span style="color:#0066ff; font-weight:bold;">@dormido</span> = <span style="color:#0000FF; font-weight:bold;">false</span>
			<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'... pero despierta cuando dejas de arrullarlo.'</span>
		<span style="color:#9966CC; font-weight:bold;">end</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	private
&nbsp;
	<span style="color:#008000; font-style:italic;">#	&quot;private&quot; significa que los metodos definidos aqui son</span>
	<span style="color:#008000; font-style:italic;">#	metodos internos del objeto. (Puedes alimentar</span>
	<span style="color:#008000; font-style:italic;">#	al dragon, pero no le puedes preguntar si está hambriento.)</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> hambriento?
		<span style="color:#008000; font-style:italic;">#	Los nombres de los metodos pueden terminar con &quot;?&quot;.</span>
		<span style="color:#008000; font-style:italic;">#	Normalmente, solo hacemos esto si el metodo</span>
		<span style="color:#008000; font-style:italic;">#	regresa un valor de true o false.</span>
		<span style="color:#0066ff; font-weight:bold;">@algoenElEstomago</span> <span style="color:#006600; font-weight:bold;">&lt;</span>= <span style="color:#006666;">2</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> ganasdeir?
		<span style="color:#0066ff; font-weight:bold;">@algoenElIntestino</span> <span style="color:#006600; font-weight:bold;">&gt;</span>= <span style="color:#006666;">8</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> tiempoPasa
		<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@algoenElEstomago</span> <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#006666;">0</span>
			<span style="color:#008000; font-style:italic;">#	Movemos comida del estomago al intestino</span>
			<span style="color:#0066ff; font-weight:bold;">@algoenElEstomago</span>	= <span style="color:#0066ff; font-weight:bold;">@algoenElEstomago</span>		<span style="color:#006600; font-weight:bold;">-</span><span style="color:#006666;">1</span>
			<span style="color:#0066ff; font-weight:bold;">@algoenElIntestino</span>	= <span style="color:#0066ff; font-weight:bold;">@algoenElIntestino</span>	<span style="color:#006600; font-weight:bold;">+</span><span style="color:#006666;">1</span>
		<span style="color:#9966CC; font-weight:bold;">else</span>	<span style="color:#008000; font-style:italic;">#	Nuestro dragon esta hambriento!</span>
			<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@dormido</span>
				<span style="color:#0066ff; font-weight:bold;">@dormido</span> = <span style="color:#0000FF; font-weight:bold;">false</span>
				<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Se despierta de repente!'</span>
			<span style="color:#9966CC; font-weight:bold;">end</span>
			<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">' se esta muriendo de hambre! Se siente desesperado, TE ODIA!!'</span>
			<span style="color:#CC0066; font-weight:bold;">exit</span>	<span style="color:#008000; font-style:italic;">#	Esto hace que termine el programa</span>
		<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
		<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@algoenElIntestino</span> <span style="color:#006600; font-weight:bold;">&gt;</span>= <span style="color:#006666;">10</span>
			<span style="color:#0066ff; font-weight:bold;">@algoenElIntestino</span> = <span style="color:#006666;">0</span>
			<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Ups! '</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">' tuvo un accidente...'</span>
		<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
		<span style="color:#9966CC; font-weight:bold;">if</span> hambriento?
			<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@dormido</span>
				<span style="color:#0066ff; font-weight:bold;">@dormido</span> = <span style="color:#0000FF; font-weight:bold;">false</span>
				<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Se despierta de repente!'</span>
			<span style="color:#9966CC; font-weight:bold;">end</span>
			<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'El estomago de '</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">' esta gruñiendo...'</span>
		<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
		<span style="color:#9966CC; font-weight:bold;">if</span> ganasdeir?
			<span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@dormido</span>
			 	<span style="color:#0066ff; font-weight:bold;">@dormido</span> = <span style="color:#0000FF; font-weight:bold;">false</span>
				<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Se despierta de repente!'</span>
			<span style="color:#9966CC; font-weight:bold;">end</span>
			<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#0066ff; font-weight:bold;">@nombre</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">' comienza a bailar de que no se aguanta las ganas...'</span>
		<span style="color:#9966CC; font-weight:bold;">end</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
mascota = Dragon.<span style="color:#9900CC;">new</span> <span style="color:#996600;">'Norberto'</span>
mascota.<span style="color:#9900CC;">alimentar</span>
mascota.<span style="color:#9900CC;">jugar</span>
mascota.<span style="color:#9900CC;">caminar</span>
mascota.<span style="color:#9900CC;">acostar</span>
mascota.<span style="color:#9900CC;">arrullar</span>
mascota.<span style="color:#9900CC;">acostar</span>
mascota.<span style="color:#9900CC;">acostar</span>
mascota.<span style="color:#9900CC;">acostar</span>
mascota.<span style="color:#9900CC;">acostar</span></pre></td></tr></table></div>

<pre>Norberto ha nacido.
Alimentas a Norberto.
Juegas con Norberto.
Norberto se rie y quema tus pestañas.
Haces que Norberto camine.
Norberto se esta muriendo de hambre! Se siente desesperado, TE ODIA!!</pre>
<p>Sería mejor si fuera un programa interactivo, pero puedes hacer esa parte después. Solo quería mostrar las partes directamente relacionadas con crear una nueva clase llamada dragón.</p>
<p>Vimos unas cuantas cosas nuevas en el ejemplo. La primera es simple: <strong>exit</strong> termina el programa en ese momento. La segunda es la palabra <strong>private</strong> la cual metimos justo en la mitad de la definición de nuestra clase. Podría haberla dejado fuera, pero quería reforzar la idea de que hay ciertos métodos que puedes hacer al dragón, y que hay otros que suceden dentro del dragón. Puedes pensar que estas suceden como cuando uno usa un carro, a no ser que seas un mecánico automotriz, todo lo que necesitas saber es como usar el acelerador, freno y volante. Un programador podría decir que es la interfaz publica de tu carro. Como la bolsa de aire sabe cuando debe de salir, es algo interno del carro; y un usuario normal (conductor) no necesita saber todo esto.</p>
<p>De hecho, para un ejemplo mas concreto, hablemos de como debes de representar un carro en un videojuego. Primero, vas a decidir como quieres que se vea la interfaz publica; en otras palabras, cuales métodos van a poder ser llamados por la gente en uno de tus objetos carro? Van a poder presionar el acelerador y el freno, pero también van a poder especificar que tan fuerte están presionando los pedales. (Hay una gran diferencia entre presionarlo ligeramente y a fondo.) También van a necesitar el volante, y una vez mas, van a necesitar decir que tan fuerte están girando el volante. Y, si quieres ir un poco mas lejos, agregamos el clutch, intermitentes, direccionales, lanzacohetes, nitro, capacitor de flujo, etc&#8230; depende de que tipo de juego estés haciendo.</p>
<p>De manera interna en un carro, van a estar sucediendo muchísimo mas cosas que esas; otras cosas que un carro necesita son la velocidad, dirección y la posición. Estos atributos podrían ser modificados presionando el acelerador o el freno y girando el volante, pero el usuario no podría poner la posición directamente (sería como teletransportarse). También podrías tener un registro de los daños, si se te poncho una llanta, etc. Estos serían internos a tu objeto carro.</p>
<p><strong>Algunas cosas para intentar</strong></p>
<ul>
<li>Haz una clase <strong>ArbolDeNaranjas</strong>. Debe de tener un método altura, que nos regrese la altura, y un método <strong>pasanDoceMeses</strong>, que, cuando es llamado, hace que el árbol envejezca un año. Cada año que pasa el árbol crece (el tiempo que consideres que un árbol de naranjas crece en un año), y después de un cierto numero de años (también decidelo tu) el árbol debe morir. En los primeros años no debe de producir fruta, pero después de un tiempo debe de hacerlo, y entre mas años tenga el árbol, debe de producir mas naranjas que uno mas joven. Y, por supuesto, uno debe de poder <strong>contarLasNaranjas</strong> (que nos regresa el numero de naranjas en el árbol), y <strong>recojerUnaNaranja</strong> (reduce el <strong>@numeroDeNaranjas</strong> de uno en uno, y nos regresa una cadena diciendonos cuantas naranjas quedan, o si ya no hay, que nos diga que ya no quedan mas naranjas para este año). Asegurate que las naranjas que no recojas un año, se caigan antes del año siguiente.</li>
<li>Escribe un programa para que puedas interactuar con tu bebé dragón. Vas a poder escribir comandos como <strong>alimentar</strong> y <strong>caminar</strong>, y que esos comandos manden llamar los métodos de tu dragón. Por supuesto, como lo que vas a escribir son cadenas, vas a tener que escribir algún método que dirija, donde el programa revise cual cadena fue escrita y llame el método apropiado.</li>
<li>Y eso sería todo respecto a este tema&#8230; Excepto que no he mencioné las clases para hacer cosas como mandar un correo, guardar y cargar archivos en la computadora, como crear ventanas y botones, o mundos en 3D o cualquier otra cosa! Bueno, es que hay tantas clases que puedes usar que no es posible que te enseñe todas; ni siquiera se que es lo que hacen la mayoría de ellas. Lo que puedo decirte es donde encontrar mas sobre ellas, para que puedas aprender sobre las que quieres usar al programar. Aunque antes de mandarte a ellas, hay otra característica de Ruby de la que debes de saber, algo que la mayoría de lenguajes no tiene pero que yo sin ellas no podría vivir: bloques y procedimientos.</li>
</ul>
<p>© 2003-2009 Chris Pine</p>
<p><a href="http://www.pragprog.com/titles/ltp2/learn-to-program-2nd-edition"><img class="aligncenter size-full wp-image-196" title="Learn to Program, by Chris Pine" src="http://www.geekcolima.com/wp-content/uploads/2009/02/ltp2.jpg" alt="Learn to Program, by Chris Pine" width="190" height="228" /></a></p>
<h3  class="related_post_title">Articulos Relacionados:</h3><ul class="related_post"><li><a href="http://www.geekcolima.com/2009/05/13/8-escribe-tus-propios-metodos/" title="Aprende a programar, 8. Escribe tus propios métodos">Aprende a programar, 8. Escribe tus propios métodos</a> (0)</li><li><a href="http://www.geekcolima.com/2009/04/21/7-arreglos-e-iteraciones/" title="Aprende a programar, 7. Arreglos e iteraciones">Aprende a programar, 7. Arreglos e iteraciones</a> (0)</li><li><a href="http://www.geekcolima.com/2009/04/15/6-control-de-flujo/" title="Aprende a programar, 6. Control de Flujo">Aprende a programar, 6. Control de Flujo</a> (1)</li><li><a href="http://www.geekcolima.com/2009/04/07/5-mas-de-los-metodos/" title="Aprende a programar, 5. Mas de los métodos">Aprende a programar, 5. Mas de los métodos</a> (1)</li><li><a href="http://www.geekcolima.com/2009/03/27/4-mezclando-todo/" title="Aprende a programar, 4. Mezclando todo">Aprende a programar, 4. Mezclando todo</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.geekcolima.com/2009/08/25/9-clases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Colima Digital: La mejor foto de Mayo</title>
		<link>http://www.geekcolima.com/2009/06/10/colima-digital-la-mejor-foto-de-mayo/</link>
		<comments>http://www.geekcolima.com/2009/06/10/colima-digital-la-mejor-foto-de-mayo/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 23:51:04 +0000</pubDate>
		<dc:creator>Ruben</dc:creator>
				<category><![CDATA[Colima Digital]]></category>
		<category><![CDATA[Colima]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Fotografias]]></category>

		<guid isPermaLink="false">http://www.geekcolima.com/?p=373</guid>
		<description><![CDATA[Una vez mas, se eligió la mejor foto del mes en Colima Digital (aquí tienen la de Marzo y Abril). Para mayo la foto ganadora fue de Victor de la Rocha con:
Desde el Cerro de La Cumbre //
No se olviden de visitar Mis-Algoritmos, que también es la página personal de Victor de la Rocha en [...]]]></description>
			<content:encoded><![CDATA[<p>Una vez mas, se eligió la mejor foto del mes en <a href="http://www.flickr.com/groups/colimadigital/">Colima Digital</a> (aquí tienen la de <a href="http://www.geekcolima.com/2009/04/20/colima-digital-la-mejor-foto-de-marzo/">Marzo</a> y <a href="http://www.geekcolima.com/2009/05/13/colima-digital-la-mejor-foto-de-abril/">Abril</a>). Para mayo la foto ganadora fue de <a href="http://www.flickr.com/photos/victorrocha/">Victor de la Rocha</a> con:</p>
<p><strong><center><a href="http://www.flickr.com/photos/victorrocha/3568680974/" title="Desde el Cerro de La Cumbre // by Victor De la Rocha, Colima., on Flickr">Desde el Cerro de La Cumbre //<img src="http://farm4.static.flickr.com/3364/3568680974_00b5265425.jpg" width="500" height="334" alt="Desde el Cerro de La Cumbre //" /></a></center></strong></p>
<p>No se olviden de visitar <a href="http://mis-algoritmos.com/">Mis-Algoritmos</a>, que también es la página personal de Victor de la Rocha en la que nos ilustra con sus genialidades como programador.</p>
<h3  class="related_post_title">Articulos Relacionados:</h3><ul class="related_post"><li><a href="http://www.geekcolima.com/2009/05/13/colima-digital-la-mejor-foto-de-abril/" title="Colima Digital: La mejor foto de Abril">Colima Digital: La mejor foto de Abril</a> (1)</li><li><a href="http://www.geekcolima.com/2009/04/20/colima-digital-la-mejor-foto-de-marzo/" title="Colima Digital: La mejor foto de Marzo">Colima Digital: La mejor foto de Marzo</a> (1)</li><li><a href="http://www.geekcolima.com/2008/10/02/atencion-linuxeros-de-colima/" title="Atencion Linuxeros de Colima">Atencion Linuxeros de Colima</a> (0)</li><li><a href="http://www.geekcolima.com/2008/09/30/ecos-de-la-costa/" title="Paginas de Colima: Ecos de la Costa">Paginas de Colima: Ecos de la Costa</a> (0)</li><li><a href="http://www.geekcolima.com/2008/09/17/diario-de-colima/" title="Paginas de Colima: Diario de Colima">Paginas de Colima: Diario de Colima</a> (4)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.geekcolima.com/2009/06/10/colima-digital-la-mejor-foto-de-mayo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.957 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-14 07:32:02 -->
