<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2spanishfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">

<channel>
	<title>Una de CÃ³digo</title>
	
	<link>http://www.unadecodigo.com</link>
	<description>El blog de la programaciÃ³n</description>
	<pubDate>Thu, 23 Oct 2008 07:51:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/UnaDeCodigo" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="unadecodigo" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">UnaDeCodigo</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FUnaDeCodigo" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/UnaDeCodigo" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FUnaDeCodigo" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FUnaDeCodigo" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FUnaDeCodigo" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/content?lg=es&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2FUnaDeCodigo" src="http://eur.i1.yimg.com/eur.yimg.com/i/es/my/addto1.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.feedness.com/alta/http://feeds.feedburner.com/UnaDeCodigo" src="http://www.feedness.com/ayuda/wp-content/square_b_sh_feed.gif">Subscribe with Feedness</feedburner:feedFlare><item>
		<title>Solventar problemÃ¡tica register_globals en servidores comerciales</title>
		<link>http://www.unadecodigo.com/2008/03/09/solventar-problematica-register_globals-en-servidores-comerciales/</link>
		<comments>http://www.unadecodigo.com/2008/03/09/solventar-problematica-register_globals-en-servidores-comerciales/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 21:57:18 +0000</pubDate>
		<dc:creator>David GarcÃ­a</dc:creator>
		
		<category />

		<guid isPermaLink="false">http://www.unadecodigo.com/2008/03/09/solventar-problematica-register_globals-en-servidores-comerciales/</guid>
		<description><![CDATA[Register_globals es una variable de configuraciÃ³n, que existe desde las versiones mas tempranas de php. Controla la disponibilidad de las variables que se envia a un script php mediante metodos POST, GET, o variables procedentes de las COOKIES.
Con register_globals activo, cualquier variable enviada, por ejemplo en una url, queda automÃ¡ticamente declarada en el cÃ³digo php [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://es.php.net/manual/es/ini.core.php#ini.register-globals" target="_blank"><img src="http://www.unadecodigo.com/wp-content/uploads/2007/07/php.gif" alt="PHP" align="left" border="0" /><strong>Register_globals</strong></a> es una variable de configuraciÃ³n, que existe desde las versiones mas tempranas de php. Controla la disponibilidad de las variables que se envia a un script php mediante metodos POST, GET, o variables procedentes de las COOKIES.<span id="more-84"></span></p>
<p>Con <strong>register_globals</strong> activo, cualquier variable enviada, por ejemplo en una url, queda automÃ¡ticamente declarada en el cÃ³digo php como si la hubieramos incluido mediante la instrucciÃ³n <strong>var $variable;</strong></p>
<p>Eg.</p>
<p>http://tld.com/test.php?mivar=hola</p>
<p>equivale a que en test.php se hubiera declarado la variable como:</p>
<p>var $mivar = &#8216;hola&#8217;;</p>
<p>Desde la versiÃ³n PHP 4.2.0 el valor de <strong>register_globals</strong> estÃ¡ puesto a &#8220;off&#8221; debido a los riesgos de seguridad que implica ya que podemos inyectar variables a un cÃ³digo php sin control.</p>
<p>La manera mÃ¡s sencilla de eliminar la problemÃ¡tica de seguridad de register_globals consiste en poner a &#8220;off&#8221; el valor dentro del fichero php.ini.</p>
<p>En otros casos, cuando no tenemos acceso a la configuraciÃ³n del servidor podemos utilizar el script &#8220;fix_register_globals.php&#8221; que os adjunto.</p>
<p>Esencialmente lo que hace el script es recorrer las estructuras superglobales $_POST, $_GET y $_REQUEST, obteniendo el nombre de las variables para eliminarlas del entorno mediante el uso de la funciÃ³n &#8220;unset&#8221;.</p>
<ol class="codelist">
<li class="tab0 odd"><code>&lt;?php<br />
</code></li>
<li class="tab0 even"><code>//<br />
</code></li>
<li class="tab0 odd"><code>// http<span class="sb">:</span>//es.php.net/manual/es/security.globals.php#76550<br />
</code></li>
<li class="tab0 even"><code>//<br />
</code></li>
<li class="tab0 odd"><code>if (ini_get(register_globals))  // If register_globals is enabled<br />
</code></li>
<li class="tab0 even"><code><span class="sb">{</span> // Unset $_GET keys<br />
</code></li>
<li class="tab2 odd"><code>  foreach ($_GET as $get_key =&gt; $get_value) <span class="sb">{</span><br />
</code></li>
<li class="tab4 even"><code>    if (ereg('^([a-zA-Z]|_)<span class="sb">{</span>1<span class="sb">}</span>([a-zA-Z0-9]|_)*$&#8217;<span class="sb">,</span> $get_key)) eval(&quot;unset(\$<span class="sb">{</span>$get_key<span class="sb">}</span>);&quot;);<br />
</code></li>
<li class="tab2 odd"><code>  <span class="sb">}</span> // Unset $_POST keys<br />
</code></li>
<li class="tab2 even"><code>  foreach ($_POST as $post_key =&gt; $post_value) <span class="sb">{</span><br />
</code></li>
<li class="tab4 odd"><code>    if (ereg('^([a-zA-Z]|_)<span class="sb">{</span>1<span class="sb">}</span>([a-zA-Z0-9]|_)*$&#8217;<span class="sb">,</span> $post_key)) eval(&quot;unset(\$<span class="sb">{</span>$post_key<span class="sb">}</span>);&quot;);<br />
</code></li>
<li class="even">&nbsp;</li>
<li class="tab2 odd"><code>  <span class="sb">}</span> // Unset $_REQUEST keys<br />
</code></li>
<li class="tab2 even"><code>  foreach ($_REQUEST as $request_key =&gt; $request_value) <span class="sb">{</span><br />
</code></li>
<li class="tab4 odd"><code>    if (ereg('^([a-zA-Z]|_)<span class="sb">{</span>1<span class="sb">}</span>([a-zA-Z0-9]|_)*$&#8217;<span class="sb">,</span> $request_key)) eval(&quot;unset(\$<span class="sb">{</span>$request_key<span class="sb">}</span>);&quot;);<br />
</code></li>
<li class="tab2 even"><code>  <span class="sb">}</span><br />
</code></li>
<li class="tab0 odd"><code><span class="sb">}</span><br />
</code></li>
<li class="tab0 even"><code>?&gt;</code></li>
<li class="sourcelink"><strong>Download this code:</strong> <a href="http://www.unadecodigo.com/wp-content/uploads/2008/03/fix_register_globals.txt">fix_register_globals.txt</a></li>
</ol>
<div class="post-detail"><script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://pub.dtres.es/www/delivery/ajs.php':'http://pub.dtres.es/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=119");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'><\/scr"+"ipt>");
//]]&gt;--></script><noscript><a href='http://pub.dtres.es/www/delivery/ck.php?n=ad9bf4ed&amp;cb=1268685678' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1268685678&amp;n=ad9bf4ed' border='0' alt='' /></a></noscript>

</div>]]></content:encoded>
			<wfw:commentRss>http://www.unadecodigo.com/2008/03/09/solventar-problematica-register_globals-en-servidores-comerciales/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Error ‘Access denied for user ‘debian-sys-maint’@'localhost’ al actualizar el MySQL mediante apt-get</title>
		<link>http://www.unadecodigo.com/2008/01/13/error-access-denied-for-user-debian-sys-maintlocalhost-al-actualizar-el-mysql-mediante-apt-get/</link>
		<comments>http://www.unadecodigo.com/2008/01/13/error-access-denied-for-user-debian-sys-maintlocalhost-al-actualizar-el-mysql-mediante-apt-get/#comments</comments>
		<pubDate>Sun, 13 Jan 2008 15:21:26 +0000</pubDate>
		<dc:creator>David GarcÃ­a</dc:creator>
		
		<category />

		<guid isPermaLink="false">http://www.unadecodigo.com/2008/01/13/error-access-denied-for-user-debian-sys-maintlocalhost-al-actualizar-el-mysql-mediante-apt-get/</guid>
		<description><![CDATA[En nuestras oficinas disponemos de dos servidores con Ubuntu Gutsy Server Edition. Los tenemos como backup del sistema de backup y para gestionar nuestro sistema de tareas y para hospedar las webs en beta que vamos desarrollando.
PeriÃ³dicamente y en domingo, los vamos actualizando mediante el imprescindible apt-get y las operaciones se realizan sin problemas y [...]]]></description>
			<content:encoded><![CDATA[<p><img align="right" src="http://www.unadecodigo.com/wp-content/uploads/2007/05/mysql_100x52-64.gif" alt="Logotipo MySQL" />En nuestras oficinas disponemos de dos servidores con <a target="_blank" href="http://www.ubuntu.com" title="Ubuntu">Ubuntu Gutsy Server Edition</a>. Los tenemos como backup del sistema de backup y para gestionar nuestro sistema de tareas y para hospedar las webs en beta que vamos desarrollando.</p>
<p>PeriÃ³dicamente y en domingo, los vamos actualizando mediante el imprescindible <strong>apt-get</strong> y las operaciones se realizan sin problemas y de manera sencilla. Pero en la Ãºltima actualizaciÃ³n no ha sido asÃ­.<br />
<span id="more-82"></span><br />
Cuando ejecutabamos la secuencia y de confirmÃ¡bamos los paquetes a enviar el sistema nos mostraba un error nuevo para nosotros.</p>
<p><code>sudo apt-get update<br />
sudo apt-get upgrade</code></p>
<p align="left">Secuencia de errores:<br />
<code><br />
<font size="2">Preparing to replace mysql-server-5.0 5.0.45-1ubuntu2 (using &#8230;/mysql-server-5.0_5.0.45-1ubuntu3_i386.deb) &#8230;<br />
* Stopping MySQL database server mysqld [fail]<br />
invoke-rc.d: initscript mysql, action &#8220;stop&#8221; failed.<br />
dpkg: warning - old pre-removal script returned error exit status 1<br />
dpkg - trying script from the new package instead &#8230;<br />
* Stopping MySQL database server mysqld [fail]<br />
invoke-rc.d: initscript mysql, action &#8220;stop&#8221; failed.<br />
dpkg: error processing /var/cache/apt/archives/mysql-server-5.0_5.0.45-1ubuntu3_i386.deb (&#8211;unpack):<br />
subprocess new pre-removal script returned error exit status 1<br />
* Stopping MySQL database server mysqld [fail]<br />
invoke-rc.d: initscript mysql, action &#8220;stop&#8221; failed.<br />
* Starting MySQL database server mysqld [ OK ]<br />
/usr/bin/mysqladmin: connect to server at &#8216;localhost&#8217; failed<br />
error: &#8216;Access denied for user &#8216;debian-sys-maint&#8217;@'localhost&#8217; (using password: YES)&#8217;<br />
</font></code></p>
<p>Tras Googlear un rato, dimos con la soluciÃ³n en este <a target="_blank" href="https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.0/+bug/153221" title="SoluciÃ³n al bug">foro</a>.</p>
<p>En resumen, lo que se ha de verificar es que en la tabla <strong>user,</strong> de la base de datos <strong>mysql </strong>del servidor, exista el usuario <em>debian-sys-maint</em>, y que su password sea el que aparece en el fichero <strong>/etc/mysql/</strong><wbr></wbr><strong>debian.</strong><wbr></wbr><strong>cnf</strong>.</p>
<p>Lo podemos verificar ejecutando la instruccion siguiente desde la consola mysql.<br />
<code><br />
mysql&gt; use mysql;<br />
mysql&gt; SELECT Host,User,Password FROM user WHERE User = 'debian-sys-maint';<br />
</code></p>
<p>Ojo!, el password del fichero debian.cnf estÃ¡ en texto plano sin encriptar y en la tabla estÃ¡ encriptado en MD5.</p>
<p>Si no existe el usuario, como en nuestro caso, que lo eliminamos para reducir el nÃºmero de usuarios en el sistema. Solamente se ha de ejecutar el siguiente cÃ³digo.<br />
<code><br />
CREATE USER 'debian-sys-maint'@ '%' IDENTIFIED BY 'CLAVE_QUE_SALE_EN_DEBIAN_CNF';</code><br />
<code>GRANT ALL PRIVILEGES ON * . * TO 'debian-sys-maint'@ '%' IDENTIFIED BY 'CLAVE_QUE_SALE_EN_DEBIAN_CNF' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;</code></p>
<p>De esta manera ya podremos ejecutar de nuevo el <strong>apt-get upgrade</strong> y la instalaciÃ³n es efectuarÃ¡ sin problemas.</p>
<div class="post-detail"><script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://pub.dtres.es/www/delivery/ajs.php':'http://pub.dtres.es/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=119");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'><\/scr"+"ipt>");
//]]&gt;--></script><noscript><a href='http://pub.dtres.es/www/delivery/ck.php?n=ad9bf4ed&amp;cb=1268685678' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1268685678&amp;n=ad9bf4ed' border='0' alt='' /></a></noscript>

</div>]]></content:encoded>
			<wfw:commentRss>http://www.unadecodigo.com/2008/01/13/error-access-denied-for-user-debian-sys-maintlocalhost-al-actualizar-el-mysql-mediante-apt-get/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Incorporar videos de 5min.com a nuestro blog de Wordpress</title>
		<link>http://www.unadecodigo.com/2008/01/10/incorporar-videos-de-5mincom-a-nuestro-blog-de-wordpress/</link>
		<comments>http://www.unadecodigo.com/2008/01/10/incorporar-videos-de-5mincom-a-nuestro-blog-de-wordpress/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 22:18:17 +0000</pubDate>
		<dc:creator>David GarcÃ­a</dc:creator>
		
		<category />

		<guid isPermaLink="false">http://www.unadecodigo.com/2008/01/10/incorporar-videos-de-5mincom-a-nuestro-blog-de-wordpress/</guid>
		<description><![CDATA[Recientemente ha surgido un nuevo repositorio de videos llamado 5min. PodÃ©is ver un comentario detallado en el blog de IvÃ¡n Ruiz sobre la financiÃ³n que ha obtenido. En esta web, de estilo YouTube, los usuarios pueden subir videos como mÃ¡ximo de 5 minutos de duraciÃ³n, en el que nos muestran habilidades o trucos para solventar [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.unadecodigo.com/wp-content/uploads/2008/01/logo_5min1.gif" alt="5Min" align="left" />Recientemente ha surgido un nuevo repositorio de videos llamado <a href="http://www.5min.com" title="5min" target="_blank">5min</a>. PodÃ©is ver un comentario detallado en el blog de <a href="http://www.ivanruiz.es/2008/01/03/el-proyecto-israeli-5min-segundo-clasificado-de-startup-20-levanta-5-millones/" title="IvÃ¡n Ruiz" target="_blank">IvÃ¡n Ruiz</a> sobre la financiÃ³n que ha obtenido. En esta web, de estilo YouTube, los usuarios pueden subir videos como mÃ¡ximo de 5 minutos de duraciÃ³n, en el que nos muestran habilidades o trucos para solventar problemas cotidianos.</p>
<p><span id="more-80"></span>Los videos estÃ¡n agrupados en categorÃ­as y por el momento el contenido es muy interesante.</p>
<p>A raÃ­z de querer incorporar uno de sus videos a un blog de WordPress y no lograrlo debido a que me reestructuraba el cÃ³digo incorrectamente decidÃ­ crear un plugin para conseguirlo de manera mas fÃ¡cil.</p>
<p>DespuÃ©s de Googlear un poco me encontrÃ© el fantÃ¡stico plugin para visualizar videos de <a href="http://bassistance.de/" target="_blank">Joern Zaefferer</a> en el blog de <a href="http://www.daburna.de/blog/2006/12/13/wordpress-video-plugin/" target="_blank">Oliver Wunder</a>, que resuelve de manera genial el problema de incrustar cÃ³digo embebido para visualizar videos.</p>
<p>La idea del script es reducir todo el cÃ³digo &lt;embed&gt; a un sistema propio [tipovideo idvideo] en el editor de noticias. Una vez se muestra en la web el cÃ³digo propio se expande al cÃ³digo completo &lt;object&gt;&lt;embed&gt;.</p>
<p>AsÃ­ pues desarrollÃ© un mini plugin para incluir los videos de 5min y que os presento para que os descarguÃ©is. Si querÃ©is toda la funcionalidad podÃ©is descargar el plugin original desde el siguiente <a href="http://www.daburna.de/download/videos-plugin.zip">enlace.</a></p>
<p>El cÃ³digo del plugin para visualizar los videos 5min lo tenÃ©is aquÃ­:</p>
<ol class="codelist">
<li class="tab0 odd"><code>&lt;?php<br />
</code></li>
<li class="tab0 even"><code>/*<br />
</code></li>
<li class="tab0 odd"><code>Plugin Name<span class="sb">:</span> d3 Video Plugin<br />
</code></li>
<li class="tab0 even"><code>Plugin URI<span class="sb">:</span> http<span class="sb">:</span>//www.dtres.es<br />
</code></li>
<li class="tab0 odd"><code>Description<span class="sb">:</span> Permite ver videos de 5min en wordpress ( Ejemplo de http<span class="sb">:</span>//www.daburna.de/blog/2006/12/13/wordpress-video-plugin/ )<br />
</code></li>
<li class="tab0 even"><code>Version<span class="sb">:</span> 1<br />
</code></li>
<li class="tab0 odd"><code>Author<span class="sb">:</span> David Garcia<br />
</code></li>
<li class="tab0 even"><code>Author URI<span class="sb">:</span> http<span class="sb">:</span>//www.dtres.es<br />
</code></li>
<li class="tab0 odd"><code>*/<br />
</code></li>
<li class="even">&nbsp;</li>
<li class="tab0 odd"><code>define(&quot;D3_5MIN_WIDTH&quot;<span class="sb">,</span> 425);<br />
</code></li>
<li class="tab0 even"><code>define(&quot;D3_5MIN_HEIGHT&quot;<span class="sb">,</span> 345);<br />
</code></li>
<li class="tab0 odd"><code>define(&quot;D3_5MIN_REGEXP&quot;<span class="sb">,</span> &quot;/\[5min ([[<span class="sb">:</span>print<span class="sb">:</span>]]+)\]/&quot;);<br />
</code></li>
<li class="tab0 even"><code>define(&quot;D3_5MIN_TARGET&quot;<span class="sb">,</span> &quot;&lt;object width=&#8217;&quot;.D3_5MIN_WIDTH.&quot;&#8217; height=&#8217;&quot;.D3_5MIN_HEIGHT.&quot;&#8217; id=&#8217;FiveminPlayer&#8217;&gt;&lt;param name=&#8217;allowfullscreen&#8217; value=&#8217;true&#8217;/&gt;&lt;param name=&#8217;allowScriptAccess&#8217; value=&#8217;always&#8217;/&gt;&lt;param name=&#8217;movie&#8217; value=&#8217;http<span class="sb">:</span>//www.5min.com/Embeded/###URL###/&#8217;/&gt;&lt;embed src=&#8217;http<span class="sb">:</span>//www.5min.com/Embeded/###URL###/&#8217; type=&#8217;application/x-shockwave-flash&#8217; width=&#8217;&quot;.D3_5MIN_WIDTH.&quot;&#8217; height=&#8217;&quot;.D3_5MIN_HEIGHT.&quot;&#8217; allowfullscreen=&#8217;true&#8217; allowScriptAccess=&#8217;always&#8217;&gt;&lt;/embed&gt;&lt;/object&gt;&quot; );<br />
</code></li>
<li class="odd">&nbsp;</li>
<li class="tab0 even"><code><span class="kw">function</span> d3_5min_plugin_callback($match)<br />
</code></li>
<li class="tab0 odd"><code><span class="sb">{</span><br />
</code></li>
<li class="tab8 even"><code>        $output = D3_5MIN_TARGET;<br />
</code></li>
<li class="tab8 odd"><code>        $output = str_replace(&quot;###URL###&quot;<span class="sb">,</span> $match[1]<span class="sb">,</span> $output);<br />
</code></li>
<li class="tab8 even"><code>        return ($output);<br />
</code></li>
<li class="tab0 odd"><code><span class="sb">}</span><br />
</code></li>
<li class="even">&nbsp;</li>
<li class="tab0 odd"><code><span class="kw">function</span> d3_5min_plugin($content)<br />
</code></li>
<li class="tab0 even"><code><span class="sb">{</span><br />
</code></li>
<li class="tab8 odd"><code>        return (preg_replace_callback(D3_5MIN_REGEXP<span class="sb">,</span> &#8216;d3_5min_plugin_callback&#8217;<span class="sb">,</span> $content));<br />
</code></li>
<li class="tab0 even"><code><span class="sb">}</span><br />
</code></li>
<li class="odd">&nbsp;</li>
<li class="tab0 even"><code>add_filter('the_content'<span class="sb">,</span> &#8216;d3_5min_plugin&#8217;);<br />
</code></li>
<li class="tab0 odd"><code>add_filter('comment_text'<span class="sb">,</span> &#8216;d3_5min_plugin&#8217;);<br />
</code></li>
<li class="even">&nbsp;</li>
<li class="tab0 odd"><code>?&gt;<br />
</code></li>
<li class="sourcelink"><strong>Download this code:</strong> <a href="http://www.unadecodigo.com/wp-content/uploads/2008/01/d3video_plugin.txt">d3video_plugin.txt</a></li>
</ol>
<p>Para guardarlo como plugin solamente lo habÃ©is de poner en la carpeta plugins y guardarlo con extensiÃ³n php en vez de txt.</p>
<div class="post-detail"><script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://pub.dtres.es/www/delivery/ajs.php':'http://pub.dtres.es/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=119");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'><\/scr"+"ipt>");
//]]&gt;--></script><noscript><a href='http://pub.dtres.es/www/delivery/ck.php?n=ad9bf4ed&amp;cb=1268685678' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1268685678&amp;n=ad9bf4ed' border='0' alt='' /></a></noscript>

</div>]]></content:encoded>
			<wfw:commentRss>http://www.unadecodigo.com/2008/01/10/incorporar-videos-de-5mincom-a-nuestro-blog-de-wordpress/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Servidor de Nombre InvÃ¡lido al configurar DNS en Windows Plesk 8.x</title>
		<link>http://www.unadecodigo.com/2008/01/02/servidor-de-nombre-invalido-al-configurar-dns-en-windows-plesk-8x/</link>
		<comments>http://www.unadecodigo.com/2008/01/02/servidor-de-nombre-invalido-al-configurar-dns-en-windows-plesk-8x/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 14:06:13 +0000</pubDate>
		<dc:creator>David GarcÃ­a</dc:creator>
		
		<category />

		<guid isPermaLink="false">http://www.unadecodigo.com/2008/01/02/servidor-de-nombre-invalido-al-configurar-dns-en-windows-plesk-8x/</guid>
		<description><![CDATA[El servidor de DNS de Microsoft que tenemos en nuestro servidor de hosting Windows tiene un problema al crear dominios gestionados directamente por el servicio DNS.
El problema es que en los registros NS del servidor (no del Plesk), aparece un registro igual al hostname del servidor (miservidor) sin que se lo hayamos configurado desde el [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><a href="http://www.unadecodigo.com/wp-content/uploads/2008/01/microsoft-server-2003-standard-edition.jpg" title="Microsoft Server 2003" rel="lightbox"><img src="http://www.unadecodigo.com/wp-content/uploads/2008/01/microsoft-server-2003-standard-edition.miniatura.jpg" title="Microsoft Server 2003" alt="Microsoft Server 2003" align="left" /></a>El servidor de DNS de Microsoft que tenemos en nuestro servidor de hosting Windows tiene un problema al crear dominios gestionados directamente por el servicio DNS.</p>
<p>El problema es que en los registros NS del servidor (no del Plesk), aparece un registro igual al hostname del servidor (<strong>miservidor</strong>) sin que se lo hayamos configurado desde el panel de control Plesk.</p>
<p><span id="more-78"></span>El fallo se produce a nivel de chequear el dominio ya que el hombre <strong>miservidor</strong> no se puede resolver desde internet al no ser un nombre completamente cualificado (FQDN) y se produce un error de configuraciÃ³n del dominio.</p>
<p><a href="http://www.unadecodigo.com/wp-content/uploads/2007/05/plesk_8_soft_boxed.jpg" title="Plesk 8" rel="lightbox"><img src="http://www.unadecodigo.com/wp-content/uploads/2007/05/plesk_8_soft_boxed.miniatura.jpg" title="Plesk 8" alt="Plesk 8" align="right" /></a>La unica soluciÃ³n factible es eliminar el registro errÃ³neo desde el Snap-In DNS del Microsoft Management Console, entrando directamente desde el servidor.</p>
<p>Para ello vamos a <strong>Inicio / Herramientas Administrativas / DNS</strong>. En la ventana que se abre desplegamos las <strong>Zonas de busqueda directas</strong> y seleccionamos el dominio a reparar. Una vez seleccionado pulsamos con el botÃ³n derecho y clicamos en <strong>Propiedades.</strong></p>
<p>En la ventana que nos muestra el sistema seleccionamos la pestaÃ±a â€œServidor de Nombresâ€. Seleccionamos el servidor errÃ³neo de la lista y pulsamos el botÃ³n â€œEliminarâ€.</p>
<p>Con ello se finalizarÃ¡ el proceso correctamente y un nuevo chequeo del dominio no detectarÃ¡ errores de configuraciÃ³n.</p>
<div class="post-detail"><script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://pub.dtres.es/www/delivery/ajs.php':'http://pub.dtres.es/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=119");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'><\/scr"+"ipt>");
//]]&gt;--></script><noscript><a href='http://pub.dtres.es/www/delivery/ck.php?n=ad9bf4ed&amp;cb=1268685678' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1268685678&amp;n=ad9bf4ed' border='0' alt='' /></a></noscript>

</div>]]></content:encoded>
			<wfw:commentRss>http://www.unadecodigo.com/2008/01/02/servidor-de-nombre-invalido-al-configurar-dns-en-windows-plesk-8x/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Evolution - Se produjo un fallo al leer un saludo vÃ¡lido desde el servidor POP</title>
		<link>http://www.unadecodigo.com/2007/09/18/evolution-se-produjo-un-fallo-al-leer-un-saludo-valido-desde-el-servidor-pop/</link>
		<comments>http://www.unadecodigo.com/2007/09/18/evolution-se-produjo-un-fallo-al-leer-un-saludo-valido-desde-el-servidor-pop/#comments</comments>
		<pubDate>Tue, 18 Sep 2007 10:39:31 +0000</pubDate>
		<dc:creator>David GarcÃ­a</dc:creator>
		
		<category />

		<guid isPermaLink="false">http://www.unadecodigo.com/2007/09/18/evolution-se-produjo-un-fallo-al-leer-un-saludo-valido-desde-el-servidor-pop/</guid>
		<description><![CDATA[Los que trabajamos con el cliente de correo Evolution de Linux alguna vez habremos recibido un mensaje de error de estas caracterÃ­sticas: &#8220;Se produjo un fallo al leer un saludo vÃ¡lido desde el servidor POP &#8230;&#8221;, o en inglÃ©s &#8220;Failed to read a valid greeting from POP server &#8230;&#8221;
Â¿Que sucede?
Casi con total seguridad tenemos configurada [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.unadecodigo.com/wp-content/uploads/2007/09/evo-logo3.png" title="Evolution Mail Client" alt="Evolution Mail Client" align="left" />Los que trabajamos con el cliente de correo Evolution de Linux alguna vez habremos recibido un mensaje de error de estas caracterÃ­sticas: &#8220;Se produjo un fallo al leer un saludo vÃ¡lido desde el servidor POP &#8230;&#8221;, o en inglÃ©s &#8220;Failed to read a valid greeting from POP server &#8230;&#8221;</p>
<p><span id="more-74"></span><strong>Â¿Que sucede?</strong></p>
<p>Casi con total seguridad tenemos configurada mÃ¡s de una cuenta de correo, y Ã©stas, estÃ¡n alojadas en el mismo servidor de correo.</p>
<p><strong>Â¿Por que sucede?</strong></p>
<p>Algunos de los servidores de correo tienen configurado, por seguridad, un limite de conexiones permitidas desde la misma ip. Si tenemos configurada mas de una cuenta o bien si hay muchas personas intentando descargar el correo a la vez, como por ejemplo desde una oficina, es muy posible que estemos superando dicho lÃ­mite.</p>
<p><strong>Â¿Como podemos cambiarlo?</strong></p>
<p><a href="http://www.unadecodigo.com/2007/09/18/evolution-se-produjo-un-fallo-al-leer-un-saludo-valido-desde-el-servidor-pop/courier-imap/" rel="attachment wp-att-75" title="Courier IMAP"><img src="http://www.unadecodigo.com/wp-content/uploads/2007/09/courier-imap.png" title="Courier IMAP" alt="Courier IMAP" align="right" /></a>Cada sistema tiene su manera de configurarlo, en nuestro caso concreto utilizamos un servidor basado en Linux llamado Courier-IMAP, el cual da acceso POP e IMAP a nuestros clientes. MÃ¡s concretamente aÃºn, utilizamos la versiÃ³n instalada mediante Plesk.</p>
<p>Por defecto, Plesk configura el limite de conexiones a un nivel muy bajo. Por defecto permite 4 conexiones por IP y un total de 40 conexiones. En la actualidad dichas limitaciones son fÃ¡cilmente superables, sobretodo si el servidor da servicio de correo a una o mas empresas.</p>
<p>Para incrementar esta restriccion debemos modificar dos ficheros, uno para la configuraciÃ³n POP3 y otro para la configuraciÃ³n IMAP. Si Ã©ste ultimo mÃ©todo de acceso de correo no lo utilizamos serÃ¡ mejor no cambiar la configuraciÃ³n por defecto.</p>
<p>Fichero para la configuraciÃ³n POP3: <strong>/etc/courier-imap/pop3d</strong></p>
<p>Fichero para la configuraciÃ³n IMAP: <strong>/etc/courier-imap/imapd</strong></p>
<p>En ambos ficheros las opciones de configuraciÃ³n se llaman igual.</p>
<p>Abrimos los ficheros que queramos modificar y buscamos las opciones <strong>MAXDAEMONS</strong> y <strong>MAXPERIP</strong>.</p>
<blockquote><p>MAXDAEMONS controla el total de procesos de correo que estarÃ¡n activos, y por consiguiente, el total de accesos simultÃ¡neos al servidor de correo.</p>
<p>MAXPERIP controla el total de conexiones simultÃ¡neas desde una misma ip.</p></blockquote>
<p>Los valores correctos dependerÃ¡n de cada sistema en concreto, unos valores recomendables serian:</p>
<p><strong>MAXDAEMONS =  80</strong></p>
<p><strong>MAXPERIP = 40</strong></p>
<p>A partir de aquÃ­ deberiamos jugar con estos valores para encontrar nuestra configuraciÃ³n perfecta. Debemos tener en cuenta que cuantos mas MAXDAEMONS configuremos mayor serÃ¡ el consumo de memoria por parte del servidor, con lo que deberemos ajustarlo con cuidado.</p>
<div class="post-detail"><script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://pub.dtres.es/www/delivery/ajs.php':'http://pub.dtres.es/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=119");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'><\/scr"+"ipt>");
//]]&gt;--></script><noscript><a href='http://pub.dtres.es/www/delivery/ck.php?n=ad9bf4ed&amp;cb=1268685679' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1268685679&amp;n=ad9bf4ed' border='0' alt='' /></a></noscript>

</div>]]></content:encoded>
			<wfw:commentRss>http://www.unadecodigo.com/2007/09/18/evolution-se-produjo-un-fallo-al-leer-un-saludo-valido-desde-el-servidor-pop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Buscamos Bloggers</title>
		<link>http://www.unadecodigo.com/2007/09/05/buscamos-bloggers-2/</link>
		<comments>http://www.unadecodigo.com/2007/09/05/buscamos-bloggers-2/#comments</comments>
		<pubDate>Wed, 05 Sep 2007 17:08:23 +0000</pubDate>
		<dc:creator>IvÃ¡n Ruiz Sevilla</dc:creator>
		
		<category />

		<guid isPermaLink="false">http://www.unadecodigo.com/2007/09/05/buscamos-bloggers-2/</guid>
		<description><![CDATA[En RedTheBlogs.com estamos buscando bloggers para participar en los siguientes proyectos:
Â· MagazineMotor.com: Blog sobre el mundo del motor.
Â· AdictosAlFutbol.com: Blog sobre el apasionante mundo del futbol.
Â· Una De Codigo: Blog sobre programaciÃ³n
Â· Blog De Rol: Blog sobre el mundo de los juegos de rol
Â¿QuÃ© buscamos?

Â· Buscamos bloggers apasionados por el tema por el que desean [...]]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://www.redtheblogs.com" target="_blank">RedTheBlogs.com</a> estamos buscando bloggers para participar en los siguientes proyectos:</p>
<p>Â· <a href="http://www.magazinemotor.com" target="_blank">MagazineMotor.com</a>: Blog sobre el mundo del motor.<br />
Â· <a href="http://www.adictosalfutbol.com" target="_blank">AdictosAlFutbol.com</a>: Blog sobre el apasionante mundo del futbol.<br />
Â· <a href="http://www.unadecodigo.com" target="_blank">Una De Codigo</a>: Blog sobre programaciÃ³n<br />
Â· <a href="http://www.blogderol.com" target="_blank">Blog De Rol</a>: Blog sobre el mundo de los juegos de rol</p>
<p><strong>Â¿QuÃ© buscamos?<br />
</strong><br />
Â· Buscamos bloggers apasionados por el tema por el que desean escribir.<br />
Â· Deben de estar dispuestos a comprometerse a escribir un mÃ­nimo de 5 posts semanales.<br />
Â· Deben de tener capacidad para trabajar en equipo</p>
<p><strong>Â¿QuÃ© ofrecemos?</strong></p>
<p>Â· Trabajar en una empresa escribiendo sobre lo que mÃ¡s  te gusta, con gente que comparte tu pasiÃ³n.<br />
Â· Libertad de horarios<br />
Â· Libertad para escribir sobre lo que quieras dentro de la temÃ¡tica del blog.<br />
Â· Compartir los ingresos de publicidad del blog</p>
<p><strong>Â¿ Que necesitamos para contactar contigo ?<br />
</strong>Â· Si estÃ¡s interesado en formar parte de nuestro proyecto de Red de Blogs, no dudes en ponerte con contacto con nosotros en info @ redTheBlogs .com. </p>
<p>En el mail deberÃ­as de indicarnos:</p>
<p>   Â· Nombre<br />
   Â· Email<br />
   Â· Nick de Skype, Gtalk o messenger<br />
   Â· Blog en el que deseas participar<br />
   Â· URL de tu blog: En caso de que no tengas blog serÃ­a interesante que escribieras uno o dos post de modelo, utiliza la temÃ¡tica del blog en el que deseas participar.</p>
<div class="post-detail"><script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://pub.dtres.es/www/delivery/ajs.php':'http://pub.dtres.es/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=119");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'><\/scr"+"ipt>");
//]]&gt;--></script><noscript><a href='http://pub.dtres.es/www/delivery/ck.php?n=ad9bf4ed&amp;cb=1268685679' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1268685679&amp;n=ad9bf4ed' border='0' alt='' /></a></noscript>

</div>]]></content:encoded>
			<wfw:commentRss>http://www.unadecodigo.com/2007/09/05/buscamos-bloggers-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Verdades de la programaciÃ³n</title>
		<link>http://www.unadecodigo.com/2007/08/14/verdades-de-la-programacion/</link>
		<comments>http://www.unadecodigo.com/2007/08/14/verdades-de-la-programacion/#comments</comments>
		<pubDate>Mon, 13 Aug 2007 22:23:56 +0000</pubDate>
		<dc:creator>David GarcÃ­a</dc:creator>
		
		<category />

		<guid isPermaLink="false">http://www.unadecodigo.com/2007/08/14/verdades-de-la-programacion/</guid>
		<description><![CDATA[Una mujer tarda nueves meses en dar a luz, nueve mujeres no dan a luz un bebÃ© en un mes.
* El Tendero Digital en un comentario en su blog.
VÃ­a: HalÃ³n Disparado


]]></description>
			<content:encoded><![CDATA[<blockquote>Una mujer tarda nueves meses en dar a luz, nueve mujeres no dan a luz un bebÃ© en un mes.</p></blockquote>
<p>* El Tendero Digital en <a href="http://changlonet.com/blog/2007/productividad-y-sistemas-operativos/#comment-43944" target="_blank">un comentario</a> en su blog.</p>
<p><strong>VÃ­a:</strong> <a href="http://halondisparado.com" title="Halon Disparado" target="_blank">HalÃ³n Disparado</a></p>
<div class="post-detail"><script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://pub.dtres.es/www/delivery/ajs.php':'http://pub.dtres.es/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=119");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'><\/scr"+"ipt>");
//]]&gt;--></script><noscript><a href='http://pub.dtres.es/www/delivery/ck.php?n=ad9bf4ed&amp;cb=1268685679' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1268685679&amp;n=ad9bf4ed' border='0' alt='' /></a></noscript>

</div>]]></content:encoded>
			<wfw:commentRss>http://www.unadecodigo.com/2007/08/14/verdades-de-la-programacion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Configurar interfaces de red virtuales en Gentoo de manera permanente</title>
		<link>http://www.unadecodigo.com/2007/07/19/configurar-interfaces-de-red-virtuales-en-gentoo-de-manera-permanente/</link>
		<comments>http://www.unadecodigo.com/2007/07/19/configurar-interfaces-de-red-virtuales-en-gentoo-de-manera-permanente/#comments</comments>
		<pubDate>Thu, 19 Jul 2007 21:10:14 +0000</pubDate>
		<dc:creator>David GarcÃ­a</dc:creator>
		
		<category />

		<guid isPermaLink="false">http://www.unadecodigo.com/2007/07/19/configurar-interfaces-de-red-virtuales-en-gentoo-de-manera-permanente/</guid>
		<description><![CDATA[Recientemente hemos tenido la necesidad de hurgar en las entraÃ±as de un servidor linux Gentoo debido a un problema con un interfaz de red virtual; al reiniciar dicha mÃ¡quina, la configuraciÃ³n establecida no se habÃ­a guardado; tal y como era de esperar.
Os ponemos en antecedentes: Uno de nuestros proyectos lo tenemos instalado dentro de un [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.unadecodigo.com/wp-content/uploads/2007/07/powered-small.png" title="Powered By Gentoo" alt="Powered By Gentoo" align="right" />Recientemente hemos tenido la necesidad de hurgar en las entraÃ±as de un servidor linux <a href="http://www.gentoo.org/" target="_blank">Gentoo</a> debido a un problema con un interfaz de red virtual; al reiniciar dicha mÃ¡quina, la configuraciÃ³n establecida no se habÃ­a guardado; tal y como era de esperar.</p>
<p>Os ponemos en antecedentes: Uno de nuestros proyectos lo tenemos instalado dentro de un servidor dedicado linux con la distribuciÃ³n <a href="http://www.gentoo.org/" target="_blank">Gentoo</a> y el software de gestiÃ³n de dominios llamado <a href="http://www.webmin.com/" target="_blank">Webmin</a>.</p>
<p><span id="more-62"></span>Dicho software de gestiÃ³n no es ni por asomo tan complejo como podrÃ­a ser un <a href="http://www.swsoft.com/es/products/plesk/" target="_blank">Plesk</a> o un <a href="http://www.ensim.com/" target="_blank">Ensim</a>, pero para gestionar los servicios de la mÃ¡quina es totalmente funcional. BÃ¡sicamente proporciona un interfaz mucho mÃ¡s amigable a los administradores y en lugar de tener que pelearnos con los tÃ­picos ficheros de texto que componen un sistema linux se pueden realizar modificaciones de manera mÃ¡s cÃ³moda.</p>
<p>El proveedor del servidor nos ofreciÃ³ la posibilidad de incorporar una segunda ip fija al servidor como ip de backup. Con ella dispondrÃ­amos de un sistema de recuperaciÃ³n rÃ¡pida en caso de que ocurriera un fallo grave del hardware.</p>
<p>Esta segunda ip puede redirigirse entre mÃ¡quinas diferentes en pocos segundos. Si al crear el registro DNS de tipo A para el dominio alojado le especificamos la ip secundaria, se puede hacer un cambio de servidor fÃ­sico sin que el usuario final se dÃ© cuenta ni perciba anomalÃ­a alguna.</p>
<p>Recapitulemos. Al principio del post decÃ­a que nos habÃ­amos encontrado con un problema en Gentoo + Webmin. El interfaz de red (eth0) tenia asignada la ip primaria. Desde Webmin creamos un interfaz virtual (eth0:1) y le asignamos la ip secundaria.</p>
<blockquote><p><a href="http://www.unadecodigo.com/wp-content/uploads/2007/07/red.jpg" target="_blank" title="Tarjeta de Red" rel="lightbox"><img src="http://www.unadecodigo.com/wp-content/uploads/2007/07/red.miniatura.jpg" title="Tarjeta de Red" alt="Tarjeta de Red" align="right" /></a><strong>Â¿QuÃ© es y para que sirve una interfaz virtual?</strong> Nos sirven para tener varias direcciones IP utilizando una misma tarjeta de red, y asÃ­ ofrecer servicios en cada una estas direcciones. Es decir cada una de las ips &#8220;secundarias&#8221; constituye una interfaz virtual.</p></blockquote>
<p>El problema con el Webmin fue que no guardaba la informaciÃ³n de esta interfaz virtual. Al reiniciar el servidor, se perdiÃ³ el enlace con la ip y los navegadores no encontraban a ningÃºn servidor que respondiera a sus peticiones web.</p>
<p>DespuÃ©s de todo esto nos preguntamos Â¿cÃ³mo podemos crear un interfaz virtual de manera permanente? En linux se puede hacer mediante la tÃ©cnica del &#8220;IP Aliasing&#8221;. En las versiones mas recientes del kernel esta tÃ©cnica existe como mÃ³dulo. Dicho mÃ³dulo se llama &#8220;ip_alias&#8221;. Debe estar ejecutÃ¡ndose para que lo que explicaremos a continuaciÃ³n funcione.</p>
<p>En nuestra distribuciÃ³n de Gentoo, la configuraciÃ³n de la red se encuentra en el fichero:</p>
<blockquote><p>/etc/conf.d/net</p></blockquote>
<p>En una configuraciÃ³n estÃ¡ndar nos encontraremos lo siguiente</p>
<ol class="codelist">
<li class="odd">&nbsp;</li>
<li class="tab0 even"><code>config_eth0=(<br />
</code></li>
<li class="tab1 odd"><code>&nbsp;&nbsp;&quot;192.168.1.50 netmask 255.255.255.0&quot;<br />
</code></li>
<li class="tab0 even"><code>)<br />
</code></li>
<li class="tab0 odd"><code>routes_eth0=( &quot;default gw 192.168.1.1&quot; )<br />
</code></li>
<li class="even">&nbsp;</li>
<li class="odd">&nbsp;</li>
<li class="sourcelink"><strong>Download this code:</strong> <a href="http://www.unadecodigo.com/wp-content/uploads/2007/07/netdefault.txt">netdefault.txt</a></li>
</ol>
<p>Vemos que se ha configurado un interfaz de red llamado eth0 (es la nomenclatura por defecto, tambiÃ©n podrÃ­a llamarse eth1, wlan0, etc&#8230; ) con la ip 192.168.1.50 y una mÃ¡scara 255.255.255.0.</p>
<p><strong>Â¿CÃ³mo podemos agregar una interfaz virtual?</strong> Si quisiÃ©ramos que la mÃ¡quina atendiera a las peticiones desde la ip 192.168.2.75 el fichero /etc/conf.d/net deberÃ­a quedar de la siguiente manera:</p>
<ol class="codelist">
<li class="odd">&nbsp;</li>
<li class="tab0 even"><code>config_eth0=(<br />
</code></li>
<li class="tab1 odd"><code>&nbsp;&nbsp;&quot;192.168.1.50 netmask 255.255.255.0&quot;<br />
</code></li>
<li class="tab1 even"><code>&nbsp;&nbsp;&quot;192.168.2.75 netmask 255.255.255.0&quot;<br />
</code></li>
<li class="tab0 odd"><code>)<br />
</code></li>
<li class="tab0 even"><code>routes_eth0=( &quot;default gw 192.168.1.1&quot; )<br />
</code></li>
<li class="odd">&nbsp;</li>
<li class="even">&nbsp;</li>
<li class="sourcelink"><strong>Download this code:</strong> <a href="http://www.unadecodigo.com/wp-content/uploads/2007/07/netvirtual.txt">netvirtual.txt</a></li>
</ol>
<p>Realmente es muy sencillo. La ip 192.168.2.75 se ha asignado al interfaz eth0:1. Si fuÃ©ramos aÃ±adiendo ips, las interfaces irÃ­an aumentando consecutivamente.</p>
<p>Finalmente, solo nos quedarÃ­a reiniciar la interfaz para que el servidor atendiera a las peticiones por las dos ips. Esto lo harÃ­amos asÃ­:</p>
<blockquote><p>restart /etc/init.d/net.eth0 restart</p></blockquote>
<p>Siguiendo todos estos pasos ahora ya no nos hemos de preocupar de que se pierda la ip al reiniciarse la mÃ¡quina. Se ha quedado correctamente guardado en los ficheros de configuraciÃ³n del propio sistema.</p>
<div class="post-detail"><script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://pub.dtres.es/www/delivery/ajs.php':'http://pub.dtres.es/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=119");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'><\/scr"+"ipt>");
//]]&gt;--></script><noscript><a href='http://pub.dtres.es/www/delivery/ck.php?n=ad9bf4ed&amp;cb=1268685679' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1268685679&amp;n=ad9bf4ed' border='0' alt='' /></a></noscript>

</div>]]></content:encoded>
			<wfw:commentRss>http://www.unadecodigo.com/2007/07/19/configurar-interfaces-de-red-virtuales-en-gentoo-de-manera-permanente/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SoluciÃ³n al bug de Internet Explorer 7 y la clÃ¡usula CSS page-break-before</title>
		<link>http://www.unadecodigo.com/2007/07/16/solucion-al-bug-de-internet-explorer-7-y-la-clausula-css-page-break-before/</link>
		<comments>http://www.unadecodigo.com/2007/07/16/solucion-al-bug-de-internet-explorer-7-y-la-clausula-css-page-break-before/#comments</comments>
		<pubDate>Mon, 16 Jul 2007 18:56:14 +0000</pubDate>
		<dc:creator>David GarcÃ­a</dc:creator>
		
		<category />

		<guid isPermaLink="false">http://www.unadecodigo.com/2007/07/16/solucion-al-bug-de-internet-explorer-7-y-la-clausula-css-page-break-before/</guid>
		<description><![CDATA[Una acciÃ³n que es ampliamente utilizada en proyectos web es la impresiÃ³n de datos en dispositivos tales como una impresora. Estos datos pueden ser recibos y sus copias, contratos, etc.
Imprimir en un proyecto web es relativamente sencillo, basta con enviar una orden javascript &#8220;window.print()&#8221; al navegador, para que Ã©ste nos presente el diÃ¡logo de impresiÃ³n.
Esta [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Una acciÃ³n que es ampliamente utilizada en proyectos web es la impresiÃ³n de datos en dispositivos tales como una impresora. <img title="Internet Explorer 7" src="http://www.unadecodigo.com/wp-content/uploads/2007/07/ie7.png" alt="Internet Explorer 7" align="right" />Estos datos pueden ser recibos y sus copias, contratos, etc.</p>
<p align="left">Imprimir en un proyecto web es relativamente sencillo, basta con enviar una orden javascript &#8220;window.print()&#8221; al navegador, para que Ã©ste nos presente el diÃ¡logo de impresiÃ³n.</p>
<p align="left">Esta operaciÃ³n se complica si deseamos imprimir contenido en mÃ¡s de una pÃ¡gina, pero el contenido de la primera pÃ¡gina, no la llena completamente. Por ejemplo, si estamos realizando una reserva de estancia en un apartamento, a travÃ©s de internet, una impresiÃ³n podrÃ­a ser el resguardo de la reserva y una copia. Una para el dueÃ±o del apartamento a entregar en el momento de inicio de la estancia y otra, la copia, para el cliente que realiza la reserva.</p>
<p align="left"><span id="more-65"></span>Una primera idea que nos viene a la cabeza seguramente consiste en rellenar la primera pÃ¡gina con lineas en blanco, a partir de donde finaliza el texto impreso. Si bien es una manera efectiva, plantea tantos o mÃ¡s problemas como los que soluciona. A saber, debemos conocer de antemano la longitud del texto, y lo que es mÃ¡s dÃ­ficil, el tamaÃ±o de la pÃ¡gina fÃ­sica en la que realizaremos la impresiÃ³n.</p>
<p align="left">Otra soluciÃ³n, mucho mÃ¡s elegante consiste en utilizar una propiedad de CSS llamada <a href="http://www.javascriptkit.com/dhtmltutors/pagebreak.shtml" target="_blank">page-break-before</a>. Con ella le indicamos al navegador cuando imprimimos, que debe realizar un salto de pÃ¡gina, justo antes del elemento que tiene definida esta propiedad CSS.</p>
<blockquote>
<p align="right"><em>Solamente deberiamos tener en cuenta, si estamos realizando un bucle, que no debemos poner la propiedad en el primer elemento u obtendremos una primera pÃ¡gina en blanco al realizar la impresiÃ³n.</em></p>
</blockquote>
<p align="left">Visto lo anterior, podrÃ­amos preguntarnos, Â¿a que viene publicar un post con algo tan sencillo? Pues que como siempre, la batalla de navegadores se cobra sus habituales vÃ­ctimas: los desarrolladores. En Internet Explorer 7, no siempre funciona esta propiedad. Al imprimir un texto simplemente se ignora, y aparecen todas las pÃ¡ginas una detrÃ¡s de la otra, sin separaciÃ³n, como si fueran una sola.</p>
<p align="left">Entonces, Â¿que hacemos?. Como siempre, recurrir a tÃ©cnicas no del todo puristas. Si incluimos las propiedades <a href="http://www.w3schools.com/css/pr_dim_height.asp" target="_blank">height</a> y <a href="http://www.w3schools.com/css/pr_dim_line-height.asp" target="_blank">line-height</a> al tag html que incorpora el <a href="http://www.javascriptkit.com/dhtmltutors/pagebreak.shtml" target="_blank">page-break-before</a>, el navegador de Microsoft ya puede realizar el salto de pÃ¡gina.</p>
<p align="left">Si tenemos un cÃ³digo como el siguiente, que no funciona en IE7.</p>
<p align="left"><code>&lt;div  style="page-break-before:always;"&gt;<br />
... texto y html ...<br />
&lt;/div&gt;</code></p>
<p align="left">Debemos dejarlo de la siguiente manera:</p>
<p align="left"><code>&lt;div  style="page-break-before:always;height:0;line-height:0;"&gt;<br />
... texto y html ...<br />
&lt;/div&gt;</code></p>
<p align="left">Si recargamos el navegador e imprimimos&#8230;. Â¡ya tenemos la paginaciÃ³n correcta!</p>
<p align="left">En este punto podrÃ­amos cerrar el post e ir a celebrar que ya hemos resulto el problema pero&#8230;, como ya dijimos unas lineas mas arriba, nada es tan sencillo como parece. Si esta pÃ¡gina la visualizamos con Firefox, muy probablemente veamos que las lineas de texto se superponen las unas con las otras, ya que interpreta el line-height:0 correctamente, y no deja espacios entre lÃ­neas.</p>
<p align="left">Â¿QuÃ© debemos hacer pues? Â¿Marginar un navegador frente al otro? Â¿Complicar extremadamente el cÃ³digo?</p>
<p align="left">Afortunadamente, la respuesta es que no. Una opciÃ³n que recomendamos es hacer uso de las llamados <a href="http://www.javascriptkit.com/howto/cc2.shtml" target="_blank">comentarios condicionales de Internet Explorer</a>. Estos comentarios, solamente son interpretados por la familia de IE. Los demas navegadores, los ignorarÃ¡n como un comentario cualquiera.</p>
<p align="left">Con lo que la manera de solucionar nuestro problema serÃ­a:</p>
<ol class="codelist">
<li class="tab0 odd"><code>&lt;!--[if IE]&gt;<br />
</code></li>
<li class="tab0 even"><code>&lt;div style=&quot;page-break-before<span class="sb">:</span> always;height<span class="sb">:</span>0; line-height<span class="sb">:</span>0;&quot;&gt;&lt;/div&gt;<br />
</code></li>
<li class="tab0 odd"><code>&lt;![endif]&#8211;&gt;<br />
</code></li>
<li class="tab0 even"><code>&lt;![if !IE]&gt;<br />
</code></li>
<li class="tab0 odd"><code>&lt;div style=&quot;page-break-before<span class="sb">:</span> always;&quot;&gt;&lt;/div&gt;<br />
</code></li>
<li class="tab0 even"><code>&lt;![endif]&gt;</code></li>
<li class="sourcelink"><strong>Download this code:</strong> <a href="http://www.unadecodigo.com/wp-content/uploads/2008/10/codi.txt">codi.txt</a></li>
</ol>
<blockquote>
<p align="right"><em>Debemos fijarnos en la manera que estÃ¡ construida la segunda opciÃ³n, sin los &#8220;- -&#8221;, de otra manera no funcionarÃ¡.</em></p>
<p align="right"><em>El primer endif acaba con dos guiones y las comillas son las normales no las tipogrÃ¡ficas.</em></p>
</blockquote>
<p>De esta manera los navegadores de la familia IE construiran el tag con el truco del height / line-height y los demÃ¡s navegadores, utilizarÃ¡n la segunda versiÃ³n.</p>
<p>Espero que estos trucos os resulten Ãºtiles en vuestros proyectos.<a href="http://www.unadecodigo.com/wp-content/uploads/2008/10/codi.txt">codi</a></p>
<p><strong>2008-10-23. Actualizado con el codigo correcto evitando que Wordpress elimine carÃ¡cteres</strong></p>
<div class="post-detail"><script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://pub.dtres.es/www/delivery/ajs.php':'http://pub.dtres.es/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=119");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'><\/scr"+"ipt>");
//]]&gt;--></script><noscript><a href='http://pub.dtres.es/www/delivery/ck.php?n=ad9bf4ed&amp;cb=1268685679' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1268685679&amp;n=ad9bf4ed' border='0' alt='' /></a></noscript>

</div>]]></content:encoded>
			<wfw:commentRss>http://www.unadecodigo.com/2007/07/16/solucion-al-bug-de-internet-explorer-7-y-la-clausula-css-page-break-before/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PHP 4 morirÃ¡ a finales de aÃ±o</title>
		<link>http://www.unadecodigo.com/2007/07/13/php-4-morira-a-finales-de-ano/</link>
		<comments>http://www.unadecodigo.com/2007/07/13/php-4-morira-a-finales-de-ano/#comments</comments>
		<pubDate>Fri, 13 Jul 2007 12:31:21 +0000</pubDate>
		<dc:creator>HÃ©ctor Rovira</dc:creator>
		
		<category />

		<guid isPermaLink="false">http://www.unadecodigo.com/2007/07/13/php-4-morira-a-finales-de-ano/</guid>
		<description><![CDATA[Bueno, morir lo que se dice morir&#8230;
Lo que es seguro, es que la rama de php 4.X dejarÃ¡ de tener soporte oficial al finalizar 2007.

Hoy hace exactamente tres aÃ±os que salÃ­o PHP 5. En estos tres aÃ±os se han visto numerosas mejoras para PHP 4.
PHP 5 es rÃ¡pido, estable y listo para producciÃ³n, y ya [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.unadecodigo.com/wp-content/uploads/2007/07/php.miniatura.gif" alt="php logo" align="left" />Bueno, morir lo que se dice morir&#8230;<br />
Lo que es seguro, es que la rama de php 4.X dejarÃ¡ de tener soporte oficial al finalizar 2007.</p>
<p><span class="newsdate"></span></p>
<p>Hoy hace exactamente <strong>tres aÃ±os que salÃ­o PHP 5</strong>. En estos tres aÃ±os se han visto numerosas mejoras para PHP 4.<br />
PHP 5 es rÃ¡pido, estable y listo para producciÃ³n, y ya que <strong>PHP 6 estÃ¡ en camino</strong>, PHP4 se irÃ¡ abandonando.</p>
<p>El equipo de desarrollo de PHP anuncia que el soporte para PHP 4 continuarÃ¡ hasta final de aÃ±o solamente. A partir del 31 de diciembre de 2007, no habrÃ¡ nuevas versiones de la rama PHP 4.4.<br />
No obstante, se continuarÃ¡n corrigiendo los errores crÃ­ticos de seguridad hasta el 8 de agosto de 2008.</p>
<p>En la noticia ampliada os damos algunos enlaces para migrar vuestras aplicaciones a PHP 5.<span id="more-64"></span></p>
<p>El equipo de desarrollo aconseja un esfuerzo, a quien no lo haya hecho ya, para empezar a portar sus aplicaciones a PHP 5.<br />
Para los que quieran empezar, hay disponible una <a href="http://www.php.net/manual/es/migration5.php">guÃ­a de migraciÃ³n de PHP4 a PHP5</a>.</p>
<p>TambiÃ©n estÃ¡n disponibles las guÃ­as <a href="http://www.php.net/manual/en/migration51.php">PHP 5.0 a PHP 5.1</a> y <a href="http://es.php.net/manual/en/migration52.php">PHP 5.1 a PHP 5.2</a> (estas Ãºltimas en inglÃ©s).</p>
<p>Fuente oficial: <a href="http://es.php.net/archive/2007.php#2007-07-13-1">php.net</a></p>
<div class="post-detail"><script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://pub.dtres.es/www/delivery/ajs.php':'http://pub.dtres.es/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=119");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'><\/scr"+"ipt>");
//]]&gt;--></script><noscript><a href='http://pub.dtres.es/www/delivery/ck.php?n=ad9bf4ed&amp;cb=1268685679' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1268685679&amp;n=ad9bf4ed' border='0' alt='' /></a></noscript>

</div>]]></content:encoded>
			<wfw:commentRss>http://www.unadecodigo.com/2007/07/13/php-4-morira-a-finales-de-ano/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
