<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2spanishfull.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><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" href="http://feeds.feedburner.com/UnaDeCodigo" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">924068</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://www.feedburner.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=1226519116' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1226519116&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=1226519116' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1226519116&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=1226519117' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1226519117&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=1226519117' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1226519117&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=1226519117' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1226519117&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=1226519117' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1226519117&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=1226519117' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1226519117&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=1226519117' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1226519117&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=1226519117' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1226519117&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=1226519117' target='_blank'><img src='http://pub.dtres.es/www/delivery/avw.php?zoneid=119&amp;cb=1226519117&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>
