<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Me pone programar</title>
	<atom:link href="http://www.meponeprogramar.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.meponeprogramar.com</link>
	<description>Más que me pone, digamos que me gusta y disfruto con ello</description>
	<pubDate>Fri, 14 Nov 2008 12:35:44 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Ayuda para maquetar: 960 Grid System</title>
		<link>http://www.meponeprogramar.com/ayuda-para-maquetar-960-grid-system/</link>
		<comments>http://www.meponeprogramar.com/ayuda-para-maquetar-960-grid-system/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 12:35:44 +0000</pubDate>
		<dc:creator>Shox</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[layout]]></category>

		<category><![CDATA[maquetación]]></category>

		<guid isPermaLink="false">http://www.meponeprogramar.com/?p=36</guid>
		<description><![CDATA[960 Grid System es una ayuda para poder maquetar el layout de una web de manera fácil, correcta y personalizable. A primera vista no me resulto tan útil como ahora mismo, pero tener un archivo css, que ya se ocupe de montarte el layout en varias columnas, hace la vida del maquetador mucha más fácil.
El [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://960.gs/" target="_blank">960 Grid System</a> es una ayuda para poder<strong> maquetar el layout</strong> de una web de manera fácil, correcta y personalizable. A primera vista no me resulto tan útil como ahora mismo, pero tener un <strong>archivo css</strong>, que ya se ocupe de montarte el <strong>layout en varias columnas</strong>, hace la vida del maquetador mucha más fácil.</p>
<p>El código dispone de dos versiones, una con 12 columnas, y otra con 16. La diferencia es que el de 12 columnas puede hacer móduos de como mínimo 60px, y el de 16 columnas, los puede generar de 40px.</p>
<p>En la página de <a href="http://960.gs/demo.html" target="_blank">demo</a>, nos podemos hacer un poco a la idea.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meponeprogramar.com/ayuda-para-maquetar-960-grid-system/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dump de base de datos MySQL sin charset ni collate</title>
		<link>http://www.meponeprogramar.com/dump-de-base-de-datos-mysql-sin-charset-ni-collate/</link>
		<comments>http://www.meponeprogramar.com/dump-de-base-de-datos-mysql-sin-charset-ni-collate/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 13:28:04 +0000</pubDate>
		<dc:creator>Shox</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[charset]]></category>

		<category><![CDATA[collate]]></category>

		<category><![CDATA[dumb]]></category>

		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://www.meponeprogramar.com/?p=35</guid>
		<description><![CDATA[Hacer un dump de una base de datos para llevarlo a entro entorno, parece tarea sencilla siempre que no intervengan en la ecuación diferentes versiones de MySQL y configuraciones extrañas.
Los requisitos de los &#8220;administradores&#8221; era que la base de datos estuviera en latin-1 y que no saliera el CHARSET=latin1 COLLATE=latin1_general_ci, y además que hubiera un [...]]]></description>
			<content:encoded><![CDATA[<p>Hacer un <strong>dump</strong> de una base de datos para llevarlo a entro entorno, parece tarea sencilla siempre que no intervengan en la ecuación diferentes versiones de <strong>MySQL</strong> y configuraciones extrañas.</p>
<p>Los requisitos de los &#8220;administradores&#8221; era que la base de datos estuviera en latin-1 y que no saliera el <strong>CHARSET=latin1 COLLATE=latin1_general_ci</strong>, y además que hubiera un único insert para cada query, y no reaprovecharlos.</p>
<p>Después de mucho buscar, <a href="http://friky.blogspot.com/" target="_blank">Agustí</a> dio con la solución:</p>
<blockquote><p><strong>./mysqldump &#8211;host=localhost &#8211;user=user&#8211;password=password &#8211;skip-extended-insert &#8211;skip-set-charset &#8211;compatible=mysql40,no_table_options DB nombre_DB &gt; archivo.sql</strong></p></blockquote>
<p>Donde host, user y password son los datos del servidor,  nombre_DB es el nombre de la base de datos, y archivo.sql es donde se volvaran todos los datos</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meponeprogramar.com/dump-de-base-de-datos-mysql-sin-charset-ni-collate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Renovación de Visual jQuery</title>
		<link>http://www.meponeprogramar.com/renovacion-de-visual-jquery/</link>
		<comments>http://www.meponeprogramar.com/renovacion-de-visual-jquery/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 06:00:31 +0000</pubDate>
		<dc:creator>Shox</dc:creator>
		
		<category><![CDATA[AJAX]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[documentación]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.meponeprogramar.com/?p=33</guid>
		<description><![CDATA[
Desde mis inicios en jQuery, había visitado la web visualjquery como página de consulta y referencia para documentarme. Desde hace ya muchas versiones quedó inalterable a las nuevas funcionalidades que iban apareciendo, y tenia que visitar la no-tan-clara página de referencia oficial de jQuery.
Parece que por fin se han actualizado con las nuevas funcionalidades (versión [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-34 aligncenter" title="visualjquery" src="http://www.meponeprogramar.com/wp-content/uploads/2008/10/visualjquery.jpg" alt="" width="464" height="358" /></p>
<p>Desde mis inicios en <a href="http://www.meponeprogramar.com/tag/jquery/" target="_blank">jQuery</a>, había visitado la web <a href="http://www.visualjquery.com" target="_blank">visualjquery</a> como página de consulta y referencia para documentarme. Desde hace ya muchas versiones quedó inalterable a las nuevas funcionalidades que iban apareciendo, y tenia que visitar la no-tan-clara página de referencia oficial de <strong>jQuery</strong>.</p>
<p>Parece que por fin se han actualizado con las nuevas funcionalidades (versión 1.2.6) y ademas incluye un buscador instantaneo que por lo poco que he utilizado va genial.</p>
<p><a href="http://www.visualjquery.com" target="_blank">VisualjQuery</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.meponeprogramar.com/renovacion-de-visual-jquery/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Debbuging en JavaScript sin utilizar alert()</title>
		<link>http://www.meponeprogramar.com/debbuging-en-javascript-sin-utilizar-alert/</link>
		<comments>http://www.meponeprogramar.com/debbuging-en-javascript-sin-utilizar-alert/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 21:23:40 +0000</pubDate>
		<dc:creator>Shox</dc:creator>
		
		<category><![CDATA[Debug]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[blackbird]]></category>

		<category><![CDATA[firebug]]></category>

		<guid isPermaLink="false">http://www.meponeprogramar.com/?p=31</guid>
		<description><![CDATA[Hoy me he topado con una manera muy cool de hacer debugging en JavaScript sin necesidad del molesto alert().
Yo siempre habia utilizado la función de Firebug console.log(), e incluso si quería hacer debug de PHP, la extensión FirePHP, que aunque falle mucho, es muy interesante. Pero el problema que es sólo para Firefox, hace que [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy me he topado con una manera muy cool de hacer <strong>debugging en JavaScript</strong> sin necesidad del molesto <a href="http://developer.mozilla.org/En/DOM/Window.alert" target="_blank">alert()</a>.</p>
<p>Yo siempre habia utilizado la función de <a href="http://getfirebug.com/console.html" target="_blank">Firebug console.log()</a>, e incluso si quería hacer debug de <a href="http://www.meponeprogramar.com/categoria/php/" target="_blank">PHP</a>, la extensión <a href="http://www.firephp.org/" target="_blank">FirePHP</a>, que aunque falle mucho, es muy interesante. Pero el problema que es sólo para Firefox, hace que la opción de <a href="http://www.gscottolson.com/blackbirdjs/" target="_blank">Blackbird</a> gane enteros.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-32 aligncenter" title="blackbird" src="http://www.meponeprogramar.com/wp-content/uploads/2008/10/blackbird.jpg" alt="" width="412" height="345" /></p>
<p>Como podeis ver en la imagen (y si vais al sitio hay una demo expléndida) consta de una ventana translúcida en la esquina superior izquierda de la pantalla donde va apareciendo todo el <em>log</em> que lleve el código. Además la manera de utilizarlo es muy cómoda:</p>
<div class="igBar"><span id="ljavascript-2"><a href="#" onclick="javascript:showPlainTxt('javascript-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JavaScript:</span>
<div id="javascript-2">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">log.<span style="color: #006600;">debug</span><span style="color: #66cc66;">&#40;</span> <span style="color: #3366CC;">'Mensaje de debug'</span> <span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">log.<span style="color: #006600;">info</span><span style="color: #66cc66;">&#40;</span> <span style="color: #3366CC;">'Mensaje de informacion'</span> <span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">log.<span style="color: #006600;">warn</span><span style="color: #66cc66;">&#40;</span> <span style="color: #3366CC;">'Mensaje de warning'</span> <span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">log.<span style="color: #006600;">error</span><span style="color: #66cc66;">&#40;</span> <span style="color: #3366CC;">'Mensaje de error'</span> <span style="color: #66cc66;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Por ponerle una pega, la ventana de log no puede cambiarse de sitio, con lo que a veces puede llegar a ser incómoda, pero el filtrado de tipo de mensaje es muy potente.</p>
<p><a href="http://www.gscottolson.com/blackbirdjs/" target="_blank">Blackbird</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.meponeprogramar.com/debbuging-en-javascript-sin-utilizar-alert/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Redimensionado líquido con PHP</title>
		<link>http://www.meponeprogramar.com/redimensionado-liquido-con-php/</link>
		<comments>http://www.meponeprogramar.com/redimensionado-liquido-con-php/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 17:37:40 +0000</pubDate>
		<dc:creator>Shox</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[C++]]></category>

		<category><![CDATA[ImageMagick]]></category>

		<guid isPermaLink="false">http://www.meponeprogramar.com/?p=30</guid>
		<description><![CDATA[No hace ni dos años, un grupo de investigadores presentaban un algoritmo de redimensionamiento sin distorsión de las partes más importantes de la imagen. El llamado Seam Carving o redimensionamiento líquido consigue eliminar linias horizontales o verticales poco relevantes en la imagen, para así poder cambiarle el tamaño. Pero lo mejor es ver un vídeo [...]]]></description>
			<content:encoded><![CDATA[<p>No hace ni dos años, un grupo de investigadores presentaban un algoritmo de redimensionamiento sin distorsión de las partes más importantes de la imagen. El llamado<strong> Seam Carving</strong> o redimensionamiento líquido consigue eliminar linias horizontales o verticales poco relevantes en la imagen, para así poder cambiarle el tamaño. Pero lo mejor es ver un vídeo para ilustrar de lo que hablo.</p>
<p><center><object width="425" height="349"><param name="movie" value="http://www.youtube.com/v/vIFCV2spKtg&#038;hl=es&#038;fs=1&#038;rel=0&#038;color1=0x3a3a3a&#038;color2=0x999999&#038;border=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/vIFCV2spKtg&#038;hl=es&#038;fs=1&#038;rel=0&#038;color1=0x3a3a3a&#038;color2=0x999999&#038;border=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="349"></embed></object></center></p>
<p>Como me toca inplementarlo en <strong>C++</strong>, habia pensado si alguien se le habia ocurrido integrarlo en librerías de imágenes de <strong>PHP</strong>. La respuesta es que sí</p>
<p>La libreria <strong>ImageMagick </strong>añadió esta funcionalidad en la versión 6.3.8-2. No he tenido tiempo de provarla, pero la verdad es que más fácil de utilizar, imposible.</p>
<div class="igBar"><span id="lphp-4"><a href="#" onclick="javascript:showPlainTxt('php-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-4">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">/* Create new object */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$im</span> = <span style="color:#000000; font-weight:bold;">new</span> Imagick<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#FF0000;">'test.jpg'</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">/* Scale down */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$im</span>-&gt;<span style="color:#006600;">liquidRescaleImage</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#CC66CC;color:#800000;">500</span>, <span style="color:#CC66CC;color:#800000;">200</span>, <span style="color:#CC66CC;color:#800000;">3</span>, <span style="color:#CC66CC;color:#800000;">25</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">/* Display */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/header"><span style="color:#000066;">header</span></a><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#FF0000;">'Content-Type: image/jpg'</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$im</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p><a href="http://www.faculty.idc.ac.il/arik/imret.pdf" target="_blank">Seam Carving for Content-Aware Image Resizing [Artículo original] </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.meponeprogramar.com/redimensionado-liquido-con-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Validar un email mediante PHP</title>
		<link>http://www.meponeprogramar.com/validar-un-email-mediante-php/</link>
		<comments>http://www.meponeprogramar.com/validar-un-email-mediante-php/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 11:43:10 +0000</pubDate>
		<dc:creator>Shox</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[email]]></category>

		<category><![CDATA[formulario]]></category>

		<guid isPermaLink="false">http://www.meponeprogramar.com/?p=28</guid>
		<description><![CDATA[
Una de las cosas que muchas veces se pasan por alto en los formularios de registro, es el validar que el email sea lo más válido posible. No conseguimos hacer maravillas (emails como example@example.com seguirán siendo posibles) pero restringimos tener información incorrecta en la DB.
Hay miles de formas de hacerlo, pero yo propongo esta para [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-29" title="email1" src="http://www.meponeprogramar.com/wp-content/uploads/2008/09/email1.gif" alt="" width="341" height="336" /></p>
<p>Una de las cosas que muchas veces se pasan por alto en los <strong>formularios de registro</strong>, es el validar que el email sea lo más válido posible. No conseguimos hacer maravillas (emails como example@example.com seguirán siendo posibles) pero restringimos tener información incorrecta en la DB.</p>
<p>Hay miles de formas de hacerlo, pero yo propongo esta para <strong>PHP</strong>:</p>
<div class="igBar"><span id="lphp-6"><a href="#" onclick="javascript:showPlainTxt('php-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-6">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/define"><span style="color:#000066;">define</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"REGEXP_MAIL_1"</span>, <span style="color:#FF0000;">"^.+<span style="color:#000099; font-weight:bold;">\@</span>(<span style="color:#000099; font-weight:bold;">\[</span>?)[a-zA-Z0-9<span style="color:#000099; font-weight:bold;">\-</span><span style="color:#000099; font-weight:bold;">\.</span>]+<span style="color:#000099; font-weight:bold;">\.</span>([a-zA-Z]{2,4}|[0-9]{1,3})(<span style="color:#000099; font-weight:bold;">\]</span>?)$"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/define"><span style="color:#000066;">define</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"REGEXP_MAIL_2"</span>, <span style="color:#FF0000;">"(@.*@)|(<span style="color:#000099; font-weight:bold;">\.</span><span style="color:#000099; font-weight:bold;">\.</span>)|(@<span style="color:#000099; font-weight:bold;">\.</span>)|(<span style="color:#000099; font-weight:bold;">\.</span>@)|(^<span style="color:#000099; font-weight:bold;">\.</span>)"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#616100;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span> <a href="http://www.php.net/eregi"><span style="color:#000066;">eregi</span></a><span style="color:#006600; font-weight:bold;">&#40;</span>REGEXP_MAIL_2, <span style="color:#0000FF;">$email</span><span style="color:#006600; font-weight:bold;">&#41;</span> or !<a href="http://www.php.net/eregi"><span style="color:#000066;">eregi</span></a><span style="color:#006600; font-weight:bold;">&#40;</span>REGEXP_MAIL_1, <span style="color:#0000FF;">$email</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// La dirección de e-mail es incorrecta</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Como Extra bonus, he sacado una imagen de archivo, de las típicas que se solían poner en todas las páginas webs para linkar con el mail. Viva la web 1.0</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meponeprogramar.com/validar-un-email-mediante-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Acentos en los subjects de los emails. Ampliado</title>
		<link>http://www.meponeprogramar.com/acentos-en-los-subjects-de-los-emails-ampliado/</link>
		<comments>http://www.meponeprogramar.com/acentos-en-los-subjects-de-los-emails-ampliado/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 08:42:32 +0000</pubDate>
		<dc:creator>Shox</dc:creator>
		
		<category><![CDATA[Meponeprogramar]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[codificación]]></category>

		<category><![CDATA[mail]]></category>

		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://www.meponeprogramar.com/?p=27</guid>
		<description><![CDATA[Como pudimos ver en otro post, poner acentos o carácteres extraños en los subjects de los emails ya no es un misterio.
Leyendo el fabuloso libro "Building Scalable Web Sites -  The Flickr way" he profundizado más en el tema.
El formato se compone de lo siguiente:
=?utf-8?Q?hello_=E2=98=BA?=
que corresponde a:
=?charset?encoding?encoded-text?=
Vamos por partes, el charset utilizaremos siempre utf-8, ya [...]]]></description>
			<content:encoded><![CDATA[<p>Como pudimos ver en otro post, poner <a href="http://www.meponeprogramar.com/acentos-en-los-subjects-de-los-mails/" target="_blank">acentos o carácteres extraños en los <strong>subjects de los emails</strong></a> ya no es un misterio.</p>
<p>Leyendo el fabuloso libro "<strong>Building Scalable Web Sites</strong> -  The Flickr way" he profundizado más en el tema.<br />
El formato se compone de lo siguiente:</p>
<p><strong>=?utf-8?Q?hello_=E2=98=BA?=</strong></p>
<p>que corresponde a:</p>
<p>=?<strong>charset</strong>?<strong>encoding</strong>?<strong>encoded-text</strong>?=</p>
<p>Vamos por partes, el charset utilizaremos siempre <strong>utf-8</strong>, ya que es nos posibilita enviar cualquier tipo de cadena de carácteres, sin limitar el alfabeto o idioma.</p>
<p>El encoding, puede ser B o Q, y depende de su codificación, el texto codificado será de una manera o otra:</p>
<p><strong>B - Codificación en Base64</strong>: Es la que utilicé en el anterior post, codificando todo el string posteriormente en base64.</p>
<p><strong>Q - Codificación en Quoted Printable</strong> (RFC 3548): Cada byte representa un literal comenzando por el símbolo igual (=) seguido por dos dígitos hexadecimales. Por ejemplo el byte 0x8A se representaría con =8A. Los espacios (0x20) serán substituidos por el literal underscore (_, byte 0x5F). Los demás carácteres alfanuméricos se quedarían como están.</p>
<p>¿Cual es la mejor opción? Ambas generarán un <em>subject</em> bien formado, peró quizas en modo Q, el texto codificado final es un poco más human-friendly, que el codificado en base64.</p>
<p><a href="http://www.amazon.com/Building-Scalable-Web-Sites-applications/dp/0596102356/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1218789500&amp;sr=8-1" target="_blank">Amazon - Building Scalable Web Sites; de Cal Henderson (O'Reilly)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.meponeprogramar.com/acentos-en-los-subjects-de-los-emails-ampliado/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hacer llamadas a funciones PHP desde XSL</title>
		<link>http://www.meponeprogramar.com/hacer-llamadas-a-funciones-php-desde-xsl/</link>
		<comments>http://www.meponeprogramar.com/hacer-llamadas-a-funciones-php-desde-xsl/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 17:32:53 +0000</pubDate>
		<dc:creator>Shox</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[XML]]></category>

		<category><![CDATA[XSL]]></category>

		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://www.meponeprogramar.com/?p=26</guid>
		<description><![CDATA[Hace poco me dijeron que podia hacer llamadas a funciones PHP desde XSL que devolvieran strings. Hoy mismo he investigado un poco el tema, y ha sido más fácil de lo que me esperaba:
1.- Añadir a la hoja de estilo XSL el namespace de PHP para que valide:
PLAIN TEXT
XML:




&#60;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl"&#62; 






2.- En el [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco me dijeron que podia hacer llamadas a <strong>funciones PHP desde XSL</strong> que devolvieran strings. Hoy mismo he investigado un poco el tema, y ha sido más fácil de lo que me esperaba:</p>
<p>1.- Añadir a la hoja de estilo <strong>XSL</strong> el namespace de <strong>PHP</strong> para que valide:</p>
<div class="igBar"><span id="lxml-11"><a href="#" onclick="javascript:showPlainTxt('xml-11'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">XML:</span>
<div id="xml-11">
<div class="xml">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;xsl</span>:stylesheet <span style="color: #000066;">version</span>=<span style="color: #ff0000;">"1.0"</span> xmlns:<span style="color: #000066;">xsl</span>=<span style="color: #ff0000;">"http://www.w3.org/1999/XSL/Transform"</span> xmlns:<span style="color: #000066;">php</span>=<span style="color: #ff0000;">"http://php.net/xsl"</span><span style="font-weight: bold; color: black;">&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>2.- En el parser PHP, habilitar las llamadas en <strong>PHP</strong> con esta línea, justo después del constructor</p>
<div class="igBar"><span id="lphp-12"><a href="#" onclick="javascript:showPlainTxt('php-12'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-12">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$xslt</span>-&gt;<span style="color:#006600;">registerPHPFunctions</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Ahora solo hay que llamar a la funcion PHP desde el <strong>código XSL</strong>:</p>
<div class="igBar"><span id="lxml-13"><a href="#" onclick="javascript:showPlainTxt('xml-13'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">XML:</span>
<div id="xml-13">
<div class="xml">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;xsl</span>:value-of <span style="color: #000066;">select</span>=<span style="color: #ff0000;">"php:function('getMessage','welcome',string($id))"</span><span style="font-weight: bold; color: black;">/&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Donde getMessage es el nombre de mi funcion, i los demás párametros son añadidos a dicha función. Generaría algo así:</p>
<div class="igBar"><span id="lphp-14"><a href="#" onclick="javascript:showPlainTxt('php-14'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-14">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">getMessage<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'welcome'</span>,id<span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>donde id es una variable de XSL, de ahí lo de string($id).</p>
<p>Con simplemente esto, podemos <strong>hacer llamadas a PHP</strong>, posibilitando que <strong>generen incluso XML</strong>, el cual será tratado por el XSL.</p>
<p><a href="http://es2.php.net/manual/en/class.xsltprocessor.php" target="_blank">XSLTProcessor</a></p>
<p><a href="http://es2.php.net/manual/en/xsltprocessor.registerphpfunctions.php" target="_blank">registerPHPFunctions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.meponeprogramar.com/hacer-llamadas-a-funciones-php-desde-xsl/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Firebug Lite, por fin inspector de DOM i HTML para IE</title>
		<link>http://www.meponeprogramar.com/firebug-lite-por-fin-inspector-de-dom-i-html-para-internet-explorer/</link>
		<comments>http://www.meponeprogramar.com/firebug-lite-por-fin-inspector-de-dom-i-html-para-internet-explorer/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 16:12:16 +0000</pubDate>
		<dc:creator>Shox</dc:creator>
		
		<category><![CDATA[AJAX]]></category>

		<category><![CDATA[Debug]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[DOM]]></category>

		<category><![CDATA[firebug]]></category>

		<category><![CDATA[firebug lite]]></category>

		<category><![CDATA[HTML]]></category>

		<category><![CDATA[Internet Explorer]]></category>

		<category><![CDATA[Opera]]></category>

		<category><![CDATA[Safari]]></category>

		<guid isPermaLink="false">http://www.meponeprogramar.com/?p=24</guid>
		<description><![CDATA[
La nueva versión de Firebug Lite, 1.2, ha añadido a su funcionalidad de sólo como uso de consola de debug JavaScript, y ahora se comporta de una manera más parecida a la de su hermano mayor. Ahora es capaz de inspeccionar el DOM, hacer track de los XHRs, y navegar por el HTML, CSS y [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-25 aligncenter" title="firebugxb-sm" src="http://www.meponeprogramar.com/wp-content/uploads/2008/08/firebugxb-sm.gif" alt="" width="400" height="243" /></p>
<p>La nueva versión de <strong>Firebug Lite</strong>, 1.2, ha añadido a su funcionalidad de sólo como uso de consola de debug <strong>JavaScript</strong>, y ahora se comporta de una manera más parecida a la de su hermano mayor. Ahora es capaz de inspeccionar el <a href="http://es.wikipedia.org/wiki/DOM" target="_blank"><strong>DOM</strong></a>, hacer track de los <strong><a href="http://es.wikipedia.org/wiki/XHR" target="_blank">XHRs</a></strong>, y navegar por el <strong>HTML</strong>, <strong>CSS </strong>y <strong><a href="http://es.wikipedia.org/wiki/Javascript" target="_blank">JavaScript</a></strong>.</p>
<p>Por fin una versión que será muy útil a los desarrolladores web, para superar la dificil tarea de programar en <strong>Internet Explorer</strong>. Funciona en todos los navegadores, como Safari y Opera.</p>
<p>Para <em>instalarla </em>en cualquier página web sólo tienes que poner el siguiente código:</p>
<div class="igBar"><span id="lhtml-16"><a href="#" onclick="javascript:showPlainTxt('html-16'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-16">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">'text/javascript'</span><span style="color: #000066;">src</span>=<span style="color: #ff0000;">'http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p><a href="http://getfirebug.com/lite.html" target="_blank">Firebug Lite</a></p>
<p>Vía: <a href="http://www.noalie6.com/explorer/firebug-lite-12-inspecciona-dom-en-ie-safari-o-opera/" target="_blank">No al IE6 - Navegadores web</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.meponeprogramar.com/firebug-lite-por-fin-inspector-de-dom-i-html-para-internet-explorer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>El lento gethostbyaddr de PHP</title>
		<link>http://www.meponeprogramar.com/el-lento-gethostbyaddr-de-php/</link>
		<comments>http://www.meponeprogramar.com/el-lento-gethostbyaddr-de-php/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 15:57:54 +0000</pubDate>
		<dc:creator>Shox</dc:creator>
		
		<category><![CDATA[Firefox]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[Meponeprogramar]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[dns]]></category>

		<category><![CDATA[gethostbyaddr]]></category>

		<category><![CDATA[ip]]></category>

		<guid isPermaLink="false">http://www.meponeprogramar.com/?p=23</guid>
		<description><![CDATA[La función gethostbyaddr‏ de PHP devuelve el host name de una IP dada. Puede ser útil por ejemplo para saber si el visitante es un bot de Google o Yahoo, para poder contabilizar bien las visitas o tener un control más profundo del visitante.
Todo sería perfecto si esta función funcionara correctamente. Utilizandola en un proyecto, [...]]]></description>
			<content:encoded><![CDATA[<p>La función <strong><a href="http://es.php.net/gethostbyaddr" target="_blank">gethostbyaddr‏</a></strong> de <strong>PHP</strong> devuelve el host name de una IP dada. Puede ser útil por ejemplo para saber si el visitante es un bot de Google o Yahoo, para poder contabilizar bien las visitas o tener un control más profundo del visitante.</p>
<p>Todo sería perfecto si esta función funcionara correctamente. Utilizandola en un proyecto, me di cuenta que tardaba demasiado tiempo en generar toda la web, y en un principio pensaba que fuera un error mio, ya que se hacian consultas a una DB y se generaba una caché, pero resulto ser esta aparente inofensiva función. Quitandola he dividido entre 10 el tiempo de generación, lo que nos puede dar una referencia de lo poco bien planteada que está dicha función.</p>
<p>En el foro de <strong>PHP</strong>, otros usuarios también se han dado cuenta del echo, y hasta han echo alguna propuesta para solucionar el problema que puedes ver <a href="http://es.php.net/manual/en/function.gethostbyaddr.php#46869" target="_blank">aquí</a></p>
<p>El problema parece que viene que va a buscar la información a varios <strong>DNS </strong>y al haber algunos de ellos caidos, se demora el proceso. El usuario que hizo el script, propone una conexión <strong>UDP</strong>, pero para ello necesitamos saber la IP del DNS</p>
]]></content:encoded>
			<wfw:commentRss>http://www.meponeprogramar.com/el-lento-gethostbyaddr-de-php/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
