<?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>Michael Gomez &#187; Programacion</title>
	<atom:link href="http://www.donubu.com/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.donubu.com</link>
	<description>Actualidad y Negocios</description>
	<lastBuildDate>Mon, 04 Apr 2011 21:33:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Nivea Silvermoto</title>
		<link>http://www.donubu.com/2010/02/26/nivea-silvermoto/</link>
		<comments>http://www.donubu.com/2010/02/26/nivea-silvermoto/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 15:09:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[juegos]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[amfphp]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[iones]]></category>
		<category><![CDATA[juego]]></category>
		<category><![CDATA[moto]]></category>
		<category><![CDATA[nivea]]></category>
		<category><![CDATA[participa]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[silver]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=307</guid>
		<description><![CDATA[Nueva campaña para Nivea SilverMoto. Participa en el juego de los IONES y ganate uno de los pack o afeitadoras diarias. Si durante el juego invitas a uno de tus amigos, podrás obtener de forma automática 5 oportunidades más seguir jugando. Desarrollado con actionscript 3 + Flash + AMFPHP para el backend de la aplicación. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.silvermoto.cl" target="_blank"><img class="aligncenter size-medium wp-image-308" title="silvermoto" src="http://www.donubu.com/wp-content/uploads/silvermoto-300x105.jpg" alt="" width="300" height="105" /></a></p>
<p>Nueva campaña para <a href="http://www.silvermoto.cl/" target="_blank">Nivea SilverMoto</a>. Participa en el juego de los IONES y ganate uno de los pack o afeitadoras diarias. Si durante el juego invitas a uno de tus amigos, podrás obtener de forma automática 5 oportunidades más seguir jugando.<br />
Desarrollado con actionscript 3 + Flash + AMFPHP para el backend de la aplicación.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2010/07/14/de-vuelta-luego-de-muchas-campanas-mas/" title="De vuelta luego de muchas campañas más">De vuelta luego de muchas campañas más</a></li><li><a href="http://www.donubu.com/2009/12/29/ya-llego-el-crush-power-music-2010/" title="Ya llego el Crush Power Music 2010">Ya llego el Crush Power Music 2010</a></li><li><a href="http://www.donubu.com/2010/01/27/oportunidad-digital-fotografia/" title="Oportunidad Digital &#8220;Fotografía&#8221;">Oportunidad Digital &#8220;Fotografía&#8221;</a></li><li><a href="http://www.donubu.com/2009/11/13/eucerin-solar-httpwww-eucerinsolar-com/" title="Eucerin Solar http://www.eucerinsolar.com">Eucerin Solar http://www.eucerinsolar.com</a></li><li><a href="http://www.donubu.com/2009/11/10/eucerin-kids-httpwww-eucerinkids-com/" title="Eucerin Kids http://www.eucerinkids.com">Eucerin Kids http://www.eucerinkids.com</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2010/02/26/nivea-silvermoto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurar bw_mod dentro de CPANEL</title>
		<link>http://www.donubu.com/2010/02/23/configurar-bw_mod-dentro-de-cpanel/</link>
		<comments>http://www.donubu.com/2010/02/23/configurar-bw_mod-dentro-de-cpanel/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 16:09:11 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[administracion]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[panel]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[ancho de banda]]></category>
		<category><![CDATA[apxs]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[cpanel]]></category>
		<category><![CDATA[httpd]]></category>
		<category><![CDATA[limitar]]></category>
		<category><![CDATA[mod_bw]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=297</guid>
		<description><![CDATA[Estuve investigando hace algunos días atrás la posibilidad de limitar cierto tráfico (http) hacia los servidores de la agencia en la cual trabajo (como coordinador de desarrollo) y luego de intentarlo varias veces sin éxito, me topé con un MOD para apache desarrollado por Bruce (Iván Barrera) . Para poder realizar este tutorial, debes tener [...]]]></description>
			<content:encoded><![CDATA[<p>Estuve investigando hace algunos días atrás la posibilidad de limitar cierto tráfico (http) hacia los servidores de la agencia en la cual trabajo (como coordinador de desarrollo) y luego de intentarlo varias veces sin éxito, me topé con un MOD para apache desarrollado por <a href="http://ivn.cl/" target="_blank">Bruce (Iván Barrera) </a> .</p>
<p>Para poder realizar este tutorial, debes tener permisos de ROOT sobre el servidor con CPANEL que estes utilizando.</p>
<p>Lo primero que tuve que hacer fue descargarme el código fuente actual (<a href="http://ivn.cl/files/source/mod_bw-0.8.tgz" target="_blank">mod_bw v0.8 – Source Code</a>) hacia el servidor, y luego correr el comando (Ojo que la instalación la saqué directamente del <a href="http://legacy.ivn.cl/files/txt/mod_bw-0.8.txt" target="_blank">Readme adjunto con el código de fuente</a>):<span id="more-297"></span></p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">apxs -i -a -c mod_bw.c
<span style="color: #adadad; font-style: italic;">#o bien</span>
apxs2 -i -a -c mod_bw.c</pre></div></div>

<p>Automáticamente, el archivo httpd.conf ( /usr/local/apache/conf/httpd.conf )  será modificado y aparecerá la línea de configuración:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">LoadModule</span> bw_module modules/mod_bw.so</pre></div></div>

<p>Posteriormente reinicia el servicio httpd (ya sea por consola o bien por el administrador WHM en Restart Services &gt; Httpd Server</p>
<p>Una vez reiniciado, necesitamos especificar las políticas de límites en las conexiones, para ello, es necesario agregar parametros dentro de los virtualhosts de apache. En Cpanel, la única forma de poder hacerlo, es crear includes dentro de una estructura de carpetas reconocidas por la aplicación (ya que el bloque de código que utiliza se genera de forma automática). <a href="http://www.cpanel.net/documentation/easyapache/customdirectives.html" target="_blank">En este link está el modelo que sigue la aplicación</a>.</p>
<p>La estructura a crear es sencilla</p>

<div class="wp_syntax"><div class="code"><pre class="linux" style="font-family:monospace;">/usr/local/apache/conf/userdata/std/2/X_USUARIO_X/X_DOMINIO_X</pre></div></div>

<p>Lo que necesitamos es conocer el nombre de usuario y el dominio que vamos a limitar. En este caso y a modo de ejemplo el usuario es donubu y el dominio donubu.com</p>
<p>En la consola de linux ejecutamos el comando:</p>

<div class="wp_syntax"><div class="code"><pre class="linux" style="font-family:monospace;">mkdir -p /usr/local/apache/conf/userdata/std/2/donubu/donubu.com</pre></div></div>

<p>y si se fijan, utilice los datos anteriores al final de la estructura de carpetas que cree.</p>
<p>Luego, debo entrar a esas carpetas y crear un archivo .conf en este caso lo llamé limit.conf</p>

<div class="wp_syntax"><div class="code"><pre class="linux" style="font-family:monospace;">cd /usr/local/apache/conf/userdata/std/2/donubu/donubu.com
touch limit.conf
nano limit.conf</pre></div></div>

<p>y pegue dentro una regla sencilla:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">BandWidthModule</span> <span style="color: #0000ff;">On</span>
<span style="color: #00007f;">ForceBandWidthModule</span> <span style="color: #0000ff;">On</span>
<span style="color: #00007f;">LargeFileLimit</span> .rar <span style="color: #ff0000;">500</span> <span style="color: #ff0000;">50000</span></pre></div></div>

<p>Que enciende el mod_bw , y forza todas las descargas de archivos terminados en .rar que pesen mas de 500kb a una velocidad de 50kbs en promedio.</p>
<p>Hasta el momento tenemos el modulo instalado, la regla creada y sólo nos falta indicarle a Apache que hemos modificado el archivo de configuración y que necesita actualizarlo. Para esto ejecutamos en consola:</p>

<div class="wp_syntax"><div class="code"><pre class="linux" style="font-family:monospace;">/usr/local/cpanel/bin/apache_conf_distiller --update
/scripts/rebuildhttpdconf</pre></div></div>

<p>Si todo va bien, verás el mensaje de confirmación, sino, te indicará el error asociado. Finalmente, y como recomendación, reiniciar nuevamente el servicio Httpd.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2008/05/16/tutorial-3-limitar-descargas-con-php-y-mysql-descargas-simultaneas-y-velocidad-de-bajada/" title="Tutorial 3: Limitar Descargas con PHP y MySQL &#8211; descargas simultaneas y velocidad de bajada">Tutorial 3: Limitar Descargas con PHP y MySQL &#8211; descargas simultaneas y velocidad de bajada</a></li><li><a href="http://www.donubu.com/2008/01/02/administracion-servidor-web-y-de-aplicacion/" title="Paneles de Administración de Servidores">Paneles de Administración de Servidores</a></li><li><a href="http://www.donubu.com/2009/01/30/programacion-en-php-migrar-de-entornos-de-desarrollo-a-productivos/" title="Programacion en PHP, migrar de entornos de desarrollo a productivos">Programacion en PHP, migrar de entornos de desarrollo a productivos</a></li><li><a href="http://www.donubu.com/2009/01/07/instalar-cakephp-desde-0-y-configurar-la-consola-en-windows/" title="Instalar Cakephp desde 0 y configurar la consola en windows">Instalar Cakephp desde 0 y configurar la consola en windows</a></li><li><a href="http://www.donubu.com/2008/09/15/vbnet-utilizar-un-listview-para-desplegar-datos/" title="VB.NET &#8211; Utilizar un Listview para desplegar datos">VB.NET &#8211; Utilizar un Listview para desplegar datos</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2010/02/23/configurar-bw_mod-dentro-de-cpanel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oportunidad Digital &#8220;Fotografía&#8221;</title>
		<link>http://www.donubu.com/2010/01/27/oportunidad-digital-fotografia/</link>
		<comments>http://www.donubu.com/2010/01/27/oportunidad-digital-fotografia/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 13:24:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[digital]]></category>
		<category><![CDATA[falabella]]></category>
		<category><![CDATA[fotografia]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[oportunidad]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=286</guid>
		<description><![CDATA[Hace algunos días se entrego el nuevo sitio para Oportunidad Digital &#8220;Fotografía&#8221;. Desarrollado en HTML + CSS y harto Javascript de la mano de jQuery. Se aplico un sistema de &#8220;filtros inteligentes&#8221;, que van apareciendo de acuerdo a los resultados que van quedando y agrupandose de acuerdo al mismo parámetro y luego son entregados a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oportunidaddigital.cl" target="_blank"><img class="aligncenter size-medium wp-image-287" title="oportunidaddigital" src="http://www.donubu.com/wp-content/uploads/op-300x196.jpg" alt="" width="300" height="196" /></a><br />
Hace algunos días se entrego el nuevo sitio para <a href="http://www.oportunidaddigital.cl">Oportunidad Digital &#8220;Fotografía&#8221;</a>. Desarrollado en HTML + CSS y harto Javascript de la mano de jQuery. Se aplico un sistema de &#8220;filtros inteligentes&#8221;, que van apareciendo de acuerdo a los resultados que van quedando y agrupandose de acuerdo al mismo parámetro y luego son entregados a la aplicación Flash que controla la aplicación paso a paso.</p>
<p>El slider de productos se forma a través de una respuesta JSON, que se genera en cada clic sobre los botones de avanzar y retroceder, y una vez que cargan, se desliza una mascara para dar el efecto de slide.</p>
<p>También se reprogramo un sistema de ventanas modales &#8220;<a href="http://fancybox.net/" target="_blank">Fancybox</a>&#8221; para poder implementar 2 hojas de estilo en la misma ventana modal (para las imagenes del fondo y bordes).</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2010/07/14/de-vuelta-luego-de-muchas-campanas-mas/" title="De vuelta luego de muchas campañas más">De vuelta luego de muchas campañas más</a></li><li><a href="http://www.donubu.com/2009/12/29/ya-llego-el-crush-power-music-2010/" title="Ya llego el Crush Power Music 2010">Ya llego el Crush Power Music 2010</a></li><li><a href="http://www.donubu.com/2009/07/10/vibora-2-0-con-twitter-connect/" title="Vibora 2.0 con Twitter Connect">Vibora 2.0 con Twitter Connect</a></li><li><a href="http://www.donubu.com/2009/03/11/jquery-lectura-y-procesamiento-de-archivos-json/" title="JQuery &#8211; Lectura y Procesamiento de Archivos JSON">JQuery &#8211; Lectura y Procesamiento de Archivos JSON</a></li><li><a href="http://www.donubu.com/2008/04/13/htmlsql-un-parser-sql-para-archivos-html/" title="htmlSQL &#8211; Un parser SQL para archivos HTML">htmlSQL &#8211; Un parser SQL para archivos HTML</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2010/01/27/oportunidad-digital-fotografia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ya llego el Crush Power Music 2010</title>
		<link>http://www.donubu.com/2009/12/29/ya-llego-el-crush-power-music-2010/</link>
		<comments>http://www.donubu.com/2009/12/29/ya-llego-el-crush-power-music-2010/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 15:07:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[amfphp]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[crush]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[mayo]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[power]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=283</guid>
		<description><![CDATA[Ya esta al aire el sitio web del Crush Power Music 2010. Desarrollado para MayoDraft con HTML + CSS  + JS y por supuesto con el sistema de votaciones en Flash CS4 con ActionScript3 y AMFPHP. Articulos RelacionadosDe vuelta luego de muchas campañas másNivea SilvermotoOportunidad Digital &#8220;Fotografía&#8221;htmlSQL &#8211; Un parser SQL para archivos HTMLMicrosoft Silverlight [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.crushpowermusic.com/" target="_blank"><img class="aligncenter size-full wp-image-284" title="Crush Power Music" src="http://www.donubu.com/wp-content/uploads/cpm_sc.JPG" alt="Crush Power Music" width="383" height="243" /></a></p>
<div class="limpiar"></div>
<p>Ya esta al aire el <a href="http://www.crushpowermusic.com/" target="_blank">sitio web del Crush Power Music 2010</a>. Desarrollado para <a href="http://www.mayopublicidad.cl" target="_blank">MayoDraft</a> con HTML + CSS  + JS y por supuesto con el sistema de votaciones en Flash CS4 con ActionScript3 y AMFPHP.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2010/07/14/de-vuelta-luego-de-muchas-campanas-mas/" title="De vuelta luego de muchas campañas más">De vuelta luego de muchas campañas más</a></li><li><a href="http://www.donubu.com/2010/02/26/nivea-silvermoto/" title="Nivea Silvermoto">Nivea Silvermoto</a></li><li><a href="http://www.donubu.com/2010/01/27/oportunidad-digital-fotografia/" title="Oportunidad Digital &#8220;Fotografía&#8221;">Oportunidad Digital &#8220;Fotografía&#8221;</a></li><li><a href="http://www.donubu.com/2008/04/13/htmlsql-un-parser-sql-para-archivos-html/" title="htmlSQL &#8211; Un parser SQL para archivos HTML">htmlSQL &#8211; Un parser SQL para archivos HTML</a></li><li><a href="http://www.donubu.com/2008/04/11/microsoft-silverlight-vs-adobe-flex/" title="Microsoft Silverlight VS Adobe Flex">Microsoft Silverlight VS Adobe Flex</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2009/12/29/ya-llego-el-crush-power-music-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSGB Emulador gameboy en Javascript</title>
		<link>http://www.donubu.com/2009/11/03/jsgb-emulador-gameboy-en-javascript/</link>
		<comments>http://www.donubu.com/2009/11/03/jsgb-emulador-gameboy-en-javascript/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 13:59:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[browser]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[nintendo]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[emulador]]></category>
		<category><![CDATA[gameboy]]></category>
		<category><![CDATA[gb]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[juegos]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=265</guid>
		<description><![CDATA[Aunque suene totalmente &#8220;extraño&#8221;, Pedro Ladaria ha desarrollado un emulador de juegos Gameboy (.gb) con Javascript, utilizando todo el potencial de este lenguaje. Si deseas testear los resultados, te recomiento que utilices Google Chrome. Para ver la demo http://www.codebase.es/jsgb/ Articulos RelacionadosVibora 2.0 con Twitter ConnectDe vuelta luego de muchas campañas másOportunidad Digital &#8220;Fotografía&#8221;Open Flash Chart, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-266" style="float:left; margin: 4px;" title="gameboy" src="http://www.donubu.com/wp-content/uploads/gameboy-265x300.jpg" alt="gameboy" width="180" height="204" />Aunque suene totalmente &#8220;extraño&#8221;, Pedro Ladaria ha desarrollado un emulador de juegos Gameboy (.gb) con Javascript, utilizando todo el potencial de este lenguaje. Si deseas testear los resultados, te recomiento que utilices <a href="http://www.google.cl/chrome" target="_blank">Google Chrome</a>.</p>
<p>Para ver la demo <a href="http://www.codebase.es/jsgb/" target="_blank">http://www.codebase.es/jsgb/</a></p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2009/07/10/vibora-2-0-con-twitter-connect/" title="Vibora 2.0 con Twitter Connect">Vibora 2.0 con Twitter Connect</a></li><li><a href="http://www.donubu.com/2010/07/14/de-vuelta-luego-de-muchas-campanas-mas/" title="De vuelta luego de muchas campañas más">De vuelta luego de muchas campañas más</a></li><li><a href="http://www.donubu.com/2010/01/27/oportunidad-digital-fotografia/" title="Oportunidad Digital &#8220;Fotografía&#8221;">Oportunidad Digital &#8220;Fotografía&#8221;</a></li><li><a href="http://www.donubu.com/2008/01/22/open-flash-chart-graficosn/" title="Open Flash Chart, Crea Gráficos con Flash">Open Flash Chart, Crea Gráficos con Flash</a></li><li><a href="http://www.donubu.com/2008/01/18/generador-sitemaps-online/" title="Generador de Sitemaps">Generador de Sitemaps</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2009/11/03/jsgb-emulador-gameboy-en-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validar Emails con PHP de forma segura y eficiente</title>
		<link>http://www.donubu.com/2009/10/28/validar-emails-con-php-de-forma-segura-y-eficiente/</link>
		<comments>http://www.donubu.com/2009/10/28/validar-emails-con-php-de-forma-segura-y-eficiente/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 14:43:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[check]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[mx]]></category>
		<category><![CDATA[validar]]></category>
		<category><![CDATA[validate]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=261</guid>
		<description><![CDATA[He buscado y buscado desde que comence a programar en PHP, la mejor manera de comprobar si un email es válido o no, y si esta bien escrito y además que sea de un dominio válido con sus DNS y registros MX correctos. En fin, sonaba imposible, pero navegando y googleando, encontré la solución: function [...]]]></description>
			<content:encoded><![CDATA[<p>He buscado y buscado desde que comence a programar en PHP, la mejor manera de comprobar si un email es válido o no, y si esta bien escrito y además que sea de un dominio válido con sus DNS y registros MX correctos. En fin, sonaba imposible, pero navegando y googleando, encontré la solución:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> validateMail<span style="color: #009900;">&#40;</span><span style="color: #000088;">$email</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		   <span style="color: #000088;">$isValid</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
		   <span style="color: #000088;">$atIndex</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strrpos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$email</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'@'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		   <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">is_bool</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$atIndex</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #000088;">$atIndex</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		      <span style="color: #000088;">$isValid</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		   <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
		      <span style="color: #000088;">$domain</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$email</span><span style="color: #339933;">,</span> <span style="color: #000088;">$atIndex</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		      <span style="color: #000088;">$local</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$email</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$atIndex</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		      <span style="color: #000088;">$localLen</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$local</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		      <span style="color: #000088;">$domainLen</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$domain</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$localLen</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">1</span> <span style="color: #339933;">||</span> <span style="color: #000088;">$localLen</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">64</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		         <span style="color: #000088;">$isValid</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		      <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$domainLen</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">1</span> <span style="color: #339933;">||</span> <span style="color: #000088;">$domainLen</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">255</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		         <span style="color: #000088;">$isValid</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		      <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$local</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'.'</span> <span style="color: #339933;">||</span> <span style="color: #000088;">$local</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$localLen</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		         <span style="color: #000088;">$isValid</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		      <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/\\.\\./'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$local</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		         <span style="color: #000088;">$isValid</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		      <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^[A-Za-z0-9\\-\\.]+$/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$domain</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		         <span style="color: #000088;">$isValid</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		      <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/\\.\\./'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$domain</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		         <span style="color: #000088;">$isValid</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		      <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^(\\\\.|[A-Za-z0-9!#%&amp;`_=\\/$\'*+?^{}|~.-])+$/'</span><span style="color: #339933;">,</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$local</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		         <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/^&quot;(\\\\&quot;|[^&quot;])+&quot;$/'</span><span style="color: #339933;">,</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\\</span><span style="color: #000099; font-weight: bold;">\\</span>&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$local</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		            <span style="color: #000088;">$isValid</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		         <span style="color: #009900;">&#125;</span>
		      <span style="color: #009900;">&#125;</span>
		      <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$isValid</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">checkdnsrr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$domain</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'MX'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #990000;">checkdnsrr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$domain</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'A'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		         <span style="color: #000088;">$isValid</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		      <span style="color: #009900;">&#125;</span>
		   <span style="color: #009900;">&#125;</span>
&nbsp;
		   <span style="color: #b1b100;">return</span> <span style="color: #000088;">$isValid</span><span style="color: #339933;">;</span>						
		<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">// Para implementarlo</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>validateMail<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'algun@email.com'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'email valido'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'email no valido'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Aplica cosas básicas como comprobar la existencia del @, además de RFC para el largo máximo permitido por el estándar y expresiones regulares para validar los simbolos. Y por si fuese poco, chequea que el dominio exista (A) y que sus MX sean válidos.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2010/07/14/de-vuelta-luego-de-muchas-campanas-mas/" title="De vuelta luego de muchas campañas más">De vuelta luego de muchas campañas más</a></li><li><a href="http://www.donubu.com/2010/02/26/nivea-silvermoto/" title="Nivea Silvermoto">Nivea Silvermoto</a></li><li><a href="http://www.donubu.com/2010/01/27/oportunidad-digital-fotografia/" title="Oportunidad Digital &#8220;Fotografía&#8221;">Oportunidad Digital &#8220;Fotografía&#8221;</a></li><li><a href="http://www.donubu.com/2009/11/13/eucerin-solar-httpwww-eucerinsolar-com/" title="Eucerin Solar http://www.eucerinsolar.com">Eucerin Solar http://www.eucerinsolar.com</a></li><li><a href="http://www.donubu.com/2009/10/28/tips-cakephp/" title="Tips cakePHP">Tips cakePHP</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2009/10/28/validar-emails-con-php-de-forma-segura-y-eficiente/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tips cakePHP</title>
		<link>http://www.donubu.com/2009/10/28/tips-cakephp/</link>
		<comments>http://www.donubu.com/2009/10/28/tips-cakephp/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 13:31:57 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[ayuda]]></category>
		<category><![CDATA[controlador]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[modelo]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[views]]></category>
		<category><![CDATA[vistas]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=256</guid>
		<description><![CDATA[Quiero recopilar todos los tips (que me acuerdo) de cakePHP, aquellos que nos ayudan a realizar tareas cotidianas y evitar tener que recurrir constantemente a google para poder encontrarlo. Desde un controlador: Cambiar el layout $this-&#62;layout = 'nombre_del_layout'; Cambiar la cantidad de resultados del paginador var $paginate = array&#40;'limit'=&#62; 1000&#41;;  // Definirlo como atributo del [...]]]></description>
			<content:encoded><![CDATA[<p>Quiero recopilar todos los tips (que me acuerdo) de cakePHP, aquellos que nos ayudan a realizar tareas cotidianas y evitar tener que recurrir constantemente a google para poder encontrarlo.</p>
<p><strong>Desde un controlador:</strong></p>
<p><em><strong>Cambiar el layout</strong></em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">layout</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'nombre_del_layout'</span><span style="color: #339933;">;</span></pre></div></div>

<p><em><strong>Cambiar la cantidad de resultados del paginador</strong></em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$paginate</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'limit'</span><span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// Definirlo como atributo del controlador y no dentro de un metodo.</span></pre></div></div>

<p><em><strong>Obtener uno o todos los parametros que vienen por la URL</strong></em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">params</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'nombre-del-parametro'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
pr<span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">params</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//La funcion pr es similar a print_r aunque con mas estilo, además, está disponible en cualquier archivo que dependa de cakePHP.</span></pre></div></div>

<p><em><strong>Activar el conector con la base de datos</strong></em></p>
<p><em>Esta práctica atenta contra el modelo MVC, por lo cual, si lo usas debe ser en casos muy aislados.</em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">uses<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'model/connection_manager'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Agregarlo antes de la definicion de Class...</span>
<span style="color: #000088;">$db</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span> ConnectionManager<span style="color: #339933;">::</span><span style="color: #004000;">getDataSource</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'default'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// dentro de un modelo del controlador</span>
<span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Select * from X'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><em><strong>Redireccion a X lugar</strong></em></p>
<p><em>Para mantener el controlador y solo redireccionar el metodo:</em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">redirect</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'action'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'index'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><em>Para cambiar el controlador y el metodo</em></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">redirect</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'controller'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'users'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'action'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'index'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><em>Al utilizar el array como parametro, se aplica la Inversa del ROUTES, por ende, si defines que el users/index sea usuarios.html, entonces, la redireccion va a ser contra usuarios.html.</em></p>
<p>En fin, voy a extender y actualizar este post mientras vaya recopilando mas TIPS.<em><br />
</em></p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2007/12/29/cakephp-introduccion/" title="CakePHP: un buen pastel de chocolate">CakePHP: un buen pastel de chocolate</a></li><li><a href="http://www.donubu.com/2009/01/30/programacion-en-php-migrar-de-entornos-de-desarrollo-a-productivos/" title="Programacion en PHP, migrar de entornos de desarrollo a productivos">Programacion en PHP, migrar de entornos de desarrollo a productivos</a></li><li><a href="http://www.donubu.com/2009/01/07/instalar-cakephp-desde-0-y-configurar-la-consola-en-windows/" title="Instalar Cakephp desde 0 y configurar la consola en windows">Instalar Cakephp desde 0 y configurar la consola en windows</a></li><li><a href="http://www.donubu.com/2010/07/14/de-vuelta-luego-de-muchas-campanas-mas/" title="De vuelta luego de muchas campañas más">De vuelta luego de muchas campañas más</a></li><li><a href="http://www.donubu.com/2010/02/26/nivea-silvermoto/" title="Nivea Silvermoto">Nivea Silvermoto</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2009/10/28/tips-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dondeestaelvoto.com</title>
		<link>http://www.donubu.com/2009/09/22/dondeestaelvoto-com/</link>
		<comments>http://www.donubu.com/2009/09/22/dondeestaelvoto-com/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 18:30:15 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[ocio]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[arrate]]></category>
		<category><![CDATA[frei]]></category>
		<category><![CDATA[meo]]></category>
		<category><![CDATA[navarro]]></category>
		<category><![CDATA[piñera]]></category>
		<category><![CDATA[politica]]></category>
		<category><![CDATA[voto]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=251</guid>
		<description><![CDATA[Ayúdanos a encontrar donde está el voto. Será para Piñera, Frei, Marco Enriquez, Navarro o Arrate?. El sitio está completamente desarrollado sobre cakePHP y utiliza jQuery para la carga de Ajax. Posee también la posibilidad de mostrar los resultados mientras se hace scroll de la página. http://www.dondeestaelvoto.com Articulos RelacionadosSin Articulos Relacionados]]></description>
			<content:encoded><![CDATA[<p>Ayúdanos a encontrar <a href="http://www.dondeestaelvoto.com/" target="_blank">donde está el voto</a>. Será para Piñera, Frei, Marco Enriquez, Navarro o Arrate?. El sitio está completamente desarrollado sobre cakePHP y utiliza jQuery para la carga de Ajax. Posee también la posibilidad de mostrar los resultados mientras se hace scroll de la página.</p>
<p><img class="aligncenter size-medium wp-image-252" title="dondeesta" src="http://www.donubu.com/wp-content/uploads/dondeesta-300x255.jpg" alt="dondeesta" width="300" height="255" /></p>
<div class="limpiar"></div>
<p style="text-align: center;"><a href="http://www.dondeestaelvoto.com/" target="_blank">http://www.dondeestaelvoto.com</a></p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li>Sin Articulos Relacionados</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2009/09/22/dondeestaelvoto-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vibora 2.0 con Twitter Connect</title>
		<link>http://www.donubu.com/2009/07/10/vibora-2-0-con-twitter-connect/</link>
		<comments>http://www.donubu.com/2009/07/10/vibora-2-0-con-twitter-connect/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 22:13:17 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[juegos]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[fabbianz]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[juego]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[vibora]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=247</guid>
		<description><![CDATA[Via twitter me entero que se viene esta web y de paso, dejan un juego para entretenerse un rato. Se trata de la famosa vibora, aquella que teniamos en nuestros 386, 486, celulares, gameboys, tetris, etc.. pero ahora portado a una versión web. Lo interesante, es que mientras jugamos podemos postear nuestros scores dentro de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://vibora.diserrollador.com/" target="_blank"><img class="aligncenter size-medium wp-image-248" title="logo" src="http://www.donubu.com/wp-content/uploads/logo-300x114.png" alt="logo" width="300" height="114" /></a>Via twitter me entero que se viene esta web y de paso, dejan un juego para entretenerse un rato. Se trata de <a href="http://vibora.diserrollador.com/" target="_blank">la famosa vibora</a>, aquella que teniamos en nuestros 386, 486, celulares, gameboys, tetris, etc.. pero ahora portado a una versión web. Lo interesante, es que mientras jugamos podemos postear nuestros scores dentro de twitter y quedar así en el salón de la fama.</p>
<p>Para entrar al juego pueden <a href="http://vibora.diserrollador.com/" target="_blank">acceder por acá</a>.</p>
<p><a href="http://twitter.com/fabbianz" target="_blank">Los invito a jugar la #vibora gracias a @fabbianz</a></p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2010/01/27/oportunidad-digital-fotografia/" title="Oportunidad Digital &#8220;Fotografía&#8221;">Oportunidad Digital &#8220;Fotografía&#8221;</a></li><li><a href="http://www.donubu.com/2009/11/03/jsgb-emulador-gameboy-en-javascript/" title="JSGB Emulador gameboy en Javascript">JSGB Emulador gameboy en Javascript</a></li><li><a href="http://www.donubu.com/2009/04/02/sonarfm-sitio-web-de-la-radio-20/" title="SonarFM &#8211; Sitio web de la Radio 2.0">SonarFM &#8211; Sitio web de la Radio 2.0</a></li><li><a href="http://www.donubu.com/2010/07/14/de-vuelta-luego-de-muchas-campanas-mas/" title="De vuelta luego de muchas campañas más">De vuelta luego de muchas campañas más</a></li><li><a href="http://www.donubu.com/2010/02/26/nivea-silvermoto/" title="Nivea Silvermoto">Nivea Silvermoto</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2009/07/10/vibora-2-0-con-twitter-connect/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SonarFM &#8211; Sitio web de la Radio 2.0</title>
		<link>http://www.donubu.com/2009/04/02/sonarfm-sitio-web-de-la-radio-20/</link>
		<comments>http://www.donubu.com/2009/04/02/sonarfm-sitio-web-de-la-radio-20/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 23:00:45 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[musica]]></category>
		<category><![CDATA[paginas]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[fm]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[myspace]]></category>
		<category><![CDATA[nowplaying]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[radio]]></category>
		<category><![CDATA[sonar]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[wikipedia]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=231</guid>
		<description><![CDATA[En Mediastream (lugar donde trabajo), hace ya unos días acabamos de lanzar un moderno portal para SONARFM una radio que va de la mano del rock, una alternativa real a todo lo que existe actualmente en el mundo de las radios. Con una nueva interfaz para el usuario, poniendo a su disposición un player con [...]]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://www.mediastream.cl" target="_blank">Mediastream </a>(lugar donde trabajo), hace ya unos días acabamos de lanzar un moderno portal para <a href="http://www.sonarfm.cl">SONARFM </a>una radio que va de la mano del rock, una alternativa real a todo lo que existe actualmente en el mundo de las radios.</p>
<p><a href="http://www.sonarfm.cl" target="_blank"><img class="aligncenter size-medium wp-image-232" title="sonarfmm" src="http://www.donubu.com/wp-content/uploads/sonarfmm-300x189.png" alt="sonarfmm" width="300" height="189" /></a></p>
<p>Con una nueva interfaz para el usuario, poniendo a su disposición un player con la información de la canción que esta sonando, con el nombre del artista, el nombre de la canción y la posibilidad de poder calificar las canciones o publicarlas a través de <a href="http://www.twitter.com" target="_blank">Twitter </a>y <a href="http://www.facebook.com" target="_blank">Facebook</a>. Y de forma adicional a todo eso, además, se incluyen también noticias relacionadas, la web oficial, videos <a href="http://www.youtube.com" target="_blank">youtube</a>, <a href="http://www.myspace.com" target="_blank">myspace </a>y la letra de la canción junto a el listado de las últimas 5 canciones que han sonando (con la posibilidad de poder buscar por horas).</p>
<p><span id="more-231"></span></p>
<p>En cuanto a los usuarios, se les otorga 2 opciones, la primera es el registro común y típico a través de email y también lo 2.0 de la mano de Facebook, para que puedan loguearse utilizando su cuenta en esta red social.</p>
<p>Y finalmente en el área de desarrollo, fue programado en <a href="http://www.cakephp.org">CAKEPHP</a> (en mi opinión el mejor framework PHP que existe), utilizando AJAX y llamadas a archivos JSON, sin recargar la página de forma excesiva, para poder mantener la Radio Sonando todo el tiempo. Ha sido  todo un reto al implementar un grupo importante de APIs y espero que <a href="http://www.sonarfm.cl" target="_blank">la versión actual SONARFM 1.0</a> les guste.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2010/07/14/de-vuelta-luego-de-muchas-campanas-mas/" title="De vuelta luego de muchas campañas más">De vuelta luego de muchas campañas más</a></li><li><a href="http://www.donubu.com/2009/07/06/sonarfm-version-2-0-recargada/" title="SonarFM version 2.0 Recargada">SonarFM version 2.0 Recargada</a></li><li><a href="http://www.donubu.com/2009/07/10/vibora-2-0-con-twitter-connect/" title="Vibora 2.0 con Twitter Connect">Vibora 2.0 con Twitter Connect</a></li><li><a href="http://www.donubu.com/2009/03/11/jquery-lectura-y-procesamiento-de-archivos-json/" title="JQuery &#8211; Lectura y Procesamiento de Archivos JSON">JQuery &#8211; Lectura y Procesamiento de Archivos JSON</a></li><li><a href="http://www.donubu.com/2008/01/11/wegame-youtube-gamers/" title="WEGAME &#8211; El youtube pero para gamers">WEGAME &#8211; El youtube pero para gamers</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2009/04/02/sonarfm-sitio-web-de-la-radio-20/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JQuery &#8211; Lectura y Procesamiento de Archivos JSON</title>
		<link>http://www.donubu.com/2009/03/11/jquery-lectura-y-procesamiento-de-archivos-json/</link>
		<comments>http://www.donubu.com/2009/03/11/jquery-lectura-y-procesamiento-de-archivos-json/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 15:44:50 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[load]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=217</guid>
		<description><![CDATA[Sin duda, los archivos JSON han revolucionado la manera de enviar y recibir parametros dentro de nuestras aplicaciones web. No les voy a hablar en detalle sobre la definicion de un JSON, pero si como procesarlos con JQuery. Lo primero, es descargarse la librería JQuery desde la página oficial (versión minimizada o comprimida). Luego, creamos [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.donubu.com/wp-content/uploads/logo_jquery_215x53.gif" alt="logo_jquery_215x53" title="logo_jquery_215x53" width="215" height="53" class="aligncenter size-full wp-image-218" style="background: #000" /><br />
<br class="limpiar" /><br />
Sin duda, los archivos JSON han revolucionado la manera de enviar y recibir parametros dentro de nuestras aplicaciones web. No les voy a hablar en detalle sobre la definicion de un JSON, pero si como procesarlos con JQuery.</p>
<p>Lo primero, es descargarse la librería JQuery desde la página oficial (versión minimizada o comprimida). Luego, creamos un script dentro de nuestra pagina, para especificar la funcion que va a buscar un JSON y luego procesarlo. A su vez, crearemos también un archivo llamado archivo.json.</p>
<p><strong>archivo.json</strong><br />
[{"id": "1", "author": "Sin bandera", "song" : "Suelta mi mano"},{"id": "2", "author": "Sin bandera", "song" : "Que lloro"}]</p>
<p><strong>funcion javascript, que puede ir dentro del html, o bien, en un .js</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="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> loadJson<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    $.<span style="color: #660066;">getJSON</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'archivo.json'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
           $.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span>data<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
               <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">item</span>.<span style="color: #660066;">id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
           <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Sinceramente, es algo extremadamente fácil, sin embargo, los ejemplos en español son rebuscados o quizás muy extensos y no se logra ver la facilidad que tiene JQuery para procesarlos.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2010/07/14/de-vuelta-luego-de-muchas-campanas-mas/" title="De vuelta luego de muchas campañas más">De vuelta luego de muchas campañas más</a></li><li><a href="http://www.donubu.com/2010/01/27/oportunidad-digital-fotografia/" title="Oportunidad Digital &#8220;Fotografía&#8221;">Oportunidad Digital &#8220;Fotografía&#8221;</a></li><li><a href="http://www.donubu.com/2009/04/02/sonarfm-sitio-web-de-la-radio-20/" title="SonarFM &#8211; Sitio web de la Radio 2.0">SonarFM &#8211; Sitio web de la Radio 2.0</a></li><li><a href="http://www.donubu.com/2009/07/10/vibora-2-0-con-twitter-connect/" title="Vibora 2.0 con Twitter Connect">Vibora 2.0 con Twitter Connect</a></li><li><a href="http://www.donubu.com/2008/01/09/framework-javascript-extjs/" title="ExtJS Excelente Framework Javascript UI">ExtJS Excelente Framework Javascript UI</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2009/03/11/jquery-lectura-y-procesamiento-de-archivos-json/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programacion en PHP, migrar de entornos de desarrollo a productivos</title>
		<link>http://www.donubu.com/2009/01/30/programacion-en-php-migrar-de-entornos-de-desarrollo-a-productivos/</link>
		<comments>http://www.donubu.com/2009/01/30/programacion-en-php-migrar-de-entornos-de-desarrollo-a-productivos/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 15:08:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[conflictos]]></category>
		<category><![CDATA[dll]]></category>
		<category><![CDATA[entornos]]></category>
		<category><![CDATA[extensiones]]></category>
		<category><![CDATA[funciones]]></category>
		<category><![CDATA[iis]]></category>
		<category><![CDATA[librerias]]></category>
		<category><![CDATA[migrar]]></category>
		<category><![CDATA[productivo]]></category>
		<category><![CDATA[so]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=208</guid>
		<description><![CDATA[Uno de los principales problemas de la programación de aplicaciones en PHP, es el tema de migrar de un entorno de desarrollo, a un entorno final o productivo. Esto ocurre, ya que en el pc donde estamos programando, normalmente disponemos de todos los permisos necesarios para instalar extensiones que vamos utilizando, sin embargo, en un [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-212" title="2280277753_e1d7f852ba" src="http://www.donubu.com/wp-content/uploads/2280277753_e1d7f852ba-225x300.jpg" alt="2280277753_e1d7f852ba" width="225" height="300" /></p>
<div class="limpiar"></div>
<p>Uno de los principales problemas de la programación de aplicaciones en PHP, es el tema de migrar de un entorno de desarrollo, a un entorno final o productivo. Esto ocurre, ya que en el pc donde estamos programando, normalmente disponemos  de todos los permisos necesarios para instalar extensiones que vamos utilizando, sin embargo, en un servidor, la mayoría  de las veces no tenemos acceso a nada, incluyendo el php.ini, ya sea por que es un host gratuito, pagado, pero no un servidor dedicado.</p>
<p>De las extensiones o funciones  más usadas y a su vez la que mayormente nos causan problemas a la hora de migrar:<span id="more-208"></span></p>
<p><a href="http://cl2.php.net/manual/es/book.image.php" target="_blank"><strong>GD2</strong></a></p>
<p>Esta librería se utiliza para el tratamiento de imagenes. Ya sea al vuelo, o generar imagenes estaticas. Mayormente la aplicamos en generación de thumbnails, captcha para evitar spam en formularios, entre otras cosas. A veces, por un tema de rendimiento en servidores gratuitos o host de bajo precio, viene deshabilitada por defecto. A su vez, puede ocurrir que este habilitada, pero sin soporte para la librería lib-jpg, lo que nos causaría el problema de no poder utilizar el formato JPG.</p>
<p><a href="http://cl.php.net/mcrypt" target="_blank"><strong>MCRYPT</strong></a></p>
<p>Aplicada en el proceso de cifrar información (NO ENCRIPTAR, que es un mal uso de la palabra, ya que la traducción de encrypt, es CIFRAR). No esta habilitada por defecto.</p>
<p><a href="http://cl.php.net/simplexml" target="_blank"><strong>SIMPLEXML</strong></a></p>
<p>Esta librería solo esta disponible en php5, por ende todos los host con php4 no podrán ejecutarla. Viene por defecto, pero simplemente para php5. Se utiliza para la lectura y creación de archivos XML.</p>
<p><a href="http://cl.php.net/json" target="_blank"><strong>JSON</strong></a></p>
<p>Al igual que SimpleXML, solo esta disponible para php5, y más aún, php5.2, aunque viene dentro de php y no es una extension separada.</p>
<p><a href="http://www.php.net/ini.core" target="_blank"><strong>SHORT TAGS</strong></a></p>
<p>Es común ver códigos escritos en php que utilizan los shorttags o etiquetas cortas:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
<span style="color: #000000; font-weight: bold;">&lt;?=</span><span style="color: #0000ff;">'Hola'</span><span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Que al no estar habilitadas, no serán interpretadas por php y por ende, en nuestros archivos, al verlos por el navegador aparecerá parte del código, y esto podría suponer un problema de seguridad, ya que cualquier visitante podría leerlo y a su vez buscarnos bugs o debilidades.</p>
<p><strong>PERMISOS DE ESCRITURA</strong></p>
<p>Siempre que utilicemos funciones como <strong>fwrite</strong>, <strong>fopen</strong>, <strong>file_put_contents</strong> es necesario comprobar, que los ficheros dispongan de los permisos necesarios, y más aún si es IIS o bien apache (sobre linux). Al igual que los permisos de escritura, existe el <a href="http://cl2.php.net/safe_mode" target="_blank">SAFE_MODE</a>, que es un parámetro de configuración que le indica a php que los scripts estarán <a href="http://cl2.php.net/manual/es/features.safe-mode.functions.php" target="_blank">limitados en el uso de algunas funciones especificas</a>.</p>
<p><strong>ID3</strong></p>
<p>Es de uso un tanto específico para obtener información id3 de ficheros MP3. Como alternativa existen <a href="http://www.phpclasses.org/browse/package/1440.html" target="_blank">clases de lectura de mp3</a>, así no dependerás de la extensión.</p>
<p>Por este motivo, es de vital importancia, que cada vez que utilices estas funciones, debas comprobar que no existen conflictos en tu servidor productivo, ya que si lo haces de forma posterior al desarrollo no tendrás la posibilidad de volver atrás.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2009/01/07/instalar-cakephp-desde-0-y-configurar-la-consola-en-windows/" title="Instalar Cakephp desde 0 y configurar la consola en windows">Instalar Cakephp desde 0 y configurar la consola en windows</a></li><li><a href="http://www.donubu.com/2009/10/28/tips-cakephp/" title="Tips cakePHP">Tips cakePHP</a></li><li><a href="http://www.donubu.com/2008/05/11/virtualizacion-y-microsoft-virtual-pc/" title="Virtualización y Microsoft Virtual PC">Virtualización y Microsoft Virtual PC</a></li><li><a href="http://www.donubu.com/2008/01/14/linux-fan-boys-destruyen-linux/" title="¿Linux Fan Boys destruyen Linux?">¿Linux Fan Boys destruyen Linux?</a></li><li><a href="http://www.donubu.com/2008/01/02/administracion-servidor-web-y-de-aplicacion/" title="Paneles de Administración de Servidores">Paneles de Administración de Servidores</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2009/01/30/programacion-en-php-migrar-de-entornos-de-desarrollo-a-productivos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar Cakephp desde 0 y configurar la consola en windows</title>
		<link>http://www.donubu.com/2009/01/07/instalar-cakephp-desde-0-y-configurar-la-consola-en-windows/</link>
		<comments>http://www.donubu.com/2009/01/07/instalar-cakephp-desde-0-y-configurar-la-consola-en-windows/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 19:11:13 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[bake]]></category>
		<category><![CDATA[cmd]]></category>
		<category><![CDATA[configurar]]></category>
		<category><![CDATA[consola]]></category>
		<category><![CDATA[entorno]]></category>
		<category><![CDATA[instalar]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[variables]]></category>
		<category><![CDATA[wamp]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=187</guid>
		<description><![CDATA[Uno de los principales problemas, al iniciarse en el mundo de cakePHP es lograr levantar el sitio en un entorno productivo (incluso en el de desarrollo) y a su vez poder utilizar la consola incluida. Las principales ventajas de la consola de cakePHP, es que puedes generar desde el archivo de conexion a la base [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-192 margenes" title="cake-logo" src="http://www.donubu.com/wp-content/uploads/cake-logo.png" alt="cake-logo" width="180" height="180" />Uno de los principales problemas, al iniciarse en el mundo de cakePHP es lograr levantar el sitio en un entorno productivo (incluso en el de desarrollo) y a su vez poder utilizar la consola incluida.</p>
<p>Las principales ventajas de la consola de cakePHP, es que puedes generar desde el archivo de conexion a la base de datos, incluyendo creación de modelos, controladores y vistas, y una herramienta de extracción i18n para lograr internacionalizar nuestras aplicaciones.</p>
<p>Para comenzar, asumo desde un inicio, que tienes Windows xp o superior, Apache 2.x (Con el modulo mod_rewrite habilitado), PHP 5.X y MySQL 5.x, funcionando sin inconvenientes.<span id="more-187"></span></p>
<p>Ahora, <a href="http://cakeforge.org/frs/?group_id=23&amp;release_id=433" target="_blank">entrar a la página oficial y descargarse la version 1.2</a> (en estos momentos ya existe la versión final). Posteriormente extraerlo en la raiz de la carpeta del sitio. (Si tenemos el www_root en c:\wamp\www, extraer directamente las carpetas ahí). Quedando en una estructura:</p>
<p>- c:\wamp\www<br />
- app /<br />
-  cake /<br />
&#8230;.. etc</p>
<p>Para probar que todo va bien, ejecutamos la página web en nuestro navegador. (http://localhost/) y debiesemos ver el mensaje de instalacion de cake por defecto:</p>
<p><a href="http://www.donubu.com/wp-content/uploads/home.jpg"><img class="alignleft size-medium wp-image-188" title="home" src="http://www.donubu.com/wp-content/uploads/home-300x168.jpg" alt="home" width="300" height="168" /></a></p>
<p>Al ver esta pantalla, podemos estar casi seguros de que lo hemos hecho bien.</p>
<p>Ahora la parte interesante&#8230;</p>
<p><strong>&#8220;Configurar la Consola de cakePHP en Windows&#8221;</strong></p>
<p>Nos vamos al icono de MIPC y hacemos clic con el boton derecho del mouse y entramos a propiedades. Luego, opciones avanzadas y finalmente en variables de entorno. En variables de sistema, ubicamos una llamada <strong>Path</strong>, le damos clic en modificar. NO DEBEMOS BORRAR NADA, solo al final del texto &#8220;valor de la variable&#8221; agregamos:</p>
<p>- El path donde se encuentra el php.exe (en mi caso, y del ejemplo, lo tengo en <em>&#8220;C:\wamp\bin\php\php5.2.6&#8243;</em>) y al final poner un &#8220;;&#8221; (punto y coma sin paréntesis). A continuación de ese &#8220;;&#8221; , debemos agregar el path hacia la consola de cake (<em> &#8220;C:\wamp\www\cake\console&#8221; </em>) . Finalmente, clic en aceptar, aceptar, aceptar.</p>
<p><strong>OJO!, dentro de la variable path, cada uno de los directorios ahí ingresados estan separados por un &#8220;;&#8221; y si no es así debes corregirlo. </strong>Ahora, vamos a probar la consola.</p>
<p>Clic en inicio =&gt; ejecutar y escribimos CMD y luego aceptar.</p>
<p>Debemos llegar al lugar donde tenemos nuestra app de cake.</p>
<p><img class="aligncenter size-full wp-image-189" title="cmd" src="http://www.donubu.com/wp-content/uploads/cmd.jpg" alt="cmd" width="526" height="167" /></p>
<p>Y ya, desde la consola podemos empezar a cocinar con BAKE.</p>
<p><img class="aligncenter size-full wp-image-190" title="bake" src="http://www.donubu.com/wp-content/uploads/bake.jpg" alt="bake" width="628" height="260" /></p>
<p>Para el siguiente post, les estoy preparando un tutorial de como comenzar a trabajar con la consola <img src='http://www.donubu.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> .</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2009/01/30/programacion-en-php-migrar-de-entornos-de-desarrollo-a-productivos/" title="Programacion en PHP, migrar de entornos de desarrollo a productivos">Programacion en PHP, migrar de entornos de desarrollo a productivos</a></li><li><a href="http://www.donubu.com/2008/01/02/administracion-servidor-web-y-de-aplicacion/" title="Paneles de Administración de Servidores">Paneles de Administración de Servidores</a></li><li><a href="http://www.donubu.com/2009/10/28/tips-cakephp/" title="Tips cakePHP">Tips cakePHP</a></li><li><a href="http://www.donubu.com/2008/04/06/windows-a-simple-vista-p/" title="Windows a simple Vista :P">Windows a simple Vista :P</a></li><li><a href="http://www.donubu.com/2008/01/14/linux-fan-boys-destruyen-linux/" title="¿Linux Fan Boys destruyen Linux?">¿Linux Fan Boys destruyen Linux?</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2009/01/07/instalar-cakephp-desde-0-y-configurar-la-consola-en-windows/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Los 80HD</title>
		<link>http://www.donubu.com/2008/12/23/los-80hd/</link>
		<comments>http://www.donubu.com/2008/12/23/los-80hd/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 18:54:13 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[paginas]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[alta calidad]]></category>
		<category><![CDATA[canal13]]></category>
		<category><![CDATA[hd]]></category>
		<category><![CDATA[los 80]]></category>
		<category><![CDATA[mediastream]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=167</guid>
		<description><![CDATA[Acabamos de publicar Los 80 HD, un sitio web para que puedan ver los 80 en formato HD. Hecho por Mediastream. Y transformándose en la primera serie transmitida por internet en formato alta definición. De momento está disponible solo el primer capítulo en versión HD y versión Alta calidad. Espero les guste el sitio (diseño [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.canal13.cl/los80hd/" target="_blank"><img class="alignleft size-medium wp-image-170 margenes" title="los80" src="http://www.donubu.com/wp-content/uploads/los80-300x248.jpg" alt="los80" width="300" height="248" /></a>Acabamos de publicar <a href="http://www.canal13.cl/los80hd/" target="_blank">Los 80 HD</a>, un sitio web para que puedan ver los 80 en formato HD. Hecho por <a href="http://www.mediastream.cl" target="_blank">Mediastream</a>. Y transformándose en la primera serie transmitida por internet en formato alta definición.</p>
<p>De momento está disponible solo el primer capítulo en versión HD y versión Alta calidad.</p>
<p>Espero les guste el sitio (diseño por <a href="http://www.drjorlo.com" target="_blank">Jorlo</a>, el <a href="http://www.mediastream.cl" target="_blank">Player HD</a> por <a href="http://www.videoaprende.com" target="_blank">Pato de videoaprende.com</a> y la programación por mí).</p>
<p>Se aplicó <a href="http://www.jquery.com" target="_blank">Jquery </a>para el carrousel utilizado y Ajax, y una librería para cargar el flash de forma compatible para diversos navegadores. Fue testeado con éxito en Firefox 2 y 3 en Windows XP, Internet Explorer 6 y 7 en Windows XP, Safari y Firefox 3 para MAC.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2009/01/07/recopilacion-de-20-wallpapers-de-windows-7/" title="Recopilacion de 20 wallpapers de windows 7">Recopilacion de 20 wallpapers de windows 7</a></li><li><a href="http://www.donubu.com/2008/03/27/primer-post-desde-wp-25rc2/" title="Primer post desde WP 2.5RC2">Primer post desde WP 2.5RC2</a></li><li><a href="http://www.donubu.com/2008/01/05/unos-minutos-de-ocio-musica/" title="Unos minutos de Ocio">Unos minutos de Ocio</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/12/23/los-80hd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reparar h264 para descargas progresivas</title>
		<link>http://www.donubu.com/2008/12/22/reparar-h264-para-descargas-progresivas/</link>
		<comments>http://www.donubu.com/2008/12/22/reparar-h264-para-descargas-progresivas/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 21:11:53 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[h264 fix reparar descarga download progressive progresiva qt-fast]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=159</guid>
		<description><![CDATA[Acá en la empresa (junto al Lucho Ahumada, Mediastream), surgió la necesidad de utilizar el formato H264 para descargas progresivas de HD (para una serie nacional famosa), y junto con la necesidad, apareció el problema de que el formato H264 tiene los encabezados al final del archivo, lo cual provoca que la descarga progresiva falle, [...]]]></description>
			<content:encoded><![CDATA[<p>Acá en la empresa (junto al Lucho Ahumada, <a href="http://www.mediastream.cl" target="_blank">Mediastream</a>), surgió la necesidad de utilizar el formato H264 para descargas progresivas de HD (para una serie nacional famosa), y junto con la necesidad, apareció el problema de que el formato H264 tiene los encabezados al final del archivo, lo cual provoca que la descarga progresiva falle, y sea necesario descargar todo el archivo para empezar a reproducirlo.</p>
<p>En fin, luego de buscar miles de soluciones, aplicarlas en el <a href="http://www.drjorlo.com" target="_blank">MAC de Jorlo</a>, (el de <a href="http://www.unamierdaderadio.com" target="_blank">unamierdaderadio.com</a> y también de <a href="http://www.alucinogena.com">Alucinogena.com</a>),  y en el servidor de desarrollo, tuve que compilar un pequeño script en C.  Y el resultado lo pongo a disposición de ustedes, ya que muchos que vean el mensaje es por que buscan la solución a este problema. Esta disponible para windows, y no requiere de ningún tipo especial de librerías.</p>
<p>Puedes descargar el archivo&#8230;<span id="more-159"></span></p>
<p><a href="http://www.donubu.com/h264fix.rar">Descargalo acá</a>.</p>
<p>El  método para usarlo es el siguiente:<br />
1. Por comodidad, copialo directo en <strong>C:</strong><br />
2. En windows, clic en menú inicio, ejecutar, CMD y clic en aceptar.<br />
3. escribe, <strong>cd C:</strong> y botón <strong>enter</strong>.<br />
4. finalmente, debes escribir h264fix.exe video_original.mp4 video_salida.mp4 (donde video_original.mp4 es tu video a reparar y video_salida es el video con el fix).<br />
5. Linkear este post en tus trackbacks&#8230;</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li>Sin Articulos Relacionados</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/12/22/reparar-h264-para-descargas-progresivas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Me quedé sin CakePHP Conference :(</title>
		<link>http://www.donubu.com/2008/12/19/me-quede-sin-cakephp-conference/</link>
		<comments>http://www.donubu.com/2008/12/19/me-quede-sin-cakephp-conference/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 15:44:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=142</guid>
		<description><![CDATA[Por temas de trabajo, lamentablemente no pude asistir a la conferencia de cakephp organizada hoy, el tema es que tenía la mejor intención de conocer a los demás bakers Chilenos. No alcancé a avisar con tiempo a fabián (el organizador), pensando hasta el último momento de poder hacerme un tiempo&#8230; Espero conversar más tarde con [...]]]></description>
			<content:encoded><![CDATA[<p>Por temas de trabajo, lamentablemente no pude asistir a la conferencia de cakephp organizada hoy, el tema es que tenía la mejor intención de conocer a los demás bakers Chilenos. No alcancé a avisar con tiempo a fabián (el organizador), pensando hasta el último momento de poder hacerme un tiempo&#8230;</p>
<p>Espero conversar más tarde con <a href="http://www.victorsanmartin.com" target="_blank">victor (quest)</a> uno de los expositores para ver que temas tocaron y como les fue a todos..</p>
<p><a href="http://eventioz.com/events/cakephp-conference-santiago-chile" target="_blank">Agrego el link hacia el evento&#8230;</a></p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li>Sin Articulos Relacionados</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/12/19/me-quede-sin-cakephp-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buen Programador = Diseño Pobre</title>
		<link>http://www.donubu.com/2008/09/21/buen-programador-diseno-pobre/</link>
		<comments>http://www.donubu.com/2008/09/21/buen-programador-diseno-pobre/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 17:53:19 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[diseño]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[skin]]></category>
		<category><![CDATA[visual basic]]></category>
		<category><![CDATA[controles]]></category>
		<category><![CDATA[devcomponents]]></category>
		<category><![CDATA[dotnetbar]]></category>
		<category><![CDATA[licencia]]></category>
		<category><![CDATA[office 20007]]></category>
		<category><![CDATA[ribbon]]></category>
		<category><![CDATA[vb.net]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=129</guid>
		<description><![CDATA[Uno de los escenarios mas recurrentes dentro de la vida del desarrollo de una aplicación, para algunos programadores, es cuando se debe realizar el diseño del software sin contar con las herramientas o el conocimiento necesario. Si bien, un programador NO tiene por que ser un buen diseñador, lamentablemente no posee demasiados recursos como para [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los escenarios mas recurrentes dentro de la vida del desarrollo de una aplicación, para algunos programadores, es cuando se debe realizar el diseño del software sin contar con las herramientas o el conocimiento necesario. Si bien, un programador NO tiene por que ser un buen diseñador, lamentablemente no posee demasiados recursos como para contratar uno que se encargue de eso.</p>
<p>En esta ocasion, y basandome en mi experiencia con los programas en vb.net y su entorno &#8220;feo&#8221;, que causa que el usuario termine con una especie de depresion mientras lo utiliza. Sin embargo, hoy en día, existen muchas alternativas a este problema, y que realmente marcan la diferencia entre algo visualmente &#8220;moderno&#8221; y otro muy parecido a lo que veiamos con vb6.<br />
<span id="more-129"></span><br />
Actualmente y como solución al problema, encontré un pack de controles (que incluyen el codigo de fuente) y que realmente cambian el aspecto de forma rotunda, y con un skin muy similar a Office 2007. Su nombre es <a href="http://www.devcomponents.com/dotnetbar/order.aspx">DotNetBar de Devcomponents</a>. Si bien, su licencia simple es más elevada de lo que acostumbramos a pagar, realmente vale la pena (son 289 dólares apróx. $150.000) y que solo se debe pagar una sola vez y se puede utilizar cuantas veces uno quiera. Además, existe una version de prueba, para que puedan evaluar los controles y probar su potencial.</p>
<p>Acá tengo unos screenshots de la última mini-aplicación en la cual estoy trabajando:</p>
<p><a href="http://www.donubu.com/wp-content/uploads/sshot-2.png"><img class="aligncenter size-medium wp-image-130" title="sshot-2" src="http://www.donubu.com/wp-content/uploads/sshot-2-300x218.png" alt="" width="300" height="218" /></a><br />
<br class="limpiar" /><br />
Como ven, todo entra por la vista, y puede marcar la diferencia inclusive en el precio final del software.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2008/09/21/vbnet-con-mysql-mysql-driver-cs/" title="VB.NET con MySQL &#8211; MySQL Driver Cs">VB.NET con MySQL &#8211; MySQL Driver Cs</a></li><li><a href="http://www.donubu.com/2008/09/15/vbnet-utilizar-un-listview-para-desplegar-datos/" title="VB.NET &#8211; Utilizar un Listview para desplegar datos">VB.NET &#8211; Utilizar un Listview para desplegar datos</a></li><li><a href="http://www.donubu.com/2008/09/21/cambio-en-el-diseno-del-blog/" title="Cambio en el diseño del blog">Cambio en el diseño del blog</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/09/21/buen-programador-diseno-pobre/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>VB.NET con MySQL &#8211; MySQL Driver Cs</title>
		<link>http://www.donubu.com/2008/09/21/vbnet-con-mysql-mysql-driver-cs/</link>
		<comments>http://www.donubu.com/2008/09/21/vbnet-con-mysql-mysql-driver-cs/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 04:54:33 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[drivers]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[visual basic]]></category>
		<category><![CDATA[ado.net]]></category>
		<category><![CDATA[conexion]]></category>
		<category><![CDATA[cs]]></category>
		<category><![CDATA[dll]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[odbc]]></category>
		<category><![CDATA[oledb]]></category>
		<category><![CDATA[referencias]]></category>
		<category><![CDATA[vb.net]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=119</guid>
		<description><![CDATA[Si bien no acostumbro a mezclar vb.net con mysql, a veces, se hace realmente necesario cuando se busca una performance o bien compatibilidad con un servidor de base de datos basado en linux, ademas, de que la mayoria de los desarrolladores estan mayormente relacionados con mysql por su sencillez y amistad con PHP. Lamentablemente no [...]]]></description>
			<content:encoded><![CDATA[<p>Si bien no acostumbro a mezclar vb.net con mysql, a veces, se hace realmente necesario cuando se busca una performance o bien compatibilidad con un servidor de base de datos basado en linux, ademas, de que la mayoria de los desarrolladores estan mayormente relacionados con mysql por su sencillez y amistad con PHP.</p>
<p>Lamentablemente no esta implementada alguna clase que permita la conexion de forma nativa, por ende, es necesario incluir una DLL previamente compilada que hace de interfaz con la base de datos. Existen unas basadas en <a href="http://es.wikipedia.org/wiki/ODBC">ODBC </a>y otras en <a href="http://es.wikipedia.org/wiki/OLEDB">OLEDB</a> o  <a href="http://es.wikipedia.org/wiki/ADO.NET">ADO.NET</a>siendo esta ultima la mas recomendable y moderna. En esta oportunidad, usare una libreria llamada <a href="http://sourceforge.net/project/platformdownload.php?group_id=63165">mysql driver cs</a> (que ademas incluye el codigo fuente).<span id="more-119"></span></p>
<p>Lo primero (luego de instalar la libreria), puedes crear un nuevo proyecto, y hacer referencia a las DLL que se encuentran en &#8220;C:\Archivos de programa\MySQLDriverCS\dll\&#8221;, siendo solo la MySQLDriverCS.dll aquella que llamaremos con imports.</p>
<p><img class="aligncenter size-full wp-image-120" title="sshot-1" src="http://www.donubu.com/wp-content/uploads/sshot-1.png" alt="" width="414" height="384" /><br />
<br class="limpiar" /><br />
Luego de referenciar las 3 dlls, metete en el codigo fuente del formulario y agrega lo siguiente (en el encabezado antes de <em>Public Class Form1</em>) :</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">Imports</span> MySQLDriverCS</pre></div></div>

<p>Esto nos permitira acceder a los diversos metodos y propiedades de la dll. Ahora bien, ya tenemos la referencia, veamos como se realiza la conexion (voy a agregar la conexion dentro del evento LOAD del formulario, pero la variable conexion la voy a declarar como propiedad, para poder accederla desde los eventos y metodos):</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">Imports</span> MySQLDriverCS
&nbsp;
<span style="color: #FF8000;">Public</span> <span style="color: #0600FF;">Class</span> Form1
&nbsp;
<span style="color: #0600FF;">Dim</span> conexion <span style="color: #FF8000;">As</span> MySQLConnection <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> MySQLConnection<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">New</span> MySQLConnectionString<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;localhost&quot;</span>, <span style="color: #808080;">&quot;prueba&quot;</span>, <span style="color: #808080;">&quot;root&quot;</span>, <span style="color: #808080;">&quot;&quot;</span>, <span style="color: #FF0000;">3306</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> Form1_Load<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> sender <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Object</span>, <span style="color: #FF8000;">ByVal</span> e <span style="color: #FF8000;">As</span> System.<span style="color: #0000FF;">EventArgs</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Handles</span> <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">Load</span>
<span style="color: #0600FF;">Try</span>
conexion.<span style="color: #0600FF;">Open</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0600FF;">Catch</span> ex <span style="color: #FF8000;">As</span> MySQLException
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>ex.<span style="color: #0000FF;">Message</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span>
&nbsp;
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Class</span></pre></div></div>

<p>Los parametros para la conexion son: host, base de datos, usuario, password y puerto. Y para comenzar  a trabajar con mysql, debemos abrir la conexion con el metodo <strong>Open</strong>. En caso de cualquier error, capturamos todo con un bloque try catch. Bien, ya tenemos nuestra conexion, ahora necesitamos por ejemplo, leer una tabla especifica y mostrar la informacion obtenida. Para eso necesitamos de una variable de tipo Mysqlcommand y un lector tipo Mysqldatareader.</p>
<p>Debemos declarlos como propiedad, al igual que la conexion, para disponer de ellos cuando estimemos conveniente.</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">Dim</span> comando <span style="color: #FF8000;">As</span> MySQLCommand
<span style="color: #0600FF;">Dim</span> lector <span style="color: #FF8000;">As</span> MySQLDataReader</pre></div></div>

<p>Ahora, modificaremos el evento onload, y agregaremos lo necesario para realizar la consulta sql y leer los datos.</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> Form1_Load<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> sender <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Object</span>, <span style="color: #FF8000;">ByVal</span> e <span style="color: #FF8000;">As</span> System.<span style="color: #0000FF;">EventArgs</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Handles</span> <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">Load</span>
<span style="color: #0600FF;">Try</span>
conexion.<span style="color: #0600FF;">Open</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
comando <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> MySQLCommand<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;SELECT * FROM tabla_prueba&quot;</span>, conexion<span style="color: #000000;">&#41;</span>
lector <span style="color: #008000;">=</span> comando.<span style="color: #0000FF;">ExecuteReader</span>
&nbsp;
<span style="color: #0600FF;">While</span> lector.<span style="color: #0000FF;">Read</span>
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>lector<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;nombre_campo&quot;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">While</span>
&nbsp;
lector.<span style="color: #0600FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
conexion.<span style="color: #0600FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0600FF;">Catch</span> ex <span style="color: #FF8000;">As</span> MySQLException
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>ex.<span style="color: #0000FF;">Message</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span></pre></div></div>

<p>Primero, instancio un nuevo mysqlcommand y le paso como parametro la consulta y la conexion, posteriormente asigno el resultado del metodo &#8220;ExecuteReader&#8221; a mi lector y luego leo registro a registro los resultados con .Read y con el msgbox voy mostrando lo que me devuelve el campo mencionado (es ideal llamar al metodo ToString).</p>
<p>Este procedimiento resulta conveniente en la mayoria de los casos, excepto, cuando el campo es de tipo date, text, longtext, etc. y requiere otro tratamiento, ahi es recomendable hacer algo como esto:</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #0600FF;">While</span> lector.<span style="color: #0000FF;">Read</span>
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>lector<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;campo&quot;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> tiempo <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Date</span> <span style="color: #008000;">=</span> lector.<span style="color: #0000FF;">GetDateTime</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> longtext <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">String</span> <span style="color: #008000;">=</span> lector.<span style="color: #0000FF;">GetString</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> numeroDoble <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Double</span> <span style="color: #008000;">=</span> lector.<span style="color: #0000FF;">GetDouble</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">3</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">While</span></pre></div></div>

<p>Pasando como parametros en cada caso, el indice del campo en la tabla, empezando desde el 0. Esos son algunos metodos, existen muchos mas.</p>
<p>Lo primordial es comprobar que la conexion NO este abierta antes de intentar abrirla, comprobar que el lector este cerrado antes de pasarle un comando, y luego cerrar el comando y la posteriormente la base de datos. Ya que si no se cierra esta ultima, el recurso quedara abierto y se desperdiciara servidor, incluso pudiendo causar la denegacion del mismo (tema que se ha hecho frecuente por no cerrar las conexiones).</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> Form1_Load<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> sender <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Object</span>, <span style="color: #FF8000;">ByVal</span> e <span style="color: #FF8000;">As</span> System.<span style="color: #0000FF;">EventArgs</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Handles</span> <span style="color: #FF8000;">Me</span>.<span style="color: #0000FF;">Load</span>
<span style="color: #0600FF;">Try</span>
<span style="color: #0600FF;">If</span> conexion.<span style="color: #0000FF;">State</span> &lt;&gt; ConnectionState.<span style="color: #0600FF;">Open</span> <span style="color: #FF8000;">Then</span>
conexion.<span style="color: #0600FF;">Open</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
&nbsp;
comando <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> MySQLCommand<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;SELECT * FROM tabla_prueba&quot;</span>, conexion<span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0600FF;">Try</span>
<span style="color: #0600FF;">If</span> <span style="color: #804040;">Not</span> lector.<span style="color: #0000FF;">IsClosed</span> <span style="color: #FF8000;">Then</span>
lector.<span style="color: #0600FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
<span style="color: #0600FF;">Catch</span> : <span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
&nbsp;
lector <span style="color: #008000;">=</span> comando.<span style="color: #0000FF;">ExecuteReader</span>
&nbsp;
<span style="color: #0600FF;">While</span> lector.<span style="color: #0000FF;">Read</span>
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>lector<span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;campo&quot;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> tiempo <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Date</span> <span style="color: #008000;">=</span> lector.<span style="color: #0000FF;">GetDateTime</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> longtext <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">String</span> <span style="color: #008000;">=</span> lector.<span style="color: #0000FF;">GetString</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> numeroDoble <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Double</span> <span style="color: #008000;">=</span> lector.<span style="color: #0000FF;">GetDouble</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">3</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">While</span>
&nbsp;
lector.<span style="color: #0600FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
conexion.<span style="color: #0600FF;">Close</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0600FF;">Catch</span> ex <span style="color: #FF8000;">As</span> MySQLException
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>ex.<span style="color: #0000FF;">Message</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span></pre></div></div>

<p>Este es el primer paso, lo ideal seria mezclar todo este tutorial con el anterior, que posee todo lo necesario para aprender a <a href="http://www.donubu.com/2008/09/15/vbnet-utilizar-un-listview-para-desplegar-datos/">desplegar datos en un listview de forma rapida y segura</a>.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2008/09/21/buen-programador-diseno-pobre/" title="Buen Programador = Diseño Pobre">Buen Programador = Diseño Pobre</a></li><li><a href="http://www.donubu.com/2008/09/15/vbnet-utilizar-un-listview-para-desplegar-datos/" title="VB.NET &#8211; Utilizar un Listview para desplegar datos">VB.NET &#8211; Utilizar un Listview para desplegar datos</a></li><li><a href="http://www.donubu.com/2009/01/30/programacion-en-php-migrar-de-entornos-de-desarrollo-a-productivos/" title="Programacion en PHP, migrar de entornos de desarrollo a productivos">Programacion en PHP, migrar de entornos de desarrollo a productivos</a></li><li><a href="http://www.donubu.com/2008/05/16/tutorial-3-limitar-descargas-con-php-y-mysql-descargas-simultaneas-y-velocidad-de-bajada/" title="Tutorial 3: Limitar Descargas con PHP y MySQL &#8211; descargas simultaneas y velocidad de bajada">Tutorial 3: Limitar Descargas con PHP y MySQL &#8211; descargas simultaneas y velocidad de bajada</a></li><li><a href="http://www.donubu.com/2008/01/02/administracion-servidor-web-y-de-aplicacion/" title="Paneles de Administración de Servidores">Paneles de Administración de Servidores</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/09/21/vbnet-con-mysql-mysql-driver-cs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VB.NET &#8211; Utilizar un Listview para desplegar datos</title>
		<link>http://www.donubu.com/2008/09/15/vbnet-utilizar-un-listview-para-desplegar-datos/</link>
		<comments>http://www.donubu.com/2008/09/15/vbnet-utilizar-un-listview-para-desplegar-datos/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 02:16:26 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[visual basic]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[datos]]></category>
		<category><![CDATA[detalle]]></category>
		<category><![CDATA[listview]]></category>
		<category><![CDATA[maestros]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[vb]]></category>
		<category><![CDATA[vb.net]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=107</guid>
		<description><![CDATA[Hace mucho tiempo y luego de sentirme un poco descepcionado con los gridviews de .NET y buscando la “alternativa” para poder desplegar datos de una forma clara y sencilla, encontre el control ListView que no esta precisamente orientado a un listado de datos pero a algunos nos acomoda mas. Voy a indicar como lograr desplegar [...]]]></description>
			<content:encoded><![CDATA[<p>Hace mucho tiempo y luego de sentirme un poco descepcionado con los gridviews de <a href="http://www.microsoft.com/net/" target="_blank">.NET</a> y buscando la “alternativa” para poder desplegar datos de una forma clara y sencilla, encontre el control <a href="http://www.elguille.info/colabora/NET2005/FernandoLuque_ListViewAvanzado.htm" target="_blank">ListView </a>que no esta precisamente orientado a un listado de datos pero a algunos nos acomoda mas.</p>
<p>Voy a indicar como lograr desplegar informacion al igual como se podria con un gridview, la unica desventaja es que la informacion no puede ser editada de forma directa.</p>
<p>Primero, debes arrastrar el control sobre un formulario y posteriormente definir las siguientes propiedades:</p>
<p>* <strong>FullRowSelect </strong>= true<br />
* <strong>GridLines </strong>= true<br />
* <strong>View </strong>= Details<br />
<span id="more-107"></span></p>
<p>Al establecer esas propiedades el control tomara el siguiente aspecto:<br />
<img class="aligncenter size-full wp-image-108" title="list1" src="http://www.donubu.com/wp-content/uploads/list1.png" alt="" width="500" height="343" /><br />
<br class="limpiar" /><br />
Ahora, necesitamos definir las columnas (ID &#8211; NOMBRE &#8211; DESCRIPCION-), hacemos clic en <strong>Columns </strong>y aparecera un recuadro como este:<br />
<img class="aligncenter size-full wp-image-109" title="list2" src="http://www.donubu.com/wp-content/uploads/list2.png" alt="" width="500" height="374" /><br class="limpiar" /><br />
Podemos agregar todas las que queramos, definiendo el texto a desplegar en la columna, el ancho, etc.<br />
Una vez agregadas todas las que necesitamos se vera un tanto asi:<br />
<img class="aligncenter size-full wp-image-110" title="list3" src="http://www.donubu.com/wp-content/uploads/list3.png" alt="" width="500" height="367" /><br class="limpiar" /></p>
<p>Con la parte de diseño ya terminada, es tiempo de poder empezar a mostrar datos en el listview. Primero, cambiemos el nombre por defecto y pongamos algo mas acorde, como listadoJuegos.</p>
<p>Ahora bien, el ejemplo lo hare conectandome a una base de datos en <strong>MS ACCESS 2007</strong> y rellenare el listview de dos maneras, <a href="http://elguille.info/NET/revistas/dotNetmania/dnm_29.aspx" target="_blank">una con un <strong>DataReader </strong>y otra con un <strong>DataTable</strong></a> (El guille explica la diferencia y cuando usar uno y cuando usar el otro).</p>
<p>La estructura de la tabla es la siguiente:</p>
<p><strong>Nombre tabla</strong> juegos</p>
<p><strong>id</strong> <strong>=&gt;</strong> autonumerico, llave primaria.<br />
<strong>nombre =&gt;</strong> texto<br />
<strong>descipcion =&gt;</strong> texto</p>
<p>Agregue ademas, 2 botones al formulario, uno para cargar datos a traves de datarader y otro para hacerlo con datatable.</p>
<p>y el codigo para cargar datos dentro del listview :</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> botonDR_Click<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> sender <span style="color: #FF8000;">As</span> System.<span style="color: #FF0000;">Object</span>, <span style="color: #FF8000;">ByVal</span> e <span style="color: #FF8000;">As</span> System.<span style="color: #0000FF;">EventArgs</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Handles</span> botonDR.<span style="color: #0000FF;">Click</span>
listadoJuegos.<span style="color: #0000FF;">Items</span>.<span style="color: #0000FF;">Clear</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
comando <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> OleDbCommand<span style="color: #000000;">&#40;</span>”<span style="color: #0600FF;">SELECT</span> <span style="color: #008000;">*</span> FROM juegos”, conexion<span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0600FF;">Try</span>
dr <span style="color: #008000;">=</span> comando.<span style="color: #0000FF;">ExecuteReader</span>
&nbsp;
<span style="color: #0600FF;">While</span> dr.<span style="color: #0000FF;">Read</span>
<span style="color: #0600FF;">Dim</span> item <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">New</span> ListViewItem<span style="color: #000000;">&#40;</span>dr<span style="color: #000000;">&#40;</span>”id”<span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
item.<span style="color: #0000FF;">SubItems</span>.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span>dr<span style="color: #000000;">&#40;</span>”nombre”<span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
item.<span style="color: #0000FF;">SubItems</span>.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span>dr<span style="color: #000000;">&#40;</span>”descripcion”<span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
&nbsp;
listadoJuegos.<span style="color: #0000FF;">Items</span>.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span>item<span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">While</span>
&nbsp;
<span style="color: #0600FF;">Catch</span> ex <span style="color: #FF8000;">As</span> Exception
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>”Fallo la consulta, mensaje: ” <span style="color: #008000;">+</span> ex.<span style="color: #0000FF;">Message</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
&nbsp;
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span>
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> botonDT_Click<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> sender <span style="color: #FF8000;">As</span> System.<span style="color: #FF0000;">Object</span>, <span style="color: #FF8000;">ByVal</span> e <span style="color: #FF8000;">As</span> System.<span style="color: #0000FF;">EventArgs</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Handles</span> botonDT.<span style="color: #0000FF;">Click</span>
listadoJuegos.<span style="color: #0000FF;">Items</span>.<span style="color: #0000FF;">Clear</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0600FF;">Try</span>
dt <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> DataTable<span style="color: #000000;">&#40;</span>”juegos”<span style="color: #000000;">&#41;</span>
comando <span style="color: #008000;">=</span> <span style="color: #FF8000;">New</span> OleDbCommand<span style="color: #000000;">&#40;</span>”<span style="color: #0600FF;">SELECT</span> <span style="color: #008000;">*</span> FROM juegos”, conexion<span style="color: #000000;">&#41;</span>
&nbsp;
adaptador.<span style="color: #0000FF;">SelectCommand</span> <span style="color: #008000;">=</span> comando
adaptador.<span style="color: #0000FF;">Fill</span><span style="color: #000000;">&#40;</span>dt<span style="color: #000000;">&#41;</span>
&nbsp;
i <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span>
&nbsp;
<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> fila <span style="color: #FF8000;">As</span> DataRow In dt.<span style="color: #0000FF;">Rows</span>
<span style="color: #0600FF;">Dim</span> item <span style="color: #FF8000;">As</span> <span style="color: #FF8000;">New</span> ListViewItem<span style="color: #000000;">&#40;</span>dt<span style="color: #000000;">&#40;</span>i<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>”id”<span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
item.<span style="color: #0000FF;">SubItems</span>.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span>dt<span style="color: #000000;">&#40;</span>i<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>”nombre”<span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
item.<span style="color: #0000FF;">SubItems</span>.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span>dt<span style="color: #000000;">&#40;</span>i<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#40;</span>”descripcion”<span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
&nbsp;
listadoJuegos.<span style="color: #0000FF;">Items</span>.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span>item<span style="color: #000000;">&#41;</span>
i <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1</span>
<span style="color: #FF8000;">Next</span>
&nbsp;
<span style="color: #0600FF;">Catch</span> ex <span style="color: #FF8000;">As</span> Exception
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>”Fallo la consulta, mensaje: ” <span style="color: #008000;">+</span> ex.<span style="color: #0000FF;">Message</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Try</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span></pre></div></div>

<p>A todo esto podemos agregarle eventos, el primero para detectar cual o cuales son las filas que estan seleccionadas al hacer doble click en el listview o al clickear un boton (agrego un tercer boton para lanzar el evento ).</p>

<div class="wp_syntax"><div class="code"><pre class="vbnet" style="font-family:monospace;"><span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> registrosSeleccionados<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> indices <span style="color: #FF8000;">As</span> ListView.<span style="color: #0000FF;">SelectedIndexCollection</span> <span style="color: #008000;">=</span> listadoJuegos.<span style="color: #0000FF;">SelectedIndices</span>
&nbsp;
<span style="color: #0600FF;">If</span> indices.<span style="color: #0000FF;">Count</span> &lt;&gt; <span style="color: #FF0000;">0</span> <span style="color: #FF8000;">Then</span>
<span style="color: #FF8000;">For</span> <span style="color: #0600FF;">Each</span> indice <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Integer</span> In indices
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>”Indice Seleccionado: ” <span style="color: #008000;">+</span> indice.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> item <span style="color: #FF8000;">As</span> ListViewItem <span style="color: #008000;">=</span> listadoJuegos.<span style="color: #0000FF;">Items</span><span style="color: #000000;">&#40;</span>indice<span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>”ID: ” <span style="color: #008000;">+</span> item.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">+</span> <span style="color: #0600FF;">Chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">13</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">+</span> “Nombre: ” <span style="color: #008000;">+</span> item.<span style="color: #0000FF;">SubItems</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">+</span> <span style="color: #0600FF;">Chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">13</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">+</span> “Descripcion: ” <span style="color: #008000;">+</span> item.<span style="color: #0000FF;">SubItems</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Text</span><span style="color: #000000;">&#41;</span>
<span style="color: #FF8000;">Next</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span>
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> registroSeleccionado<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> indices <span style="color: #FF8000;">As</span> ListView.<span style="color: #0000FF;">SelectedIndexCollection</span> <span style="color: #008000;">=</span> listadoJuegos.<span style="color: #0000FF;">SelectedIndices</span>
&nbsp;
<span style="color: #0600FF;">If</span> indices.<span style="color: #0000FF;">Count</span> &lt;&gt; <span style="color: #FF0000;">0</span> <span style="color: #FF8000;">Then</span>
<span style="color: #0600FF;">Dim</span> indice <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Integer</span> <span style="color: #008000;">=</span> indices<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
&nbsp;
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>”Indice Seleccionado: ” <span style="color: #008000;">+</span> indice.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">Dim</span> item <span style="color: #FF8000;">As</span> ListViewItem <span style="color: #008000;">=</span> listadoJuegos.<span style="color: #0000FF;">Items</span><span style="color: #000000;">&#40;</span>indice<span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">MsgBox</span><span style="color: #000000;">&#40;</span>”ID: ” <span style="color: #008000;">+</span> item.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">+</span> <span style="color: #0600FF;">Chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">13</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">+</span> “Nombre: ” <span style="color: #008000;">+</span> item.<span style="color: #0000FF;">SubItems</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Text</span> <span style="color: #008000;">+</span> <span style="color: #0600FF;">Chr</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">13</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">+</span> “Descripcion: ” <span style="color: #008000;">+</span> item.<span style="color: #0000FF;">SubItems</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">Text</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">If</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span>
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> Button1_Click<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> sender <span style="color: #FF8000;">As</span> System.<span style="color: #FF0000;">Object</span>, <span style="color: #FF8000;">ByVal</span> e <span style="color: #FF8000;">As</span> System.<span style="color: #0000FF;">EventArgs</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Handles</span> Button1.<span style="color: #0000FF;">Click</span>
registrosSeleccionados<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span>
&nbsp;
<span style="color: #FF8000;">Private</span> <span style="color: #0600FF;">Sub</span> listadoJuegos_DoubleClick<span style="color: #000000;">&#40;</span><span style="color: #FF8000;">ByVal</span> sender <span style="color: #FF8000;">As</span> <span style="color: #FF0000;">Object</span>, <span style="color: #FF8000;">ByVal</span> e <span style="color: #FF8000;">As</span> System.<span style="color: #0000FF;">EventArgs</span><span style="color: #000000;">&#41;</span> <span style="color: #FF8000;">Handles</span> listadoJuegos.<span style="color: #0000FF;">DoubleClick</span>
registroSeleccionado<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">End</span> <span style="color: #0600FF;">Sub</span></pre></div></div>

<p>Este es solo el comienzo al menos para crear un mantenedor de registros, sin embargo es la base para todo lo siguiente.<br />
<img class="aligncenter size-full wp-image-111" title="list4" src="http://www.donubu.com/wp-content/uploads/list4.png" alt="" width="500" height="367" /><br class="limpiar" /><br />
Ojo, que esta solucion debe complementarse con algun paginador de resultados para evitar el desborde de recursos.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2008/09/21/buen-programador-diseno-pobre/" title="Buen Programador = Diseño Pobre">Buen Programador = Diseño Pobre</a></li><li><a href="http://www.donubu.com/2008/09/21/vbnet-con-mysql-mysql-driver-cs/" title="VB.NET con MySQL &#8211; MySQL Driver Cs">VB.NET con MySQL &#8211; MySQL Driver Cs</a></li><li><a href="http://www.donubu.com/2010/02/23/configurar-bw_mod-dentro-de-cpanel/" title="Configurar bw_mod dentro de CPANEL">Configurar bw_mod dentro de CPANEL</a></li><li><a href="http://www.donubu.com/2008/04/13/htmlsql-un-parser-sql-para-archivos-html/" title="htmlSQL &#8211; Un parser SQL para archivos HTML">htmlSQL &#8211; Un parser SQL para archivos HTML</a></li><li><a href="http://www.donubu.com/2008/02/01/vistats-sistema-integral-estadisticas/" title="viSTATS Sistema Integral de Estadísticas">viSTATS Sistema Integral de Estadísticas</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/09/15/vbnet-utilizar-un-listview-para-desplegar-datos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tutorial 3: Limitar Descargas con PHP y MySQL &#8211; descargas simultaneas y velocidad de bajada</title>
		<link>http://www.donubu.com/2008/05/16/tutorial-3-limitar-descargas-con-php-y-mysql-descargas-simultaneas-y-velocidad-de-bajada/</link>
		<comments>http://www.donubu.com/2008/05/16/tutorial-3-limitar-descargas-con-php-y-mysql-descargas-simultaneas-y-velocidad-de-bajada/#comments</comments>
		<pubDate>Fri, 16 May 2008 18:27:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[descargas]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[tutoriales]]></category>
		<category><![CDATA[ancho de banda]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[limitar]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=87</guid>
		<description><![CDATA[Actualmente este singular problema puede ser resuelto por diversos módulos integrados en Apache (no de forma nativa pero si disponibles para su descarga), como MOD_LIMITIPCONN o MOD_BANDWIDTH. Sin embargo no en todos los servidores gratuitos o pagados está instalado. Primero; ¿Por qué limitar las descargas?: Usualmente, uno acostumbra a bajar todos los links disponibles en [...]]]></description>
			<content:encoded><![CDATA[<p>Actualmente este singular problema puede ser resuelto por diversos módulos integrados en <a href="http://www.apache.org/" target="_blank">Apache</a> (no de forma nativa pero si disponibles para su descarga), como <a href="http://dominia.org/djao/limitipconn.html" target="_blank">MOD_LIMITIPCONN</a> o <a href="http://www.cohprog.com/mod_bandwidth.html" target="_blank">MOD_BANDWIDTH</a>. Sin embargo no en todos los servidores gratuitos o pagados está  instalado.</p>
<p>Primero; <strong>¿Por qué limitar las descargas?</strong>: Usualmente, uno acostumbra a bajar todos los links disponibles en una web y no uno por uno. Esto no afecta mayormente al cliente, pero sí al servidor, ya que consume el ancho de banda disponible. Y más aún al utilizar un gestor de descargas, que es capaz de conectarse a un mismo servidor N veces para bajar un mismo archivo, si dispones de 100 conexiones simultaneas disponibles, entonces el gestor facilmente podría utilizar esas 100 y dejar a todos los demás esperando.</p>
<p>Lo primero y único que necesitas: <a href="http://www.wampserver.com/en/index.php" target="_blank">Apache (con mod_rewrite instalado) y  mySQL (para almacenar las conexiones de cada IP)</a>.</p>
<p><strong>El script consiste en</strong>, capturar todos los archivos terminados en &#8220;ZIP&#8221; o &#8220;RAR&#8221; o &#8220;ISO&#8221; (se pueden agregar todos los que quieras) y pasarlos por un archivo que va a decidir si acepta  o no la descarga. No solo podemos limitar el número de descargas simultáneas, sino que también los KBS de velocidad. Lamentablemente, esta acción al aplicarse en archivos grandes, dejará al interprete de PHP ejecutandose durante todo el proceso, lo que consumirá recursos del procesador y RAM, por ende, NO USAR CON ARCHIVOS EXCESIVAMENTE GRANDES.</p>
<p>Se puede definir el máx. de descargas simultáneas y el tiempo de espera (en minutos) para volver a bajar archivos.<span id="more-87"></span></p>
<h3><strong>USAR esta documentación a modo de aprendizaje y aplicación de php en diversas tareas que se deben de realizar a diario y no como un complemento en sitios web con demasiado tráfico.</strong></h3>
<p><strong>Primero</strong><br />
Deben crear una tabla en MySQL con el código:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">CREATE</span>  <span style="color: #993333; font-weight: bold;">TABLE</span>  <span style="color: #ff0000;">`limitar`</span><span style="color: #66cc66;">.</span><span style="color: #ff0000;">`descargas`</span> <span style="color: #66cc66;">&#40;</span>
<span style="color: #ff0000;">`id`</span> <span style="color: #993333; font-weight: bold;">INT</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT</span> <span style="color: #66cc66;">,</span>
 <span style="color: #ff0000;">`ip`</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">15</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span>
 <span style="color: #ff0000;">`archivo`</span> <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">255</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span>
 <span style="color: #ff0000;">`tiempo_descarga`</span> <span style="color: #993333; font-weight: bold;">TIMESTAMP</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #66cc66;">,</span>
 <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span> <span style="color: #ff0000;">`id`</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span> ENGINE <span style="color: #66cc66;">=</span> MYISAM</pre></div></div>

<div>Además necesitas el código a utilizar en un archivo &#8220;.htaccess&#8221; que controlará que todas las URL que terminen en &#8220;zip&#8221;, &#8220;rar&#8221; o &#8220;iso&#8221; (puedes agregar otros, separandolos por el simbolo | ), sean pasadas por el archivo php que gestionará los accesos:</div>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">RewriteEngine</span> <span style="color: #0000ff;">on</span>  <span style="color: #00007f;">RewriteRule</span> ^(.*)\.(zip|rar|iso)$ limitar.php?archivo=$1.$2 [QSA]</pre></div></div>

<p>y finalmente el código php necesario para esta labor (todas sus líneas comentadas):</p>
<p>Lamentablemente el parser de geshi, me transforma los simbolos &lt; &gt; en &amp; lt; y &amp; gt; respectivamente. Deben reemplazarlos para que funcione o bien descargar el rar.</p>
<p><a href="http://www.donubu.com/uploads/limitar.rar" target="_self"><strong>Descargar el archivo limitar.php</strong></a></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>?php
&nbsp;
	<span style="color: #666666; font-style: italic;">//-------------------------------------</span>
	<span style="color: #666666; font-style: italic;">// evito el max execution time</span>
	<span style="color: #990000;">ini_set</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'max_execution_time'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// evito el timeout</span>
	<span style="color: #990000;">set_time_limit</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// prevengo la detencion del script</span>
	<span style="color: #990000;">ignore_user_abort</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// inicio el tiempo actual</span>
	<span style="color: #000088;">$tiempo_actual</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//-------------------------------------	</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">/* MIME TYPES */</span>
	<span style="color: #666666; font-style: italic;">// Necesarios para que iexplorer descargue el archivo</span>
	<span style="color: #666666; font-style: italic;">// y no muestre simbolos raros (aunque si el mime no coincide, los mostrará igual)</span>
	<span style="color: #666666; font-style: italic;">// Agregar todos los necesarios según el htaccess</span>
&nbsp;
	<span style="color: #000088;">$mymes</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'rar'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span><span style="color: #0000ff;">'application/x-rar-compressed'</span><span style="color: #339933;">,</span>
				   <span style="color: #0000ff;">'zip'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'application/zip'</span><span style="color: #339933;">,</span>
				   <span style="color: #0000ff;">'iso'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'application/octet-stream'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//-------------------------------------</span>
	<span style="color: #666666; font-style: italic;">/* Estados */</span>
	<span style="color: #666666; font-style: italic;">// -1 = descarga fallida</span>
	<span style="color: #666666; font-style: italic;">// 0 = descargando</span>
	<span style="color: #666666; font-style: italic;">// 1 = descarga exitosa</span>
	<span style="color: #666666; font-style: italic;">//-------------------------------------</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">//-------------------------------------</span>
	<span style="color: #666666; font-style: italic;">/* Parametros Generales */</span>
	<span style="color: #666666; font-style: italic;">// Descargas Máx. de forma simultanea</span>
	<span style="color: #000088;">$max_simultaneas</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// Tiempo de espera en segundos</span>
	<span style="color: #000088;">$tiempo_espera</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">3600</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">//-------------------------------------</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">/* Conexión con MySQL */</span>
	<span style="color: #000088;">$recurso_sql</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> or <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'MySQL no disponible'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'limitar'</span><span style="color: #339933;">,</span><span style="color: #000088;">$recurso_sql</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Base de datos seleccionada no disponible'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Inicio en 0 bytes el maximo y el total descargado actualmente</span>
	<span style="color: #000088;">$actual</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$maximo</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// prevengo ataques sobre la variable del archivo</span>
	<span style="color: #000088;">$extension</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'extension'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$nombre_archivo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">addslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'archivo'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.'</span><span style="color: #339933;">.</span><span style="color: #000088;">$extension</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 	
&nbsp;
	<span style="color: #666666; font-style: italic;">// completo el path hacia el archivo, incluyo la carpeta &quot;files&quot;</span>
	<span style="color: #000088;">$ruta_archivo</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'files/'</span><span style="color: #339933;">.</span><span style="color: #000088;">$nombre_archivo</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// verifico que el archivo exista, y que tenga un nombre</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ruta_archivo</span><span style="color: #009900;">&#41;</span> OR <span style="color: #000088;">$nombre_archivo</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// Envio 404 archivo no existe</span>
		<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;HTTP/1.0 404 Not Found&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">// termino el script</span>
		<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Archivo no encontrado: &amp;lt;b&amp;gt;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$nombre_archivo</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&amp;lt;/b&amp;gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	
&nbsp;
	<span style="color: #666666; font-style: italic;">// Obtengo la ip del visitante</span>
	<span style="color: #666666; font-style: italic;">// existen diversos metodos, y mucho mejores que el actual</span>
	<span style="color: #666666; font-style: italic;">// sin embargo solo esta a metodo de ejemplo</span>
	<span style="color: #000088;">$ip</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	
&nbsp;
	<span style="color: #666666; font-style: italic;">// Busco si el archivo seleccionado se esta descargando desde la ip del cliente</span>
	<span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SELECT id FROM descargas WHERE ip=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$ip</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot; AND archivo=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$nombre_archivo</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot; AND estado=0 '</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurso_sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// obtengo las filas devueltas por el recurso</span>
	<span style="color: #000088;">$num</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// se inicializa la variable de autorizacion como false</span>
	<span style="color: #000088;">$autorizado</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// variable auxiliar, que permite saber si el tiempo de espera ha caducado para un registro en la bd</span>
	<span style="color: #000088;">$autorizado_update</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// variable para saber si el usuario se encuentra bajando el archivo seleccionado</span>
	<span style="color: #000088;">$descargando</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// si no existen registros (no se esta descargando el archivo actual en la ip actual)</span>
	<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// se eliminan las descargas incompletas</span>
		<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'DELETE FROM descargas WHERE estado=-1 '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Consulta que extrae de la base de datos todas las descargas por ip y ordenadas segun el tiempo_espera</span>
		<span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SELECT id,estado, tiempo_espera FROM descargas WHERE ip=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$ip</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot; AND estado !=-1 ORDER BY tiempo_espera ASC '</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurso_sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">// se cuentan las coincidencias</span>
		<span style="color: #000088;">$num</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">// inicializo tiempo a esperar</span>
		<span style="color: #000088;">$tiempo_a_esperar</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$tiempo_actual</span><span style="color: #339933;">+</span><span style="color: #000088;">$tiempo_espera</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	
&nbsp;
		<span style="color: #666666; font-style: italic;">// si no existen coincidencias o son inferiores al limite max de descargas simultaneas</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$num</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span> OR <span style="color: #000088;">$num</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #000088;">$max_simultaneas</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// se autoriza la descarga</span>
			<span style="color: #000088;">$autorizado</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// se recogen los datos</span>
			<span style="color: #000088;">$datos</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_assoc</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// si la primera descarga esta con el tiempo de espera caducado y ya se descargo</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tiempo_actual</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #000088;">$datos</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tiempo_espera'</span><span style="color: #009900;">&#93;</span> AND <span style="color: #000088;">$datos</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'estado'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'1'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #666666; font-style: italic;">// actualizo el tiempo de espera y se autoriza la descarga</span>
				<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'UPDATE FROM descargas SET tiempo_espera=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$tiempo_a_esperar</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;,archivo=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$nombre_archivo</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;,estado=0 WHERE id='</span><span style="color: #339933;">.</span><span style="color: #000088;">$datos</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurso_sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #666666; font-style: italic;">// se pasa el identificador</span>
				<span style="color: #000088;">$identificador</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$datos</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$autorizado_update</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$autorizado</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// de lo contrario, activo la variable que controla el estado del archivo</span>
	<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$descargando</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// si no se encuentra autorizado, envio un error.</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$autorizado</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			 <span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP/1.0 503 Service Unavailable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>		
&nbsp;
			 <span style="color: #666666; font-style: italic;">// si se esta descargando arrojo un error</span>
			 <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$descargando</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			 	<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Ya te encuentras descargando el archivo seleccionado &amp;lt;b&amp;gt;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$nombre_archivo</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&amp;lt;/b&amp;gt;.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			 <span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
  			 	<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'No estas autorizado a descargar más de '</span><span style="color: #339933;">.</span><span style="color: #000088;">$max_simultaneas</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' archivos de forma simultanea o a descargar esa cantidad sin esperar al menos '</span><span style="color: #339933;">.</span><span style="color: #000088;">$tiempo_espera</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' minutos.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			 <span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// solo se inserta si el registro es nuevo</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$autorizado_update</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">// Se registra, automaticamente el estado es &quot;descargando&quot;</span>
			<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'INSERT INTO descargas (ip,archivo,tiempo_espera) VALUES (&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$ip</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;,&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$nombre_archivo</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;,&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$tiempo_a_esperar</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;) '</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurso_sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000088;">$identificador</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_insert_id</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$recurso_sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #666666; font-style: italic;">// calculo el peso de archivo</span>
		<span style="color: #000088;">$maximo</span> <span style="color: #339933;">=</span> <span style="color: #990000;">filesize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ruta_archivo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
		<span style="color: #666666; font-style: italic;">// cabeceras de control</span>
		<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-type: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$mymes</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$extension</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-Disposition: attachment; filename=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$nombre_archivo</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-length: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$maximo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Cache-control: private'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 	
&nbsp;
		<span style="color: #666666; font-style: italic;">// abro el recurso de archivo en modo lectura</span>
		<span style="color: #000088;">$fd</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$ruta_archivo</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;r&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
		<span style="color: #666666; font-style: italic;">// mientras el recurso contenga bytes por leer</span>
		<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">feof</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fd</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>			
&nbsp;
			<span style="color: #666666; font-style: italic;">// compruebo si el usuario ha detenido la ejecucion del script</span>
			<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">connection_status</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #666666; font-style: italic;">// envio funcion de salida</span>
				comprobarDescarga<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #666666; font-style: italic;">// se detiene el script, el cliente se desconecto.</span>
				<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #666666; font-style: italic;">// leo solo 10kb del archivo</span>
			<span style="color: #000088;">$buffer</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fread</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fd</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">10240</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// aumento la variable actual descargado</span>
			<span style="color: #000088;">$actual</span> <span style="color: #339933;">+=</span> <span style="color: #000088;">$buffer</span><span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// muestro los 10kb que lei anteriormente</span>
			<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$buffer</span><span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// Esta funcion me permite detener el while en microsegundos para limitar los kb de descarga</span>
			<span style="color: #990000;">usleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">300000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
			<span style="color: #666666; font-style: italic;">// En este caso, cada 1/3 de segundo se entregan 10kb, entonces el cliente tendrá disponible solo 30kb apróx. por segundo.</span>
&nbsp;
		<span style="color: #009900;">&#125;</span>
		<span style="color: #666666; font-style: italic;">// cierro el recurso</span>
		<span style="color: #990000;">fclose</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$fd</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">// envio la funcion de salida</span>
		comprobarDescarga<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">// termino el script</span>
		<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
	<span style="color: #666666; font-style: italic;">// Esta es la funcion de salida, que se ejecuta cuando el usuario cancela el script, o se realiza la descarga</span>
	<span style="color: #000000; font-weight: bold;">function</span> comprobarDescarga<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	 <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$actual</span><span style="color: #339933;">,</span> <span style="color: #000088;">$maximo</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurso_sql</span><span style="color: #339933;">,</span> <span style="color: #000088;">$tiempo_espera</span><span style="color: #339933;">,</span> <span style="color: #000088;">$identificador</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">// renuevo el tiempo actual</span>
		<span style="color: #000088;">$tiempo_actual</span> <span style="color: #339933;">=</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$tiempo_a_esperar</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$tiempo_actual</span> <span style="color: #339933;">*</span> <span style="color: #000088;">$tiempo_espera</span><span style="color: #339933;">;</span>		
&nbsp;
		<span style="color: #666666; font-style: italic;">// si se descargo el archivo de forma correcta</span>
		<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$actual</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=</span> <span style="color: #000088;">$maximo</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
			<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'UPDATE descargas SET estado=1,tiempo_espera=&quot;'</span><span style="color: #339933;">.</span><span style="color: #000088;">$tiempo_a_esperar</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot; WHERE id='</span><span style="color: #339933;">.</span><span style="color: #000088;">$identificador</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurso_sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// si se detuvo el script</span>
		<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">else</span><span style="color: #009900;">&#123;</span>
			<span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'UPDATE descargas SET estado=-1 WHERE id='</span><span style="color: #339933;">.</span><span style="color: #000088;">$identificador</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurso_sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// termino el script</span>
		<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
?<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span></pre></div></div>

<p><a href="http://www.donubu.com/uploads/limitar.rar" target="_self"><strong>Descargar el archivo limitar.php</strong></a></p>
<p>Son aproximadamente 170 líneas incluyendo los comentarios que son realmente necesarios para los novatos (aunque a veces, entorpecen la interpretación visual del script). Es el código completo probado y revisado por última vez el Viernes 16 de mayo del 2008. Realizarlo me tomó más de 2 horas, y 1 hora en realizar pruebas.</p>
<p>Existen varios ejemplos en la red, pero ninguno cubre temas como &#8220;detectar si el usuario se desconecto, si el archivo se bajo completamente, controlar un número de descargas simultáneas, etc&#8230;&#8221;</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2010/02/23/configurar-bw_mod-dentro-de-cpanel/" title="Configurar bw_mod dentro de CPANEL">Configurar bw_mod dentro de CPANEL</a></li><li><a href="http://www.donubu.com/2008/01/02/administracion-servidor-web-y-de-aplicacion/" title="Paneles de Administración de Servidores">Paneles de Administración de Servidores</a></li><li><a href="http://www.donubu.com/2010/07/14/de-vuelta-luego-de-muchas-campanas-mas/" title="De vuelta luego de muchas campañas más">De vuelta luego de muchas campañas más</a></li><li><a href="http://www.donubu.com/2010/02/26/nivea-silvermoto/" title="Nivea Silvermoto">Nivea Silvermoto</a></li><li><a href="http://www.donubu.com/2010/01/27/oportunidad-digital-fotografia/" title="Oportunidad Digital &#8220;Fotografía&#8221;">Oportunidad Digital &#8220;Fotografía&#8221;</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/05/16/tutorial-3-limitar-descargas-con-php-y-mysql-descargas-simultaneas-y-velocidad-de-bajada/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Virtualización y Microsoft Virtual PC</title>
		<link>http://www.donubu.com/2008/05/11/virtualizacion-y-microsoft-virtual-pc/</link>
		<comments>http://www.donubu.com/2008/05/11/virtualizacion-y-microsoft-virtual-pc/#comments</comments>
		<pubDate>Sun, 11 May 2008 15:28:46 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[descargas]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[maquina]]></category>
		<category><![CDATA[pc]]></category>
		<category><![CDATA[recursos]]></category>
		<category><![CDATA[sistema operativo]]></category>
		<category><![CDATA[virtual]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[virtualizar]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=84</guid>
		<description><![CDATA[Es raro, que a esta altura se me ocurra agregar un post de un software que es bastante antiguo (leer más abajo), pero lo hago por la sencilla razón de que es fácil de usar y muchos nisiquiera lo conocen o bien no comprenden la terminología. Según la wikipedia, la virtualización se refiere a la [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-86" title="msvpclogo" src="http://www.donubu.com/uploads/msvpclogo.png" alt="" width="500" height="159" /><br />
<br class="limpiar" /><br />
<span style="text-decoration: line-through;"> Es raro, que a esta altura se me ocurra agregar un post de un software que es bastante antiguo (leer más abajo), pero lo hago por la sencilla razón de que es fácil de usar y muchos nisiquiera lo conocen o bien no comprenden la terminología.</span></p>
<p><a href="http://es.wikipedia.org/wiki/Virtualizaci%C3%B3n" target="_blank">Según la wikipedia, la virtualización se refiere a la abstracción de los recursos de una computadora</a>. En este caso nos centraremos en la <a href="http://es.wikipedia.org/wiki/M%C3%A1quina_virtual" target="_blank">virtualización de plataforma</a>; que es un software capaz de EMULAR a un computador. En palabras más simples, podríamos tener 2 o más sistemas operativos corriendo sobre un mismo hardware y un mismo sistema operativo gracias a un software especializado.</p>
<p>Para descargar un software para virtualización, podemos acceder a:<span id="more-84"></span></p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;FamilyID=04d26402-3199-48a3-afa2-2dc0b40a73b6" target="_blank">La página oficial de  Microsoft Virtual PC</a></p>
<p><a href="http://www.donubu.com/uploads/msvpc1.png"><br />
<img class="alignleft alignnone size-medium wp-image-85" style="float: left;" title="msvpc1" src="http://www.donubu.com/uploads/msvpc1-300x142.png" alt="" width="300" height="142" /></a></p>
<p>Dentro de la extensa lista de software, encontramos a <a href="http://es.wikipedia.org/wiki/Virtual_PC" target="_blank">Microsoft Virtual PC</a>, de libre descarga y uso. Cuenta con las herramientas básicas.</p>
<p>Podremos controlar la cantidad de memoria Ram asignada al sistema operativo &#8220;invitado&#8221;, habilitar puertos COM, LPT, sonido, e incluso compartir carpetas entre los sistemas operativos instalados.</p>
<p>Lo mejor de todo, es que puedes utilizar esta tecnología para realizar pruebas de software en diversos sistemas operativos con distintos recursos disponibles.</p>
<p>No es el último ni tampoco el único, pero quizás si el más agradable y sencillo para un usuario común. Puedes incluso instalar distribuciones de linux y realizar pruebas de tipo servidor.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2008/01/14/linux-fan-boys-destruyen-linux/" title="¿Linux Fan Boys destruyen Linux?">¿Linux Fan Boys destruyen Linux?</a></li><li><a href="http://www.donubu.com/2009/01/30/programacion-en-php-migrar-de-entornos-de-desarrollo-a-productivos/" title="Programacion en PHP, migrar de entornos de desarrollo a productivos">Programacion en PHP, migrar de entornos de desarrollo a productivos</a></li><li><a href="http://www.donubu.com/2009/01/07/recopilacion-de-20-wallpapers-de-windows-7/" title="Recopilacion de 20 wallpapers de windows 7">Recopilacion de 20 wallpapers de windows 7</a></li><li><a href="http://www.donubu.com/2008/04/06/windows-a-simple-vista-p/" title="Windows a simple Vista :P">Windows a simple Vista :P</a></li><li><a href="http://www.donubu.com/2009/11/16/prueba-la-version-beta-de-office-2010-gratis/" title="Prueba la version BETA de Office 2010 Gratis">Prueba la version BETA de Office 2010 Gratis</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/05/11/virtualizacion-y-microsoft-virtual-pc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MICONSULTA &#8211; Software para Consultas Médicas</title>
		<link>http://www.donubu.com/2008/05/04/miconsulta-software-para-consultas-medicas/</link>
		<comments>http://www.donubu.com/2008/05/04/miconsulta-software-para-consultas-medicas/#comments</comments>
		<pubDate>Sun, 04 May 2008 21:25:34 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[administracion]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[medicina]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[consulta medica]]></category>
		<category><![CDATA[gestion]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[programa]]></category>
		<category><![CDATA[veterinarias]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=80</guid>
		<description><![CDATA[Hace 3 años atrás, y luego de un exhaustivo estudio de mercado y analisis de necesidades de una &#8220;Consulta Médica&#8221; (ya sea particular o clínica), logré elaborar un prototipo de software bastante funcional y moderno, utilizando PHP, MySQL, y algo de Ajax. Luego, ese software evoluciono, integrando mayor control de acciones, herramientas más definidas y [...]]]></description>
			<content:encoded><![CDATA[<p>Hace 3 años atrás, y luego de un exhaustivo estudio de mercado y analisis de necesidades de una &#8220;Consulta Médica&#8221; (ya sea particular o clínica), logré elaborar un prototipo de software bastante funcional y moderno, utilizando <a href="http://es.wikipedia.org/wiki/Php" target="_blank">PHP</a>, <a href="http://es.wikipedia.org/wiki/Mysql" target="_blank">MySQL</a>, y algo de <a href="http://es.wikipedia.org/wiki/AJAX" target="_blank">Ajax</a>.</p>
<p>Luego, ese software evoluciono, integrando mayor control de acciones, herramientas más definidas y finalmente una optimización.</p>
<p>Sin embargo y no conforme y gracias al <a href="http://es.wikipedia.org/wiki/Feedback" target="_blank">feedback</a> por parte de los diversos usuarios, logré reinventar todo otra vez y entregar un verdadero software de gestión médica.</p>
<p><a href="http://www.donubu.com/uploads/fullscreen-home.png"><img class="alignnone size-full wp-image-81" title="fullscreen-home" src="http://www.donubu.com/uploads/fullscreen-home.png" alt="" width="475" height="304" /></a><br />
<br class="limpiar" /></p>
<p>Para acceder a la demostración:</p>
<p><a href="http://spa.donubu.com" target="_blank">http://spa.donubu.com</a><br />
usuario:         demo<br />
password: 007bond007</p>
<hr />Apliqué librerías como <a href="http://es.wikipedia.org/wiki/Prototype" target="_blank">prototype</a>, <a href="http://script.aculo.us/" target="_blank">scriptaculous </a>y <a href="http://www.extjs.com/" target="_blank">extjs </a>(aunque aún me encuentro corrigiendo funciones obsoletas) y logré otorgarle al cliente, el manejo del área de trabajo. Finalmente y para completar este desarrollo, estoy terminando la página web oficial.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2009/07/10/vibora-2-0-con-twitter-connect/" title="Vibora 2.0 con Twitter Connect">Vibora 2.0 con Twitter Connect</a></li><li><a href="http://www.donubu.com/2009/07/06/sonarfm-version-2-0-recargada/" title="SonarFM version 2.0 Recargada">SonarFM version 2.0 Recargada</a></li><li><a href="http://www.donubu.com/2009/04/02/sonarfm-sitio-web-de-la-radio-20/" title="SonarFM &#8211; Sitio web de la Radio 2.0">SonarFM &#8211; Sitio web de la Radio 2.0</a></li><li><a href="http://www.donubu.com/2008/12/24/mu-darck-servidor-mu-chileno/" title="MUDarck &#8211; Servidor de MU Chileno">MUDarck &#8211; Servidor de MU Chileno</a></li><li><a href="http://www.donubu.com/2008/08/31/remobo-una-vpn-a-un-par-de-clics-de-distancia/" title="REMOBO &#8211; Una VPN a un par de clics de distancia">REMOBO &#8211; Una VPN a un par de clics de distancia</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/05/04/miconsulta-software-para-consultas-medicas/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Microsoft Silverlight VS Adobe Flex</title>
		<link>http://www.donubu.com/2008/04/11/microsoft-silverlight-vs-adobe-flex/</link>
		<comments>http://www.donubu.com/2008/04/11/microsoft-silverlight-vs-adobe-flex/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 17:41:00 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[browser]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[iexplorer]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=72</guid>
		<description><![CDATA[Hoy en día es más fácil para nosotros los desarrolladores contar con diversas &#8220;herramientas&#8221; y &#8220;complementos&#8221; que nos ayudan a interactuar con el usuario final de nuestros software de manera más dinámica y enriquecer la experiencia de uso. Gracias a ADOBE FLEX y a MICROSOFT SILVERLIGHT, todas estas labores complejas son parte del pasado. Ambos [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignnone size-thumbnail wp-image-74" title="silverlight" src="http://www.donubu.com/uploads/silverlight-150x150.png" alt="" width="150" height="150" /><strong> </strong><img class="alignnone size-thumbnail wp-image-73" title="fx" src="http://www.donubu.com/uploads/fx-150x150.png" alt="" width="150" height="150" /><br />
<br class="limpiar" /><br />
Hoy en día es más fácil para nosotros los desarrolladores contar con diversas &#8220;herramientas&#8221; y &#8220;complementos&#8221; que nos ayudan a interactuar con el usuario final de nuestros software de manera más dinámica y enriquecer la experiencia de uso.</p>
<p style="text-align: justify;">Gracias a <a href="http://www.adobe.com/es/products/flex/" target="_blank">ADOBE FLEX</a> y a <a href="http://www.microsoft.com/silverlight/" target="_blank">MICROSOFT SILVERLIGHT</a>, todas estas labores complejas son parte del pasado. Ambos cumplen lo que se denomina <a href="http://es.wikipedia.org/wiki/Rich_Internet_Application" target="_blank">RIA  (<em>Aplicaciones Ricas de Internet</em>)</a>. También se basan en un modelo multi-capa, siendo la de presentación. Ya que todos los procesos se ejecutan y resuelven gracias a la implementación de varios otros lenguajes con los que se puede interactuar.</p>
<p style="text-align: justify;">Acceder a bases de datos, leer feeds rss, generar animaciones, mostrar videos, subir archivos a la web, entre otras cosas.</p>
<p style="text-align: justify;">Ambos presentan un número similar de características que los hacen bastante similares, sin embargo y quizás lo único que puede desequilibrar la balanza, es que Silverlight NO es soportado en Linux, y solo en windows en los navegadores <a href="http://www.mozilla.com/products/download.html?product=firefox-2.0.0.13&amp;os=win&amp;lang=es-ES" target="_blank">Firefox</a> e Internet Explorer (<a href="http://www.opera.com/" target="_blank">Opera</a> aún queda afuera). Mientras que Flex es multiplataforma y puede ser unido a ADOBE AIR para crear aplicaciones de escritorio.</p>
<p style="text-align: justify;">Para ambos se necesitan unos complementos que se instalan en un par de clic y que son solicitados al ejecutar una aplicación.</p>
<p style="text-align: justify;">Una explicación más detallada se puede encontrar en la WIKIPEDIA <img src='http://www.donubu.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8230;</p>
<p style="text-align: justify;"><a href="http://es.wikipedia.org/wiki/Adobe_Flex" target="_blank">Adobe Flex</a> y <a href="http://es.wikipedia.org/wiki/Silverlight" target="_blank">Microsoft Silverlight</a></p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2010/02/26/nivea-silvermoto/" title="Nivea Silvermoto">Nivea Silvermoto</a></li><li><a href="http://www.donubu.com/2009/12/29/ya-llego-el-crush-power-music-2010/" title="Ya llego el Crush Power Music 2010">Ya llego el Crush Power Music 2010</a></li><li><a href="http://www.donubu.com/2009/11/16/prueba-la-version-beta-de-office-2010-gratis/" title="Prueba la version BETA de Office 2010 Gratis">Prueba la version BETA de Office 2010 Gratis</a></li><li><a href="http://www.donubu.com/2009/01/14/descarga-gratis-windows-7/" title="Descarga gratis windows 7">Descarga gratis windows 7</a></li><li><a href="http://www.donubu.com/2009/01/07/recopilacion-de-20-wallpapers-de-windows-7/" title="Recopilacion de 20 wallpapers de windows 7">Recopilacion de 20 wallpapers de windows 7</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/04/11/microsoft-silverlight-vs-adobe-flex/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Songbird &#8211; y nadie lo conocia</title>
		<link>http://www.donubu.com/2008/03/30/songbird-y-nadie-lo-conocia/</link>
		<comments>http://www.donubu.com/2008/03/30/songbird-y-nadie-lo-conocia/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 20:32:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[musica]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[alternativa]]></category>
		<category><![CDATA[itunes]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[player]]></category>
		<category><![CDATA[reproductor]]></category>
		<category><![CDATA[songbird]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=53</guid>
		<description><![CDATA[Quede sorprendido al toparme con songbird :S&#8230; el firefox pero de los reproductores de música (es auspiciado por MOZILLA). Nunca había escuchado de este proyecto que fácilmente (y para mi) se va a transformar en la alternativa al menos para el iTUNES. NO es solo un reproductor de música, sino que es una plataforma de [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.songbirdnest.com/" target="_blank"><img class="aligncenter size-full wp-image-54" title="win-library-thumb" src="http://www.donubu.com/uploads/win-library-thumb.png" alt="" width="340" height="305" /></a></p>
<p><br class="limpiar" /><br />
Quede <a href="http://www.songbirdnest.com/" target="_blank">sorprendido al toparme con songbird</a> :S&#8230; el f<a href="http://www.getfirefox.com" target="_blank">irefox</a> pero de los reproductores de música (es auspiciado por <a href="http://www.mozilla.org/" target="_blank">MOZILLA</a>). Nunca había escuchado de este proyecto que fácilmente (y para mi) se va a transformar en la alternativa al menos para el iTUNES.</p>
<p>NO es solo un reproductor de música, sino que es una plataforma de reproducción, organización y más encima opensource.</p>
<p>Ya se encuentra en su <a href="http://developer.songbirdnest.com/" target="_blank">versión 0.5.</a> Tiene un entorno llamativo, mucho mejor que cualquier otro producto de <a href="http://www.mozilla.org/" target="_blank">MOZILLA</a>.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2009/04/02/sonarfm-sitio-web-de-la-radio-20/" title="SonarFM &#8211; Sitio web de la Radio 2.0">SonarFM &#8211; Sitio web de la Radio 2.0</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/03/30/songbird-y-nadie-lo-conocia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Por Fin &#8211; HOTFIX para visual basic en visual studio 2008</title>
		<link>http://www.donubu.com/2008/03/30/por-fin-hotfix-para-visual-basic-en-visual-studio-2008/</link>
		<comments>http://www.donubu.com/2008/03/30/por-fin-hotfix-para-visual-basic-en-visual-studio-2008/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 19:43:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[bugs]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[hotfix]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[visual basic]]></category>
		<category><![CDATA[problemas]]></category>
		<category><![CDATA[visual studio 2008]]></category>

		<guid isPermaLink="false">http://www.donubu.com/?p=51</guid>
		<description><![CDATA[Llevo casi 1 mes mudando todos mis programas desde visual studio 2005 a visual studio 2008 y empecé a notar ciertas falencias de este último. A veces se tomaba demasiado tiempo en el inicio de tareas de seguimiento de errores, o bien, la ventana del IDE se quedaba pegada y era necesario finalizar la tarea [...]]]></description>
			<content:encoded><![CDATA[<p>Llevo casi 1 mes mudando todos mis programas desde visual studio 2005 a visual studio 2008 y empecé a notar ciertas falencias de este último. A veces se tomaba demasiado tiempo en el inicio de tareas de seguimiento de errores, o bien, la ventana del IDE se quedaba pegada y era necesario finalizar la tarea desde el administrador de windows (Esto solo pasa en visual basic, y no en c#).</p>
<p><a href="http://blogs.msdn.com/vbteam/archive/2008/03/23/hotfix-available-for-vb-performance-issue-in-vs2008-dj-park.aspx" target="_blank">Navegando en el blog oficial de los desarrolladores del vbteam encontré la solución, y es un pequeño</a> <a href="http://es.wikipedia.org/wiki/Hotfix" target="_blank">hotfix</a>.</p>
<p>Dejo el acceso para quienes tengan problemas similares.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2008/09/27/servicios-tecnicos-deficientes/" title="Servicios Técnicos deficientes">Servicios Técnicos deficientes</a></li><li><a href="http://www.donubu.com/2008/07/11/toshiba-latino-toshibacom-0-driver/" title="Toshiba Latino &#8211; Toshiba.com = 0 Driver">Toshiba Latino &#8211; Toshiba.com = 0 Driver</a></li><li><a href="http://www.donubu.com/2008/04/04/pc-viejo-nuevos-problemas/" title="PC Viejo => Nuevos Problemas">PC Viejo => Nuevos Problemas</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/03/30/por-fin-hotfix-para-visual-basic-en-visual-studio-2008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Floguer &#8211; Tu Tribu Online</title>
		<link>http://www.donubu.com/2008/03/16/floguer-beta-publica/</link>
		<comments>http://www.donubu.com/2008/03/16/floguer-beta-publica/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 22:16:51 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[floguer]]></category>
		<category><![CDATA[fotolog]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[juegos]]></category>
		<category><![CDATA[Mensajes]]></category>
		<category><![CDATA[musica]]></category>
		<category><![CDATA[ocio]]></category>
		<category><![CDATA[paginas]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[comunidades]]></category>
		<category><![CDATA[fotos]]></category>
		<category><![CDATA[perfiles]]></category>
		<category><![CDATA[publica]]></category>
		<category><![CDATA[ubu]]></category>

		<guid isPermaLink="false">http://www.donubu.com/2008/03/16/floguer-beta-publica/</guid>
		<description><![CDATA[Ya la comunidad de floguer esta dando frutos, incluso ya tengo varios registros dentro de la beta pública dentro de un servidor de pruebas. El sistema ya esta funcionando, con registro de usuarios, recuperación de passwords perdidos, búsqueda de usuarios e incluso términos de uso y políticas de privacidad. Floguer es una especie de Fotolog [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.donubu.com/uploads/logofloguer.jpg" alt="floguer" align="left" height="80" width="240" /><a href="http://stats.donubu.com"> Ya la comunidad de floguer</a> esta dando frutos, incluso ya tengo varios registros dentro de la beta pública dentro de un servidor de pruebas.</p>
<p>El sistema ya esta funcionando, con registro de usuarios, recuperación de passwords perdidos, búsqueda de usuarios e incluso términos de uso y políticas de privacidad.</p>
<p>Floguer es una especie de Fotolog + Perfil Público, algo así como lo que vemos en una comunidad 2.0. Puedes tener un listado con tus amigos, subir fotos (hasta 4mb), seleccionar las tribus urbanas que más te gustan, tener un espacio con tus webs favoritas, entre otras cosas.</p>
<p><a href="http://stats.donubu.com/registrate.html">Para registrarte puedes usar el link </a>. Falta muy poco para inaugurar Floguer y terminar la Beta.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2009/11/16/prueba-la-version-beta-de-office-2010-gratis/" title="Prueba la version BETA de Office 2010 Gratis">Prueba la version BETA de Office 2010 Gratis</a></li><li><a href="http://www.donubu.com/2009/01/14/descarga-gratis-windows-7/" title="Descarga gratis windows 7">Descarga gratis windows 7</a></li><li><a href="http://www.donubu.com/2008/03/05/internet-explorer-beta-8-descargar/" title="Internet Explorer 8 &#8211; BETA">Internet Explorer 8 &#8211; BETA</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/03/16/floguer-beta-publica/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bloqueador de POPUPS de IE es Mejor que el de Firefox</title>
		<link>http://www.donubu.com/2008/03/04/bloqueador-popups-firefox-vs-iexplorer/</link>
		<comments>http://www.donubu.com/2008/03/04/bloqueador-popups-firefox-vs-iexplorer/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 17:50:19 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[firefox]]></category>
		<category><![CDATA[iexplorer]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[bloqueador]]></category>
		<category><![CDATA[explorer]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[popups]]></category>

		<guid isPermaLink="false">http://www.donubu.com/2008/03/04/bloqueador-popups-firefox-vs-iexplorer/</guid>
		<description><![CDATA[Nose si se han dado cuenta, pero ultimamente al navegar con firefox he notado el incremento de ventanas emergentes en ciertas páginas webs. Se saltan el bloqueador como quieren. Para estar seguro de lo que estoy hablando hicela prueba comparandolo con IE y me lleve una grata sorpresa. En sitios como lacuerda (para tabs de [...]]]></description>
			<content:encoded><![CDATA[<p>Nose si se han dado cuenta, pero ultimamente al navegar con firefox he notado el incremento de ventanas emergentes en ciertas páginas webs. Se saltan el bloqueador como quieren. Para estar seguro de lo que estoy hablando hicela prueba comparandolo con IE y me lleve una grata sorpresa.</p>
<p>En sitios como lacuerda (para tabs de guitarra, teclado, etc. de canciones en español) al ingresar a una canción, en firefox se abre una ventana aunque el bloqueador de popups dice &#8220;ventana bloqueada&#8221;, pero en IE salta el aviso pero la ventana no se abre.</p>
<p>Probé en un par de blog y pasó lo mismo. Ahora, voy a investigar un poco más antes de bajar la versión beta 3 de firefox y realizar las pruebas, si no funciona voy a mandar la info al equipo de desarrollo.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2008/03/05/internet-explorer-beta-8-descargar/" title="Internet Explorer 8 &#8211; BETA">Internet Explorer 8 &#8211; BETA</a></li><li><a href="http://www.donubu.com/2008/04/11/microsoft-silverlight-vs-adobe-flex/" title="Microsoft Silverlight VS Adobe Flex">Microsoft Silverlight VS Adobe Flex</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/03/04/bloqueador-popups-firefox-vs-iexplorer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Velneo: Again</title>
		<link>http://www.donubu.com/2008/03/04/veleno-nuevamente-again/</link>
		<comments>http://www.donubu.com/2008/03/04/veleno-nuevamente-again/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 17:40:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[programar]]></category>
		<category><![CDATA[velneo]]></category>
		<category><![CDATA[visual]]></category>

		<guid isPermaLink="false">http://www.donubu.com/2008/03/04/veleno-nuevamente-again/</guid>
		<description><![CDATA[Hace un tiempo atrás escribí un artículo acerca de VELNEO y hace un par de minutos me dí cuenta que estaba citado en su página principal. Me gustaría aclarar, que en una parte del artíulo hago alusión a la curva de aprendizaje, denominandola &#8220;lenta&#8221;. Tengo que decir, que cuando hablaba de &#8220;aprender&#8221; era &#8220;manejar&#8221; de [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.donubu.com/uploads/velneo.jpg" alt="velneo" align="left" height="200" width="175" />Hace un tiempo atrás <a href="http://www.donubu.com/2007/12/29/velneo-desarrollo-aplicaciones/" target="_blank">escribí un artículo acerca de VELNEO</a> y hace un par de minutos me dí cuenta que estaba citado en su página principal. Me gustaría aclarar, que en una parte del artíulo hago alusión a la curva de aprendizaje, denominandola &#8220;lenta&#8221;.</p>
<p>Tengo que decir, que cuando hablaba de &#8220;aprender&#8221; era &#8220;manejar&#8221; de forma &#8220;profesional&#8221;, y eso solamente por el tema de renovar el CHIP o la forma básica de programar. Mirar las cosas con otros ojos, <a href="http://blog.es.velneo.com/web/p.pro?vdis=4&amp;p=33737" target="_blank">vivir el mundo de VELNEO</a>.</p>
<p>Ví hace un tiempo, un video en donde salía el creador de el programa hablando sobre las nuevas características y quedé realmente sorprendido, es todo lo que buscaba.  Ahora solo falta que alguna <strong>Entidad Chilena de Educación</strong> se encargue de realizar cursos de especialización respectivos.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2007/12/29/velneo-desarrollo-aplicaciones/" title="Velneo">Velneo</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/03/04/veleno-nuevamente-again/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Feliz cumpleaños</title>
		<link>http://www.donubu.com/2008/02/17/feliz-cumpleanos-yo/</link>
		<comments>http://www.donubu.com/2008/02/17/feliz-cumpleanos-yo/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 15:25:38 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[ocio]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[17 febrero 1986]]></category>
		<category><![CDATA[cumpleaños]]></category>
		<category><![CDATA[feliz]]></category>

		<guid isPermaLink="false">http://www.donubu.com/2008/02/17/feliz-cumpleanos-yo/</guid>
		<description><![CDATA[Así es, en un día como hoy nació una de las personas más importantes para mí, y ese soy &#8220;YO&#8221;. Estoy de cumpleaños y esta es el número 22. Aprovecho de felicitar también a mi amigo &#8220;Richard&#8221; (Casa internet san martin #580, Rancagua) que igual que yo nació el 17 de Febrero. Lamento no haber [...]]]></description>
			<content:encoded><![CDATA[<p>Así es, en un día como hoy nació una de las personas más importantes para mí, y ese soy &#8220;YO&#8221;. Estoy de cumpleaños y esta es el número 22. Aprovecho de felicitar también a mi amigo &#8220;Richard&#8221; (Casa internet san martin #580, Rancagua) que igual que yo nació el 17 de Febrero.</p>
<p>Lamento no haber atualizado con tiempo el blog, el problema, es que me encuentro desarrollando la próxima comunidad 2.0 de tribus Chilenas. Una labor que toma bastante tiempo y lo mejor de todo es que estoy usando CAKEPHP para posteriormente compartir todo lo que aprenda durante el proceso de programación y desarrollo.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li>Sin Articulos Relacionados</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/02/17/feliz-cumpleanos-yo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>viSTATS Sistema Integral de Estadísticas</title>
		<link>http://www.donubu.com/2008/02/01/vistats-sistema-integral-estadisticas/</link>
		<comments>http://www.donubu.com/2008/02/01/vistats-sistema-integral-estadisticas/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 17:44:20 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[administracion]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[iexplorer]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[paginas]]></category>
		<category><![CDATA[panel]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[so]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tiger]]></category>
		<category><![CDATA[vistats]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[datos]]></category>
		<category><![CDATA[estadisticas]]></category>
		<category><![CDATA[navegador]]></category>
		<category><![CDATA[recoleccion]]></category>
		<category><![CDATA[sistema]]></category>

		<guid isPermaLink="false">http://www.donubu.com/2008/02/01/vistats-sistema-integral-estadisticas/</guid>
		<description><![CDATA[Estos días he desaparecido un tanto del blog, y es que me encuentro desarrollando un nuevo sistema para recopilar información de los visitantes de mis sitios web. Saber el sistema operativo, el país de procedencia, la versión del navegador, entre otras cosas. Pronto les cuento más y les hago la invitación para que integren una [...]]]></description>
			<content:encoded><![CDATA[<p>Estos días he desaparecido un tanto del blog, y es que me encuentro desarrollando un nuevo sistema para recopilar información de los visitantes de mis sitios web. Saber el sistema operativo, el país de procedencia, la versión del navegador, entre otras cosas.</p>
<p>Pronto les cuento más y les hago la invitación para que integren una sencilla API del sistema en sus webs.  Estoy preparando todo sobre cakePHP framework y de momento anda de maravilla.</p>

<h3>Articulos Relacionados</h3><ul class="related_post"><li><a href="http://www.donubu.com/2009/01/30/programacion-en-php-migrar-de-entornos-de-desarrollo-a-productivos/" title="Programacion en PHP, migrar de entornos de desarrollo a productivos">Programacion en PHP, migrar de entornos de desarrollo a productivos</a></li><li><a href="http://www.donubu.com/2008/09/15/vbnet-utilizar-un-listview-para-desplegar-datos/" title="VB.NET &#8211; Utilizar un Listview para desplegar datos">VB.NET &#8211; Utilizar un Listview para desplegar datos</a></li><li><a href="http://www.donubu.com/2008/03/05/internet-explorer-beta-8-descargar/" title="Internet Explorer 8 &#8211; BETA">Internet Explorer 8 &#8211; BETA</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.donubu.com/2008/02/01/vistats-sistema-integral-estadisticas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

