<?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/"
>

<channel>
	<title>Planeta Código</title>
	<link>http://www.planetacodigo.com</link>
	<description>Planeta Código</description>
	<pubDate>Thu, 24 Jul 2008 10:33:18 +0000</pubDate>
	<language>es</language>

		<item>
		<title>Picando Código: {WP-Syntax Hackeado} Cómo mostrar código fuente en los comentarios[1]</title>
		<link>http://feeds.feedburner.com/~r/picandocodigo/~3/344286302/</link>
		<pubDate>Thu, 24 Jul 2008 05:51:11 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
	<category>Código</category>
	<category>Blog</category>
	<category>Wordpress</category>
	<category>plugins</category>
		<guid>http://feeds.feedburner.com/~r/picandocodigo/~3/344286302/</guid>
		<description><![CDATA[Bueno, ¡ahora sí! Después de unos cuantos comentarios y horas de workarounds, pude hacer funcionar el plugin WP-Syntax para los comentarios. Ante todo muchas gracias a todos los que comentaron en el post anterior, renombrado y actualizado: Como mostrar código fuente en los comentarios[0]

void main&#40;&#41;&#123;
     printf&#40;&#34;Gracias por la paciencia que tuvieron, [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno, ¡ahora sí! Después de unos <a href="http://picandocodigo.net/2008/07/como-mostrar-codigo-fuente-en-los-comentarios0/">cuantos comentarios</a> y horas de workarounds, pude hacer funcionar el plugin <strong>WP-Syntax</strong> para los comentarios. Ante todo muchas gracias a todos los que comentaron en el post anterior, renombrado y actualizado: <a href="http://picandocodigo.net/2008/07/como-mostrar-codigo-fuente-en-los-comentarios0/"><strong>Como mostrar código fuente en los comentarios[0]</strong></a></p>

<div class="wp_syntax"><div class="code"><pre class="c"><span >void</span> main<span >&#40;</span><span >&#41;</span><span >&#123;</span>
     <span >printf</span><span >&#40;</span><span >&quot;Gracias por la paciencia que tuvieron, y las pruebas varias
     que hicieron. Si no fuera por los que intentaron dejar código en los
    comentarios, nunca me hubiera dado cuenta que andaba mal. Los 
    invito a volver a comentar con código en este post, mediante los 
    tags &lt;code lang=&quot;</span>lenguaje<span >&quot;&gt;&quot;</span><span >&#41;</span>;
<span >&#125;</span></pre></div></div>

<p>Ahora paso a contar más o menos las cosas que fui haciendo, probando, y aprendiendo, hasta que logré una solución &#8220;linda&#8221; y prolija.</p>
<p><strong>El problema</strong>: Solamente el usuario admin del blog tenía permitido usar los tags &lt;pre&gt; en los comentarios. ¿Qué hacer al respecto? Mmmh&#8230; En verdad no sé en qué orden fui haciendo las cosas, pero hice de todo.</p>
<p>Como estoy desarrollando mi propio plugin para <strong>Wordpress</strong> (muy lentamente y sin stress en algún rato libre), ya tenía una idea del tema de los &#8220;hooks&#8221; con filtros y acciones. Resumidamente, esto son acciones y funciones de Wordpress que podemos reemplazar con las nuestras dentro de un plugin. De esta forma, cambiamos algo del comportamiento de Wordpress sin cambiar el &#8220;núcleo&#8221;, cosa que el cambio se mantenga en una actualización del CMS (y mantener la modularidad).</p>
<p>Así que se me ocurrió que una idea bastante obvia era sobreescribir la función que filtrara los <strong>pre</strong> de los comentarios, para que permitiera usarlos. Buscando por ahí, me encontré con el archivo <strong>kses.php</strong> dentro del directorio <strong>wp-includes</strong>. Este archivo es uno de los responsables de permitir o no ciertos tags y demás, aparte de devolver el valor de la función &#8220;allowed_tags();&#8221;  que comenté <a href="http://picandocodigo.net/2008/07/como-mostrar-codigo-fuente-en-los-comentarios0/#comment-3506">acá</a>:</p>
<blockquote><p>Ups!<br />
Mis disculpas, creo que ya se de donde viene el problema. Si se fijan a la derecha de la caja de texto donde se escriben los comentarios, muestra las tags permitidas para comentar. Esto no está escrito a mano, sino que llama a una función en PHP allowed_tags().</p>
<p>Lo que tengo que hacer, es buscar la forma de permitirles a los usuarios usar el tag pre…<br />
¡Perdón por el amague!<br />
¡Ya me pongo a solucionar eso!</p></blockquote>
<p>Lo que no encaré en el momento, fue que ahí estaba el array con todos los tags permitidos, tanto para postear como para comentar. Esto fue lo que me dí cuenta bien al final, pero cuando ya había probado todo lo que se les ocurra. No documento absolutamente todo acá por varias razones. Primero porque no me acuerdo todo lo que hice, segundo porque quedaría muy largo, y tercero, porque mas vale poner lo que aprendí nomás <img src='http://picandocodigo.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Siguiendo con el tema, estuve por <span ><strong>#wordpress</strong></span> en <strong>irc.freenode.net</strong>, donde me recomendaron que hackeara el plugin para usar el tag &lt;code&gt; en vez de &lt;pre&gt;, ya que es más indicado para código. Ahora, el tag pre tiene la característica que mantiene los espacios, por lo que respeta la indentación. Para aplicar esto a &lt;code&gt; también, simplemente tuve que agregar el siguiente código al css del plugin:</p>

<div class="wp_syntax"><div class="code"><pre class="css">code <span >&#123;</span><span >white-space</span><span >:</span> <span >nowrap</span><span >;</span><span >&#125;</span></pre></div></div>

<p>Eso y un poco de mano en el plugin, y ya tenía el tag pre reemplazado por el tag code. Agradezco mucho la ayuda de <a href="http://fullof.bs/"><strong>StoneCypher</strong></a>, quien me tiró pistas y recomendaciones para llegar al resultado final.</p>
<p>Sin embargo, seguía igual. Si bien el archivo <strong>kses.php</strong> permite que los usuarios posteen con &lt;code&gt;, no contemplaba &lt;code lang=&#8221;"&gt;. Para eso, tuve que agregar lang al array que define los tags y sub tags permitidos en dicho archivo (<a href="http://picandocodigo.pastebin.com/f414be7c">ver el código</a>). Pero esto no era una solución &#8220;linda&#8221;, debía incluirlo en el código del plugin. Además, fue una de las últimas cosas en las que me dí cuenta.</p>
<p>Aprovecho para comentar, hablando de soluciones &#8220;lindas&#8221;, que en algún momento comenté de dicho archivo la línea que filtraba el contenido de los comentarios, y si bien anduvo, dejaba totalmente vulnerable al blog. Esto es un buen ejemplo de <strong>LO QUE NO HAY QUE HACER</strong>. Sobre todo cuando no conocemos bien las repercusiones&#8230;</p>
<p>Bueno, leyendo bien ese bendito kses.php, se me prendió la lamparita al leer: <span class="coMULTI">Can be override by using CUSTOM_TAGS constant. Listo, ahí picó la solución, agregar code y lang a ese valor desde el plugin. ¡Así terminó andando!</span></p>
<p>Ya entré en contacto con <a href="http://ryan.mcgeary.org/"><strong>Ryan McGeary</strong></a>, el desarrollador de <strong>WP-Syntax</strong>, y hablando de todo este tema me comentó lo siguiente:</p>
<blockquote><p>Wordpress tiene muchas restricciones innecesarias e inevitables en su publicación de contenidos. WP intenta hacer lo &#8220;correcto&#8221; y prevenir a los que comentan de agregar formatos especiales y es complicado el workaround.</p></blockquote>
<p>Además, tenía pensado actualizar un poco el plugin cuando tuviera tiempo. Ya le envié un mail con los cambios que le hice. El plugin está publicado bajo <strong>GPL</strong>, pero quiero saber si quiere incluir los cambios en su plugin, o si hago un fork para publicarlos. Así que en unos días estará disponible o bien una nueva version de WP-Syntax, o un nuevo fork :D, obviamente el código disponible también.</p>
<p>Me está pasando lo mismo con <strong>WordPress</strong> que me pasó en algún momento con <strong>GNU/Linux</strong>. Por momentos me frustro porque no puedo lograr lo que quiero que haga, pero al final me doy cuenta que la culpa no es de WordPress, sino mía por no conocer la API lo suficiente&#8230; <strong>¡WordPress FTW!</strong> No es lo mismo una vez que se empieza a meter mano en el código.</p>

<p><a href="http://feeds.feedburner.com/~a/picandocodigo?a=monERs"><img src="http://feeds.feedburner.com/~a/picandocodigo?i=monERs" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/picandocodigo?a=5ZbLcJ"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=5ZbLcJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=3e1bHj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=3e1bHj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=KsppSj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=KsppSj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/picandocodigo/~4/344286302" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>Variable not found: FakeNameGenerator, un generador de identidades online</title>
		<link>http://feeds.feedburner.com/~r/vnf/~3/343898185/fakenamegenerator-un-generador-de.html</link>
		<pubDate>Wed, 23 Jul 2008 20:10:00 +0000</pubDate>
		<dc:creator>José M. Aguilar</dc:creator>
		
	<category>Curiosidades</category>
	<category>servicios on-line</category>
		<guid>http://feeds.feedburner.com/~r/vnf/~3/343898185/fakenamegenerator-un-generador-de.html</guid>
		<description><![CDATA[Y es que va a ser verdad eso de que en internet hay de todo. No sé que estaba buscando cuando me he topado con FakeNameGenerator, una web en la que indicando el sexo, la nacionalidad y el idioma a utilizar nos genera una ficha personal completa, con d...]]></description>
			<content:encoded><![CDATA[<img  src="http://bp0.blogger.com/_O9D62hXq-ng/SELVkS4rU2I/AAAAAAAAAgI/_zrp94zA05E/s400/huella-dactilar.jpg" border="0" alt="Identidad" id="BLOGGER_PHOTO_ID_5206958938715280226" />Y es que va a ser verdad eso de que en internet hay de todo. No sé que estaba buscando cuando me he topado con <a href="http://www.fakenamegenerator.com/" title="Visitar FakeNameGenerator.com">FakeNameGenerator</a>, una web en la que indicando el sexo, la nacionalidad y el idioma a utilizar nos genera una ficha personal completa, con datos aleatorios, como la siguiente:<br /><blockquote><br />Benicio Romero Santacruz<br />Padre Caro, 61<br />13592 Mestanza<br /><br />Email Address: <a href="http://www.fakemailgenerator.com/BenicioRomeroSantacruz">BenicioRomeroSantacruz@fontdrift.com</a><br />This is a real email address. <a title="Fake Mail Generator" href="http://www.fakemailgenerator.com/BenicioRomeroSantacruz">Click here to use it!</a><br /><br />Website: <a title="See if Demimba.com is taken" href="http://www.dpbolvw.net/interactive?domainToCheck=Demimba&amp;tld=.COM&amp;checkAvail=1&amp;aid=10451087&amp;pid=2054110&amp;url=https%3A%2F%2Fwww.godaddy.com%2Fgdshop%2Fregistrar%2Fsearch.asp%3Fisc%3Dcjcdomsb3">Demimba.com</a><br />It looks like Demimba.com is available! <a title="See if Demimba.com is taken" href="http://www.dpbolvw.net/interactive?domainToCheck=Demimba&amp;tld=.COM&amp;checkAvail=1&amp;aid=10451087&amp;pid=2054110&amp;url=https%3A%2F%2Fwww.godaddy.com%2Fgdshop%2Fregistrar%2Fsearch.asp%3Fisc%3Dcjcdomsb3">Click here to register it!</a><br /><br />Birthday: June 17, 1980<br /><br />Visa: 4929 7908 0245 3619<br />Expires: 6/2011<br /><br />UPS Tracking Number: 1Z F00 647 14 8092 598 8 <br /></blockquote><br />Como podéis ver, incluye un nombre, la dirección una cuenta de correo (tipo <a title="Buzones temporales contra el spam" href="http://www.variablenotfound.com/2006/05/buzones-temporales-contra-el-spam.html">Mailinator</a>) que podéis usar para recibir mensajes simplemente pulsando el enlace mostrado, fecha de nacimiento, datos de una tarjeta VISA (no válidos, claro), y un código de seguimiento de UPS.<br /><br />Puedes generar tu identidad española <a href="http://www.fakenamegenerator.com/index.php?c=sp&amp;gen=random&amp;n=sp&amp;c=sp">siguiendo este enlace</a>.<br /><br />En fin, que no es algo especialmente útil, pero curioso lo es un rato... <br /><br />Publicado en: <a href="http://www.variablenotfound.com/">http://www.variablenotfound.com/</a>.
<p><a href="http://feeds.feedburner.com/~a/vnf?a=uZzIcr"><img src="http://feeds.feedburner.com/~a/vnf?i=uZzIcr" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/vnf?a=Z58cMJ"><img src="http://feeds.feedburner.com/~f/vnf?i=Z58cMJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/vnf?a=ROqTQJ"><img src="http://feeds.feedburner.com/~f/vnf?i=ROqTQJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/vnf?a=h2QgdJ"><img src="http://feeds.feedburner.com/~f/vnf?i=h2QgdJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/vnf?a=XptYkJ"><img src="http://feeds.feedburner.com/~f/vnf?i=XptYkJ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/vnf/~4/343898185" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>Cerebro en la Sombra: Diario de abordo - Primera parte</title>
		<link>http://feeds.feedburner.com/~r/osus/~3/343689912/</link>
		<pubDate>Wed, 23 Jul 2008 16:13:26 +0000</pubDate>
		<dc:creator>Osus</dc:creator>
		
	<category>personal</category>
	<category>viajes</category>
		<guid>http://feeds.feedburner.com/~r/osus/~3/343689912/</guid>
		<description><![CDATA[Por fin han comenzado las vacaciones y no podían haberlo hecho mejor&#8230; o peor.
El viernes a la una del mediodía me despedí de mis compañeros de la oficina para comenzar el viaje. Después de los últimos recados, a las dos y media estaba en la carretera. Un plan perfecto para llegar y cenar sobre las [...]]]></description>
			<content:encoded><![CDATA[<p>Por fin han comenzado las vacaciones y no podían haberlo hecho mejor&#8230; o peor.</p>
<p>El viernes a la una del mediodía me despedí de mis compañeros de la oficina para comenzar el viaje. Después de los últimos recados, a las dos y media estaba en la carretera. Un plan perfecto para llegar y cenar sobre las 11 de la noche con algunos colegas con los que había quedado. Un plan perfecto si no fuera porque a eso de las 5 y media <strong>pinché una rueda</strong> en el acceso a la M50 desde la A3. Os podéis imaginar la aventura de cambiar una rueda a 37º. Por cierto, para incultos como yo, <strong>las tuercas de las ruedas tienen un solo sentido</strong>, no se ponen de cualquier forma, <strong>la parte cóncava</strong>, contra todo pronóstico, NO va hacia afuera, <strong>va hacia adentro</strong> para que hagan mejor presión entre la rueda y el disco. Mala suerte que no me diese cuenta antes. Ya decía yo que era imposible apretar con la llave <img src='http://blog.osusnet.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Otra cosa, revisad periódicamente el equilibrado de la rueda de repuesto o os encontraréis como yo, temblores durante 600km. Eso sí, pasando de 130 disminuía el ruído <img src='http://blog.osusnet.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Al final a eso de las 00:30 estaba ya con los amigos (<strong>Mora, Ramiro, Antonio y Javi</strong>). Un café, unas copas, y a contarnos la vida (y los horóscopos <img src='http://blog.osusnet.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ). Por cierto, valencianos, gintonic de Bombay Saphire a 4,10 euros en terraza <img src='http://blog.osusnet.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Buen comiendo de vacaciones, sin duda. Las fotos no son muy buenas, pero me olvidé la cámara, así que hubo que tirar de móvil.</p>
<p align="center"><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/19072008235.jpg" title="19072008235.jpg"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/19072008235.thumbnail.jpg" alt="19072008235.jpg" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/19072008237.jpg" title="Con Ramiro"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/19072008237.thumbnail.jpg" alt="Con Ramiro" /></a></p>
<h3>De boda en Nigrán (Vigo)</h3>
<p>Al día siguiente tocaba boda. Con un poco de retraso llegamos a la iglesia, sudamos al sol y nos fuimos hacia Nigrán (Vigo), a la playa, donde era el convite.</p>
<p align="center"> <a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2596.JPG" title="Boda de Marcos"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2596.thumbnail.JPG" alt="Boda de Marcos" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2597.JPG" title="Boda de Marcos"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2597.thumbnail.JPG" alt="Boda de Marcos" /></a></p>
<p align="left">Vaya desde aquí nuestro homenaje a Marcos el día de su boda.</p>
<p align="center"><object type="application/x-shockwave-flash"  data="http://www.youtube.com/v/EjpU7sBZMwE"><param name="movie" value="http://www.youtube.com/v/EjpU7sBZMwE" /></object></p>
<p>La comida, espectacular: <strong>bogavante </strong>en 2 salsas (repeticiones infinitas, nosotros 4!!), <strong>cigalas</strong>, <strong>centolla</strong>, <strong>buey</strong>, <strong>langostinos</strong>, <strong>gambas </strong>a la plancha, <strong>vieiras</strong>&#8230;</p>
<p align="center"><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2599.JPG" title="Boda de Marcos"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2599.thumbnail.JPG" alt="Boda de Marcos" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2600.JPG" title="Boda de Marcos"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2600.thumbnail.JPG" alt="Boda de Marcos" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2603.JPG" title="Boda de Marcos"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2603.thumbnail.JPG" alt="Boda de Marcos" /></a></p>
<p>Por la noche, nosotros, los novios y algunas amigas más nos fuimos de copas por Vigo, hacía mucho que no iba. Ha cambiado bastante, sin duda el ambiente se ha vuelto mucho más pijo. Por cierto, valencianos, gintonic de Bombay Saphire 4 euros en un sitio decente, 7 euros en un pub tipo Las Ánimas <img src='http://blog.osusnet.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Como soy un poco payaso, no pude negarme a&#8230; hacer el payaso. Podéis encontrarme <a href="http://www.fiestaslaembajadaronbrugal.com/">aquí</a>, sección de vídeos, yo os lo pongo para que no tengáis que buscarme. Lo que no se ve en el vídeo es el montaje que llevaban, la <strong>limousine</strong>, el tío con un monitor en la cabeza, las dos guapas azafatas&#8230; Y nosotros pensando que por hacer el payaso ya nos regalaban entradas&#8230;</p>
<p align="center"><object type="application/x-shockwave-flash"  data="http://www.youtube.com/v/xKmqjXsMTCM"><param name="movie" value="http://www.youtube.com/v/xKmqjXsMTCM" /></object></p>
<p>Más tarde, a mover el esqueleto a algún pub de la zona.</p>
<p align="center"><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/20072008242.jpg" title="20072008242.jpg"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/20072008242.jpg" alt="20072008242.jpg" width="416" height="313" /></a></p>
<p>Acabamos sobre las cuatro y media de camino a Pontevedra y con control de alcoholemia incluido. <strong>En cuanto sus acompañantes traseros decidan ponerse el cinturón de seguridad puede continuar</strong> <img src='http://blog.osusnet.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<h3>Día en familia</h3>
<p>El domingo tocaba algo más relajado, comida familiar, sobrinas y playa con ellas. Impresionante el <strong>abrazo </strong>de mi niña bonita <strong>Nerea </strong> <img src='http://blog.osusnet.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Aún se me cae la baba. Y no digamos ver a la pequeña <strong>Aroa </strong>andando. Mirad que fotos con el tío.</p>
<p align="center"><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2613.JPG" title="Con mi sobrina Aroa"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2613.thumbnail.JPG" alt="Con mi sobrina Aroa" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2620.JPG" title="Aroa"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2620.thumbnail.JPG" alt="Aroa" /><br />
</a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2623.JPG" title="Nerea"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2623.thumbnail.JPG" alt="Nerea" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2625.JPG" title="Con mi sobrina Nerea"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2625.thumbnail.JPG" alt="Con mi sobrina Nerea" /></a></p>
<h3>Comida en la playa</h3>
<p>El lunes, sin perder tiempo, a arreglar la rueda. Mal empezamos. El neumático estaba destrozado, así que tocó cambiar las dos ruedas traseras, como me sobra el dinero&#8230; <img src='http://blog.osusnet.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Así que, para relajarme un poco, directo a la playa, comida en el chiringuito, <strong>churrasco</strong>, <strong>calamares</strong>, <strong>pimientos de padrón</strong>&#8230; y para finalizar, <strong>chupito de licor café</strong> <img src='http://blog.osusnet.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Y toda la tarde en la playa.</p>
<p align="center"><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2184.JPG" title="Calamares"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2184.thumbnail.JPG" alt="Calamares" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2185.JPG" title="Pimientos de Padrón"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2185.thumbnail.JPG" alt="Pimientos de Padrón" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2188.JPG" title="Churrasco y criollos"><br />
<img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2188.thumbnail.JPG" alt="Churrasco y criollos" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2190.JPG" title="Con el churrasco"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2190.thumbnail.JPG" alt="Con el churrasco" /></a></p>
<p>De noche unas copas por Pontevedra. Recordad Valencianos, gintonics de Bombay Saphire a 4 euros.</p>
<p align="center"><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/22072008244.jpg" title="22072008244.jpg"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/22072008244.jpg" alt="22072008244.jpg" width="418" height="314" /></a></p>
<h3>Dos playas en un día</h3>
<p>El martes hubo playa por partida doble. Como se hacían las 12 del mediodía y nadie me llamaba, decidí ir a darme un baño mañanero a <strong>Aguete</strong>, mi playa habitual, en Marín, en el lado sur de la <strong>ría de Pontevedra</strong>, y de paso tomarme un aperitivo de empanada y tortilla <img src='http://blog.osusnet.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p align="center"> <a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_1242.JPG" title="Playa de Aguete, MArin"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_1242.thumbnail.JPG" alt="Playa de Aguete, MArin" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_1243.JPG" title="Playa de Aguete, Marin"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_1243.thumbnail.JPG" alt="Playa de Aguete, Marin" /><br />
</a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_1244.JPG" title="Playa de Aguete, Marin"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_1244.thumbnail.JPG" alt="Playa de Aguete, Marin" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_1245.JPG" title="Playa de Aguete, Marin"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_1245.thumbnail.JPG" alt="Playa de Aguete, Marin" /></a></p>
<p>Sin embargo, justo cuando iba a subirme al bar para el aperitivo, me suena el móvil, <strong>que te vengas a comer, que te esperamos</strong>. ¿Y quien soy yo para decir que no a tamaña proposición? Así que, coche, y a <strong>A Pregueira</strong>, en el lado norte de la ría. <strong>Pulpo</strong>, <strong>sardinas</strong>, <strong>pimientos de padrón</strong>&#8230; y <strong>chupito de licor café</strong>.</p>
<p align="center"> <a href="http://blog.osusnet.com/wp-content/uploads/2008/07/22072008245.jpg" title="22072008245.jpg"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/22072008245.thumbnail.jpg" alt="22072008245.jpg" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2205.JPG" title="Sardiñada"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2205.thumbnail.JPG" alt="Sardiñada" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2201.JPG" title="Pulpo"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2201.thumbnail.JPG" alt="Pulpo" /></a></p>
<p>Ya por la tarde cuando <a href="http://marcosgarcia.es">Marcos</a> y Nines se habían ido, me quedé un ratito yo sólo en el chiringuito tomándome algo y viendo el atardecer. Mejor os dejo unas fotos para que lo disfrutéis vosotros mismos. Atardecer en A Pregueira con <a href="http://es.wikipedia.org/wiki/Ons">A Illa de Ons</a> en primer término. Sin duda nada que envidiar a Ibiza y su Café del Mar (guiño personal a alguien<a href="http://www.marcosgarcia.es/">Marcos</a> para pasar un día en Ons recordando mis años mozos. en contreto).</p>
<p align="center"> <a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2669.JPG" title="Playa A Pregueira"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2669.thumbnail.JPG" alt="Playa A Pregueira" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2670.JPG" title="Playa A Pregueira"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2670.thumbnail.JPG" alt="Playa A Pregueira" /><br />
</a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2671.JPG" title="Playa A Pregueira"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2671.thumbnail.JPG" alt="Playa A Pregueira" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2672.JPG" title="Playa A Pregueira"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2672.thumbnail.JPG" alt="Playa A Pregueira" /></a></p>
<p>A ver sin convenzo a <a href="http://marcosgarcia.es">Marcos </a>para que vayamos un día de estos a Ons.</p>
<h3>Aperitivo en Combarro</h3>
<p>Hoy amaneció nublado así que se nos fastidió la playa, pero no todo está perdido. Ya que mi sobrina no quiso quedarse conmigo pensé en pasar la mañana en <strong>Combarro </strong>y tomarme un aperitivo. Justo cuando me iba me llamó <a href="http://www.marcosgarcia.es/">Marcos</a> así que lo recogí y allí nos fuimos.</p>
<p>Nunca me cansaré de hablar de <strong>Combarro</strong>, además, contra todo pronóstico, había poca gente y se podía andar y pasear sin aglomeraciones.  La marea estaba bajísima con lo que se pueden contemplar unas postales preciosas. Fijáos en las mariscadoras y el camión que recoge algas.</p>
<p align="center"><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2675.JPG" title="Combarro"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2675.thumbnail.JPG" alt="Combarro" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2677.JPG" title="Combarro"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2677.thumbnail.JPG" alt="Combarro" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2678.JPG" title="Combarro"><br />
<img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2678.thumbnail.JPG" alt="Combarro" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2681.JPG" title="Combarro"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2681.thumbnail.JPG" alt="Combarro" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2674.JPG" title="Combarro"><br />
</a></p>
<p align="center">&nbsp;</p>
<p align="left">Esta <strong>chalana </strong>es digna de Piratas del Caribe.</p>
<p align="center"><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2674.JPG" title="Combarro"><br />
<img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2674.thumbnail.JPG" alt="Combarro" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2679.JPG" title="Combarro"><br />
</a></p>
<p align="left">Más imágenes de Combarro. Comentábamos que es un pueblo impresionante pero que al haber crecido allí no lo valoramos como se debiera, si llega a estar en cualquier otro sitio y vas a visitarlo alucinarías con él. Por cierto, cada vez me gustan menos las escaleras de madera de acceso, parece que estén en obras.</p>
<p align="center"><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2679.JPG" title="Combarro"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2679.thumbnail.JPG" alt="Combarro" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2682.JPG" title="Combarro"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2682.thumbnail.JPG" alt="Combarro" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2683.JPG" title="Combarro"><br />
<img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2683.thumbnail.JPG" alt="Combarro" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2684.JPG" title="Combarro"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2684.thumbnail.JPG" alt="Combarro" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2676.JPG" title="Combarro"><br />
</a></p>
<p align="left">Al final, el aperitivo. Mejor que lo veáis <img src='http://blog.osusnet.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p align="center"><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2676.JPG" title="Combarro"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2676.thumbnail.JPG" alt="Combarro" /></a><a href="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2685.JPG" title="Combarro"><img src="http://blog.osusnet.com/wp-content/uploads/2008/07/img_2685.thumbnail.JPG" alt="Combarro" /></a></p>
<p align="center">&nbsp;</p>
<p align="left">Seguiremos informando&#8230;</p>
]]></content:encoded>
		</item>
		<item>
		<title>Picando Código: Cómo mostrar código fuente en los comentarios</title>
		<link>http://feeds.feedburner.com/~r/picandocodigo/~3/343661637/</link>
		<pubDate>Wed, 23 Jul 2008 15:42:53 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
	<category>Programación</category>
	<category>Picando Código</category>
	<category>código fuente</category>
		<guid>http://feeds.feedburner.com/~r/picandocodigo/~3/343661637/</guid>
		<description><![CDATA[
void postear&#40;&#41;&#123;
     printf&#40;&#34;
]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="c"><span >void</span> postear<span >&#40;</span><span >&#41;</span><span >&#123;</span>
     <span >printf</span><span >&#40;</span><span >&quot;
</span</pre></div></div>

<p>Lectores, comentadores, visitantes en general: <strong>¡Pueden escribir código en los comentarios!</strong><br />
Los que visitan seguido el blog habrán notado un nuevo recuadro al lado de la caja de comentarios. Esta indica cómo escribir código sin que el querido WordPress transforme sus signos de &lt; y &gt; y su indentación en papas fritas.</p>
<p>En varios posts hemos tenido el problema de querer <strong>mostrar código fuente</strong>, y no lograr los resultados que esperábamos. Destaco los posts sobre sintaxis, y más recientemente el <a href="http://picandocodigo.net/2008/07/awk-pasar-texto-a-minusculasmayusculas/">post de AWK</a>, o el de <a href="http://picandocodigo.net/2008/07/adaptar-el-theme-para-wordpress-26-caption/">Wordpress y caption</a>, donde pasó lo mismo (malditos &lt;&gt;).</p>
<p>Como estoy usando el plugin <strong><a href="http://wordpress.org/extend/plugins/wp-syntax/">WP-Syntax</a></strong> para mostrar código fuente, pueden hacer uso de él a la hora de comentar. Su código respetará la indentación, y se mostrará coloreado acorde al lenguaje que usen. En el recuadro del cual les hablaba pueden encontrar la forma de uso (no me hagan repetir <img src='http://picandocodigo.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ).</p>
<p>Los lenguajes reconocidos hasta el momento se listan a continuación. A su vez, son los nombres que hay que poner para comentar en el tag &#8220;pre&#8221;: &lt;pre lang=&#8221;<strong>L</strong>&#8220;&gt;<code>código</code>&lt;/pre&gt; donde <strong>L</strong> es uno de los siguientes:</p>
<p>abap, actionscript, actionscript3, ada, apache, applescript, asm, asp, autoit, bash, blitzbasic, bnf, c, c_mac, caddcl, cadlisp, cfdg, cfm, cpp-qt, cpp, csharp, css, d, delphi, diff, div, dos, dot, eiffel, fortran, freebasic, genero, gettext, glsl, gml, groovy, haskell, html4strict, idl, ini, inno, io, java, java5, javascript, kixtart, latex, lisp, lotusformulas, lotusscript, lua, m68k, matlab, mirc, mpasm, mxml, mysql, nsis, objc, ocaml-brief, caml, oobas, oracle8, pascal, per, perl, php-brief, php, plsql, python, qbasic, rails, reg, robots, ruby, sas, scala, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vb, vbnet, verilog, vhdl, visualfoxpro, winbatch, xml, xpp, z80</p>
<p>Espero que les guste, y cualquier sugerencia, crítica u opinión, me la hacen llegar. Gracias por leer!</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span >&quot;);
}
</span</pre></div></div>


<p><a href="http://feeds.feedburner.com/~a/picandocodigo?a=HNC2Gg"><img src="http://feeds.feedburner.com/~a/picandocodigo?i=HNC2Gg" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/picandocodigo?a=1CX72J"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=1CX72J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=DM4PLj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=DM4PLj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=y12dlj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=y12dlj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/picandocodigo/~4/343661637" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>Syntax Error: PHP: Comprimir la salida del servidor para ahorrar ancho de banda</title>
		<link>http://feeds.feedburner.com/~r/SyntaxError/~3/343420463/</link>
		<pubDate>Wed, 23 Jul 2008 10:22:43 +0000</pubDate>
		<dc:creator>Xavi</dc:creator>
		
	<category>Programación</category>
	<category>PHP</category>
	<category>optimización</category>
	<category>PHP</category>
	<category>Comunicación</category>
	<category>PHP</category>
	<category>PHP</category>
	<category>PHP</category>
	<category>Server</category>
	<category>PHP</category>
		<guid>http://feeds.feedburner.com/~r/SyntaxError/~3/343420463/</guid>
		<description><![CDATA[En un proyecto en el que estoy trabajando actualmente se requiere generar un XML con datos tratados, para que un código Javascript monte un grid a modo de Excel online. 
El problema viene cuando la cantidad de registros se vuelve grande&#8230; En unas pruebas con registros de producción nos encontramos que el grid se demoraba [...]]]></description>
			<content:encoded><![CDATA[<p><img id="image194" src="http://www.syntaxerror.es/wp-content/uploads/2008/07/zlib_screen.miniatura.PNG" alt="zlib"  />En un proyecto en el que estoy trabajando actualmente se requiere generar un <em>XML</em> con datos tratados, para que un código <em>Javascript</em> monte un <a href="http://www.treegrid.com/TreeGrid5_6/Html/EJSTreeGrid.html#Home" >grid</a> a modo de <em>Excel online</em>. </p>
<p>El problema viene cuando la cantidad de registros se vuelve grande&#8230; En unas pruebas con registros de producción nos encontramos que el <em>grid </em>se demoraba mucho en mostrarse&#8230; Pusimos algunas alertas y llegamos a la conclusión que de 20 segundos que tardaba en montarse el <em>grid</em>, sólo 5 correspondían a la generación del <em>XML</em> y el resto era tráfico de red y proceso <em>javascript</em>.</p>
<p>Pero cuánto pesa el <em>XML</em>? Un mega y medio de <em>XML</em>? Y cómo lo hacemos más pequeño para generar menos tráfico y ganar tiempo? Comprimiendo el <em>XML</em> de salida&#8230;</p>
<p><a id="more-192"></a></p>
<p><strong>¿De qué se trata?</strong></p>
<p>Los datos que se encargan de montar una página web son básicamente imágenes y diferentes tipos de datos en texto plano. Las imágenes habitualmente ya vienen comprimidas (<em>JPG</em>, <em>PNG</em>, <em>GIF</em>,&#8230;), pero el texto plano (<em>HTML</em>, <em>XML</em>, <em>CSS</em>, &#8230;) es altamente comprimible&#8230; Simplemente es código <em>ASCII</em> que se repite y repite en el mismo archivo. Si enviamos el texto plano comprimido estamos enviando realmente menos datos por la red, consiguiendo que la totalidad de los datos llegue antes al navegador, quien descomprime los datos y obtiene el código <em>HTML</em>, <em>XML</em>, <em>CSS</em> o lo que sea como si se hubiese enviado así directamente.</p>
<p><strong>¿Y los navegadors lo soportan?</strong></p>
<p>Casi la totalidad de navegadores actuales soportan la compressión de datos <em>HTTP</em>. De hecho, desde 1998 los navegadores han ido soportando el protocolo <em>HTTP 1.1</em>, que esencialmente indica que el navegador soporta &#8220;content encoding&#8221;.</p>
<p>Internet Explorer soporta compresión <em>HTTP</em> desde la versión 4 (teniendo que activar <em>HTTP 1.1</em> en sus propiedades) aunque las versiones para <em>Mac 4.5/5</em> no lo soportan. Netscape lo soporta desde la versión 4 aunque da bastantes fallos. Su versión 4.5 empieza a ser más interesante y la 6 funciona ya plenamente. Opera soporta la compresión desde su versión 5. Firefox desde su versión 1.</p>
<p>Para asegurarte que tu navegador soporta compresión puedes usar el test <a href="http://www.schroepl.net/cgi-bin/http_trace.pl" >HTTP trace</a>. Si aparece una línea dentro del cuadro &#8220;<em>HTTP request received from browser</em>&#8221; con un texto similar al siguiente es que sí que lo soporta:</p>
<blockquote><p>
ACCEPT_ENCODING: gzip,deflate
</p></blockquote>
<p>¿Cómo implementarlo?</p>
<p>Se puede hacer de 3 formas:</p>
<ol>
<li>Activar a nivel TOTAL del ámbito del php del servidor (editar <em>php.ini</em>)</li>
<li>Activar a nivel LOCAL para un sólo site de todo el ámbito del PHP (<em>.htaccess</em>)</li>
<li>Activar a nivel de SCRIPT (un sólo archivo<em>.php</em>)</li>
</ol>
<p><strong>1.- TOTAL</strong></p>
<ol>
<li>Editar el <em>php.ini</em> de apache<br />
<blockquote><p>$ vim /etc/php5/apache2/php.ini</p></blockquote>
</li>
<li>Cambiar el valor de los parámetros siguientes:<br />
<blockquote><p>zlib.output_compression = On<br />
		zlib.output_compression_level = 7</p></blockquote>
</li>
<li>Guardar y salir</li>
<li>Reiniciar apache<br />
<blockquote><p>$ /etc/init.d/apache2 restart</p></blockquote>
</li>
</ol>
<p><strong>2.- LOCAL</strong></p>
<ol>
<li>Editar o crear el archivo <em>.htaccess</em> en el directorio del sitio a aplicar<br />
<blockquote><p>$ vim /var/www/misitio/.htaccess</p></blockquote>
</li>
<li>Insertar las siguientes líneas:<br />
<blockquote><p>php_flag zlib.output_compression on<br />
		php_value zlib.output_compression_level 7</p></blockquote>
</li>
<li>Guardar y salir (no es necesario reiniciar)</li>
</ol>
<p><strong>3.- SCRIPT</strong><br />
Hay dos formas de hacerlo:</p>
<ol>
<li>Insertar al inicio del <em>script</em> la siguiente línea<br />
<blockquote><p>ini_set(&#8217;zlib.output_compression&#8217;, &#8216;On&#8217;);</p></blockquote>
<p>	NOTA: Según el <a href="http://es.php.net/manual/es/ref.zlib.php#82310" >comentario en <em>php.net</em></a> esta forma no funciona.<br />
		Personalmente yo no lo he probado.</li>
<li>Insertar al inicio del <em>script</em> la siguiente línea<br />
<blockquote><p>ob_start(&#8221;ob_gzhandler&#8221;);</p></blockquote>
<p>	NOTA: Sin haber activado el <em>zlib</em> desde <em>php.ini</em>, al ejecutar ésta línea me causaba un error.</li>
</ol>
<p><strong>Niveles de compresión:</strong></p>
<p>Van de 0 a 9 indicando de menos a más compresión respectivamente. A menos compresión más rápido es y menos <em>CPU</em> consume, pero menos comprime. A más compresión se tarda más en comprimir y consume más <em>CPU</em>, pero la compresión es mejor. Establecer el valor a -1 hace que se deje a elección del propio <em>PHP</em> el nivel de compresión (generalmente 6).</p>
<p><strong>¿Cómo saber si está funcionando?</strong></p>
<p>Se pueden usar herramientas de testeo como <a href="http://www.port80software.com/support/p80tools" >HTTP Analysis Tools</a>. Para este caso, probar la primera herramienta &#8220;<em>Compression Check</em>&#8220;</p>
<p><strong>Experiencia personal</strong></p>
<p>En el proyecto que he descrito, el <em>XML</em> medio pesaba sobre 1,5 MB. Al comprimir la salida se queda en unos 35 KB, una muy buena mejora. La solución que tomé fué aplicar la compresión a todo el site setando los parámetros directamente en el <em>php.ini</em>. La generación del <em>XML</em> sigue tardando lo mismo pero el tiempo total para tener el XML listo en el navegador descendió de 25 segundos a unos 10 segundos&#8230; una muy buena mejora <img src='http://www.syntaxerror.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Luego, quise hacer lo mismo en este blog. Como está alojado en un servidor compartido no tengo acceso al <em>php.ini</em>, así que probé de hacer el setado por <em>.htaccess</em>, pero obtuve siempre un <em>error 500</em>. La única forma de hacerlo funcionar fué editar el archivo <em>index.php</em> y colocar en la primera línea el <em>ob_start(&#8221;ob_gzhandler&#8221;)</em>. La compresión funcionó y los registros mejoraron, pero la experiencia del usuario empeora debido a que el el navegador no renderiza hasta que no le han llegado todos los datos&#8230; y cómo hay algunos scripts de publicidad que se llaman y demoran todo el conjunto, la web se queda unos segundos (que se hacen eternos) en blanco. Así que lo quité dejándolo sin comprimir. Así, almenos, el usuario ve que se le va renderizando la web sobre la marcha y no tiene la sensación de que el sitio está colgado.</p>
<p><strong>Más información:</strong></p>
<ul>
<li><a href="http://es.php.net/manual/es/ref.zlib.php" >http://es.php.net/manual/es/ref.zlib.php</a></li>
<li><a href="http://www.pmichaud.com/wiki/Cookbook/OutputCompression"  >http://www.pmichaud.com/wiki/Cookbook/OutputCompression</a>
</ul>
]]></content:encoded>
		</item>
		<item>
		<title>Picando Código: [Noticias Debian] ¡Se acerca Debian Lenny!</title>
		<link>http://feeds.feedburner.com/~r/picandocodigo/~3/343270068/</link>
		<pubDate>Wed, 23 Jul 2008 06:30:30 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
	<category>GNU/Linux</category>
	<category>gnu</category>
	<category>Debian</category>
	<category>lenny</category>
		<guid>http://feeds.feedburner.com/~r/picandocodigo/~3/343270068/</guid>
		<description><![CDATA[
De forma bastante original, y con poco tiempo, se anunció en la lista de desarrollo de debian el congelamiento de Debian Lenny para la próxima semana:
                    ______________________
          [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_317" class="wp-caption alignright" ><a href="http://picandocodigo.net/wp-content/uploads/2007/11/debian.png"><img class="size-medium wp-image-317" title="Debian logo" src="http://picandocodigo.net/wp-content/uploads/2007/11/debian.png" alt="Debian Lenny 5.0" width="100" height="123" /></a><p class="wp-caption-text">Debian Powered</p></div>
<p>De forma bastante original, y con poco tiempo, se anunció en la lista de desarrollo de debian el congelamiento de <strong>Debian Lenny</strong> para la próxima semana:</p>
<pre>                    ______________________
                   &lt; We freeze next week! &gt;
                    ----------------------
                            \   ^__^
                             \  (oo)\_______
                                (__)\       )\/\
                                    ||----w |
                                    ||     ||</pre>
<p>A partir de la semana próxima, habrá un congelamiento, en el hecho que no se pasarán más paquetes desde Sid (unstable) a Lenny (testing), para concentrarse en resolver los bugs. Todo esto, ¡esperando a <strong>Debian Lenny 5.0</strong> para setiembre de 2008!</p>
<p>Si bien históricamente han habido atrasos, hay que tener confianza en los desarrolladores. Para los usuarios de Debian en general, no implica más que la celebración de una nueva versión, porque la mayoría ya usan <strong>Lenny</strong> o <strong>Sid</strong> como repositorios principales.</p>
<p>Algo realmente admirable de los desarrolladores de Debian son sus <strong>BSP - Bug Squashing Parties</strong> (fiestas de &#8220;reventar&#8221;[¿?] bugs). Se trata de reuniones donde se dedican exclusivamente a corregir bugs. Al haber 360 bugs de más que afectan a Lenny, se están organizando maratones de BSP&#8217;s.</p>
<p><strong>Versionado de lanzamientos</strong></p>
<p>También en la lista de desarrollo, hubo una propuesta para cambiar la forma en que Debian versiona sus lanzamientos. <strong>Martin Krafft</strong> propone aumentar el primer número con cada lanzamiento &#8220;punto&#8221; / r release, y el segundo con cada re lanzamiento que incluya paquetes arreglados, mientras que lanzamientos nuevos de la rama estable con nuevas características (se viene Etch y medio), deberían tener un 5 como segundo número para mostrar la &#8220;media actualización&#8221;.</p>
<p><strong>Lars Wirzenius</strong> recordó que Debian introdujo el esquema actual de versionado porque los vendedores de CD temían que las cajas viejas quedaran en los estantes tras un re lanzamiento. (Sus discos X.Y se verían desactualizados si salía la versión X.Y+1, aunque se pudieran actualizar perfectamente por la red).Otros prefirieron un esquema de versionado clásico con dos puntos, donde el primer número fuera aumentando con cada lanzamiento grande, el tercero con lanzamientos de bugs corregidos y el segundo con lanzamientos que agregara nuevas características.</p>
<p>Martin Kraff está llevando a cabo una encuesta en<br />
<a href="http://doodle.ch/participation.html?pollId=8zauai3nqges2ur8"> http://doodle.ch/participation.html?pollId=8zauai3nqges2ur8 </a><br />
Donde por el momento viene ganando &#8220;a favor, así que existe una posibilidad de que el versionado cambie a partir de Lenny.</p>
<pre>         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...</pre>

<p><a href="http://feeds.feedburner.com/~a/picandocodigo?a=do2zbx"><img src="http://feeds.feedburner.com/~a/picandocodigo?i=do2zbx" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/picandocodigo?a=eMAARJ"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=eMAARJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=Fh9nFj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=Fh9nFj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=6RLYSj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=6RLYSj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/picandocodigo/~4/343270068" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>Pensamientos ágiles: El centro de datos y el baño de las chicas</title>
		<link>http://feeds.feedburner.com/~r/Pensamientosgiles/~3/343326072/el-centro-de-datos-y-el-bao-de-las.html</link>
		<pubDate>Wed, 23 Jul 2008 05:48:00 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
	<category>humor</category>
	<category>datacenter</category>
	<category>fun</category>
		<guid>http://feeds.feedburner.com/~r/Pensamientosgiles/~3/343326072/el-centro-de-datos-y-el-bao-de-las.html</guid>
		<description><![CDATA[From: ---- --------Sent: Monday, May 5, 2008 4:37 PMTo: EveryoneSubject: Server Room AccessHi all. As you all are aware, we have new tenants that have moved into the 2nd floor suites.  The access to the server room is now via the women’s bathroom. Th...]]></description>
			<content:encoded><![CDATA[<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_m7w-rKeYie4/SIbioYfctvI/AAAAAAAAAUo/-szo1kKymWw/s1600-h/stallserver.jpg"><img  src="http://bp1.blogger.com/_m7w-rKeYie4/SIbioYfctvI/AAAAAAAAAUo/-szo1kKymWw/s400/stallserver.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5226113601007040242" /></a><br /><br /><i>From: ---- --------<br />Sent: Monday, May 5, 2008 4:37 PM<br />To: Everyone<br />Subject: Server Room Access<br /><br />Hi all.<br /> <br />As you all are aware, we have new tenants that have moved into <br />the 2nd floor suites.  The access to the server room is now via <br />the women’s bathroom.<br /> <br />There will be a sign on the woman’s door that can be changed <br />from OPEN to CLOSED and vice versa.<br /> <br />Should you need to enter the server room, please change the sign <br />to CLOSED.  Once you are done, please change it back to OPEN.<br /> <br />Once you enter the bathroom, you will be able to access the <br />server room via the handicapped stall. Please close the stall <br />door prior to entry, just in case someone doesn’t see that the <br />bathroom is closed.<br /> <br />I know this isn’t ideal, but if we adhere to this protocol, I <br />don’t think anyone will be disrupted.<br /> <br />Thanks!  Let me know if you have any questions.</i><br /><br />Via <a href="http://feeds.feedburner.com/~r/RoyalPingdom/~3/341682139/">Pingdom y DailyWTF.</a>
<p><a href="http://feeds.feedburner.com/~a/Pensamientosgiles?a=uDHssf"><img src="http://feeds.feedburner.com/~a/Pensamientosgiles?i=uDHssf" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Pensamientosgiles?a=8TdJPJ"><img src="http://feeds.feedburner.com/~f/Pensamientosgiles?i=8TdJPJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Pensamientosgiles?a=C6Jtij"><img src="http://feeds.feedburner.com/~f/Pensamientosgiles?i=C6Jtij" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Pensamientosgiles?a=kzHWwJ"><img src="http://feeds.feedburner.com/~f/Pensamientosgiles?i=kzHWwJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Pensamientosgiles?a=pSOe4J"><img src="http://feeds.feedburner.com/~f/Pensamientosgiles?i=pSOe4J" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Pensamientosgiles/~4/343326072" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>PHP Senior: Se viene la segunda edición de PHP&#038;Beers (Argentina)</title>
		<link>http://phpsenior.blogspot.com/2008/07/se-viene-la-segunda-edicin-de-php.html</link>
		<pubDate>Wed, 23 Jul 2008 02:41:00 +0000</pubDate>
		<dc:creator>enrique_place</dc:creator>
		
	<category>Argentina</category>
		<guid>http://phpsenior.blogspot.com/2008/07/se-viene-la-segunda-edicin-de-php.html</guid>
		<description><![CDATA[<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_G8kpjzIeQ4o/SIaatjzMujI/AAAAAAAACnc/s5IK66J2XWs/s1600-h/phpbeers.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_G8kpjzIeQ4o/SIaatjzMujI/AAAAAAAACnc/s5IK66J2XWs/s400/phpbeers.jpg" alt="" id="BLOGGER_PHOTO_ID_5226034525104814642" border="0" /></a><br />Nuevamente, segunda edición, organiza el colega argentino Pablo Rigazzi, invitación desde <a href="http://www.zonaphp.com/php-beers-20/">ZonaPHP</a>. También es importante destacar que estará presente <a href="http://www.zonaphp.com/">"cvander"</a>, el famoso creador de <a href="http://www.maestrosdelweb.com/">Maestros del Web</a> y <a href="http://www.forosdelweb.com/">Foros del Web</a>. También voy a intentar estar presente, pero no voy a firmar autógrafos en esta oportunidad (tal vez lleve alguna remera para la venta).<br /><br />El lugar del encuentro:<br /><br /><div style="text-align: center;"><strong style="color: rgb(97, 129, 182);">Cervecería Antares<br />Armenia 1447, Palermo<br />Jueves 24 de Julio, a las 19:30 horas</strong>.<br /></div><br />Una invitación a conocernos y poder tratar en un ambiente descontracturado los temas que nos interesan, por ejemplo: por qué ya no es "cool" programar estructurado, cómo desapareció PHP4 y por qué Zend Framework es el "framework oficial" de PHP.<br /><br />Estás invitado, no faltes.]]></description>
			<content:encoded><![CDATA[<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_G8kpjzIeQ4o/SIaatjzMujI/AAAAAAAACnc/s5IK66J2XWs/s1600-h/phpbeers.jpg"><img  src="http://bp2.blogger.com/_G8kpjzIeQ4o/SIaatjzMujI/AAAAAAAACnc/s5IK66J2XWs/s400/phpbeers.jpg" alt="" id="BLOGGER_PHOTO_ID_5226034525104814642" border="0" /></a><br />Nuevamente, segunda edición, organiza el colega argentino Pablo Rigazzi, invitación desde <a href="http://www.zonaphp.com/php-beers-20/">ZonaPHP</a>. También es importante destacar que estará presente <a href="http://www.zonaphp.com/">"cvander"</a>, el famoso creador de <a href="http://www.maestrosdelweb.com/">Maestros del Web</a> y <a href="http://www.forosdelweb.com/">Foros del Web</a>. También voy a intentar estar presente, pero no voy a firmar autógrafos en esta oportunidad (tal vez lleve alguna remera para la venta).<br /><br />El lugar del encuentro:<br /><br /><div ><strong >Cervecería Antares<br />Armenia 1447, Palermo<br />Jueves 24 de Julio, a las 19:30 horas</strong>.<br /></div><br />Una invitación a conocernos y poder tratar en un ambiente descontracturado los temas que nos interesan, por ejemplo: por qué ya no es "cool" programar estructurado, cómo desapareció PHP4 y por qué Zend Framework es el "framework oficial" de PHP.<br /><br />Estás invitado, no faltes.]]></content:encoded>
		</item>
		<item>
		<title>Picando Código: El regreso de Los Farzantes</title>
		<link>http://feeds.feedburner.com/~r/picandocodigo/~3/343091177/</link>
		<pubDate>Wed, 23 Jul 2008 01:53:00 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
	<category>Fotos</category>
	<category>Ocio</category>
	<category>drunk rock</category>
	<category>farzantes</category>
		<guid>http://feeds.feedburner.com/~r/picandocodigo/~3/343091177/</guid>
		<description><![CDATA[
En el día de ayer, Lunes 21 de Julio de 2008, se dio un evento histórico&#8230; Volvieron a reunirse los Farzantes! ¿Qué es &#8220;Los Farzantes&#8221;? Un trío de amigos &#8220;músicos&#8220; (no, en serio, resalto las comillas) que se juntaban a hacer sonar sus instrumentos intentando seguir una línea en común.
El 31 de diciembre de 2005, [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_956" class="wp-caption alignright" ><img class="size-full wp-image-956" title="Cerveza farzante" src="http://picandocodigo.net/wp-content/uploads/2008/07/cerveza-farzante.jpg" alt="Cadáveres de Cerveza" width="200" height="151" /><p class="wp-caption-text">Cadáveres de Cerveza</p></div>
<p>En el día de ayer, Lunes 21 de Julio de 2008, se dio un evento histórico&#8230; Volvieron a reunirse <strong>los Farzantes</strong>! ¿Qué es &#8220;Los Farzantes&#8221;? Un trío de amigos <strong>&#8220;</strong>músicos<strong>&#8220;</strong> (no, en serio, resalto las comillas) que se juntaban a hacer sonar sus instrumentos intentando seguir una línea en común.</p>
<p>El 31 de diciembre de 2005, me junté con Leo Farzante y Maxi Farzante, y formamos este proyecto que se venía anunciando y gestando desde hacía tiempo. Lo llamamos Farzantes, ya que el adjetivo se ajusta muy bien a nuestras personalidades, y decimos que tocamos &#8220;<strong>Drunk Rock</strong>&#8221; (nunca faltaba el alcohol en los ensayos).</p>
<p>Nuestra primer y única presentación en vivo fue en el cumpleaños de Maxi, bajista y vocalista, el 20 de febrero de 2006. Ya entrado el 2006, las ocupaciones y responsabilidades nos llevaron a dejar de lado el proyecto.</p>
<p>Ayer lunes, después de comentarlo un poco y coordinar un día, volvimos a tocar juntos. Nos juntamos en la sala de ensayo/estudio de <strong><a href="http://www.myspace.com/gogosquat">Maxi Squat</a></strong>, quien además me prestó su guitarra. Repasamos los 5 temas propios que solíamos hacer, mas unos cuantos covers.</p>
<p>Leo Farzante en la batería, estaba bastante oxidado. No tocaba la batería desde nuestro último ensayo (actualmente toca el bajo en <strong><a href="http://www.myspace.com/nomeimportapunkrock">No Me Importa</a></strong>). Yo igual, las 3 horas que estuvimos &#8220;chiveando&#8221; me dejaron ardiendo las yemas de los dedos&#8230;  (además que no me acordaba la mitad de los temas). El que andaba mejor era Maxi Farzante, quien además se llevó todos los temas y los plagió con <strong><a href="http://www.myspace.com/electroshockmyspace">Electroshock</a></strong> <img src='http://picandocodigo.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
Como invitado, tocó con nosotros Chiki Electroshock.</p>
<p>Dejo algunas fotos de lo que fue &#8220;el regreso&#8221;:</p>
<table border="0" align="center">
<tbody>
<tr>
<td>
<p><div id="attachment_957" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/leo-farzante.jpg"><img class="size-medium wp-image-957" title="Leo Farzante" src="http://picandocodigo.net/wp-content/uploads/2008/07/leo-farzante-300x227.jpg" alt="Leo Farzante" width="300" height="227" /></a><p class="wp-caption-text">Leo Farzante</p></div></td>
<td>
<p><div id="attachment_959" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/fernando-farzante.jpg"><img class="size-medium wp-image-959" title="Fernando Farzante" src="http://picandocodigo.net/wp-content/uploads/2008/07/fernando-farzante-227x300.jpg" alt="Yo Farzante" width="227" height="300" /></a><p class="wp-caption-text">Yo Farzante</p></div></td>
</tr>
<tr>
<td>
<p><div id="attachment_958" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/maxi-farzante.jpg"><img class="size-medium wp-image-958" title="Maxi Farzante" src="http://picandocodigo.net/wp-content/uploads/2008/07/maxi-farzante-227x300.jpg" alt="Maxi Farzante" width="227" height="300" /></a><p class="wp-caption-text">Maxi Farzante</p></div></td>
<td>
<p><div id="attachment_960" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/chiki-electroshock.jpg"><img class="size-medium wp-image-960" title="Chiki Electroshock" src="http://picandocodigo.net/wp-content/uploads/2008/07/chiki-electroshock-227x300.jpg" alt="Chiki Electroshock" width="227" height="300" /></a><p class="wp-caption-text">Chiki Electroshock</p></div></td>
</tr>
</tbody>
</table>

<p><a href="http://feeds.feedburner.com/~a/picandocodigo?a=vkVuRH"><img src="http://feeds.feedburner.com/~a/picandocodigo?i=vkVuRH" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/picandocodigo?a=GoEAlJ"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=GoEAlJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=izSHNj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=izSHNj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=7JgBtj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=7JgBtj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/picandocodigo/~4/343091177" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>Picando Código: AWK: Pasar texto a minúsculas/mayúsculas</title>
		<link>http://feeds.feedburner.com/~r/picandocodigo/~3/342966711/</link>
		<pubDate>Tue, 22 Jul 2008 22:35:47 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
	<category>bash</category>
	<category>shell</category>
	<category>script</category>
	<category>AWK</category>
		<guid>http://feeds.feedburner.com/~r/picandocodigo/~3/342966711/</guid>
		<description><![CDATA[Lo bueno de aprender AWK es que al tenerlo fresco, se convierte en una herramienta de uso diario en el shell. Últimamente lo uso mucho, por ejemplo hoy, lo usé en el siguiente caso que les voy a plantear. Necesitaba pasar un texto a minúsculas, que era algo que no sabía cómo hacer, hasta que [...]]]></description>
			<content:encoded><![CDATA[<p>Lo bueno de aprender <strong><abbr title="Aho, Weinberger, Kernighan">AWK</abbr></strong> es que al tenerlo fresco, se convierte en una herramienta de uso diario en el shell. Últimamente lo uso mucho, por ejemplo hoy, lo usé en el siguiente caso que les voy a plantear. Necesitaba <strong>pasar un texto a minúsculas</strong>, que era algo que no sabía cómo hacer, hasta que lo necesité. En verdad tenía un archivo de texto (items.txt) lleno de datos con el siguiente formato:</p>
<p><code>* TITULO DEL ITEM - Descripción del ítem.</code></p>
<p>Lo que necesitaba era obtener una lista así:<br />
<code>titulo del item 1, titulo del item 2, ... , titulo del item n.</code><br />
Y obviamente, lo primero que se me ocurrió fue usar AWK.</p>
<p><strong>&lt;</strong><strong>conceptosAWK&gt;</strong><br />
AWK es un lenguaje de programación interpretado orientado a datos. Recibe texto como entrada, y trabaja con eso. Ejecuta una acción por cada línea de texto, y a su vez, cada dato &#8220;separado&#8221; en esa linea de texto es un registro al que se accede con $1, $2, &#8230; , $n.<br />
El separador de registros es importante. Por defecto toma el espacio como separador.<br />
<strong>&lt;/conceptosAWK&gt;</strong></p>
<p>En este archivo en particular, opté empezar por separar el título de su descripción. Primero proceso el archivo para eliminar lo que hay después del guión. Para eso especifico que el separador de campo sea el guión &#8220;-&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span >awk</span> <span >'BEGIN{FS=&quot;-&quot;}{print $1}'</span> items.txt <span >&gt;</span> resultado.txt</pre></div></div>

<p>Lo que estoy haciendo acá, es especificando que separe los registros por &#8220;-&#8221;. Entonces $1 va a ser &#8220;<code>* TITULO DEL ITEM</code>&#8221; y $2 va a ser &#8220;<code>Descripción del ítem.</code>&#8220;. Le paso como parámetro items.txt, y voy guardando el resultado en resultado.txt. (Redirijo la salida del awk con &#8220;&gt;&#8221; a un archivo de texto resultado.txt).</p>
<p>El archivo resultado.txt me queda con el formato: &#8220;<code>* TITULO DEL ITEM</code>&#8221; para cada ítem. Ahora lo paso a minúsculas, y de paso saco el asterisco que no lo necesito:</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span >awk</span> <span >'BEGIN{FS=&quot;*&quot;}{print tolower($2&quot;, &quot;)}'</span> $<span >2</span></pre></div></div>

<p>Me quedó algo así:<br />
titulo del item 1 , titulo del item 2 , &#8230; , titulo del item n ,<br />
Ahora, lo que tengo que hacer sacar el espacio antes de las comas, para eso puedo usar <strong><abbr title="Stream EDitor">SED</abbr></strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span >sed</span> s<span >/</span>\ ,<span >/</span>,<span >/</span></pre></div></div>

<p>Reemplazo los &#8221; ,&#8221; con &#8220;,&#8221; y listo. El archivo quedó:<br />
titulo del item 1 , titulo del item 2 , &#8230; , titulo del item n ,</p>
<p>Me hice un script, que recibe como parámetros dos archivos. El primer parámetro $1, es el archivo que hay que editar, y el segundo parámetro $2 va a ser el resultado:</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span >#!/bin/bash</span>
<span >awk</span> <span >'BEGIN{FS=&quot;-&quot;}{print $1}'</span> $<span >1</span> <span >&gt;</span> $<span >2</span>
<span >echo</span> <span >`</span><span >awk</span> <span >'BEGIN{FS=&quot;*&quot;}{print tolower($2&quot;, &quot;)}'</span> $<span >2</span><span >`</span> <span >&gt;</span> $<span >2</span>
<span >echo</span> <span >`</span><span >sed</span> s<span >/</span>\ ,<span >/</span>,<span >/</span> $<span >2</span><span >`</span> <span >&gt;</span> $<span >2</span></pre></div></div>

<p>Lo novedoso, por lo menos para mí, fue el uso de la función &#8220;<strong>tolower</strong>&#8221; en <strong>AWK</strong>. Así que para pasar un texto a minúsculas o a mayúsculas de forma bien sencilla, simplemente hay que usar esta función. Idem para pasar a mayúsculas: toupper. Los scripts quedarían algo así:</p>
<p><strong>Para pasar todo el texto a minúsculas:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash">tolower.<span >sh</span>
<span >#!/bin/bash</span>
<span >echo</span> $<span >@</span> <span >|</span> <span >awk</span> <span >'{print tolower($0)}'</span>
<span >#Este script pasa a minúsculas todos los parámetros que reciba.</span></pre></div></div>

<p><strong>Para pasar todo el texto a mayúsculas:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash">toupper.<span >sh</span>
<span >#!/bin/bash</span>
<span >echo</span> $<span >@</span> <span >|</span> <span >awk</span> <span >'{print toupper($0)}'</span>
<span >#Este script pasa a mayúsculas todos los parámetros que reciba.</span></pre></div></div>

<p>O directamente, si se acuerdan cómo usar AWK, lo más rápido es hacerlo derecho desde consola.</p>
<p>Y tá, eso es lo que estuve haciendo en un rato. Como estuvo divertido, lo documenté por acá <img src='http://picandocodigo.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /><br />
En una de esas a alguien le sirve.</p>

<p><a href="http://feeds.feedburner.com/~a/picandocodigo?a=J8gACR"><img src="http://feeds.feedburner.com/~a/picandocodigo?i=J8gACR" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/picandocodigo?a=bgCCuJ"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=bgCCuJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=foFBtj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=foFBtj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=adaYdj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=adaYdj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/picandocodigo/~4/342966711" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>Picando Código: Git: Sistema de control de versiones distribuido</title>
		<link>http://feeds.feedburner.com/~r/picandocodigo/~3/342823765/</link>
		<pubDate>Tue, 22 Jul 2008 19:13:49 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
	<category>Control de revisiones</category>
	<category>bazaar</category>
	<category>git</category>
	<category>control de versiones</category>
	<category>subersion</category>
		<guid>http://feeds.feedburner.com/~r/picandocodigo/~3/342823765/</guid>
		<description><![CDATA[Ayer, por primera vez, tuve que usar Git, el sistema de control de versiones distribuido. Como he mencionado varias veces, el único sistema de control de versiones que he usado hasta ahora ha sido Subversion. Aunque en el blog ya he comentado también sobre Bazaar, todavía no he tenido oportunidad de probarlo. Teniendo una idea [...]]]></description>
			<content:encoded><![CDATA[<p><img title="Git Logo" src="http://picandocodigo.net/wp-content/uploads/2008/07/git-logo.png" alt="Git Logo" width="72" height="27" align="right" />Ayer, por primera vez, tuve que usar <strong>Git</strong>, el sistema de control de versiones distribuido. Como he mencionado varias veces, el único sistema de control de versiones que he usado hasta ahora ha sido <strong>Subversion</strong>. Aunque en el blog ya he comentado también sobre <a href="http://picandocodigo.net/2008/05/sistema-de-control-de-versiones-gnu-bazaar/"><strong>Bazaar</strong></a>, todavía no he tenido oportunidad de probarlo. Teniendo una idea (muy vaga por cierto) de qué es <strong>Git</strong>, y cómo funciona, me resultó bastante fácil comprenderlo. Lo fuí usando/aprendiendo a la carrera, la mejor forma de aprender&#8230;</p>
<p><strong>¿Qué es Git?</strong></p>
<blockquote><p>Git es un sistema de control de versiones diseñado para manejar proyectos muy grandes con velocidad y eficiencia, pero igual de apropiado para repositorios pequeños; es especialmente popular con la comunidad open source, sirviendo como plataforma de desarrollo para proyectos como el Kernel Linux, Ruby on Rails, WINE o X.org.</p>
<p>Git cae en la categoría de herramientas de manejo de código fuente distribuído, similar por ejemplo a Mercurial o Bazaar. Cada directorio de trabajo de Git es un repositorio completo con historial y capacidades totales de tracking de revisiones, independiente de acceso de red o un servidor central. Aún así, Git es extremadamente rápido y eficiente con el espacio.</p>
<p>Git es un proyecto Open Source cubierto por la GNU General Public License v2. Originalmente escrito por Linus Torvalds y mantenido por Junio C Hamano.</p></blockquote>
<div id="attachment_949" class="wp-caption alignright" ><a href="http://git.or.cz/gitwiki/GitCheatSheet"><img class="size-full wp-image-949" title="Git Cheat Sheet" src="http://picandocodigo.net/wp-content/uploads/2008/07/git-cheat-sheet.jpg" alt="Git Cheat Sheet" width="300" height="232" /></a><p class="wp-caption-text">Git Cheat Sheet</p></div>
<p>Instalarlo no tiene muchas complicaciones. En mi caso con Debian:<br />
<code>apt-get install git-core</code><br />
Y ya tengo las herramientas para obtener código fuente y subirlo.</p>
<p>Hay una <strong><a href="http://git.or.cz/gitwiki/GitCheatSheet">CheatSheet</a></strong> (hoja de referencia, chuleta, trensito) de <strong>Git</strong> en su wiki, que me resultó extremadamente útil a la hora de obtener el código fuente de un proyecto.</p>
<p>En su sitio web pueden encontrar los &#8220;<a href="http://git.or.cz/course/index.html"><strong>Crash Courses</strong></a>&#8220;, algo así como cursos para comenzar a usar Git rápidamente. Estos son:</p>
<ul class="toc">
<li><a href="http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html">Git for everyone</a></li>
<li><a href="http://git.or.cz/course/stgit.html">Maintaining patches on top of Git tree</a></li>
<li><a href="http://git.or.cz/course/svn.html">Git for SVN users</a></li>
</ul>
<p>En mi caso, aprendí todo lo que sé de control de versiones con <strong><a title="Version Control with Subversion - Next Generation Open Source Version Control" href="http://picandocodigo.net/2008/03/libros-version-control-with-subversion-next-generation-open-source-version-control/">Version Control with Subversion</a></strong> por lo que <strong>Git for SVN users</strong> debe ser un buen lugar para empezar.</p>
<p>Además de empezar a familiarizarme con Git, conocí <a href="https://github.com/"><strong>github</strong></a>, un sitio para hostear código fuente con Git. Inscribirse toma unos segundos, y ya podemos empezar a usarlo, y recorrer otros repos.</p>

<p><a href="http://feeds.feedburner.com/~a/picandocodigo?a=OK8o81"><img src="http://feeds.feedburner.com/~a/picandocodigo?i=OK8o81" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/picandocodigo?a=gTjF9J"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=gTjF9J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=vwo9fj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=vwo9fj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=bO7wWj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=bO7wWj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/picandocodigo/~4/342823765" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>programania: Closures en PHP 5.3</title>
		<link>http://www.programania.net/webdev/closures-en-php-53/</link>
		<pubDate>Tue, 22 Jul 2008 06:49:35 +0000</pubDate>
		<dc:creator>Luis Artola</dc:creator>
		
	<category>Programacion</category>
	<category>PHP</category>
	<category>WebDev</category>
	<category>PHP</category>
	<category>orientada a objetos</category>
	<category>PHP</category>
	<category>WEBDEV</category>
	<category>WEBDEV</category>
	<category>PHP</category>
	<category>WEBDEV</category>
	<category>PHP</category>
	<category>orientada a objetos</category>
	<category>PROGRAMACION</category>
	<category>WEBDEV</category>
	<category>orientada a objetos</category>
	<category>PROGRAMACION</category>
	<category>WEBDEV</category>
	<category>WEBDEV</category>
	<category>WEBDEV</category>
	<category>PHP</category>
	<category>WEBDEV</category>
		<guid>http://www.programania.net/webdev/closures-en-php-53/</guid>
		<description><![CDATA[Me quedo sorprendido al enterarme de que, probablemente, las &#8220;closures&#8221; serán implementadas en PHP 5.3.
Las closures son la posibilidad de pasar como argumento un trozo de código. Es una de las principales ventajas de Ruby frente a PHP y amplía enormemente las posibilidades de reutilización de código&#8230;
Parece que la publicación de PHP 5.3 va a [...]]]></description>
			<content:encoded><![CDATA[<p>Me quedo sorprendido al enterarme de que, probablemente, las &#8220;closures&#8221; serán implementadas en <a href="http://www.toosweettobesour.com/2008/07/21/php-53-and-closures/">PHP 5.3</a>.</p>
<p>Las closures son la posibilidad de pasar como argumento un trozo de código. Es una de las principales ventajas de <a href="http://www.programania.net/java/jruby/%c2%bfruby-on-rails-esta-muerto/">Ruby frente a PHP</a> y amplía enormemente las posibilidades de reutilización de código&#8230;</p>
<p>Parece que la publicación de PHP 5.3 va a ser un acontecimiento casi tan importante como la publicación de PHP 5.0&#8230;</p>
<p><strong>Actualización:</strong></p>
<p><strong>Venkman</strong> me corrije en los comentarios (mejorando tanto la definición chorrifláutica que había puesto de closures, que lo voy a poner en el propio post):</p>
<p><em>Una &#8220;closure&#8221; es una construcción que existe en tiempo de ejecución que vincula una función con un entorno (scope) diferente -y ya cerrado- al entorno en el que se ejecuta.</p>
<p>Es decir, es la construcción que abarca una función (que puede ser anónima o no serlo; es decir, puede ser un &#8220;trozo de código&#8221; o no) y un entorno de resolución (scope) que está accesible para esa función pero no para el resto porque ya está &#8220;cerrado&#8221;. </em></p>
]]></content:encoded>
		</item>
		<item>
		<title>Navegapolis: Work for hire o apropiación de talento</title>
		<link>http://www.navegapolis.net/content/view/806/64/</link>
		<pubDate>Mon, 21 Jul 2008 20:54:21 +0000</pubDate>
		<dc:creator>J. Palacio</dc:creator>
		
	<category>Uncategorized</category>
		<guid>http://www.navegapolis.net/content/view/806/64/</guid>
		<description><![CDATA[<p><img src="http://navegapolis.net/images/blog/5/autor.jpg" border="0" alt="autor" width="125" height="78" align="right" />Algunas leyes amputan la mano del ladr&#243;n, ejecutan al asesino... y es que el Derecho es tan relativo como las costrumbres y los valores culturales que lo engendran; por eso lo que para algunos es ley, para otros son barbaridades.</p><p>En extremos como estos los contrastes resaltan con estridencia, pero hay diferencias culturales quiz&#225; menos llamativas, pero posiblemente m&#225;s sabrosas, en casos como el que apunta <a href="http://www.andyramos.com/">Andy Ramos</a>  en su art&#237;culo: <a href="http://www.interiuris.com/blog/?p=447">Barbie, Bratz y el &#34;work for hire&#34;</a>, expresi&#243;n americana, que yo, hijo de la cultura continental, llamar&#237;a &#34;apropiaci&#243;n de talento&#34;; <br /><br />Porque eso de que el autor no sea quien hace la obra, sino quien la encarga, aqu&#237; no est&#225; muy bien visto, de hecho no llamamos autores, sino farsantes a quienes firman las p&#225;ginas que les escriben &#34;negros&#34; a sueldo. <br />Por eso que las empresas sean las &#34;autoras&#34; de los trabajos de sus empleados; que lo que nosotros consideramos derechos morales del autor, para el derecho anglosaj&#243;n, simplemente no existan, refleja diferencias interesantes en la forma de entender los derechos de las personas y de las organizaciones. </p>]]></description>
			<content:encoded><![CDATA[<p><img src="http://navegapolis.net/images/blog/5/autor.jpg" border="0" alt="autor" width="125" height="78" align="right" />Algunas leyes amputan la mano del ladr&oacute;n, ejecutan al asesino... y es que el Derecho es tan relativo como las costrumbres y los valores culturales que lo engendran; por eso lo que para algunos es ley, para otros son barbaridades.</p><p>En extremos como estos los contrastes resaltan con estridencia, pero hay diferencias culturales quiz&aacute; menos llamativas, pero posiblemente m&aacute;s sabrosas, en casos como el que apunta <a href="http://www.andyramos.com/">Andy Ramos</a>  en su art&iacute;culo: <a href="http://www.interiuris.com/blog/?p=447">Barbie, Bratz y el &quot;work for hire&quot;</a>, expresi&oacute;n americana, que yo, hijo de la cultura continental, llamar&iacute;a &quot;apropiaci&oacute;n de talento&quot;; <br /><br />Porque eso de que el autor no sea quien hace la obra, sino quien la encarga, aqu&iacute; no est&aacute; muy bien visto, de hecho no llamamos autores, sino farsantes a quienes firman las p&aacute;ginas que les escriben &quot;negros&quot; a sueldo. <br />Por eso que las empresas sean las &quot;autoras&quot; de los trabajos de sus empleados; que lo que nosotros consideramos derechos morales del autor, para el derecho anglosaj&oacute;n, simplemente no existan, refleja diferencias interesantes en la forma de entender los derechos de las personas y de las organizaciones. </p>]]></content:encoded>
		</item>
		<item>
		<title>Picando Código: Arora Web Browser - navegador basado en WebKit</title>
		<link>http://feeds.feedburner.com/~r/picandocodigo/~3/341775083/</link>
		<pubDate>Mon, 21 Jul 2008 18:33:33 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
	<category>web</category>
	<category>navegadores</category>
	<category>Browsers</category>
	<category>arora</category>
		<guid>http://feeds.feedburner.com/~r/picandocodigo/~3/341775083/</guid>
		<description><![CDATA[Hace unos meses probé el navegador web Arora, cuando se anunció la salida del proyecto. Probé la versión 0.1, en Windows y Debian. Ahora estoy usando la versión 0.2 en Debian. Lo primero que me llamó la atención fue que estuviera hecho con las bibliotecas Qt y WebKit. Realmente no me gusta mucho la apariencia [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos meses probé el navegador web <strong>Arora</strong>, cuando se anunció la salida del proyecto. Probé la versión 0.1, en <strong>Windows</strong> y <strong>Debian</strong>. Ahora estoy usando la versión <strong>0.2</strong> en <strong>Debian</strong>. Lo primero que me llamó la atención fue que estuviera hecho con las bibliotecas <strong>Qt</strong> y <strong>WebKit</strong>. Realmente no me gusta mucho la apariencia de <strong>GTK</strong>, o por lo menos prefiero Qt. En ambos casos, se adaptó perfectamente a la apariencia nativa de cada sistema.</p>
<h2>Historia y desarrollo:</h2>
<p>La descripción de <a href="http://code.google.com/p/arora/">su sitio web en Google Code</a> dice más o menos así:</p>
<p><img title="Arora Web Browser" src="http://picandocodigo.net/wp-content/uploads/2008/07/arora-logo.png" alt="Arora Web Browser" width="128" height="128" align="right" /><em>Arora es un navegador web <strong>simple y multi plataforma</strong>. Actualmente Arora es un navegador muy básico cuyas características incluyen &#8220;Historial&#8221; y &#8220;Bookmarks&#8221;. No tiene soporte para plugins de Netscape, así que no hay soporte para flash hasta Qt 4.5. Pero es pequeño, menos de 10.000 líneas de código, muy rápido, liviano, y divertido de hackear. Arora y QtWebKit están desarrollados para ser multi plataforma usando la biblioteca Qt. Originalmente se creó como demo para Qt para ayudar a testear el componente QtWebKit y encontrar problemas y bugs del API antes del lanzamiento. Se puede encontrar una versión más vieja todavía en el código fuente de Qt en el directorio demo/browser. Arora funciona en Linux, OS X, Windows y Linux embebido usando Qt Embedded.</em></p>
<p>Su desarrollador es <strong>Benjamin C Meyer</strong> (a.k.a. &#8220;icefox&#8221;), desarrollador de <strong>Trolltech</strong>, quien tras programar el demo, hizo el fork y lo nombró &#8220;Arora&#8221;. La <strong>meta principal</strong> del proyecto es enfocarse en crear un navegador open source sobre webkit, capaz de ser usado como navegador diario, con las características típicas: Historial, bookmarks, pestañas, y extensiones.</p>
<p>Hasta el momento, han logrado 3 de las 4 metas iniciales. Tiene pestañas, historial y favoritos. Parte de la idea también es que se mantenga totalmente abierto, rápido y estable, multi-plataforma y mantener un código fácil de entender.</p>
<p>Señalan como &#8220;<strong>lo que no quieren lograr</strong>&#8220;: volverse un navegador de KDE o Windows. O sea, pretenden mantener el navegador libre de plataforma, y en caso de integrar características específicas para algún entorno en particular, hacerlo a través de extensiones. Además, esperan &#8220;nunca volverse otro Mozilla&#8221;, implementando todas las características como extensiones por fuera del navegador.</p>
<h2>QtWebKit</h2>
<p><strong>WebKit</strong> es un framework open source con los cimientos para crear un navegador web. Originalmente se derivó de la biblioteca <strong>KHTML</strong> de <strong>Konqueror</strong> por <strong>Apple</strong> para su navegador <strong>Safari</strong>, y ahora está siendo desarrollado por Apple, Nokia (quien compró Trolltech, la empresa responsable de Qt), Google y otros. Pasa el <strong>Acid2 test</strong> y desde Marzo de 2008 pasa con 100/100 el <strong>Acid3 test</strong> (¡estándard!).</p>
<p><strong><a href="http://doc.trolltech.com/main-snapshot/qtwebkit.html">QtWebKit</a></strong> está basado en WebKit, provee un motor para navegador web que facilita embeder contenido de la World Wide Web en aplicaciones Qt. Al mismo tiempo, el contenido de la web puede ser mejorado con controles nativos.</p>
<h2>Instalar Arora</h2>
<p>Si usan <strong>Debian Lenny/Sid</strong> o <strong>ArchLinux</strong>, pueden encontrar Arora en los repositorios. Así que con apt-get o pacman (<a href="http://gcarrier.koon.fr/2008/05/19/try-arora-on-archlinux/">más info para ArchLinux</a>) pueden instalarlo resolviendo automáticamente las dependencias.</p>
<p>También pueden descargar Arora desde el siguiente enlace:<br />
<a href="http://code.google.com/p/arora/downloads/list">http://code.google.com/p/arora/downloads/list</a><br />
Está el código fuente en formato <strong>tar.gz</strong>, un paquete <strong>.deb</strong> para <strong>Ubuntu 8.04</strong> y un instalador en formato <strong>exe</strong> para <strong>Windows</strong>.</p>
<div id="attachment_945" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/acercade-arora.jpg"><img class="size-medium wp-image-945" title="Arora - Acerca de" src="http://picandocodigo.net/wp-content/uploads/2008/07/acercade-arora-300x220.jpg" alt="Arora - Acerca de" width="300" height="220" /></a><p class="wp-caption-text">Acerca de... Arora</p></div>
<h2>Usando Arora</h2>
<p>Lo primero que tengo que decir, es que para ir en la versión 0.2, el navegador es bastante estable y totalmente usable. A primera vista, encontramos algunas cosas familiares de la familia Mozilla: pestañas, colocación de botones y barras de herramientas, buscador de Google al costado. Está bien, no hay porqué reinventar la rueda en esto, y no apunta a la innovación. Pero lo primero que &#8220;agradece&#8221; la vista es la integración con la apariencia de KDE.</p>
<p>Es bien liviano, consume muy pocos recursos, aunque todavía no tiene extensiones para sumar al consumo de memoria&#8230; <img src='http://picandocodigo.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Probé abrir varias pestañas con distintos sitios web, y no llegué a enlentecerlo (tampoco probé con una cantidad exagerada). Me impresionó lo rápido que cargó GMail, lo que demuestra que tiene JavaScript bien clarito. Sin embargo, ya logueado en mi cuenta de GMail, se volvió un poco lento.</p>
<div id="attachment_946" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/arora-01.jpg"><img class="size-medium wp-image-946" title="Navegador Arora" src="http://picandocodigo.net/wp-content/uploads/2008/07/arora-01-300x225.jpg" alt="Navegador Arora" width="300" height="225" /></a><p class="wp-caption-text">Navegador Web Arora</p></div>
<p>El logo es bastante simpático, con tantos pingüinos en la vuelta, hacía falta un oso polar&#8230; (<strong><a href="http://en.wikipedia.org/wiki/Penguins_%26_Polarbears">Penguins &amp; Polarbears</a></strong>, temón!). Como se caracteriza en el Software Libre, se trata de tener opciones, y Arora es una opción más. Si bien todavía está en una etapa temprana de desarrollo, promete mucho. Se puede seguir su desarrollo en el blog <a href="http://arorabrowser.blogspot.com/">Arora Development</a>.</p>
<p>Sin dudas la rapidez y sencillez viene muy agradecida, en una época donde los navegadores acumulan cada vez más <a href="http://en.wikipedia.org/wiki/Software_bloat">bloat</a>, un comienzo de cero y con un motor así, viene de pelos. Le va a encantar a los usuarios de KDE, ya que se siente como parte de KDE, y se perfila como un competidor directo de Firefox, Konqueror, y demás participantes en &#8220;la guerra de los navegadores&#8221;.</p>
<p>Un usuario incluso <a href="https://bugzilla.novell.com/show_bug.cgi?id=400784">lo sugirió como navegador por defecto</a> en <strong>Open SuSE</strong>. Parece una idea descabellada para ser un navegador en estado tan prematuro, pero no me extrañaría que algo así pase en el futuro. Otro punto a favor que tiene, es la posibilidad de funcionar en equipos con sistemas embebidos, por lo que entra a la competencia de dispositivos móviles desde el principio.</p>
<p>Sin dudas es un navegador muy prometedor, y que tiene mucho futuro. Estén atentos a la salida de nuevas versiones:</p>
<p><a href="http://www.arora-browser.org/">http://www.arora-browser.org/</a></p>

<p><a href="http://feeds.feedburner.com/~a/picandocodigo?a=PHiYo7"><img src="http://feeds.feedburner.com/~a/picandocodigo?i=PHiYo7" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/picandocodigo?a=FGUWFJ"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=FGUWFJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=18MP9j"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=18MP9j" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=1kiXDj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=1kiXDj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/picandocodigo/~4/341775083" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>Una sinfonía en C#: [VIDEOS] Introducción a SCRUM</title>
		<link>http://leomicheloni.blogspot.com/2008/07/videos-introduccin-scrum.html</link>
		<pubDate>Mon, 21 Jul 2008 12:14:00 +0000</pubDate>
		<dc:creator><b>Leonardo Micheloni</b></dc:creator>
		
	<category>agiles2008</category>
		<guid>http://leomicheloni.blogspot.com/2008/07/videos-introduccin-scrum.html</guid>
		<description><![CDATA[De la mano del gran Juán Gabardini les dejo estos dos videos introducción a SCRUM, muy interesantes y simples para que no digan que no tienen idea de lo que es, saludos

Introducción de SCRUM en 15 minutos Leonardo Micheloni]]></description>
			<content:encoded><![CDATA[<p>De la mano del gran Juán Gabardini les dejo estos dos videos introducción a SCRUM, muy interesantes y simples para que no digan que no tienen idea de lo que es, saludos</p>

<a href="http://www.arquitectum.org/portal/Publicaciones/Videos/Scrum/tabid/79/Default.aspx">Introducción de SCRUM en 15 minutos </a><div class="blogger-post-footer">Leonardo Micheloni</div>]]></content:encoded>
		</item>
		<item>
		<title>Picando Código: Ciclo de charlas MontevideoLibre: 802.11</title>
		<link>http://feeds.feedburner.com/~r/picandocodigo/~3/341252027/</link>
		<pubDate>Mon, 21 Jul 2008 06:08:16 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
	<category>Eventos</category>
	<category>montevideolibre</category>
	<category>redes</category>
	<category>802.11</category>
		<guid>http://feeds.feedburner.com/~r/picandocodigo/~3/341252027/</guid>
		<description><![CDATA[Como parte del ciclo de charlas de Introducción a redes de MontevideoLibre, el segundo de cinco módulos, tratará el tema 802.11. Las charlas son abiertas a todo público interesado, y se llevan a cabo en el salón cafetería del Colegio Crandon, cita en la avenida 8 de Octubre 2709, esquina Garibaldi, entre las 19:00 y [...]]]></description>
			<content:encoded><![CDATA[<p>Como parte del ciclo de charlas de Introducción a redes de <a href="http://montevideolibre.org"><strong>MontevideoLibre</strong></a>, el segundo de cinco módulos, tratará el tema <strong>802.11</strong>. Las charlas son <strong>abiertas a todo público interesado</strong>, y se llevan a cabo en el salón cafetería del Colegio Crandon, cita en la avenida 8 de Octubre 2709, esquina Garibaldi, entre las 19:00 y 22:00 horas.</p>
<h2>Segunda Instancia: 802.11</h2>
<ul>
<li> <strong>Fecha:</strong> 25 de Julio.</li>
<li> <strong>Dictado por:</strong> <a class="wikilink1" title="integrantes:tau" href="http://montevideolibre.org/integrantes:tau">Mauricio Campiglia</a></li>
<li> <strong>Modalidad:</strong> Dos teóricos de una hora y media, con break en el medio.</li>
<li> <strong>Temario</strong>
<ul>
<li> Topologías</li>
<li> Arquitectura lógica
<ul>
<li> BSS, ESS</li>
<li> ESSID</li>
</ul>
</li>
<li> Capa Física
<ul>
<li> Estándares 802.11a, 802.11b, 802.11g, 802.11n</li>
<li> Codificaciones y frecuencias</li>
</ul>
</li>
<li> Capa de Control de Acceso al Medio
<ul>
<li> Temporizadores</li>
<li> Línea de tiempo</li>
<li> Scanning</li>
<li> Asociación</li>
<li> Autenticación</li>
<li> RTS/CTS</li>
<li> Fragmentación</li>
<li> PCF, DCF</li>
</ul>
</li>
<li> Problemas y soluciones
<ul>
<li> Colisión</li>
<li> Nodo Oculto</li>
<li> Retransmisión</li>
<li> Saturación, escalabilidad</li>
</ul>
</li>
<li> Seguridad
<ul>
<li> WEP</li>
<li> WPA</li>
<li> 802.11i</li>
<li> 802.1x</li>
</ul>
</li>
<li> Roaming
<ul>
<li> 802.11f IAPP</li>
</ul>
</li>
</ul>
</li>
</ul>
<div id="attachment_889" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/mv-mapa-charlas.jpg"><img class="size-full wp-image-889" title="Mapa charlas Montevideolibre" src="http://picandocodigo.net/wp-content/uploads/2008/07/mv-mapa-charlas.jpg" alt="Colegio Crandon - avenida 8 de Octubre 2709, esquina Garibaldi" width="500" height="336" /></a><p class="wp-caption-text">Colegio Crandon - avenida 8 de Octubre 2709, esquina Garibaldi</p></div>

<p><a href="http://feeds.feedburner.com/~a/picandocodigo?a=dlue32"><img src="http://feeds.feedburner.com/~a/picandocodigo?i=dlue32" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/picandocodigo?a=JcfL9J"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=JcfL9J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=ohyYDj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=ohyYDj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=Ueoxpj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=Ueoxpj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/picandocodigo/~4/341252027" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>MadeInFlex: Flex 4 “Gumbo” preview</title>
		<link>http://www.madeinflex.com/2008/07/21/flex-4-gumbo-preview/</link>
		<pubDate>Mon, 21 Jul 2008 00:00:22 +0000</pubDate>
		<dc:creator>Joan | Garnet</dc:creator>
		
	<category>Artículos</category>
		<guid>http://www.madeinflex.com/2008/07/21/flex-4-gumbo-preview/</guid>
		<description><![CDATA[<!-- matched  --><!-- final 0 -->En los próximos meses se va a acabar de desarrollar la cuarta versión de Flex, nombre en clave "Gumbo". Aunque todavía quedan aspectos por definir ya disponemos de información final y suficiente como para apreciar las mejoras que ésta va a aportar al flujo de trabajo.
En esta entrada se traducen las características más destacables sin [...]]]></description>
			<content:encoded><![CDATA[<!-- matched  --><!-- final 0 --><p>En los próximos meses se va a acabar de desarrollar la cuarta versión de Flex, nombre en clave "Gumbo". Aunque todavía quedan aspectos por definir ya disponemos de información final y suficiente como para apreciar las mejoras que ésta va a aportar al flujo de trabajo.<br />
En esta entrada se traducen las características más destacables sin entrar en detalle de tal forma que se pueda tener rápidamente una idea generalizada de la nueva arquitectura y las diferencias con respecto al actual modelo.</p>
<p> <a href="http://www.madeinflex.com/2008/07/21/flex-4-gumbo-preview/#more-716" class="more-link">(more...)</a></p>
]]></content:encoded>
		</item>
		<item>
		<title>Variable not found: Acciones que retornan imágenes en ASP.NET MVC</title>
		<link>http://feeds.feedburner.com/~r/vnf/~3/340921798/acciones-que-retornan-imgenes-en-aspnet.html</link>
		<pubDate>Sun, 20 Jul 2008 20:45:00 +0000</pubDate>
		<dc:creator>José M. Aguilar</dc:creator>
		
	<category>Desarrollo</category>
	<category>ASP.NET</category>
	<category>aspnetmvc</category>
		<guid>http://feeds.feedburner.com/~r/vnf/~3/340921798/acciones-que-retornan-imgenes-en-aspnet.html</guid>
		<description><![CDATA[El hecho de que las acciones de los controladores de ASP.NET MVC retornen ActionResults abre un gran abanico de posibilidades para los desarrolladores de sistemas web. Ya comenté en otra ocasión los distintos subtipos de ActionResult incluidos en el ...]]></description>
			<content:encoded><![CDATA[<img  src="http://bp0.blogger.com/_O9D62hXq-ng/SGPJx3tMG3I/AAAAAAAAAj0/njYI6DcaFoY/s320/asp.net.png" border="0" alt="ASP.NET" id="BLOGGER_PHOTO_ID_5216234652029426546" />El hecho de que las acciones de los controladores de ASP.NET MVC retornen <em>ActionResults</em> abre un gran abanico de posibilidades para los desarrolladores de sistemas web. <br /><br />Ya comenté <a href="http://www.variablenotfound.com/2008/05/retornando-actionresults-en-acciones.html" title="Retornando ActionResults en acciones ASP.NET MVC">en otra ocasión</a> los distintos subtipos de <code>ActionResult</code> incluidos en el framework, y la posibilidad de crear nuevos descendientes. También tratamos en otro post el <a href="http://www.variablenotfound.com/2008/06/desplegables-en-cascada-con-aspnet-mvc.html" title="Desplegables en cascada con ASP.NET MVC y jQuery">retorno de JSON</a> desde los controladores como una potente vía de devolución de datos estructurados a la capa cliente, tras una llamada Ajax.<br /><br />En esta ocasión vamos a profundizar un poco más, creando nuestro propia subclase de <code>ActionResult</code> para crear acciones con resultados personalizados utilizando la Preview 3 de esta tecnología. Concretamente, crearemos la clase <code>ImageResult</code>, que permitirá a las acciones retornar imágenes <a href="http://es.wikipedia.org/wiki/JPEG" title="JPEG en Wikipedia">JPEG</a> como la mostrada en la siguiente captura:<br /><br /><a href="http://bp0.blogger.com/_O9D62hXq-ng/SGO4elTVhWI/AAAAAAAAAjs/9i0QqY3AcsU/s1600-h/ImageResults.png"><img  src="http://bp0.blogger.com/_O9D62hXq-ng/SGO4elTVhWI/AAAAAAAAAjs/9i0QqY3AcsU/s400/ImageResults.png" border="0" alt="Demo de ImageResult" id="BLOGGER_PHOTO_ID_5216215628973966690" /></a><br /><br />Como se puede observar, aparece una imagen con la hora actual sobre un fondo degradado, que es generada en tiempo real desde el servidor al producirse una petición desde la vista mediante un tag &lt;img&gt; estándar:<br /><pre><code><br />  &lt;h3&gt;La hora es:&lt;/h3&gt;<br />  &lt;img src='<span >&lt;%= Url.Action("GetImage") %&gt;</span>' /&gt;<br /></code></pre>&nbsp;<br />La llamada al método <code>Url.Action("GetImage")</code> retorna una cadena con la dirección URL de la acción indicada en el parámetro, en este caso <code>GetImage()</code>. De esta forma, cuando el navegador necesite cargar la imagen para mostrarla, realizará una llamada a dicha acción, cuyo código aparece en el controlador de la siguiente forma:<br /><pre><code>  public ImageResult GetImage()<br />  {<br />    return new ImageResult<br />           {<br />             Width = 400,<br />             Height = 100,<br />             Text = DateTime.Now.ToLongTimeString()<br />           };<br />  }<br /></code></pre>&nbsp;<br />Lo único que hace es retornar un objeto <code>ImageResult</code> inicializado con el ancho y alto deseado, y el texto a escribir. Fijaos en el uso del <a href="http://www.variablenotfound.com/2008/03/inicializacin-rpida-de-objetos-en-c-30.html" title="Inicialización rápida de objetos en C# 3.0 y VB.Net 9.0 ">inicializador de objetos</a>.<br /><br />Veamos por último con la clase <code>ImageResult</code>:<br /><pre><code>  public class ImageResult: ViewResult<br />  {<br />    public int Width { get; set; }<br />    public int Height { get; set; }<br />    public string Text { get; set; }<br /><br />    public override void ExecuteResult(ControllerContext context)<br />    {<br />      context.HttpContext.Response.ContentType = "image/jpeg";<br />      <br />      Rectangle rect = new Rectangle(0, 0, Width, Height);<br />      Bitmap bmp = new Bitmap(rect.Width, rect.Height);<br />      Graphics g = Graphics.FromImage(bmp);<br />      Font font = new Font("Arial", Height / 1.6f);<br />      LinearGradientBrush brush = <br />             new LinearGradientBrush(rect, Color.Blue, Color.Navy, 90f);<br /><br />      g.FillRectangle(brush, rect);                  <span >// Pinta el degradado...</span><br />      g.DrawString(Text, font, Brushes.Black, 2, 2); <span >// ... la sombra del texto...</span><br />      g.DrawString(Text, font, Brushes.White, 0, 0); <span >// ... y el texto.</span><br /><br />      g.Dispose();<br />      font.Dispose();<br />      brush.Dispose();<br /><br />      bmp.Save(context.HttpContext.Response.OutputStream, ImageFormat.Jpeg);<br />      bmp.Dispose();<br />  }<br />}<br /></code></pre>&nbsp;<br />Aparte de la definición de las propiedades necesarias para su funcionamiento, el único truco a la hora de devolver contenidos personalizados es sobrescribir el método <code>ExecuteResult</code> de la clase base <code>ViewResult</code>. Ya en su implementación, a través del contexto que nos llega como parámetro podemos modificar el tipo de contenidos de la respuesta (Content-Type) y escribir a través del canal de salida lo que deseemos (en este caso utilizamos el método <code>Save</code> del bitmap para ello).<br /><br />El resto del código no tiene demasiado interés, es la creación de la imagen dinámica utilizando GDI+. Por cierto, no he realizado validaciones de las propiedades, os los dejo de deberes ;-); Tampoco sé si tantos Dispose() explícitos serán necesarios, supongo que no, pero me da algo de repelús no ponerlos... debe ser algo así como un trauma infantil adquirido años atrás usando el API de Windows... <br /><br /><a title="Descargar Proyecto ASP.NET MVC (CTP3)" href="http://www.snapdrive.net/files/415885/MvcImageActions.zip" title="Descargar proyecto"><img src="http://bp1.blogger.com/_O9D62hXq-ng/R9vMeYH7nuI/AAAAAAAAATQ/NRq-6LbxFKQ/s200/zip.gif" alt="Proyecto para ASP.NET MVC CTP3"  /> Descargar proyecto (Visual Web Developer 2008 + SP1 + ASP.NET MVC Preview 3)</a>.<br /><br />Publicado en: <a href="http://www.variablenotfound.com">www.variablenotfound.com</a>.
<p><a href="http://feeds.feedburner.com/~a/vnf?a=nf1VhO"><img src="http://feeds.feedburner.com/~a/vnf?i=nf1VhO" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/vnf?a=4RcPPJ"><img src="http://feeds.feedburner.com/~f/vnf?i=4RcPPJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/vnf?a=ns7FfJ"><img src="http://feeds.feedburner.com/~f/vnf?i=ns7FfJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/vnf?a=hYWO7J"><img src="http://feeds.feedburner.com/~f/vnf?i=hYWO7J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/vnf?a=7VqXMJ"><img src="http://feeds.feedburner.com/~f/vnf?i=7VqXMJ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/vnf/~4/340921798" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>Pwned's blog - Desarrollo de Tecnologia: Imagine Cup Overview</title>
		<link>http://pwneds.blogspot.com/2008/07/imagine-cup-overview.html</link>
		<pubDate>Sat, 19 Jul 2008 20:58:00 +0000</pubDate>
		<dc:creator>Setting</dc:creator>
		
	<category>Programacion</category>
	<category>Tecnologia</category>
	<category>WebDev</category>
	<category>open source</category>
	<category>WEBDEV</category>
	<category>WEBDEV</category>
	<category>WEBDEV</category>
	<category>PROGRAMACION</category>
	<category>WEBDEV</category>
	<category>PROGRAMACION</category>
	<category>WEBDEV</category>
	<category>WEBDEV</category>
	<category>WEBDEV</category>
	<category>WEBDEV</category>
	<category>Imagine Cup</category>
		<guid>http://pwneds.blogspot.com/2008/07/imagine-cup-overview.html</guid>
		<description><![CDATA[Imagine Cup es un torneo mundial donde participan las mejores mentes mas brillantes en tecnologia de distintas partes del mundo, en la edicion del 2008 se llevo acabo en Paris Francia, en donde participaron grandes talentos latinoamericanos y por supue...]]></description>
			<content:encoded><![CDATA[<a href="http://imaginecup.com/">Imagine Cup</a> <span >es un torneo mundial </span>donde participan<span > las mejores mentes mas brillantes en tecnologia </span>de distintas partes del mundo, en la edicion del 2008 se llevo acabo en <span >Paris Francia</span>, en donde<span > participaron grandes talentos latinoamericanos </span>y <a href="http://academiccellsms.spaces.live.com/blog/cns%2121E2FA7B378EC353%21359.entry">por supuesto</a> <a href="http://video.msn.com/video.aspx?vid=2bc73b18-3a4e-442d-b260-c68bb383e3b7">Mexico</a> no podia <a href="http://mredison.wordpress.com/category/imagine-cup/">quedarse atras</a>.<br /><br /><span >Hubo proyectos muy interesantes</span> y sobre todo que estaban enfocados a la tematica del torneo que este a~o se trato de "<span >Imagina un mundo donde la tecnologia nos ayuda a tener un medio ambiente  sostenible</span>".<br /><br /><span >Al finalizar nombraron a los <a href="http://imaginecup.com/about/news.aspx">ganadores</a>,</span> cada uno con un proyecto que ayudaba a la naturaleza en gran escala y visualmente muy impresionantes.<br /><br />Aqui pueden ver el <span >video de demostracion</span> del proyecto <a href="http://geeks.ms/blogs/mllopis/archive/2008/07/12/191-en-qu-233-consiste-windows-drive.aspx">Windows Drive</a> creado por el equipo espa~ol y quienes se llevaron el <span >segundo lugar en su categoria</span>.<br /><br /><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/ZMe7g4uIQWA&amp;hl=en"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/ZMe7g4uIQWA&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" height="344" width="425"></embed></object><br /><br /><span >Al final todos los participantes ganaron</span> al compartir una gran <a href="http://flickr.com/search/?q=imagine+cup">experiencia</a> con muchos estudiantes de distintas partes del mundo y claro <span >cualquiera que estubiera participando tenia la oportunidad de ganar</span>, porque todos eran muy capaces y especializados.<br /><br /><span >Imagine Cup 09</span><br /><br />En la edicion del proximo a~o que se llevara acabo en <span >Egipto</span>, el tema es "<span >Imagina un mundo donde la tecnologia nos ayude a resolver los problemas mas complejos</span>", y como ayuda se proponen los <span >objetivos del milenio de la ONU</span>.<br /><br />Mi equipo y yo <span >vamos a participar</span> en la edicion del proximo a~o y esperamos poder pasar a las finales mundiales con nuestro proyecto, aunque a decir verdad, aun no tenemos una idea especifica para participar, yo por mi parte he barajeado 2 muy buenas y espero que podamos realizarlas.<br /><br />Por cierto, para que esten interesados en <span >participar y competir </span>con sus colegas mejores del mundo <a href="http://imaginecup.com/">registrense</a> en la competicion y<span > desarrollen su proyecto</span>, como beneficio obtendran una<span > experiencia unica</span>.<br /><br />Se me olvidaba, <span >Tienen alguna idea en donde la tecnologia ayude a salvar al mundo?</span>.<br /><br /><IFRAME src="http://channel8.msdn.com/Posts/6334/player/" frameBorder=0 width=320 scrolling=no height=325 mce_src="http://channel8.msdn.com/Posts/6334/player/"></IFRAME><BR><A href="http://channel8.msdn.com/Posts/Imagine-Cup-Round-2-Film-My-Organic-Robot-from-team-Lava-Lamp/" mce_href="http://channel8.msdn.com/Posts/Imagine-Cup-Round-2-Film-My-Organic-Robot-from-team-Lava-Lamp/">Imagine Cup 2008 Round 3 Film: My Organic Robot</A><div class="blogger-post-footer"><hr  /><a href="http://feeds.feedburner.com/PwnedsBlog" ><img src="http://sc3.sclive.net/00.0.0000.0000/Web/images/synd.gif" border="0"/></a> <a href="http://pwneds.blogspot.com">Pwned's Blog</a></div>]]></content:encoded>
		</item>
		<item>
		<title>Picando Código: Adaptar el theme para Wordpress 2.6: [Caption]</title>
		<link>http://feeds.feedburner.com/~r/picandocodigo/~3/340032591/</link>
		<pubDate>Sat, 19 Jul 2008 18:09:55 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
	<category>CSS</category>
	<category>Wordpress</category>
	<category>Programación Web</category>
		<guid>http://feeds.feedburner.com/~r/picandocodigo/~3/340032591/</guid>
		<description><![CDATA[Una de las nuevas características de Wordpress 2.6, es la de agregar un &#8220;caption&#8221; a cada imagen. O sea, un texto que muestra el valor del texto alternativo (propiedad &#8220;alt&#8221; del tag &#8220;img&#8221;) de la imagen, con una caja y borde al rededor. Esta característica viene habilitada por defecto. Podemos verla cuando insertamos una nueva [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las nuevas características de <strong>Wordpress 2.6</strong>, es la de agregar un &#8220;<strong>caption</strong>&#8221; a cada imagen. O sea, un texto que muestra el valor del texto alternativo (propiedad &#8220;alt&#8221; del tag &#8220;img&#8221;) de la imagen, con una caja y borde al rededor. Esta característica viene habilitada por defecto. Podemos verla cuando insertamos una nueva imagen. El uploader de imágenes nos avisa que el texto alternativo será usado como &#8220;caption&#8221; también.</p>
<p>Al insertar la imagen con el botón de &#8220;Add an image&#8221; (agregar una imagen), nuestro editor nos muestra algo así:</p>
<p><a href="http://picandocodigo.net/wp-content/uploads/2008/07/caption-wordpress.jpg"><img class="size-medium wp-image-936" title="WordPress Caption" src="http://picandocodigo.net/wp-content/uploads/2008/07/caption-wordpress.jpg" alt="WordPress Caption" width="128" height="149" /></a></p>
<p>La imagen es encerrada entre los tags:</p>

<div class="wp_syntax"><div class="code"><pre class="css"><span >&#91;</span>caption id=<span >&quot;attachment_936&quot;</span> align=<span >&quot;aligncenter&quot;</span> <span >width</span>=<span >&quot;128&quot;</span> caption=<span >&quot;WordPress&quot;</span><span >&#93;</span><span >&#91;</span>/caption<span >&#93;</span></pre></div></div>

<p>Este código es automáticamente &#8220;traducido&#8221; a <strong>HTML</strong> y <strong>CSS</strong>, e interpretado como tal por nuestro navegador. Entonces, la imagen va a tener un código así (código de ejemplo):</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict"><span ><span >&lt;div</span> <span >id</span><span >=</span><span >&quot;attachment_936&quot;</span> <span >class</span><span >=</span><span >&quot;wp-caption aligncenter&quot;</span> <span >style</span><span >=</span><span >&quot;width: 128px&quot;</span><span >&gt;</span></span>
	<span ><span >&lt;a</span> <span >href</span><span >=</span><span >&quot;url/img/wordpress.jpg&quot;</span><span >&gt;</span></span>
		<span ><span >&lt;img</span> <span >title</span><span >=</span><span >&quot;WordPress&quot;</span> <span >src</span><span >=</span><span >&quot;url/img/wordpress.jpg&quot;</span> <span >alt</span><span >=</span><span >&quot;WordPress&quot;</span> <span >/</span><span >&gt;</span></span>
	<span ><span >&lt;/a&gt;</span></span>
	<span ><span >&lt;p</span> <span >class</span><span >=</span><span >&quot;wp-caption-text&quot;</span><span >&gt;</span></span>WordPress<span ><span >&lt;/p&gt;</span></span>
<span ><span >&lt;/div&gt;</span></span></pre></div></div>

<p>Como ven, hay un par de clases nuevas que tenemos que definir en nuestro <strong>CSS</strong>. Por defecto, el CSS de nuestro tema no está preparado para mostrar el caption como viene en <strong>Wordpress 2.6</strong>, a menos que hagamos algunas modificaciones.</p>
<p>Los cambios los podemos observar en el tema por defecto, en el archivo style.css. Estos nos permiten mostrar la caja de caption, y el texto en tamaño chico. Pueden verlo en el <a href="http://trac.wordpress.org/changeset/8239#file5">changeset</a> de <strong>Wordpress 2.6</strong>,  o si lo descargaron, ir hasta /wp-content/themes/default y ver el archivo style.css.</p>
<p>El código es el siguiente:</p>

<div class="wp_syntax"><div class="code"><pre class="css"><span >/* Captions */</span>
<span >.aligncenter</span>,
div<span >.aligncenter</span> <span >&#123;</span>
	<span >display</span><span >:</span> <span >block</span><span >;</span>
	<span >margin-left</span><span >:</span> <span >auto</span><span >;</span>
	<span >margin-right</span><span >:</span> <span >auto</span><span >;</span>
<span >&#125;</span>
&nbsp;
<span >.wp-caption</span> <span >&#123;</span>
	<span >border</span><span >:</span> <span >1px</span> <span >solid</span> <span >#ddd</span><span >;</span>
	<span >text-align</span><span >:</span> <span >center</span><span >;</span>
	<span >background-color</span><span >:</span> <span >#f3f3f3</span><span >;</span>
	<span >padding-top</span><span >:</span> <span >4px</span><span >;</span>
	<span >margin</span><span >:</span> <span >10px</span><span >;</span>
	-moz-border-radius<span >:</span> <span >3px</span><span >;</span>
	-khtml-border-radius<span >:</span> <span >3px</span><span >;</span>
	-webkit-border-radius<span >:</span> <span >3px</span><span >;</span>
	border-radius<span >:</span> <span >3px</span><span >;</span>
<span >&#125;</span>
&nbsp;
<span >.wp-caption</span> img <span >&#123;</span>
	<span >margin</span><span >:</span> <span >0</span><span >;</span>
	<span >padding</span><span >:</span> <span >0</span><span >;</span>
	<span >border</span><span >:</span> <span >0</span> <span >none</span><span >;</span>
<span >&#125;</span>
&nbsp;
<span >.wp-caption</span> p<span >.wp-caption-text</span> <span >&#123;</span>
	<span >font-size</span><span >:</span> <span >11px</span><span >;</span>
	<span >line-height</span><span >:</span> <span >17px</span><span >;</span>
	<span >padding</span><span >:</span> <span >0</span> <span >4px</span> <span >5px</span><span >;</span>
	<span >margin</span><span >:</span> <span >0</span><span >;</span>
<span >&#125;</span>
<span >/* End captions */</span></pre></div></div>

<p>El primer bloque (<strong>.aligncenter</strong>) es el que se encarga de alinear al centro la imagen, en caso de que así lo especifiquemos en las opciones del uploader de imágenes. En <strong>.wp-caption</strong>, podemos editar el color de fondo y borde, alineación de texto, etc. En mi caso por ejemplo usé los colores <span >#222</span> para el fondo y <span >#86bb66</span> para el borde, de manera de adaptarlo al resto de los colores del sitio. El resto del código es bastante explicativo.</p>
<p>Lo que hay que hacer es <strong>agregar estas líneas de código</strong> al css de nuestro tema/theme/plantilla/template de WordPress, y personalizarlo con los colores, márgenes y demás a nuestro gusto. Yo estrené el nuevo diseño en el post anterior, y mi caja con caption se ve así:</p>
<div id="attachment_515" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/02/picando-codigo.png"><img class="size-full wp-image-515" title="PicandoCódigo" src="http://picandocodigo.net/wp-content/uploads/2008/02/picando-codigo.png" alt="PicandoCodigo.net" width="125" height="125" /></a><p class="wp-caption-text">PicandoCodigo.net</p></div>

<p><a href="http://feeds.feedburner.com/~a/picandocodigo?a=PYusN9"><img src="http://feeds.feedburner.com/~a/picandocodigo?i=PYusN9" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/picandocodigo?a=zDcJwJ"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=zDcJwJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=ca0h6j"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=ca0h6j" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=KmcfEj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=KmcfEj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/picandocodigo/~4/340032591" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>Picando Código: Cómo instalar NetBeans IDE 6.1 en GNU/Linux</title>
		<link>http://feeds.feedburner.com/~r/picandocodigo/~3/339962885/</link>
		<pubDate>Sat, 19 Jul 2008 16:08:23 +0000</pubDate>
		<dc:creator>fernando</dc:creator>
		
	<category>GNU/Linux</category>
	<category>PHP</category>
	<category>Java</category>
	<category>ide</category>
	<category>JAVA</category>
	<category>NetBeans</category>
	<category>PHP</category>
	<category>C/C++</category>
	<category>PHP</category>
	<category>PHP</category>
	<category>PHP</category>
	<category>JAVA</category>
	<category>JAVA</category>
	<category>PHP</category>
		<guid>http://feeds.feedburner.com/~r/picandocodigo/~3/339962885/</guid>
		<description><![CDATA[
Ya desde la entrada en que contaba sobre el lanzamiento de Netbeans 6.0 me preguntaron cómo instalarlo, y unas veces más después de eso. Aprovecho que volví a instalarlo, esta vez NetBeans 6.1, para subir imágenes e instrucciones de cómo hacer para tener este completo IDE en nuestro S.O. preferido.
Obtener NetBeans
Para descargar la última versión, [...]]]></description>
			<content:encoded><![CDATA[<p ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/netbeans-ide.jpg"><img class="aligncenter" title="NetBeans IDE 6.1" src="http://picandocodigo.net/wp-content/uploads/2008/07/netbeans-ide-300x190.jpg" alt="NetBeans IDE 6.1" width="300" height="190" /></a></p>
<p>Ya desde la entrada en que contaba sobre <a title="Disponible NetBeans 6.0" href="http://picandocodigo.net/2007/12/disponible-el-nuevo-ide-netbeans-60/">el lanzamiento de <strong>Netbeans 6.0</strong></a> me preguntaron cómo instalarlo, y unas veces más después de eso. Aprovecho que volví a instalarlo, esta vez <strong>NetBeans 6.1</strong>, para subir imágenes e instrucciones de cómo hacer para tener este completo <a href="http://picandocodigo.net/category/programacion/ide/"><strong><abbr title="Integrated Development Environment">IDE</abbr></strong></a> en nuestro <a href="http://picandocodigo.net/category/informatica-tecnologia/sistemas-operativos/"><strong><abbr title="Sistema Operativo">S.O.</abbr></strong></a> preferido.</p>
<h2>Obtener NetBeans</h2>
<p>Para <strong>descargar la última versión</strong>, tenemos que dirigir nuestro navegador hacia:<br />
<a href="http://download.netbeans.org/"> http://download.netbeans.org/</a></p>
<p>Ahí tenemos para elegir qué características queremos que incluya nuestro IDE, si lo queremos para alguna tecnología en particular, o todas: Web &amp; Java EE, Desarrollo móviles, Java SE, Ruby, C/C++, PHP.</p>
<p>Aclaro que si elegimos &#8220;All&#8221; (todas), podemos personalizar qué se va a instalar concretamente durante la instalación. De todas formas, el IDE está creado sobre un framework central con APIs, y las características son implementadas en forma de módulos plugin (<a href="http://packages.debian.org/lenny/netbeans-ide" >fuente</a>). Gracias a esto podemos agregar o eliminar plugins más adelante.</p>
<p>Aparentemente el soporte para PHP vendrá incluido en la versión completa a partir de la versión 6.5. Pero seguramente podemos instalar el plugin por nuestra cuenta para ir probando. No sé que tan desarrollado esté ya.</p>
<p>Si usan <strong>Debian</strong>, o alguna de sus distribuciones derivadas como *<strong>Ubuntu</strong>, <strong>Knoppix</strong>, <strong>Mepis</strong>, <strong>Mint</strong> y similares, pueden instalarlo a través de apt. En Debian se encuentra en los repositorios <strong>contrib</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span >su</span>
apt-get update
apt-get <span >install</span> netbeans-ide</pre></div></div>

<p>Esto nos pedirá además instalar netbeans-platform.</p>
<p>En mi caso descargué la última versión desde el sitio de NetBeans, en un archivo llamado <strong>netbeans-6.1-ml-linux.sh</strong>.</p>
<h2>Instalación:</h2>
<p>Para instalarlo a partir del archivo .sh que descargamos, basta con seguir unos sencillos pasos:</p>

<div class="wp_syntax"><div class="code"><pre class="bash">fernando<span >@</span>nando-debian:~<span >/</span>downloads<span >/</span>software$ <span >chmod</span> +x netbeans<span >-6.1</span>-ml-linux.<span >sh</span>
fernando<span >@</span>nando-debian:~<span >/</span>downloads<span >/</span>software$ .<span >/</span>netbeans<span >-6.1</span>-ml-linux.<span >sh</span>
Configuring the installer...
Searching <span >for</span> JVM on the system...
Extracting installation data...
Running the installer wizard...</pre></div></div>

<p>Se nos mostrará una pantalla de bienvenida como la siguiente:</p>
<div id="attachment_927" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/netbeans-61-bienvenida.jpg"><img title="NetBeans 6.1 - Pantalla de bienvenida" src="http://picandocodigo.net/wp-content/uploads/2008/07/netbeans-61-bienvenida-300x225.jpg" alt="NetBeans 6.1 - Pantalla de bienvenida" width="300" height="225" /></a><p class="wp-caption-text">NetBeans 6.1 - Pantalla de bienvenida</p></div>
<p>La pantalla nos muestra los packs y runtimes que va a instalar, así como el espacio que ocupará en el disco duro. Podemos personalizar la instalación con el botón &#8220;Customize&#8230;&#8221;, que nos mostrará la pantalla siguiente:</p>
<div id="attachment_928" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/netbeans-61-personalizar-instalacion.jpg"><img title="NetBeans 6.1 - Personalizar instalación" src="http://picandocodigo.net/wp-content/uploads/2008/07/netbeans-61-personalizar-instalacion-300x227.jpg" alt="NetBeans 6.1 - Personalizar instalación" width="300" height="227" /></a><p class="wp-caption-text">NetBeans 6.1 - Personalizar instalación</p></div>
<p>Como pueden ver, tenemos todos los componentes disponibles para instalar o no. Es recomendable elegir solamente aquellos que vayamos a usar, ¿para qué instalar cosas innecesarias?</p>
<p>El siguiente paso es aceptar el acuerdo de licencia del software. Gran parte del software está cubierto por la <strong>GPL/LGPL</strong> y <strong>CDDL</strong>, así que no hay sorpresas ahí. Aceptar y continuamos. Esto nos lleva a la siguiente pantalla donde debemos especificar un directorio de instalación para NetBeans IDE y qué <strong>JDK</strong> va a usar:</p>
<div id="attachment_929" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/netbeans-61-elegir-dir.jpg"><img title="NetBeans 6.1 - Elegir directorio de instalación" src="http://picandocodigo.net/wp-content/uploads/2008/07/netbeans-61-elegir-dir-300x225.jpg" alt="NetBeans 6.1 - Elegir directorio de instalación" width="300" height="225" /></a><p class="wp-caption-text">NetBeans 6.1 - Elegir directorio de instalación</p></div>
<p>Siguiente paso: En caso que hayamos elegido instalar <strong>GlassFish</strong>, debemos elegir su directorio de instalación también, y algunas propiedades. Debemos ingresar un nombre de usuario y contraseña de Administrador, que por defecto trae los valores &#8220;admin&#8221; y &#8220;adminadmin&#8221;. En mi caso usé las mismas propiedades de mi usuario root:</p>
<div id="attachment_930" class="wp-caption aligncenter" ><a href="http://picandocodigo.net/wp-content/uploads/2008/07/netbeans-61-elegir-gf.jpg"><img title="NetBeans 6.1 - Propiedades de GlassFish" src="http://picandocodigo.net/wp-content/uploads/2008/07/netbeans-61-elegir-gf-300x225.jpg" alt="NetBeans 6.1 - Propiedades de GlassFish" width="300" height="225" /></a><p class="wp-caption-text">NetBeans 6.1 - Propiedades de GlassFish</p></div>
<p>Ya está todo listo para instalar, un &#8220;Next&#8221; en esta última pantalla y se empieza a instalar el IDE. Al terminar la instalación, tendremos la opción de registrar NetBeans IDE y GlassFish para obtener notificaciones de nuevas versiones y actualizaciones, ofertas de Sun, etc. (Registrarse es gratis).</p>
<p>Listo, ya podemos empezar a usar NetBeans. Supongo que las instrucciones de instalación se aplican igual si lo instalamos desde apt, o cualquier otra forma.</p>
<p>En lo poco que he desarrollado en <strong>Java</strong>, he usado siempre <strong>Eclipse</strong>, pero ahora pienso probar NetBeans nuevamente para desarrollar alguna aplicación con GUI, y probar también cómo funciona con C/C++ y algún otro lenguaje. Java, Python y PHP son los que estoy mirando más últimamente&#8230;</p>

<p><a href="http://feeds.feedburner.com/~a/picandocodigo?a=YW13g9"><img src="http://feeds.feedburner.com/~a/picandocodigo?i=YW13g9" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/picandocodigo?a=3OHRFJ"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=3OHRFJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=XVdAKj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=XVdAKj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/picandocodigo?a=OGvuDj"><img src="http://feeds.feedburner.com/~f/picandocodigo?i=OGvuDj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/picandocodigo/~4/339962885" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>Pensamientos ágiles: Emprendedores, SeedCamp y la importancia de validar una idea</title>
		<link>http://feeds.feedburner.com/~r/Pensamientosgiles/~3/339967359/emprendedores-seedcamp-y-la-importancia.html</link>
		<pubDate>Sat, 19 Jul 2008 15:30:00 +0000</pubDate>
		<dc:creator>martin</dc:creator>
		
	<category>Java</category>
	<category>Python</category>
	<category>JAVA</category>
	<category>emprendedores</category>
	<category>amazon</category>
	<category>ruby on rails</category>
	<category>JAVA</category>
	<category>JAVA</category>
	<category>lamp</category>
	<category>googleappengine</category>
	<category>seedcamp</category>
		<guid>http://feeds.feedburner.com/~r/Pensamientosgiles/~3/339967359/emprendedores-seedcamp-y-la-importancia.html</guid>
		<description><![CDATA[A través de Web 2.0 Ireland he llegado a un post realmente interesante de Saul Klein. El artículo no deja de ser un post publicitario de SeedCamp, y de como este foro puede ser una buena herramienta para validar las ideas de potenciales emprendedores...]]></description>
			<content:encoded><![CDATA[A través de <a href="http://www.web2ireland.org/2008/07/18/three-weeks-left-to-apply-to-seedcamp/">Web 2.0 Ireland</a> he llegado <a href="http://localglobe.blogspot.com/2008/07/from-first-timer-to-funded-valuing.html">a un post</a> realmente interesante de Saul Klein. <br /><br />El artículo no deja de ser un post publicitario de <a href="http://www.seedcamp.com/">SeedCamp</a>, y de como este foro puede ser una buena herramienta para validar las ideas de potenciales emprendedores. Me quedo especialmente con una parte del mismo:<br /><br /><blockquote>In today's environment, if you are in your 20s and you put [society's] [your parent's] economic fears aside, there has never been a better time to be a first-timer.</blockquote><br /><br />Y es que aunque los emprendedores ahora mismo se enfrentan al gran problema de que parece que todo esté ya inventado, de que hay una competencia enorme y de que las compañías poderosas se hacen cada vez más y más poderosas e intentan abarcar más y más, lo cierto es que nunca ha sido tan barato el montar un negocio y nunca ha habido tantos recursos disponibles ya sea en forma de librerías, frameworks y utilidades Open Source (como Java, LAMP o RoR), en forma de alojamiento de gran rendimiento y muy barato (como Amazon EC2/S3) o en forma de enormes plataformas gratuitas para ejecutar nuestros programas (como Google Apps Engine). <br /><br />Una de las cosas que lamento más es el no haber intentado algo hace cinco años, cuando había tantas cosas todavía sin inventar. Ahora ya me ha pasado el arroz de los 20s, pero quien sabe si en los 30s habrá un poco más de suerte. En estos momentos en los que <a href="http://brigomp.blogspot.com/2008/06/la-crisis-estimula-el-inters-en-el.html">la recesión aprieta</a>, y los jóvenes ya no están obligados a meterse en una hipoteca porque la vivienda siempre sube, quizás tenga más sentido que nunca el tomarse un descanso, olvidar el yugo del ladrillo y emprender. <br /><br />Resulta también muy interesante que en la cena del <a href="http://the-accelerator.blogspot.com/">The Accelerator Group</a> que se comenta en el post 12 de las 15 startups que se reunieron estuvieran utilizando Amazon Web Services o probando Google App Services. Todo el mundo estaba usando LAMP, Python; Django o Ruby; y por supuesto todo el mundo estaba usando o pensaba usar <a href="http://developers.facebook.com/">f8</a> o <a href="http://en.wikipedia.org/wiki/OpenSocial">OpenSocial</a>; y parece que todos estaban pensando también en el nuevo iPhone. <br /><br />En mi caso, os voy a contar un secretillo. Tengo algo. O bueno, más correctamente <a href="http://jmonne.blogspot.com/">tenemos</a> <a href="http://www.danilat.com/weblog/">algo</a>. No estamos en el grupo de RoR (aunque algunos se dediquen también a ello), si no en el de Groovy y Java. Sólo voy a dar una pista, la palabra clave es empleo. Y realmente espero que pronto (posíblemente Otoño) tengáis la oportunidad de validar nuestra idea :)
<p><a href="http://feeds.feedburner.com/~a/Pensamientosgiles?a=goqkyW"><img src="http://feeds.feedburner.com/~a/Pensamientosgiles?i=goqkyW" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/Pensamientosgiles?a=7pNZdJ"><img src="http://feeds.feedburner.com/~f/Pensamientosgiles?i=7pNZdJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Pensamientosgiles?a=E8srfj"><img src="http://feeds.feedburner.com/~f/Pensamientosgiles?i=E8srfj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Pensamientosgiles?a=eGyh3J"><img src="http://feeds.feedburner.com/~f/Pensamientosgiles?i=eGyh3J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/Pensamientosgiles?a=JpGxNJ"><img src="http://feeds.feedburner.com/~f/Pensamientosgiles?i=JpGxNJ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Pensamientosgiles/~4/339967359" height="1" width="1"/>]]></content:encoded>
		</item>
		<item>
		<title>PHP Senior: Internet está lleno de charlatanes - parte 2</title>
		<link>http://phpsenior.blogspot.com/2008/07/internet-est-lleno-de-charlatanes-parte.html</link>
		<pubDate>Sat, 19 Jul 2008 12:52:00 +0000</pubDate>
		<dc:creator>enrique_place</dc:creator>
		
	<category>POO</category>
	<category>crítica</category>
	<category>críticas</category>
	<category>cosas mal hechas</category>
		<guid>http://phpsenior.blogspot.com/2008/07/internet-est-lleno-de-charlatanes-parte.html</guid>
		<description><![CDATA[Volviendo -para algunos- a mi "caza de brujas" y buscando depurar un poco de conceptos que solo generan desinformación por gente que dice <span style="font-style: italic;">"saber de lo que habla"</span>.<br /><br /><span style="font-weight: bold;">Aclaro el siguiente punto:</span> si quién escribe este artículo es un novato, procederé con mucha cautela y cariño (sin perder la firmeza), pero si el que escribe es un desarrollador que se auto-promociona como "Senior" y a su vez como "docente", seré despiadado.<br /><br />El siguiente artículo (<a href="http://blog.pablo-morales.com/?page_id=2">del mismo a