<?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>Alexander Garzon</title>
	<atom:link href="http://agarzon.php.com.ve/feed/" rel="self" type="application/rss+xml" />
	<link>http://agarzon.php.com.ve</link>
	<description>... porque no todo es PHP.</description>
	<lastBuildDate>Sun, 05 Feb 2012 15:57:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Manifiesto del programador PHP</title>
		<link>http://agarzon.php.com.ve/manifiesto-del-programador-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=manifiesto-del-programador-php</link>
		<comments>http://agarzon.php.com.ve/manifiesto-del-programador-php/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 01:46:32 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[reflexión]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=482</guid>
		<description><![CDATA[Yo soy un programador PHP No soy un programador Zend Framework o CakePHP. Pienso que PHP es bastante complicado suficientemente complejo. Me gusta construir cosas pequeñas Me gusta construir cosas pequeñas con propósitos simples. Me gusta hacer cosas que resuelven problemas. Me gusta construir cosas pequeñas que trabajan juntas para resolver grandes problemas. Quiero escribir [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Yo soy un programador PHP</strong></p>
<ul>
<li>No soy un programador Zend Framework o CakePHP.</li>
<li>Pienso que PHP es <del datetime="2012-02-05T15:57:26+00:00">bastante complicado</del> suficientemente complejo.</li>
</ul>
<p><strong>Me gusta construir cosas pequeñas</strong></p>
<ul>
<li>Me gusta construir cosas pequeñas con propósitos simples.</li>
<li>Me gusta hacer cosas que resuelven problemas.</li>
<li>Me gusta construir cosas pequeñas que trabajan juntas para resolver  grandes problemas.</li>
</ul>
<p><strong>Quiero escribir menos código, no más</strong></p>
<ul>
<li>Quiero escribir menos código, no más.</li>
<li>Quiero manejar menos código, no más.</li>
<li>Quiero soportar menos código, no más.</li>
<li>Necesito justificar cada pieza de código que agrego a un proyecto.</li>
</ul>
<p><strong>Me gusta el código simple, legible</strong></p>
<ul>
<li>Quiero escribir código que sea fácil de entender.</li>
<li>Quiero que el código sea fácilmente verificable. </li>
</ul>
<p>Traducción al español de: <a href="http://microphp.org/" target="_blank">http://microphp.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/manifiesto-del-programador-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La mejor forma de obtener la IP real con PHP</title>
		<link>http://agarzon.php.com.ve/la-mejor-forma-de-obtener-la-ip-real-con-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=la-mejor-forma-de-obtener-la-ip-real-con-php</link>
		<comments>http://agarzon.php.com.ve/la-mejor-forma-de-obtener-la-ip-real-con-php/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 01:18:30 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=474</guid>
		<description><![CDATA[&#60;?php function getIP(){ if( isset( $_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;] )) $ip = $_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;]; else if( isset( $_SERVER [&#039;HTTP_VIA&#039;] )) $ip = $_SERVER[&#039;HTTP_VIA&#039;]; else if( isset( $_SERVER [&#039;REMOTE_ADDR&#039;] )) $ip = $_SERVER[&#039;REMOTE_ADDR&#039;]; else $ip = null ; return $ip; } ?&#62;]]></description>
			<content:encoded><![CDATA[<pre class="brush: php; ">

&lt;?php
function getIP(){
    if( isset( $_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;] )) $ip = $_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;];
    else if( isset( $_SERVER [&#039;HTTP_VIA&#039;] ))  $ip = $_SERVER[&#039;HTTP_VIA&#039;];
    else if( isset( $_SERVER [&#039;REMOTE_ADDR&#039;] ))  $ip = $_SERVER[&#039;REMOTE_ADDR&#039;];
    else $ip = null ;
    return $ip;
}
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/la-mejor-forma-de-obtener-la-ip-real-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimizar todas las tablas MySQL con mysqlcheck</title>
		<link>http://agarzon.php.com.ve/optimizar-todas-las-tablas-mysql-con-mysqlcheck/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=optimizar-todas-las-tablas-mysql-con-mysqlcheck</link>
		<comments>http://agarzon.php.com.ve/optimizar-todas-las-tablas-mysql-con-mysqlcheck/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 01:17:21 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=470</guid>
		<description><![CDATA[Optimizar todas las tablas de todas las bases de datos MySQL con mysqlcheck -Ao --auto-repair -p -u admin]]></description>
			<content:encoded><![CDATA[<p>Optimizar todas las tablas de todas las bases de datos MySQL con</p>
<pre class="brush: shell; ">

mysqlcheck -Ao --auto-repair -p -u admin
</pre>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/optimizar-todas-las-tablas-mysql-con-mysqlcheck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desde Canadá</title>
		<link>http://agarzon.php.com.ve/desde-canada/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=desde-canada</link>
		<comments>http://agarzon.php.com.ve/desde-canada/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 16:46:45 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[canadá]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=426</guid>
		<description><![CDATA[Tenía rato sin escribir algo en mi blog y es que razones no faltaban: ahora vivo en está nórdica nación llamada Canadá, en una ciudad muy moderna llamada Montréal, en una provincia teñida al viejo continente llamada Québec, donde el francés es el idioma de cada día y el clima cambia en un abrir y [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://agarzon.php.com.ve/wp-content/uploads/2011/06/ServiceCanada.jpg"><img src="http://agarzon.php.com.ve/wp-content/uploads/2011/06/ServiceCanada-224x300.jpg" alt="" title="ServiceCanada" width="224" height="300" class="aligncenter size-medium wp-image-430" /></a></p>
<p>Tenía rato sin escribir algo en mi blog y es que razones no faltaban: ahora vivo en está nórdica nación llamada Canadá, en una ciudad muy moderna llamada Montréal, en una provincia teñida al viejo continente llamada Québec, donde el francés es el idioma de cada día y el clima cambia en un abrir y cerrar de ojos.</p>
<p>Escribo este artículo con la intensión de plasmar las primeras impresiones de un venezolano que se muda de país con su esposa e hijo. Hoy son un poco más de 2 semanas viviendo en este nuevo hogar, pero ya creo que puedo contarles algunas cosas que voy descubriendo sobre esta curiosa civilización.</p>
<p>Iré plasmando algunas de ellas <strong>SIN NINGÚN ORDEN DE RELEVANCIA</strong>. Sólo las que llegan a mi mente. Trataré de plasmarlas como &#8220;hechos&#8221; directos, sin mayor decoro.</p>
<p><strong>Las propinas, los precios y el impuesto</strong>. Cada vez que ves un precio de un producto, en la vitrina, en el periódico, en las tiendas, etc. más vale que saques bien la cuenta. Acá NINGÚN precio incluye el impuesto (tax) y de paso son 2 impuestos: uno federal y otro provincial el porcentaje estimado a sumar es de unos 15%. Respecto a las propinas, es casi obligatorio dejar propina si alguien te ha &#8220;servido&#8221; (una comida por ejemplo), y la propina es fácil de calcular ya que es 15% (lo mismo que el impuesto), lo que quiere decir que al final terminas pagando casi 30% más que el precio que habías leído en el menú. Claro, no es que vayas preso si no das propina, pero te mirarán feo&#8230; (ya me pasó). Hay cosas que están libres de impuesto, y la comida (la del mercado) es una de ellas.</p>
<p><strong>El transporte</strong>. Puedo decir que es eficiente. No es que sea 100% puntual (de hecho he notado muchos retrasos últimamente), y tampoco es que sea 100% libre de suciedad&#8230; pero puedo garantizar con total responsabilidad que es 1000 veces mejor que el METRO DE CARACAS. Acá los buses, corresponden a una empresa del estado (stm), y sólo se detiene en las paradas autorizadas, su recorrido es planificado y sincronizado, una obra de arte que para nada tiene que ver con mi querida Venezuela donde los chóferes de bus califican dentro de una sub-especie humanoide.</p>
<p><strong>Diversidad</strong>. Asiáticos, gringos, negros, indios, latinos, etc&#8230;. acá hay de todo. Puedes cruzarte con una mujer vestida de burka, un africano que reconoces sólo por el blanco de sus ojos, una gringa en microshort, un mexicano leyendo periódico&#8230; etc. Y cada quien hablando en su propio idioma (te sorprende ver que cada cierto tiempo te topas con alguien que habla español)</p>
<p><strong>Absorción</strong>. Algo extraño y que notas con el paso de los días al darte cuenta que no es coincidencia: casi un 80% de la población llevan sus oídos tapados, con auriculares de distintos tamaños y colores, cada quien oyendo su propia música con sus celulares, ipod, mp3 player o lo que sea&#8230; empiezas a notar que las personas viven aisladas en sus propios mundos, evitando crear relaciones con otros.</p>
<p><strong>Amabilidad al servicio</strong>. Es algo que hay que resaltar, la amabilidad de las personas que atienden al público, sin importar sin  es empresa privada o pública. Acá te reciben con una sonrisa y el trato es siempre amable, en especial para los recién llegados. Algunos incluso se toman un tiempo en pedirte a ti que le digas como se dice ciertas cosas en español. Son situaciones agradables.</p>
<p><strong>Respeto a las leyes</strong>. No hay duda, acá las cosas funcionan. Los semáforos se respetan, los peatones siempre tienen preferencias, los ciclistas tienen sus carriles, etc.</p>
<p><strong>Madera</strong>. Casas de madera, edificios de madera, locales de madera&#8230;. acá todo es madera. Aunque por fuera le coloquen ladrillos de adornos y luce como si fuese una estructura sólida&#8230; en realidad por dentro todo es madera&#8230; por algo acá hay bomberos cada 6 cuadras y cientos de compañías quieren venderte seguros de vida y protección de bienes contra incendios !</p>
<p><strong>Clima</strong>. No me ha tocado aun mi primer invierno, y lo que he vivido hasta ahora ha sido primavera. Pero puedo decir que entre estas 2 semanas he ha tocado desde botar humo (vapor) por la boca hasta sudar como si estuviese en Venezuela en una tarde soleada&#8230;. el clima cambia mucho, y así como puede amanecer con un bello sol, a las pocas horas puedes tener una tormenta encima.</p>
<p><strong>El Sol</strong>. Aun me cuesta aceptarlo&#8230; acá pueden ser las 10 de la noche, y aun puedes ver al sol ponerse en el ocaso ! es una sensación muy rara, sin duda.</p>
<p><strong>Regionalismo</strong>. Québec es como el Zulia&#8230; se sienten como una nación aparte y existen intensiones de separarse políticamente del resto de Canadá. Yo no tengo ninguna opinión al respecto, sencillamente les respeto su parecer.</p>
<p><strong>Mujeres al poder</strong>. No soy machista, pero no puedo evitar notar con gracia (ya que en Venezuela eso no se ve) a mujeres, jóvenes y hasta muy lindas vestidas con ropas de albañil, llenas de pintura, cemento y polvo, con casco y botas de seguridad, herramientas en la cintura, trabajando en la construcción&#8230; como cualquier otro albañil. Los derechos de igualdad acá se respetan y SE APLICAN.</p>
<p><strong>Agua, ad infinitum</strong>. Canadá posee una de las reservas de agua dulces más grandes del planeta hasta el punto en que el agua aquí es GRATIS. No con ello quiero decir que perderemos los instintos ecológicos y empezaremos a desperdiciar el agua, pero es gratis y en mi país no lo es.</p>
<p><strong>Ciclismo por doquier</strong>. Montréal es una ciudad donde se usa mucho las bicicletas, hay mucha gente que va a sus oficinas usando bicicletas y los fines de semana las calles se llenan de ciclistas. Es un medio de transporte muy común.</p>
<p><strong>Cruzar a la izquierda</strong>. De las cosas extrañas que he visto cuando se conduce un vehículo en Montréal, es que para cruzar a la izquierda no tienes un semáforo que te ayude!, no existe esa famosa flechita verde en los semáforos&#8230; lo que tienes que hacer es poner tu luz de cruce y esperar a tener oportunidad de poder cruzar, si el semáforo vuelve a rojo tendrás que esperar a el otro ciclo, y así hasta que logres cruzar. Ahh y respecto a las luces del semáforo: ni se te ocurra pasarte una luz roja o quedar atrapado después de cruzar el semáforo  este se ponga rojo de nuevo&#8230; la multa es enorme. Los ciclistas también tienen una serie de normas a cumplir o les sale multa también.</p>
<p><strong>Horario del colegio</strong>. Acá hay un sólo horario (en Venezuela tenemos 2 turnos), de modo que por ello la ciudad se ve siempre &#8220;vacía de niños&#8221; y es que todos están en sus respectivas escuelas.</p>
<p><strong>Energía</strong>. Cocinar con gas o combustibles es un lujo costoso, por ello siempre se opta por usar electricidad, la cual resulta más económica. Incluso tener un vehículo eléctrico o híbrido es una buena idea.</p>
<p>Bueno, eso es lo que ha llegado a mi mente en este momento de redacción. No con ello quiero decir que todo sea espléndidamente bueno, hay sus cosas malas también&#8230; nada es perfecto, de hecho Montréal es una ciudad complicada en comparación con otras hermosas ciudades del resto de Canadá.</p>
<p>Sólo quiero disparar esta frase que tenía días queriendo publicarla, y va dedicada a todos los latinos que desesperadamente ven a los Estados Unidos como su única salvación. &#8220;<strong>Hay un norte más arriba de New York</strong>&#8220;.</p>
<p>Ah! y no dejen de visitar el <a href="http://laura.com.ve">blog de mi esposa</a>, donde se narra con mayor precisión todo lo que ha sido este proceso migratorio para nosotros. </p>
<p>Hasta otra ocasión !</p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/desde-canada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calcular la distancia entre dos coordenadas geográficas</title>
		<link>http://agarzon.php.com.ve/calcular-la-distancia-entre-dos-coordenadas-geograficas/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=calcular-la-distancia-entre-dos-coordenadas-geograficas</link>
		<comments>http://agarzon.php.com.ve/calcular-la-distancia-entre-dos-coordenadas-geograficas/#comments</comments>
		<pubDate>Mon, 16 May 2011 16:38:19 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[geografia]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=419</guid>
		<description><![CDATA[Tenía tiempo sin escribir, así que para ponernos al día voy a redactar este pequeño artículo donde les contaré como calcular la distancia geográfica entre dos coordenadas dadas. Hoy día con todo esto de la web 2.0 y las geo-posiciones, nos hemos acostumbrado un poco a ver los mapas en 2D (como Google Map), y [...]]]></description>
			<content:encoded><![CDATA[<p>Tenía tiempo sin escribir, así que para ponernos al día voy a redactar este pequeño artículo donde les contaré como calcular la distancia geográfica entre dos coordenadas dadas.</p>
<p>Hoy día con todo esto de la web 2.0 y las geo-posiciones, nos hemos acostumbrado un poco a ver los mapas en 2D (como Google Map), y puede que en algún momento necesitemos calcular determinadas distancias entre 2 puntos de referencia. Y como es obvio, no podemos hacerlo sobre un plano cartesiano ya que nuestro querido planeta tierra no es plano ;-)</p>
<pre class="brush: php; ">

function distance($lat1, $lon1, $lat2, $lon2, $unit) { 

  $theta = $lon1 - $lon2;
  $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  $dist = acos($dist);
  $dist = rad2deg($dist);
  $miles = $dist * 60 * 1.1515;
  $unit = strtoupper($unit);

  if ($unit == &quot;K&quot;) {
    return ($miles * 1.609344);
  } else if ($unit == &quot;N&quot;) {
      return ($miles * 0.8684);
    } else {
        return $miles;
      }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/calcular-la-distancia-entre-dos-coordenadas-geograficas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to uninstall APF (Advanced Policy Firewall)</title>
		<link>http://agarzon.php.com.ve/how-to-uninstall-apf-advanced-policy-firewall/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-uninstall-apf-advanced-policy-firewall</link>
		<comments>http://agarzon.php.com.ve/how-to-uninstall-apf-advanced-policy-firewall/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 18:02:07 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[plesk]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=416</guid>
		<description><![CDATA[No más&#8230; por muchos años usé el APF firewall el cual fue en su tiempo bastante útil y poderoso. Pero últimamente ha sido un terrible dolor de cabeza, en especial al trabajar con FTP en modo pasivo; y como hasta la fecha no han dado solución al bug, pues he decidido desinstalarlo. Pero como el [...]]]></description>
			<content:encoded><![CDATA[<p>No más&#8230; por muchos años usé el <a href="http://www.rfxn.com/projects/advanced-policy-firewall/">APF firewall</a> el cual fue en su tiempo bastante útil y poderoso.</p>
<p>Pero últimamente ha sido un terrible dolor de cabeza, en especial al trabajar con FTP en modo pasivo; y como hasta la fecha no han dado solución al bug, pues he decidido desinstalarlo.</p>
<p>Pero como el APF no fue instalado por repositorio sino compilado, desinatalarlo puede ser algo complicado&#8230; es por ello que he creado este script para desinstalar el APF, sin dolores de cabeza.</p>
<pre class="brush: shell; ">

#!/bin/bash
echo &quot;APF Uninstaller&quot;

#stoping APF
/etc/rc.d/init.d/apf stop

#bye bye daemon
chkconfig --del apf
rm -f /etc/rc.d/init.d/apf

#au revoir configs
rm -rf /etc/apf

#no more cron
rm -f /etc/cron.d/refresh.apf
rm -f /etc/cron.daily/apf

#adios, log rotations
rm -f /etc/logrotate.d/apf

#sayonara, executable
rm -f /usr/local/sbin/apf

# Arrivederci! logs
rm -f /var/log/apf_log*

echo &quot;Done!&quot;
</pre>
<p>Espero les sea de ayuda ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/how-to-uninstall-apf-advanced-policy-firewall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script bash para obtener un reporte de consumo de disco por dominio en plesk</title>
		<link>http://agarzon.php.com.ve/script-bash-para-obtener-un-reporte-de-consumo-de-disco-por-dominio-en-plesk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=script-bash-para-obtener-un-reporte-de-consumo-de-disco-por-dominio-en-plesk</link>
		<comments>http://agarzon.php.com.ve/script-bash-para-obtener-un-reporte-de-consumo-de-disco-por-dominio-en-plesk/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 17:15:10 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[plesk]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=410</guid>
		<description><![CDATA[No soy muy dado a hacer scripts shell de Linux, prefiero hacerlos en PHP. Pero necesitaba algo simple y rápido para obtener reportes de consumo de disco por dominio en un servidor Linux con PLESK. #!/bin/bash echo &#34;***Correos***&#34; cd /var/qmail/mailnames/$1 du -csk * &#124; sort -n echo &#34;***Web***&#34; cd /var/www/vhosts/$1/httpdocs/ du -csk * &#124; sort [...]]]></description>
			<content:encoded><![CDATA[<p>No soy muy dado a hacer scripts shell de Linux, prefiero hacerlos en PHP. Pero necesitaba algo simple y rápido para obtener reportes de consumo de disco por dominio en un servidor Linux con PLESK.</p>
<pre class="brush: shell; ">

#!/bin/bash

echo &quot;***Correos***&quot;
cd /var/qmail/mailnames/$1
du -csk * | sort -n
echo &quot;***Web***&quot;
cd /var/www/vhosts/$1/httpdocs/
du -csk * | sort -n
echo &quot;FIN&quot;
</pre>
<p>Y allí lo tienen, nada del otro mundo&#8230; sólo deben pasar como parámetro el dominio que desean evaluar por ejemplo:<br />
<strong>./reporte.sh dominioaevaluar.com</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/script-bash-para-obtener-un-reporte-de-consumo-de-disco-por-dominio-en-plesk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jquery DatePicker &#8211; Calendario</title>
		<link>http://agarzon.php.com.ve/jquery-datepicker-calendario/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jquery-datepicker-calendario</link>
		<comments>http://agarzon.php.com.ve/jquery-datepicker-calendario/#comments</comments>
		<pubDate>Sun, 20 Mar 2011 19:13:42 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[datepicker]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=399</guid>
		<description><![CDATA[Recientemente me he encontrado con este sencillo pero poderoso plugin JQuery, para hacernos un buen datepicker (selector calendario). Ya había probado muchos hasta el cansancio, pero este me ha llamado poderosamente la atención por: No es invasivo Cross Browser Todo en un único archivo de 22k Extremadamente personalizable Me ha sorprendido que incluso las imágenes [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://agarzon.php.com.ve/wp-content/uploads/2011/03/date.png"><img src="http://agarzon.php.com.ve/wp-content/uploads/2011/03/date.png" alt="" title="DatePicker" width="200" height="207" class="aligncenter size-full wp-image-406" /></a></p>
<p>Recientemente me he encontrado con este sencillo pero poderoso plugin JQuery, para hacernos un buen datepicker (selector calendario). Ya había probado muchos hasta el cansancio, pero este me ha llamado poderosamente la atención por:</p>
<ul>
<li>No es invasivo</li>
<li>Cross Browser</li>
<li>Todo en un único archivo de 22k </li>
<li>Extremadamente personalizable</li>
</ul>
<p>Me ha sorprendido que incluso las imágenes y los estilos necesarios forman parte del mismo archivo Javascript. Realmente una genialidad.</p>
<p>Y ya que me dí a la tarea de llevarlo al Español acá les dejo un ejemplo de un acomodo que hice recientemente; para que conozcan un poco como se configura</p>
<pre class="brush: javascript; ">

&lt;script type=&quot;text/javascript&quot; src=&quot;http://code.jquery.com/jquery-1.5.1.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;datepicker-2.5.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function (){
var langEs=[
 [&quot;Enero&quot;,&quot;Febrero&quot;,&quot;Marzo&quot;,&quot;Abril&quot;,&quot;Mayo&quot;,&quot;Junio&quot;,&quot;Julio&quot;,&quot;Agosto&quot;,&quot;Septiembre&quot;,&quot;Octubre&quot;,&quot;Noviembre&quot;,&quot;Diciembre&quot;],
 [],
 [],
 [&quot;Lunes&quot;,&quot;Martes&quot;,&quot;Miércoles&quot;,&quot;Jueves&quot;,&quot;Viernes&quot;,&quot;Sábado&quot;,&quot;Domingo&quot;],
 [],
 [],
 &quot;Hoy&quot;];

	var cal = new DatePicker(&#039;#reg_fecha&#039;, {
		autoOpen:true,
		min:&quot;1jan2009&quot;,
		max:new Date(),
		format:&quot;d/m/Y&quot;,
		firstDayOfWeek:6,
		language:&quot;es&quot;,
		});
		cal.addLanguage(&quot;es&quot;,langEs);
});
&lt;/script&gt;
</pre>
<p>El sitio oficial es: <a href="http://datepicker.org.ru/">http://datepicker.org.ru/</a> desde donde podrán seguir las más recientes versiones y la documentación necesaria.</p>
<p>Espero le saquen provecho. ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/jquery-datepicker-calendario/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CodeIgniter 2.0 Liberado (y en Español)</title>
		<link>http://agarzon.php.com.ve/codeigniter-2-0-liberado-espanol/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=codeigniter-2-0-liberado-espanol</link>
		<comments>http://agarzon.php.com.ve/codeigniter-2-0-liberado-espanol/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 18:34:16 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=390</guid>
		<description><![CDATA[Una grata noticia ! el mejor framework PHP ha liberado su versión 2.0 con decenas y notables mejoras. Descargar: http://codeigniter.com/download.php Y para agregarle la cereza a nuestro cóctel también tenemos el paquete oficial en Español (al cual le eché una manito ;-) ) Descargar: http://mygengo.com/string/p/codeigniter-2-1/export/language/es/ Estoy considerando traducir la guía oficial completa al español, ¿voluntarios?]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img src="http://agarzon.php.com.ve/wp-content/uploads/2010/11/codeigniter-v2.gif" alt="codeigniter 2.0" title="codeigniter 2.0" width="247" height="244" class="aligncenter size-full wp-image-323" /></a></p>
<p>Una grata noticia ! el mejor framework PHP ha liberado su versión 2.0 con decenas y notables mejoras.</p>
<p>Descargar: <a href="http://codeigniter.com/download.php">http://codeigniter.com/download.php</a></p>
<p>Y para agregarle la cereza a nuestro cóctel también tenemos el paquete oficial en Español (al cual le eché una manito ;-) )<br />
Descargar: <a href="http://mygengo.com/string/p/codeigniter-2-1/export/language/es/">http://mygengo.com/string/p/codeigniter-2-1/export/language/es/</a></p>
<p>Estoy considerando traducir la guía oficial completa al español, ¿voluntarios?</p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/codeigniter-2-0-liberado-espanol/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Entendiendo los JOINS con gráficos</title>
		<link>http://agarzon.php.com.ve/entendiendo-los-joins-con-graficos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=entendiendo-los-joins-con-graficos</link>
		<comments>http://agarzon.php.com.ve/entendiendo-los-joins-con-graficos/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 20:57:09 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=372</guid>
		<description><![CDATA[No es de sorprender que son muchos los programadores o administradores de bases de datos quienes recién se inician, que el comprender las consultas relacionales entre distintas tablas puede resultar algo difícil de comprender, de visualizar. Sabiendo que las imágenes se fijan mejor en nuestro cerebro que sólo leer, traigo a ustedes una adaptación del [...]]]></description>
			<content:encoded><![CDATA[<p>No es de sorprender que son muchos los programadores o administradores de bases de datos quienes recién se inician, que el comprender las consultas relacionales entre distintas tablas puede resultar algo difícil de comprender, de visualizar.</p>
<p>Sabiendo que las imágenes se fijan mejor en nuestro cerebro que sólo leer, traigo a ustedes una adaptación del articulo escrito por mi colega <a href="http://www.linkedin.com/in/ligaya">Ligaya Turmelle</a> en el año 2007 pero que cuya vigencia es válida aun hoy.</p>
<p>A continuación observemos estos diagramas de Venn y conozcamos los tipos de relaciones JOIN entre tablas de una base de datos.</p>
<p><strong>La base: un diagrama vacío</strong></p>
<p style="text-align: center;"><img src="http://agarzon.php.com.ve/wp-content/uploads/2011/01/basicvenn.png" alt="" title="basicvenn" width="300" height="188" class="aligncenter size-full wp-image-373" /></p>
<p>El círculo T1 representa a todos los registros de la tabla 1 y el círculo T2 representa todos los registros de la tabla 2. Note como se sobrepone un poco en el medio, donde ambos círculos coinciden.</p>
<p><strong>INNER JOIN</strong><br />
Un inner join sólo retorna los registros donde &#8220;conciden&#8221; entre las dos tablas. Así que por cada registro devuelto de T1 habrá uno enlazado por el foreign key con T2. En programación esto equivale al operador lógico AND.</p>
<p style="text-align: center;"><img src="http://agarzon.php.com.ve/wp-content/uploads/2011/01/venn1.png" alt="" title="venn1" width="300" height="188" class="aligncenter size-full wp-image-376" /></p>
<p><strong>OUTER JOIN</strong><br />
Un outer join es lo opuesto al inner join. Sólo retorna los registros que no están en T1 y T2, es decir: donde no coinciden. En programación esto equivale al NOT AND.</p>
<p style="text-align: center;"><img src="http://agarzon.php.com.ve/wp-content/uploads/2011/01/outervenn.png" alt="" title="outervenn" width="300" height="188" class="aligncenter size-full wp-image-378" /></p>
<p><strong>LEFT JOIN</strong><br />
LEFT JOIN devolverá todos los registros de la tabla izquierda (T1), sin importar si coincide o no con la tabla derecha (T2). Si llega a suceder una coincidencia con los registros en la tabla T2, pues los devolverá también. Si no, los rellenará con NULL.</p>
<p style="text-align: center;"><img src="http://agarzon.php.com.ve/wp-content/uploads/2011/01/left_venn.png" alt="" title="left_venn" width="300" height="188" class="aligncenter size-full wp-image-379" /></p>
<p>Como podrán apreciar se puede realizar exactamente lo mismo con la tabla derecha T2, y se conoce como RIGHT JOIN, sin embargo en la mayoría de los casos sólo se usa el LEFT JOIN.</p>
<p><strong>LEFT OUTER JOIN</strong><br />
Un left outer join combina los conceptos del left join y del outer join. Básicamente se obtendrán todos los registros de la tabla izquierda (T1) menos donde coincida con la tabla derecha (T2).</p>
<p style="text-align: center;"><img src="http://agarzon.php.com.ve/wp-content/uploads/2011/01/leftOutervenn.png" alt="" title="leftOutervenn" width="300" height="188" class="aligncenter size-full wp-image-380" /></p>
<p>Nuevamente observe que lo mismo puede ser aplicado con la tabla derecha (T2), conocido entonces como RIGHT OUTER JOIN. Aunque la mayoría prefiera referirse a la tabla izquierda siempre.</p>
<p><strong>THETA JOIN</strong><br />
Es el producto cartesiano entre las dos tablas, y seguramente no es lo que se desea, ya que puede provenir del resultado de una mala consulta y entonces obtener más registros de los que realmente esperaba.</p>
<pre class="brush: sql; ">
SELECT t1.*, t2.*
FROM table1 t1, table2 t2
WHERE t1.id = 5;
</pre>
<p style="text-align: center;"><img src="http://agarzon.php.com.ve/wp-content/uploads/2011/01/thetavenn.png" alt="" title="thetavenn" width="300" height="188" class="aligncenter size-full wp-image-382" /></p>
<p>Y allí lo tienen, quizá en el futuro cuando necesiten realizar relaciones entre tablas y necesiten una pista, espero este artículo les sea de ayuda.</p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/entendiendo-los-joins-con-graficos/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

