<?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>Tue, 13 Jul 2010 20:15:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Instalar y configurar monit para linux</title>
		<link>http://agarzon.php.com.ve/instalar-y-configurar-monit-para-linux/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=instalar-y-configurar-monit-para-linux</link>
		<comments>http://agarzon.php.com.ve/instalar-y-configurar-monit-para-linux/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 20:15:58 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=274</guid>
		<description><![CDATA[No hace mucho puse en marcha en varios servidores un interesante monitor de servicios que es capaz de ejecutar comandos y lanzar alertas que nosotros programemos ante determinadas condiciones que fijemos. Es capaz de monitorizar cualquier tipo de servicio o demonio, archivos de disco o sistema, vigilar espacios de discos, identificadores de proceso PID, realizar [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-286  aligncenter" title="monit-logo" src="http://agarzon.php.com.ve/wp-content/uploads/2010/07/monit-logo.jpg" alt="Monit" width="243" height="147" /></p>
<p>No hace mucho puse en marcha en varios servidores un interesante monitor de servicios que es capaz de ejecutar comandos y lanzar alertas que nosotros programemos ante determinadas condiciones que fijemos.</p>
<p>Es capaz de monitorizar cualquier tipo de servicio o demonio, archivos de disco o sistema, vigilar espacios de discos, identificadores de proceso PID, realizar checksum y muchísimas cosas más, su forma de configurar es tan potente que configurarlo resulta en casi un lenguaje de programación.</p>
<p>Sin embargo no hay que asustarse, ya que es tremendamente intuitivo.</p>
<p>La maravilla de que les hablo se llama <a href="http://mmonit.com/monit/">MONIT</a> y es de licencia libre.</p>
<p><strong>Advertencia</strong>: Este artículo es para profesionales  que están plenamente familiarizados con servidores Linux. No me hago responsable de ningún daño en su sistema.</p>
<p>Lo primero es bajarnos una copia del programita, al momento de redactar este tutorial la versión estable es la 5.1.1. (no olvides que todo esto has de realizarlo como ROOT del sistema)</p>
<pre class="brush: shell; ">

wget http://mmonit.com/monit/dist/monit-5.1.1.tar.gz
tar zxvf monit-*
cd monit*
./configure --without-ssl
make &amp;amp;&amp;amp; make install
</pre>
<p>Bien, ya lo hemos instalado&#8230; la opción  <strong>&#8211;without-ssl</strong> es opcional pero yo la prefiero para evitar que el monitor web que veremos más adelante tenga que necesariamente usar un protocolo HTTPS.</p>
<p>Bien, ya está instalado pero debemos saber que aunque esté instalado faltan 2 cosas: el archivo de configuración y colocarlo como demonio (servicio que se auto-ejecuta cada vez que arranquemos nuestro servidor).</p>
<p>Primero, vamos a preparar a monit como un servicio activo:</p>
<pre class="brush: shell; ">

cp contrib/rc.monit /etc/init.d/monit
chmod 755 /etc/init.d/monit
ln -s /usr/local/bin/monit /usr/bin/monit
chkconfig --add monit
chkconfig monit on
</pre>
<p>Y ahora nuestro archivo de configuración principal <strong>/etc/monitrc</strong> y la carpeta <strong>/etc/monit</strong> donde colocaremos de forma ordenada e independiente cada &#8216;monitor&#8217; que deseamos establecer :</p>
<pre class="brush: shell; ">

touch /etc/monitrc
chmod 700 /etc/monitrc
mkdir /etc/monit
</pre>
<p>Y nuestro archivo de configuración <strong>/etc/monitrc</strong>:</p>
<pre class="brush: shell; ">

# Monit control file
# ==================

# Monit global settings:
# ----------------------
set daemon  60
set logfile syslog facility log_daemon
set mailserver localhost
set alert usuario@dominio.com # direccion a donde enviaremos las alertas del sistema
set mail-format {
from: monit@localhost
subject: $SERVICE $EVENT
message: $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
}

set httpd port 2812 and
allow xxx.xxx.xxx.xxx # La IP remota que tendrá permiso para poder ver el monitor web
allow usuario:clave #pues eso... los permisos que necesitas para poder entrar al monitor vía web

include /etc/monit/server.monit
include /etc/monit/httpd.monit
include /etc/monit/mysqld.monit
</pre>
<p>Como podrán ver este archivo de configuración permite establecer cada cuanto tiempo realizar la revisión, el formato de correo, remitente y destinatario, servicios que activaremos (con include), y acceso al puerto 2812 vía web con usuario y clave (no olvides abrir este puerto en tu firewall)</p>
<p>Listo, ahora vienen los archivos de configuración de cada servicio:</p>
<p><strong>server.monit:</strong></p>
<pre class="brush: shell; ">

# Monit Server  settings:
# ----------------------
check system xxx.xxx.xxx.xxx #IP de tu host
if loadavg (1min) &gt; 5 then alert
if loadavg (5min) &gt; 10 for then alert
if memory usage &gt; 90% then alert
if cpu usage (user) &gt; 70% for 3 cycles then alert
if cpu usage (system) &gt; 30% for 3 cycles then alert
if cpu usage (wait) &gt; 20% for 3 cycles then alert
</pre>
<p><strong>httpd.monit:</strong></p>
<pre class="brush: shell; ">

#
# Monitor Apache (httpd)
#
check process httpd with pidfile /var/run/httpd.pid
start program = &quot;/etc/init.d/httpd start&quot;  with timeout 60 seconds
stop program  = &quot;/etc/init.d/httpd stop&quot;
if totalcpu &gt; 90% for 3 cycles then restart
if totalmem &gt; 95% for 3 cycles then restart
if children &gt; 250 for 3 cycles then restart
if cpu &gt; 70% for 3 cycles then restart
if failed host xxx.xxx.xxx port 80 protocol http then restart #IP de tu host
</pre>
<p><strong>mysqld.monit:</strong></p>
<pre class="brush: shell; ">

check process mysql with pidfile  /var/run/mysqld/mysqld.pid
group database
start program = &quot;/etc/init.d/mysqld start&quot;
stop program = &quot;/etc/init.d/mysqld stop&quot;
if cpu &gt; 95% for 2 cycles then restart
if memory usage &gt; 75% then restart
if failed host xxx.xxx.xxx port 3306 protocol mysql then restart #IP de tu host
</pre>
<p>Listo, cada quien se puede ajustar sus monitores a su gusto, hay muy buena <a href="http://mmonit.com/monit/documentation/monit.html">documentación</a> y muchos <a href="http://mmonit.com/wiki/Monit/ConfigurationExamples">ejemplos</a></p>
<p>Respecto a monit, sólo resta ponerlo a andar:</p>
<pre class="brush: shell; ">

/etc/init.d/monit restart
</pre>
<p>Verificar las sintaxis de nuestros archivos de configuración:</p>
<pre class="brush: shell; ">

monit -t
</pre>
<p>Y si queremos &#8220;recargar&#8221; nuestro monitor para releer los archivos de configuración sin necedad de parar el servicio, podemos hacer:</p>
<pre class="brush: shell; ">

monit reload
</pre>
<p>Ce tout !, para ver nuestro monitor vía web: http://xxx.xxx.xxx.xxx:2812 (IP del servidor)</p>
<p>Lo demás es lectura, experimentación y curiosidad&#8230; las posibilidades son casi infinitas !</p>



Compartir:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fagarzon.php.com.ve%2Finstalar-y-configurar-monit-para-linux%2F&amp;t=Instalar%20y%20configurar%20monit%20para%20linux" title="Facebook"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Instalar%20y%20configurar%20monit%20para%20linux%20-%20http%3A%2F%2Fagarzon.php.com.ve%2Finstalar-y-configurar-monit-para-linux%2F" title="Twitter"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Finstalar-y-configurar-monit-para-linux%2F&amp;title=Instalar%20y%20configurar%20monit%20para%20linux&amp;bodytext=%0D%0A%0D%0ANo%20hace%20mucho%20puse%20en%20marcha%20en%20varios%20servidores%20un%20interesante%20monitor%20de%20servicios%20que%20es%20capaz%20de%20ejecutar%20comandos%20y%20lanzar%20alertas%20que%20nosotros%20programemos%20ante%20determinadas%20condiciones%20que%20fijemos.%0D%0A%0D%0AEs%20capaz%20de%20monitorizar%20cualquier%20tipo" title="Digg"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fagarzon.php.com.ve%2Finstalar-y-configurar-monit-para-linux%2F" title="Meneame"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fagarzon.php.com.ve%2Finstalar-y-configurar-monit-para-linux%2F&amp;title=Instalar%20y%20configurar%20monit%20para%20linux" title="StumbleUpon"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fagarzon.php.com.ve%2Finstalar-y-configurar-monit-para-linux%2F&amp;title=Instalar%20y%20configurar%20monit%20para%20linux&amp;notes=%0D%0A%0D%0ANo%20hace%20mucho%20puse%20en%20marcha%20en%20varios%20servidores%20un%20interesante%20monitor%20de%20servicios%20que%20es%20capaz%20de%20ejecutar%20comandos%20y%20lanzar%20alertas%20que%20nosotros%20programemos%20ante%20determinadas%20condiciones%20que%20fijemos.%0D%0A%0D%0AEs%20capaz%20de%20monitorizar%20cualquier%20tipo" title="del.icio.us"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fagarzon.php.com.ve%2Finstalar-y-configurar-monit-para-linux%2F&amp;title=Instalar%20y%20configurar%20monit%20para%20linux&amp;annotation=%0D%0A%0D%0ANo%20hace%20mucho%20puse%20en%20marcha%20en%20varios%20servidores%20un%20interesante%20monitor%20de%20servicios%20que%20es%20capaz%20de%20ejecutar%20comandos%20y%20lanzar%20alertas%20que%20nosotros%20programemos%20ante%20determinadas%20condiciones%20que%20fijemos.%0D%0A%0D%0AEs%20capaz%20de%20monitorizar%20cualquier%20tipo" title="Google Bookmarks"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fagarzon.php.com.ve%2Finstalar-y-configurar-monit-para-linux%2F" title="Technorati"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Instalar%20y%20configurar%20monit%20para%20linux&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Finstalar-y-configurar-monit-para-linux%2F" title="Netvibes"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/instalar-y-configurar-monit-para-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Descarga Gratis: jQuery – Novice to ninja</title>
		<link>http://agarzon.php.com.ve/descarga-gratis-jquery-%e2%80%93-novice-to-ninja/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=descarga-gratis-jquery-%25e2%2580%2593-novice-to-ninja</link>
		<comments>http://agarzon.php.com.ve/descarga-gratis-jquery-%e2%80%93-novice-to-ninja/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 21:09:11 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[descargar]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=269</guid>
		<description><![CDATA[Y aquí lo tienen&#8230; y libro que SitePoint regaló por 24 horas, tras hacerse España con la copa del mundial de fútbol 2010. El libro podía descargarse desde este enlace http://sale.sitepoint.com/ (yo me he bajado el mío) pero por si acaso llegaron tarde a la piñata, acá les dejo el cotillón: http://www.mediafire.com/?uez2d0m2dm2 Compartir:]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" src="http://i25.tinypic.com/9tlpvp.jpg" alt="Jquery Ninja" /></p>
<p>Y aquí lo tienen&#8230; y libro que SitePoint regaló por 24 horas, tras hacerse España con la copa del mundial de fútbol 2010.</p>
<p>El libro podía descargarse desde este enlace <a href="http://sale.sitepoint.com/" target="_blank">http://sale.sitepoint.com/</a> (yo me he bajado el mío) pero por si acaso llegaron tarde a la piñata, acá les dejo el cotillón: <a href="http://www.mediafire.com/?uez2d0m2dm2" target="_blank">http://www.mediafire.com/?uez2d0m2dm2</a></p>



Compartir:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fagarzon.php.com.ve%2Fdescarga-gratis-jquery-%25e2%2580%2593-novice-to-ninja%2F&amp;t=Descarga%20Gratis%3A%20jQuery%20%E2%80%93%20Novice%20to%20ninja" title="Facebook"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Descarga%20Gratis%3A%20jQuery%20%E2%80%93%20Novice%20to%20ninja%20-%20http%3A%2F%2Fagarzon.php.com.ve%2Fdescarga-gratis-jquery-%25e2%2580%2593-novice-to-ninja%2F" title="Twitter"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fdescarga-gratis-jquery-%25e2%2580%2593-novice-to-ninja%2F&amp;title=Descarga%20Gratis%3A%20jQuery%20%E2%80%93%20Novice%20to%20ninja&amp;bodytext=%0D%0AY%20aqu%C3%AD%20lo%20tienen...%20y%20libro%20que%20SitePoint%20regal%C3%B3%20por%2024%20horas%2C%20tras%20hacerse%20Espa%C3%B1a%20con%20la%20copa%20del%20mundial%20de%20f%C3%BAtbol%202010.%0D%0A%0D%0AEl%20libro%20pod%C3%ADa%20descargarse%20desde%20este%20enlace%20http%3A%2F%2Fsale.sitepoint.com%2F%20%28yo%20me%20he%20bajado%20el%20m%C3%ADo%29%20pero%20por%20si%20acaso%20l" title="Digg"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fagarzon.php.com.ve%2Fdescarga-gratis-jquery-%25e2%2580%2593-novice-to-ninja%2F" title="Meneame"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fagarzon.php.com.ve%2Fdescarga-gratis-jquery-%25e2%2580%2593-novice-to-ninja%2F&amp;title=Descarga%20Gratis%3A%20jQuery%20%E2%80%93%20Novice%20to%20ninja" title="StumbleUpon"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fagarzon.php.com.ve%2Fdescarga-gratis-jquery-%25e2%2580%2593-novice-to-ninja%2F&amp;title=Descarga%20Gratis%3A%20jQuery%20%E2%80%93%20Novice%20to%20ninja&amp;notes=%0D%0AY%20aqu%C3%AD%20lo%20tienen...%20y%20libro%20que%20SitePoint%20regal%C3%B3%20por%2024%20horas%2C%20tras%20hacerse%20Espa%C3%B1a%20con%20la%20copa%20del%20mundial%20de%20f%C3%BAtbol%202010.%0D%0A%0D%0AEl%20libro%20pod%C3%ADa%20descargarse%20desde%20este%20enlace%20http%3A%2F%2Fsale.sitepoint.com%2F%20%28yo%20me%20he%20bajado%20el%20m%C3%ADo%29%20pero%20por%20si%20acaso%20l" title="del.icio.us"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fagarzon.php.com.ve%2Fdescarga-gratis-jquery-%25e2%2580%2593-novice-to-ninja%2F&amp;title=Descarga%20Gratis%3A%20jQuery%20%E2%80%93%20Novice%20to%20ninja&amp;annotation=%0D%0AY%20aqu%C3%AD%20lo%20tienen...%20y%20libro%20que%20SitePoint%20regal%C3%B3%20por%2024%20horas%2C%20tras%20hacerse%20Espa%C3%B1a%20con%20la%20copa%20del%20mundial%20de%20f%C3%BAtbol%202010.%0D%0A%0D%0AEl%20libro%20pod%C3%ADa%20descargarse%20desde%20este%20enlace%20http%3A%2F%2Fsale.sitepoint.com%2F%20%28yo%20me%20he%20bajado%20el%20m%C3%ADo%29%20pero%20por%20si%20acaso%20l" title="Google Bookmarks"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fagarzon.php.com.ve%2Fdescarga-gratis-jquery-%25e2%2580%2593-novice-to-ninja%2F" title="Technorati"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Descarga%20Gratis%3A%20jQuery%20%E2%80%93%20Novice%20to%20ninja&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fdescarga-gratis-jquery-%25e2%2580%2593-novice-to-ninja%2F" title="Netvibes"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/descarga-gratis-jquery-%e2%80%93-novice-to-ninja/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tener siempre a mano el último y más reciente Jquery</title>
		<link>http://agarzon.php.com.ve/tener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery</link>
		<comments>http://agarzon.php.com.ve/tener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 15:31:41 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=256</guid>
		<description><![CDATA[Para mí, es mucho mejor cargar el JQuery directamente desde un servidor remoto (más rápido, siempre actualizado y mejor manejo de caché). Habrá quien piense distinto, pero este artículo lo pongo (como suele ser costumbre) como una nota mental ;-) ya que el enlace es bastante escurridizo y no suele encontrarse fácilmente al buscarlo por [...]]]></description>
			<content:encoded><![CDATA[<p>Para mí, es mucho mejor cargar el JQuery directamente desde un servidor remoto (más rápido, siempre actualizado y mejor manejo de caché).</p>
<p>Habrá quien piense distinto, pero este artículo lo pongo (como suele ser costumbre) como una nota mental ;-) ya que el enlace es bastante escurridizo y no suele encontrarse fácilmente al buscarlo por allí.</p>
<pre class="brush: javascript; ">

&lt;script type=&quot;text/javascript&quot; src=&quot;http://code.jquery.com/jquery-latest.js&quot;&gt;&lt;/script&gt;
</pre>
<p>También podríamos valernos de google para cargar remotamente, pero con la desgracia de que debemos especificar a mano la versión deseada, en este ejemplo la versión 1.4.2:</p>
<pre class="brush: javascript; ">

&lt;script type=&quot;text/javascript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&quot;&gt;&lt;/script&gt;
</pre>
<p>Seguro le será de ayuda a alguno.</p>



Compartir:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fagarzon.php.com.ve%2Ftener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery%2F&amp;t=Tener%20siempre%20a%20mano%20el%20%C3%BAltimo%20y%20m%C3%A1s%20reciente%20Jquery" title="Facebook"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Tener%20siempre%20a%20mano%20el%20%C3%BAltimo%20y%20m%C3%A1s%20reciente%20Jquery%20-%20http%3A%2F%2Fagarzon.php.com.ve%2Ftener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery%2F" title="Twitter"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Ftener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery%2F&amp;title=Tener%20siempre%20a%20mano%20el%20%C3%BAltimo%20y%20m%C3%A1s%20reciente%20Jquery&amp;bodytext=Para%20m%C3%AD%2C%20es%20mucho%20mejor%20cargar%20el%20JQuery%20directamente%20desde%20un%20servidor%20remoto%20%28m%C3%A1s%20r%C3%A1pido%2C%20siempre%20actualizado%20y%20mejor%20manejo%20de%20cach%C3%A9%29.%0D%0A%0D%0AHabr%C3%A1%20quien%20piense%20distinto%2C%20pero%20este%20art%C3%ADculo%20lo%20pongo%20%28como%20suele%20ser%20costumbre%29%20como%20una%20nota%20menta" title="Digg"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fagarzon.php.com.ve%2Ftener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery%2F" title="Meneame"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fagarzon.php.com.ve%2Ftener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery%2F&amp;title=Tener%20siempre%20a%20mano%20el%20%C3%BAltimo%20y%20m%C3%A1s%20reciente%20Jquery" title="StumbleUpon"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fagarzon.php.com.ve%2Ftener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery%2F&amp;title=Tener%20siempre%20a%20mano%20el%20%C3%BAltimo%20y%20m%C3%A1s%20reciente%20Jquery&amp;notes=Para%20m%C3%AD%2C%20es%20mucho%20mejor%20cargar%20el%20JQuery%20directamente%20desde%20un%20servidor%20remoto%20%28m%C3%A1s%20r%C3%A1pido%2C%20siempre%20actualizado%20y%20mejor%20manejo%20de%20cach%C3%A9%29.%0D%0A%0D%0AHabr%C3%A1%20quien%20piense%20distinto%2C%20pero%20este%20art%C3%ADculo%20lo%20pongo%20%28como%20suele%20ser%20costumbre%29%20como%20una%20nota%20menta" title="del.icio.us"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fagarzon.php.com.ve%2Ftener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery%2F&amp;title=Tener%20siempre%20a%20mano%20el%20%C3%BAltimo%20y%20m%C3%A1s%20reciente%20Jquery&amp;annotation=Para%20m%C3%AD%2C%20es%20mucho%20mejor%20cargar%20el%20JQuery%20directamente%20desde%20un%20servidor%20remoto%20%28m%C3%A1s%20r%C3%A1pido%2C%20siempre%20actualizado%20y%20mejor%20manejo%20de%20cach%C3%A9%29.%0D%0A%0D%0AHabr%C3%A1%20quien%20piense%20distinto%2C%20pero%20este%20art%C3%ADculo%20lo%20pongo%20%28como%20suele%20ser%20costumbre%29%20como%20una%20nota%20menta" title="Google Bookmarks"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fagarzon.php.com.ve%2Ftener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery%2F" title="Technorati"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Tener%20siempre%20a%20mano%20el%20%C3%BAltimo%20y%20m%C3%A1s%20reciente%20Jquery&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Ftener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery%2F" title="Netvibes"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/tener-siempre-a-mano-el-ultimo-y-mas-reciente-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buscar en archivos .htaccess por contenido y en forma recursiva</title>
		<link>http://agarzon.php.com.ve/buscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=buscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva</link>
		<comments>http://agarzon.php.com.ve/buscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 21:49:42 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=234</guid>
		<description><![CDATA[Hace poco me vi en la necesidad de buscar entre todos los dominios de un servidor, determinada &#8220;cadena&#8221; contenida entre todos los archivos .htaccess que pudieran existir. Como muchos saben un archivo con la forma .xxx en Linux representa a un archivo &#8220;oculto&#8221; y por tanto una simple instrucción GREP o FIND no nos servirían [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco me vi en la necesidad de buscar entre todos los dominios de un servidor, determinada &#8220;cadena&#8221; contenida entre todos los archivos .htaccess que pudieran existir.</p>
<p>Como muchos saben un archivo con la forma <strong>.xxx</strong> en Linux representa a un archivo &#8220;oculto&#8221; y por tanto una simple instrucción GREP o FIND no nos servirían de mucho a no ser que las usemos combinadas.</p>
<p>Así pues que la solución la dejo por acá en forma de nota mental para mis usos futuros (y el de ustedes).</p>
<pre class="brush: perl; ">

find . -name &quot;.htaccess&quot; -exec grep -r -n -H -I &#039;cadena-a-buscar&#039; {} \;
</pre>
<p>Esta instrucción la ejecutamos desde luego desde el directorio donde deseamos iniciar la recursividad, en mi caso:<br />
<strong>/var/www/vhosts</strong> (plesk)</p>



Compartir:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fagarzon.php.com.ve%2Fbuscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva%2F&amp;t=Buscar%20en%20archivos%20.htaccess%20por%20contenido%20y%20en%20forma%20recursiva%20" title="Facebook"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Buscar%20en%20archivos%20.htaccess%20por%20contenido%20y%20en%20forma%20recursiva%20%20-%20http%3A%2F%2Fagarzon.php.com.ve%2Fbuscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva%2F" title="Twitter"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fbuscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva%2F&amp;title=Buscar%20en%20archivos%20.htaccess%20por%20contenido%20y%20en%20forma%20recursiva%20&amp;bodytext=Hace%20poco%20me%20vi%20en%20la%20necesidad%20de%20buscar%20entre%20todos%20los%20dominios%20de%20un%20servidor%2C%20determinada%20%22cadena%22%20contenida%20entre%20todos%20los%20archivos%20.htaccess%20que%20pudieran%20existir.%0D%0A%0D%0AComo%20muchos%20saben%20un%20archivo%20con%20la%20forma%20.xxx%20en%20Linux%20representa%20a%20un%20arch" title="Digg"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fagarzon.php.com.ve%2Fbuscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva%2F" title="Meneame"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fagarzon.php.com.ve%2Fbuscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva%2F&amp;title=Buscar%20en%20archivos%20.htaccess%20por%20contenido%20y%20en%20forma%20recursiva%20" title="StumbleUpon"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fagarzon.php.com.ve%2Fbuscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva%2F&amp;title=Buscar%20en%20archivos%20.htaccess%20por%20contenido%20y%20en%20forma%20recursiva%20&amp;notes=Hace%20poco%20me%20vi%20en%20la%20necesidad%20de%20buscar%20entre%20todos%20los%20dominios%20de%20un%20servidor%2C%20determinada%20%22cadena%22%20contenida%20entre%20todos%20los%20archivos%20.htaccess%20que%20pudieran%20existir.%0D%0A%0D%0AComo%20muchos%20saben%20un%20archivo%20con%20la%20forma%20.xxx%20en%20Linux%20representa%20a%20un%20arch" title="del.icio.us"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fagarzon.php.com.ve%2Fbuscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva%2F&amp;title=Buscar%20en%20archivos%20.htaccess%20por%20contenido%20y%20en%20forma%20recursiva%20&amp;annotation=Hace%20poco%20me%20vi%20en%20la%20necesidad%20de%20buscar%20entre%20todos%20los%20dominios%20de%20un%20servidor%2C%20determinada%20%22cadena%22%20contenida%20entre%20todos%20los%20archivos%20.htaccess%20que%20pudieran%20existir.%0D%0A%0D%0AComo%20muchos%20saben%20un%20archivo%20con%20la%20forma%20.xxx%20en%20Linux%20representa%20a%20un%20arch" title="Google Bookmarks"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fagarzon.php.com.ve%2Fbuscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva%2F" title="Technorati"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Buscar%20en%20archivos%20.htaccess%20por%20contenido%20y%20en%20forma%20recursiva%20&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fbuscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva%2F" title="Netvibes"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/buscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deshabilitar mod_security por dominio</title>
		<link>http://agarzon.php.com.ve/deshabilitar-mod_security-por-dominio/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=deshabilitar-mod_security-por-dominio</link>
		<comments>http://agarzon.php.com.ve/deshabilitar-mod_security-por-dominio/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 18:14:38 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=228</guid>
		<description><![CDATA[El mod_security es un gran addon a nuestro Apache para ayudarnos a proteger nuestros dominios hospedados en el servidor contra ataques DDOS, inyección de SQL, y muchos otros más, pero &#8230; Sucede mucho que ante ciertos CMS como foros, blogs, portales, etc&#8230; el mod_security dispara incómodos falsos-positivos, y por ende dichos sistemas instalados dejan de [...]]]></description>
			<content:encoded><![CDATA[<p>El mod_security es un gran addon a nuestro Apache para ayudarnos a proteger nuestros dominios hospedados en el servidor contra ataques DDOS, inyección de SQL, y muchos otros más, pero &#8230;</p>
<p>Sucede mucho que ante ciertos CMS como foros, blogs, portales, etc&#8230; el mod_security dispara incómodos falsos-positivos, y por ende dichos sistemas instalados dejan de funcionar como esperamos que lo hagan.</p>
<p>La solución es simple: Analizar los logs en búsqueda de la razón de estos falsos positivos y ajustar las reglas del mod_security pero, siempre hay una opción mucho más rápida: deshabilitar el mod_security (Aunque evidentemente esto deja sin protección al sistema)</p>
<p>Pero ¿cómo hacemos esto si el mod_security al ser un plugin del Apache que afecta en general y por igual a todos los dominios hospedados en un mismo servidor?</p>
<p>Pues fácil:<br />
Creamos (o editamos) el archivo <strong>.htaccess</strong> el cual está en la raíz del dominio que queremos deshabilitarle el mod_security y ya está:</p>
<pre class="brush: perl; ">

&lt;IfModule mod_security.c&gt;
SecFilterEngine Off
&lt;/IfModule&gt;
</pre>



Compartir:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fagarzon.php.com.ve%2Fdeshabilitar-mod_security-por-dominio%2F&amp;t=Deshabilitar%20mod_security%20por%20dominio" title="Facebook"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Deshabilitar%20mod_security%20por%20dominio%20-%20http%3A%2F%2Fagarzon.php.com.ve%2Fdeshabilitar-mod_security-por-dominio%2F" title="Twitter"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fdeshabilitar-mod_security-por-dominio%2F&amp;title=Deshabilitar%20mod_security%20por%20dominio&amp;bodytext=El%20mod_security%20es%20un%20gran%20addon%20a%20nuestro%20Apache%20para%20ayudarnos%20a%20proteger%20nuestros%20dominios%20hospedados%20en%20el%20servidor%20contra%20ataques%20DDOS%2C%20inyecci%C3%B3n%20de%20SQL%2C%20y%20muchos%20otros%20m%C3%A1s%2C%20pero%20...%0D%0A%0D%0ASucede%20mucho%20que%20ante%20ciertos%20CMS%20como%20foros%2C%20blogs%2C%20port" title="Digg"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fagarzon.php.com.ve%2Fdeshabilitar-mod_security-por-dominio%2F" title="Meneame"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fagarzon.php.com.ve%2Fdeshabilitar-mod_security-por-dominio%2F&amp;title=Deshabilitar%20mod_security%20por%20dominio" title="StumbleUpon"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fagarzon.php.com.ve%2Fdeshabilitar-mod_security-por-dominio%2F&amp;title=Deshabilitar%20mod_security%20por%20dominio&amp;notes=El%20mod_security%20es%20un%20gran%20addon%20a%20nuestro%20Apache%20para%20ayudarnos%20a%20proteger%20nuestros%20dominios%20hospedados%20en%20el%20servidor%20contra%20ataques%20DDOS%2C%20inyecci%C3%B3n%20de%20SQL%2C%20y%20muchos%20otros%20m%C3%A1s%2C%20pero%20...%0D%0A%0D%0ASucede%20mucho%20que%20ante%20ciertos%20CMS%20como%20foros%2C%20blogs%2C%20port" title="del.icio.us"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fagarzon.php.com.ve%2Fdeshabilitar-mod_security-por-dominio%2F&amp;title=Deshabilitar%20mod_security%20por%20dominio&amp;annotation=El%20mod_security%20es%20un%20gran%20addon%20a%20nuestro%20Apache%20para%20ayudarnos%20a%20proteger%20nuestros%20dominios%20hospedados%20en%20el%20servidor%20contra%20ataques%20DDOS%2C%20inyecci%C3%B3n%20de%20SQL%2C%20y%20muchos%20otros%20m%C3%A1s%2C%20pero%20...%0D%0A%0D%0ASucede%20mucho%20que%20ante%20ciertos%20CMS%20como%20foros%2C%20blogs%2C%20port" title="Google Bookmarks"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fagarzon.php.com.ve%2Fdeshabilitar-mod_security-por-dominio%2F" title="Technorati"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Deshabilitar%20mod_security%20por%20dominio&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fdeshabilitar-mod_security-por-dominio%2F" title="Netvibes"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/deshabilitar-mod_security-por-dominio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mes de la seguridad PHP: Inicialización de Variables</title>
		<link>http://agarzon.php.com.ve/mes-de-la-seguridad-php-inicializacion-de-variables/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=mes-de-la-seguridad-php-inicializacion-de-variables</link>
		<comments>http://agarzon.php.com.ve/mes-de-la-seguridad-php-inicializacion-de-variables/#comments</comments>
		<pubDate>Mon, 17 May 2010 17:55:19 +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=215</guid>
		<description><![CDATA[Contribuyendo con la celebración del &#8220;MPOS&#8221; (Month of PHP Security) les traigo a ustedes este pequeño artículo de Jakub Vrana llevado al español de mi mano y con algunos ajustes personales. Inicialización de variables PHP Consideremos el siguiente código: &#60;?php if (authUser($_POST[&#34;login&#34;], $_POST[&#34;password&#34;])) { $auth = true; } if ($auth) { echo &#34;Secret\n&#34;; } ?&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Contribuyendo con la celebración del &#8220;MPOS&#8221; (<a href="http://php-security.org/">Month of PHP Security</a>)  les traigo a ustedes este pequeño artículo de Jakub Vrana llevado al español de mi mano y con algunos ajustes personales.</p>
<p><strong>Inicialización de variables PHP</strong></p>
<p>Consideremos el siguiente código:</p>
<pre class="brush: php; ">

&lt;?php
if (authUser($_POST[&quot;login&quot;], $_POST[&quot;password&quot;])) {
    $auth = true;
}
if ($auth) {
    echo &quot;Secret\n&quot;;
}
?&gt;
</pre>
<p>Puedes detectar fácilmente la vulnerabilidad en el mismo. La variable <strong>$auth</strong> no se inicializó para todos los casos por lo que puede ser engañada desde el exterior. PHP define una forma de manejar las variables sin inicializar (a diferencia del lenguaje C, por ejemplo), todos ellos tienen el valor <strong>null</strong>. El problema es que la variable se puede inicializar de otras fuentes:</p>
<ul>
<li>Código Anterior.</li>
<li>Archivo incluido (include)</li>
<li>Remotamente si register_globals está habilitado.</li>
<li>Usando el <strong>extract</strong> de una variable (no fiable).</li>
</ul>
<p><strong>Defensa:</strong><br />
Defenderse de este tipo de vulnerabilidad es muy simple &#8211; Siempre inicializa las variables:</p>
<pre class="brush: php; ">

&lt;?php
$auth = false;
if (authUser($_POST[&quot;login&quot;], $_POST[&quot;password&quot;])) {
    $auth = true;
}
?&gt;
</pre>
<p>Ahora <strong>$auth</strong> contiene algo (o nada) entonces siempre resolverá a <strong>FALSE</strong>. Es una buena idea inicializar las variables incondicionalmente. El siguiente código debería funcionar aunque no es tan robusto:</p>
<pre class="brush: php; ">

&lt;?php
if (authUser($_POST[&quot;login&quot;], $_POST[&quot;password&quot;])) {
    $auth = true;
} else {
    $auth = false;
}
?&gt;
</pre>
<p>Ahora consideremos que a alguien le gusta revisar las direcciones IP y lo hace de este modo:</p>
<pre class="brush: php; ">

&lt;?php
if ($_SERVER[&quot;REMOTE_ADDR&quot;] == &quot;127.0.0.1&quot;) {
    if (authUser($_POST[&quot;login&quot;], $_POST[&quot;password&quot;])) {
        $auth = true;
    }
} else {
    $auth = false;
}
?&gt;
</pre>
<p>La variable <strong>$auth</strong> puede ser engañada de nuevo !</p>
<p><strong>Nota</strong>: El atacante debe conocer la variable a engañar, bien puede adivinarla, obtenerla de algún mensaje de error, usando fuerza bruta o en la mayoría de los casos, se ha hecho con el código fuente (aplicaciones open source o siendo un ex-empleado de una empresa).</p>
<p><strong>Deshabilitando register_globals</strong></p>
<p>Es importante mencionar que deshabilitar register_globals no es en definitiva una defensa contra este tipo de ataques. Esto sólo nos acerca a evitar el más común de los tipos de ataque. Por supuesto es una buena idea deshabilitarlo pero las buenas aplicaciones no dependen de esta directiva y funcionan indistintamente de ellas, así no es necesario emular de este modo:</p>
<pre class="brush: php; ">

&lt;?php
// NUNCA USES ESTE TIPO DE CÓDIGO
if (ini_get(&quot;register_globals&quot;)) {
    foreach ($_REQUEST as $key =&gt; $val) {
        unset($$key);
    }
}
?&gt;
</pre>
<p><strong>Reconociendo variables no inicializadas</strong></p>
<p>PHP posee un mecanismo para vigilar variables no inicializadas, este es el manejador de errores <strong>E_NOTICE</strong> quien nos muestra las variables no inicializadas, aunque esto conlleva algunos problemas:</p>
<ol>
<li>No advierte acerca de un array sin inicializar.</li>
<li>Advierte al acceder a un índice no-existente en un array debidamente inicializado.</li>
<li>Se publica en tiempo de ejecución.</li>
</ol>
<p><strong>E_NOTICE No advierte acerca de un array sin inicializar.</strong></p>
<p>Este primer problema es el más relevante, considere el siguiente código:</p>
<pre class="brush: php; ">

&lt;?php
$config[&quot;password&quot;] = &quot;pwd&quot;;
if (isset($_POST[&quot;password&quot;]) &amp;&amp; $_POST[&quot;password&quot;] == $config[&quot;password&quot;]) {
    echo &quot;Secret information.\n&quot;;
}
?&gt;
</pre>
<p>Esto no notará  si un atacante falsifica la variable $config. Si el pasa una cadena entones el código es interpretado como esto:</p>
<pre class="brush: php; ">

&lt;?php
$config[0] = &quot;p&quot;;
// $config es una cadena de modo que  [] es usada para acceder a los bytes de la cadena
// &quot;password&quot; es convertido al número 0 porque la posición de la cadena son siempre enteros
// sólo un byte puede ser escrito a [0] de modo que &quot;pwd&quot; es interpretado como &quot;p&quot;
if (isset($_POST[&quot;password&quot;]) &amp;&amp; $_POST[&quot;password&quot;] == $config[0]) {
    echo &quot;Secret information.\n&quot;;
}
?&gt;
</pre>
<p>Ahora bien, esto es suficiente para adivinar el primer carácter de la contraseña y enviarla junto con el falso <strong>$config</strong></p>
<p><strong>E_NOTICE advierte al acceder a un índice no-existente en un array debidamente inicializado.</strong></p>
<p>Este segundo problema no está relacionado con la seguridad pero si con desarrollar código &#8220;bien hecho&#8221;. El siguiente código informaría una notificación aún si funciona bien y no puede ser engañado:</p>
<pre class="brush: php; ">

&lt;input name=&quot;search&quot; value=&quot;&lt;?php echo htmlspecialchars((string) $_GET[&quot;search&quot;]); ?&gt;&quot; /&gt;
</pre>
<p>Con el E_NOTICE habilitado, nosotros debemos re-escribir el código aunque un poco más largo con la misma funcionalidad:</p>
<pre class="brush: php; ">

&lt;input name=&quot;search&quot; value=&quot;&lt;?php
if (isset($_GET[&quot;search&quot;])) {
    echo htmlspecialchars((string) $_GET[&quot;search&quot;]);
}
?&gt;&quot; /&gt;
</pre>
<p>Otro ejemplo de esta restricción &#8211; El siguiente código es perfectamente válido y hace lo que esperamos que haga (contar miembros de un grupo):</p>
<pre class="brush: php; ">

&lt;?php
$groups = array();
foreach (getData() as $data) {
    $groups[$data[&quot;id_group&quot;]]++;
}
?&gt;
</pre>
<p>Con el E_NOTICE habilitado, debemos re-escribirlo de este modo:</p>
<pre class="brush: php; ">

&lt;?php
$groups = array();
foreach (getData() as $data) {
    if (!isset($groups[$data[&quot;id_group&quot;]])) {
        $groups[$data[&quot;id_group&quot;]] = 0;
    } else {
        $groups[$data[&quot;id_group&quot;]]++;
    }
}
?&gt;
</pre>
<p>Yo no diría que este es el código más claro y menos propenso a errores (ya hay un error incluido).</p>
<p><strong>E_NOTICE se publica en tiempo de ejecución.</strong></p>
<p>Este tercer problema está relacionado con la seguridad. Si usamos variables no inicializadas que no monitorizamos durante el desarrollo, entonces el atacante puede usarle. Es bueno informar sobre variables no inicializadas en el log de errores pero si esto puede ser usado por el atacante, entonces será demasiado tarde. Es posible hacer notificaciones fatales con set_error_handler pero no vale la pena para la mayoría de las aplicaciones.</p>
<p><strong>Mejor monitoreo de variables no inicializadas</strong></p>
<p>No recomendaría deshabilitar las notificaciones. Sin embargo, esto no soluciona todos los problemas y requiere de re-escribir un código más profundo como han notado. Afortunadamente, hay una forma mejor de rastrear las variables no inicializadas que resuelve los tres problemas de las notificaciones. Su nombre es <strong>php-initialized</strong>. Es una herramienta para analizar el código fuente en búsqueda de variables no inicializadas. Esto no ejecuta el código y tiene algunas limitaciones pero se puede utilizar para comprobar el código de forma rutinaria, por ejemplo, después o antes de realizar una refactorización.</p>
<p>La principal limitación es que sólo el bloque actual es considerado dentro del ámbito de variables. Así, el siguiente código reclamaría a <strong>$auth</strong> como variable no inicializada:</p>
<pre class="brush: php; ">

&lt;?php
if (authUser($_POST[&quot;login&quot;], $_POST[&quot;login&quot;])) {
    $auth = true;
} else {
    $auth = false;
}
if ($auth) {
    echo &quot;Secret\n&quot;;
}
// Imprime: Uninitialized variable $auth on line 7
?&gt;
</pre>
<p><strong>No use $_REQUEST</strong></p>
<p>Engañar variables no sólo involucra a las variables globales. La variable $_REQUEST puede ser llenada desde cualquier fuente externa. </p>
<p>Recordemos que $_REQUEST obtiene sus valores de los métodos: POST, GET y COOKIE &#8230; en su lugar deberíamos ser más específicos respecto al origen de la información usando las super-globales: $_POST, $_GET y $_COOKIE en cada caso.</p>
<p><strong>En resumen</strong></p>
<p>Las buenas aplicaciones PHP deberían siempre inicializar sus variables antes de usarlas. Es una maravillosa idea establecer el register_globals en OFF Aunque una buena aplicación debe funcionar indistintamente de dicha directiva. PHP nos ofrece un manejador de errores E_NOTICE que puede monitorizar las variables que no están inicializadas pero esto no debe ser 100% confiable. La herramienta <a href="http://code.google.com/p/php-initialized/">php-initialized</a> resolverá estás deficiencias.</p>



Compartir:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fagarzon.php.com.ve%2Fmes-de-la-seguridad-php-inicializacion-de-variables%2F&amp;t=Mes%20de%20la%20seguridad%20PHP%3A%20Inicializaci%C3%B3n%20de%20Variables%20" title="Facebook"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Mes%20de%20la%20seguridad%20PHP%3A%20Inicializaci%C3%B3n%20de%20Variables%20%20-%20http%3A%2F%2Fagarzon.php.com.ve%2Fmes-de-la-seguridad-php-inicializacion-de-variables%2F" title="Twitter"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fmes-de-la-seguridad-php-inicializacion-de-variables%2F&amp;title=Mes%20de%20la%20seguridad%20PHP%3A%20Inicializaci%C3%B3n%20de%20Variables%20&amp;bodytext=Contribuyendo%20con%20la%20celebraci%C3%B3n%20del%20%22MPOS%22%20%28Month%20of%20PHP%20Security%29%20%20les%20traigo%20a%20ustedes%20este%20peque%C3%B1o%20art%C3%ADculo%20de%20Jakub%20Vrana%20llevado%20al%20espa%C3%B1ol%20de%20mi%20mano%20y%20con%20algunos%20ajustes%20personales.%0D%0A%0D%0AInicializaci%C3%B3n%20de%20variables%20PHP%0D%0A%0D%0AConsideremos%20el%20" title="Digg"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fagarzon.php.com.ve%2Fmes-de-la-seguridad-php-inicializacion-de-variables%2F" title="Meneame"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fagarzon.php.com.ve%2Fmes-de-la-seguridad-php-inicializacion-de-variables%2F&amp;title=Mes%20de%20la%20seguridad%20PHP%3A%20Inicializaci%C3%B3n%20de%20Variables%20" title="StumbleUpon"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fagarzon.php.com.ve%2Fmes-de-la-seguridad-php-inicializacion-de-variables%2F&amp;title=Mes%20de%20la%20seguridad%20PHP%3A%20Inicializaci%C3%B3n%20de%20Variables%20&amp;notes=Contribuyendo%20con%20la%20celebraci%C3%B3n%20del%20%22MPOS%22%20%28Month%20of%20PHP%20Security%29%20%20les%20traigo%20a%20ustedes%20este%20peque%C3%B1o%20art%C3%ADculo%20de%20Jakub%20Vrana%20llevado%20al%20espa%C3%B1ol%20de%20mi%20mano%20y%20con%20algunos%20ajustes%20personales.%0D%0A%0D%0AInicializaci%C3%B3n%20de%20variables%20PHP%0D%0A%0D%0AConsideremos%20el%20" title="del.icio.us"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fagarzon.php.com.ve%2Fmes-de-la-seguridad-php-inicializacion-de-variables%2F&amp;title=Mes%20de%20la%20seguridad%20PHP%3A%20Inicializaci%C3%B3n%20de%20Variables%20&amp;annotation=Contribuyendo%20con%20la%20celebraci%C3%B3n%20del%20%22MPOS%22%20%28Month%20of%20PHP%20Security%29%20%20les%20traigo%20a%20ustedes%20este%20peque%C3%B1o%20art%C3%ADculo%20de%20Jakub%20Vrana%20llevado%20al%20espa%C3%B1ol%20de%20mi%20mano%20y%20con%20algunos%20ajustes%20personales.%0D%0A%0D%0AInicializaci%C3%B3n%20de%20variables%20PHP%0D%0A%0D%0AConsideremos%20el%20" title="Google Bookmarks"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fagarzon.php.com.ve%2Fmes-de-la-seguridad-php-inicializacion-de-variables%2F" title="Technorati"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Mes%20de%20la%20seguridad%20PHP%3A%20Inicializaci%C3%B3n%20de%20Variables%20&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fmes-de-la-seguridad-php-inicializacion-de-variables%2F" title="Netvibes"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/mes-de-la-seguridad-php-inicializacion-de-variables/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Evitando las asignaciones en condiciones</title>
		<link>http://agarzon.php.com.ve/evitando-las-asignaciones-en-condiciones/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=evitando-las-asignaciones-en-condiciones</link>
		<comments>http://agarzon.php.com.ve/evitando-las-asignaciones-en-condiciones/#comments</comments>
		<pubDate>Wed, 12 May 2010 15:26:44 +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=133</guid>
		<description><![CDATA[assignment in condition es un error muy común que cometemos muchos quienes programamos con PHP. Incluso en muchos ejemplos &#8220;oficiales&#8221; que figuran en el manual oficial de PHP se recurre a este tipo de &#8220;desliz&#8221;. En realidad no se trata de un error en sí, sino de una buena practica de programación que evita disparar [...]]]></description>
			<content:encoded><![CDATA[<p><strong>assignment in condition</strong> es un error muy común que cometemos muchos quienes programamos con PHP. Incluso en muchos ejemplos &#8220;oficiales&#8221; que figuran en el <a href="http://www.php.net/manual/">manual oficial de PHP</a> se recurre a este tipo de &#8220;desliz&#8221;.</p>
<p>En realidad no se trata de un error en sí, sino de una buena practica de programación que evita disparar comportamientos indeseados cuando la aplicación tiene a crecer.</p>
<p>La premisa es simple: <strong><em>no debes asignar variables dentro de una condición</em></strong>.</p>
<p><strong>El típico ejemplo <del datetime="2010-05-12T15:13:26+00:00">mal</del> indebidamente hecho:</strong></p>
<pre class="brush: php; ">
while($array = mysql_fetch_array($result)){
</pre>
<p><strong>¿Y como debería ser?</strong></p>
<pre class="brush: php; ">
while( ($array = mysql_fetch_array($result)) !== false){
</pre>
<p><strong>¿Cual es la diferencia?</strong></p>
<p>Esta buena práctica evita errores como:</p>
<pre class="brush: php; ">
if($a = 36){
</pre>
<p>Fíjense como sucede una &#8220;<em>asignación dentro de una condición</em>&#8220;, exactamente lo que debemos evitar&#8230; y es malo porque esa asignación SIEMPRE será cierta (true).</p>
<p><strong>¿Y porqué usar !== en lugar de un simple !=?</strong></p>
<p>Ese es otro detallito que muchos suelen ignorar ;-), resulta que esperamos un FALSE booleano, no una &#8220;false&#8221; cualquiera, así que para estar seguros del valor y el tipo (no vaya a ser un string con la palabra false), lo mejor es comprobar si el dato es IDÉNTICO o NO IDÉNTICO, los cuales evalúan no sólo el contenido de la variable, sino el tipo de variable también.</p>
<p>Espero les haya gustado esta mini-entrada, tenía tiempo sin redactar algo a este abandonado blog. Hasta la próxima.</p>



Compartir:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fagarzon.php.com.ve%2Fevitando-las-asignaciones-en-condiciones%2F&amp;t=Evitando%20las%20asignaciones%20en%20condiciones" title="Facebook"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Evitando%20las%20asignaciones%20en%20condiciones%20-%20http%3A%2F%2Fagarzon.php.com.ve%2Fevitando-las-asignaciones-en-condiciones%2F" title="Twitter"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fevitando-las-asignaciones-en-condiciones%2F&amp;title=Evitando%20las%20asignaciones%20en%20condiciones&amp;bodytext=assignment%20in%20condition%20es%20un%20error%20muy%20com%C3%BAn%20que%20cometemos%20muchos%20quienes%20programamos%20con%20PHP.%20Incluso%20en%20muchos%20ejemplos%20%22oficiales%22%20que%20figuran%20en%20el%20manual%20oficial%20de%20PHP%20se%20recurre%20a%20este%20tipo%20de%20%22desliz%22.%0D%0A%0D%0AEn%20realidad%20no%20se%20trata%20de%20un%20error" title="Digg"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fagarzon.php.com.ve%2Fevitando-las-asignaciones-en-condiciones%2F" title="Meneame"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fagarzon.php.com.ve%2Fevitando-las-asignaciones-en-condiciones%2F&amp;title=Evitando%20las%20asignaciones%20en%20condiciones" title="StumbleUpon"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fagarzon.php.com.ve%2Fevitando-las-asignaciones-en-condiciones%2F&amp;title=Evitando%20las%20asignaciones%20en%20condiciones&amp;notes=assignment%20in%20condition%20es%20un%20error%20muy%20com%C3%BAn%20que%20cometemos%20muchos%20quienes%20programamos%20con%20PHP.%20Incluso%20en%20muchos%20ejemplos%20%22oficiales%22%20que%20figuran%20en%20el%20manual%20oficial%20de%20PHP%20se%20recurre%20a%20este%20tipo%20de%20%22desliz%22.%0D%0A%0D%0AEn%20realidad%20no%20se%20trata%20de%20un%20error" title="del.icio.us"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fagarzon.php.com.ve%2Fevitando-las-asignaciones-en-condiciones%2F&amp;title=Evitando%20las%20asignaciones%20en%20condiciones&amp;annotation=assignment%20in%20condition%20es%20un%20error%20muy%20com%C3%BAn%20que%20cometemos%20muchos%20quienes%20programamos%20con%20PHP.%20Incluso%20en%20muchos%20ejemplos%20%22oficiales%22%20que%20figuran%20en%20el%20manual%20oficial%20de%20PHP%20se%20recurre%20a%20este%20tipo%20de%20%22desliz%22.%0D%0A%0D%0AEn%20realidad%20no%20se%20trata%20de%20un%20error" title="Google Bookmarks"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fagarzon.php.com.ve%2Fevitando-las-asignaciones-en-condiciones%2F" title="Technorati"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Evitando%20las%20asignaciones%20en%20condiciones&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fevitando-las-asignaciones-en-condiciones%2F" title="Netvibes"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/evitando-las-asignaciones-en-condiciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Actualiza Twitter usando CURL</title>
		<link>http://agarzon.php.com.ve/actualiza-twitter-usando-curl/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=actualiza-twitter-usando-curl</link>
		<comments>http://agarzon.php.com.ve/actualiza-twitter-usando-curl/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 00:20:56 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=202</guid>
		<description><![CDATA[¿Y quien dijo que era difícil ;-)? curl -u USUARIO:PASSWORD -d status=&#34;AQUÍ TU MENSAJE&#34; http://api.twitter.com/1/statuses/update.json Compartir:]]></description>
			<content:encoded><![CDATA[<p>¿Y quien dijo que era difícil ;-)?</p>
<pre class="brush: perl; ">

curl -u USUARIO:PASSWORD -d status=&quot;AQUÍ TU MENSAJE&quot; http://api.twitter.com/1/statuses/update.json
</pre>



Compartir:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fagarzon.php.com.ve%2Factualiza-twitter-usando-curl%2F&amp;t=Actualiza%20Twitter%20usando%20CURL" title="Facebook"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Actualiza%20Twitter%20usando%20CURL%20-%20http%3A%2F%2Fagarzon.php.com.ve%2Factualiza-twitter-usando-curl%2F" title="Twitter"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Factualiza-twitter-usando-curl%2F&amp;title=Actualiza%20Twitter%20usando%20CURL&amp;bodytext=%C2%BFY%20quien%20dijo%20que%20era%20dif%C3%ADcil%20%3B-%29%3F%0D%0A%0D%0A%5Bcode%3D%27perl%27%5D%0D%0Acurl%20-u%20USUARIO%3APASSWORD%20-d%20status%3D%22AQU%C3%8D%20TU%20MENSAJE%22%20http%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.json%0D%0A%5B%2Fcode%5D%0D%0A%0D%0A" title="Digg"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fagarzon.php.com.ve%2Factualiza-twitter-usando-curl%2F" title="Meneame"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fagarzon.php.com.ve%2Factualiza-twitter-usando-curl%2F&amp;title=Actualiza%20Twitter%20usando%20CURL" title="StumbleUpon"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fagarzon.php.com.ve%2Factualiza-twitter-usando-curl%2F&amp;title=Actualiza%20Twitter%20usando%20CURL&amp;notes=%C2%BFY%20quien%20dijo%20que%20era%20dif%C3%ADcil%20%3B-%29%3F%0D%0A%0D%0A%5Bcode%3D%27perl%27%5D%0D%0Acurl%20-u%20USUARIO%3APASSWORD%20-d%20status%3D%22AQU%C3%8D%20TU%20MENSAJE%22%20http%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.json%0D%0A%5B%2Fcode%5D%0D%0A%0D%0A" title="del.icio.us"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fagarzon.php.com.ve%2Factualiza-twitter-usando-curl%2F&amp;title=Actualiza%20Twitter%20usando%20CURL&amp;annotation=%C2%BFY%20quien%20dijo%20que%20era%20dif%C3%ADcil%20%3B-%29%3F%0D%0A%0D%0A%5Bcode%3D%27perl%27%5D%0D%0Acurl%20-u%20USUARIO%3APASSWORD%20-d%20status%3D%22AQU%C3%8D%20TU%20MENSAJE%22%20http%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.json%0D%0A%5B%2Fcode%5D%0D%0A%0D%0A" title="Google Bookmarks"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fagarzon.php.com.ve%2Factualiza-twitter-usando-curl%2F" title="Technorati"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Actualiza%20Twitter%20usando%20CURL&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Factualiza-twitter-usando-curl%2F" title="Netvibes"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/actualiza-twitter-usando-curl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mi primer artículo en Maestros del Web</title>
		<link>http://agarzon.php.com.ve/mi-primer-articulo-en-maestros-del-web/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=mi-primer-articulo-en-maestros-del-web</link>
		<comments>http://agarzon.php.com.ve/mi-primer-articulo-en-maestros-del-web/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 21:49:16 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[opinión]]></category>
		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=199</guid>
		<description><![CDATA[De regreso a mi primer hogar en Internet (luego de casi 11 años de ausencia): Maestros del Web. Les presento mi primer artículo: UML: Diagramas de flujo para el desarrollo de una plataforma a gran escala Espero les guste. No hago copy-paste del mismo para no cometer el error del DRY (Don&#8217;t Repeat Yourself ) [...]]]></description>
			<content:encoded><![CDATA[<p>De regreso a mi primer hogar en Internet (luego de casi 11 años de ausencia): <a href="http://www.maestrosdelweb.com/">Maestros del Web</a>.</p>
<p>Les presento mi primer artículo: UML: <a href="http://www.maestrosdelweb.com/editorial/uml-diagramas-desarrollo-gran-escala/">Diagramas de flujo para el desarrollo de una plataforma a gran escala</a></p>
<p>Espero les guste.</p>
<p>No hago copy-paste del mismo para no cometer el error del DRY (<a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself">Don&#8217;t Repeat Yourself </a>)</p>



Compartir:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fagarzon.php.com.ve%2Fmi-primer-articulo-en-maestros-del-web%2F&amp;t=Mi%20primer%20art%C3%ADculo%20en%20Maestros%20del%20Web" title="Facebook"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Mi%20primer%20art%C3%ADculo%20en%20Maestros%20del%20Web%20-%20http%3A%2F%2Fagarzon.php.com.ve%2Fmi-primer-articulo-en-maestros-del-web%2F" title="Twitter"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fmi-primer-articulo-en-maestros-del-web%2F&amp;title=Mi%20primer%20art%C3%ADculo%20en%20Maestros%20del%20Web&amp;bodytext=De%20regreso%20a%20mi%20primer%20hogar%20en%20Internet%20%28luego%20de%20casi%2011%20a%C3%B1os%20de%20ausencia%29%3A%20Maestros%20del%20Web.%0D%0A%0D%0ALes%20presento%20mi%20primer%20art%C3%ADculo%3A%20UML%3A%20Diagramas%20de%20flujo%20para%20el%20desarrollo%20de%20una%20plataforma%20a%20gran%20escala%0D%0A%0D%0AEspero%20les%20guste.%0D%0A%0D%0ANo%20hago%20copy-past" title="Digg"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fagarzon.php.com.ve%2Fmi-primer-articulo-en-maestros-del-web%2F" title="Meneame"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fagarzon.php.com.ve%2Fmi-primer-articulo-en-maestros-del-web%2F&amp;title=Mi%20primer%20art%C3%ADculo%20en%20Maestros%20del%20Web" title="StumbleUpon"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fagarzon.php.com.ve%2Fmi-primer-articulo-en-maestros-del-web%2F&amp;title=Mi%20primer%20art%C3%ADculo%20en%20Maestros%20del%20Web&amp;notes=De%20regreso%20a%20mi%20primer%20hogar%20en%20Internet%20%28luego%20de%20casi%2011%20a%C3%B1os%20de%20ausencia%29%3A%20Maestros%20del%20Web.%0D%0A%0D%0ALes%20presento%20mi%20primer%20art%C3%ADculo%3A%20UML%3A%20Diagramas%20de%20flujo%20para%20el%20desarrollo%20de%20una%20plataforma%20a%20gran%20escala%0D%0A%0D%0AEspero%20les%20guste.%0D%0A%0D%0ANo%20hago%20copy-past" title="del.icio.us"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fagarzon.php.com.ve%2Fmi-primer-articulo-en-maestros-del-web%2F&amp;title=Mi%20primer%20art%C3%ADculo%20en%20Maestros%20del%20Web&amp;annotation=De%20regreso%20a%20mi%20primer%20hogar%20en%20Internet%20%28luego%20de%20casi%2011%20a%C3%B1os%20de%20ausencia%29%3A%20Maestros%20del%20Web.%0D%0A%0D%0ALes%20presento%20mi%20primer%20art%C3%ADculo%3A%20UML%3A%20Diagramas%20de%20flujo%20para%20el%20desarrollo%20de%20una%20plataforma%20a%20gran%20escala%0D%0A%0D%0AEspero%20les%20guste.%0D%0A%0D%0ANo%20hago%20copy-past" title="Google Bookmarks"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fagarzon.php.com.ve%2Fmi-primer-articulo-en-maestros-del-web%2F" title="Technorati"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Mi%20primer%20art%C3%ADculo%20en%20Maestros%20del%20Web&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Fmi-primer-articulo-en-maestros-del-web%2F" title="Netvibes"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/mi-primer-articulo-en-maestros-del-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Optimizar automáticamente todas las tablas de un servidor MySQL</title>
		<link>http://agarzon.php.com.ve/optimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=optimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql</link>
		<comments>http://agarzon.php.com.ve/optimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 23:14:21 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plesk]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=193</guid>
		<description><![CDATA[En los servidores de VeneHosting.com ejecutamos semanalmente un proceso que optimiza &#8216;a juro&#8217; todas las tablas, de todas las bases de datos MySQL de todo el servidor (que vienen siendo un montón enorme!); con el fin de ayudar a mantener un buen nivel de rendimiento. Como no somos egoístas, compartimos este simple script con el [...]]]></description>
			<content:encoded><![CDATA[<p>En los servidores de <a href="http://www.venehosting.com/">VeneHosting.com</a> ejecutamos semanalmente un proceso que optimiza &#8216;a juro&#8217; todas las tablas, de todas las bases de datos MySQL de todo el servidor (que vienen siendo un montón enorme!); con el fin de ayudar a mantener un buen nivel de rendimiento.</p>
<p>Como no somos egoístas, compartimos este simple script con el resto de la comunidad y ¿porqué no?, hasta la competencia podría aprender algo más de nosotros !</p>
<pre class="brush: php; ">

&lt;?php
/* modifica estos valores según tu servidor.*/
$host=&quot;localhost&quot;;
$usuario=&quot;admin&quot;; //Tu super usuario
$pasword=&quot;xxxxx&quot;; //La clave del super-usuario

/*no modifiques nada más*/
$link=mysql_connect($host,$usuario,$pasword);

$dbs=mysql_list_dbs($link);
while ($db=mysql_fetch_object($dbs))
{
        echo &quot;$db-&gt;Database\n&quot;;
        $tablas = mysql_db_query($db-&gt;Database, &quot;SHOW TABLES&quot;, $link);
        while ($tabla=mysql_fetch_array($tablas)) {
                mysql_db_query($db-&gt;Database, &quot;OPTIMIZE TABLE &quot;.$tabla[0], $link);
                echo &quot;$tabla[0]\n&quot;;
        }
}
?&gt;
</pre>
<p>Sólo resta programar este script con CRON para que se ejecute cada X tiempo (recomendado 1 vez a la semana) y listo !</p>



Compartir:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fagarzon.php.com.ve%2Foptimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql%2F&amp;t=Optimizar%20autom%C3%A1ticamente%20todas%20las%20tablas%20de%20un%20servidor%20MySQL" title="Facebook"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Optimizar%20autom%C3%A1ticamente%20todas%20las%20tablas%20de%20un%20servidor%20MySQL%20-%20http%3A%2F%2Fagarzon.php.com.ve%2Foptimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql%2F" title="Twitter"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Foptimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql%2F&amp;title=Optimizar%20autom%C3%A1ticamente%20todas%20las%20tablas%20de%20un%20servidor%20MySQL&amp;bodytext=En%20los%20servidores%20de%20VeneHosting.com%20ejecutamos%20semanalmente%20un%20proceso%20que%20optimiza%20%27a%20juro%27%20todas%20las%20tablas%2C%20de%20todas%20las%20bases%20de%20datos%20MySQL%20de%20todo%20el%20servidor%20%28que%20vienen%20siendo%20un%20mont%C3%B3n%20enorme%21%29%3B%20con%20el%20fin%20de%20ayudar%20a%20mantener%20un%20buen%20nive" title="Digg"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fagarzon.php.com.ve%2Foptimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql%2F" title="Meneame"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fagarzon.php.com.ve%2Foptimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql%2F&amp;title=Optimizar%20autom%C3%A1ticamente%20todas%20las%20tablas%20de%20un%20servidor%20MySQL" title="StumbleUpon"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fagarzon.php.com.ve%2Foptimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql%2F&amp;title=Optimizar%20autom%C3%A1ticamente%20todas%20las%20tablas%20de%20un%20servidor%20MySQL&amp;notes=En%20los%20servidores%20de%20VeneHosting.com%20ejecutamos%20semanalmente%20un%20proceso%20que%20optimiza%20%27a%20juro%27%20todas%20las%20tablas%2C%20de%20todas%20las%20bases%20de%20datos%20MySQL%20de%20todo%20el%20servidor%20%28que%20vienen%20siendo%20un%20mont%C3%B3n%20enorme%21%29%3B%20con%20el%20fin%20de%20ayudar%20a%20mantener%20un%20buen%20nive" title="del.icio.us"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fagarzon.php.com.ve%2Foptimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql%2F&amp;title=Optimizar%20autom%C3%A1ticamente%20todas%20las%20tablas%20de%20un%20servidor%20MySQL&amp;annotation=En%20los%20servidores%20de%20VeneHosting.com%20ejecutamos%20semanalmente%20un%20proceso%20que%20optimiza%20%27a%20juro%27%20todas%20las%20tablas%2C%20de%20todas%20las%20bases%20de%20datos%20MySQL%20de%20todo%20el%20servidor%20%28que%20vienen%20siendo%20un%20mont%C3%B3n%20enorme%21%29%3B%20con%20el%20fin%20de%20ayudar%20a%20mantener%20un%20buen%20nive" title="Google Bookmarks"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fagarzon.php.com.ve%2Foptimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql%2F" title="Technorati"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Optimizar%20autom%C3%A1ticamente%20todas%20las%20tablas%20de%20un%20servidor%20MySQL&amp;url=http%3A%2F%2Fagarzon.php.com.ve%2Foptimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql%2F" title="Netvibes"><img src="http://agarzon.php.com.ve/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/optimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
