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

<channel>
	<title>Boozox &#187; Ubuntu</title>
	<atom:link href="http://boozox.net/category/ubuntu/feed/" rel="self" type="application/rss+xml" />
	<link>http://boozox.net</link>
	<description>Blog de informática, programación, software libre, linux, y mucho más</description>
	<lastBuildDate>Fri, 16 Mar 2012 20:28:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Inspiración nuevo diseño Gpsia</title>
		<link>http://boozox.net/ubuntu/inspiracion-nuevo-diseno-gpsia/</link>
		<comments>http://boozox.net/ubuntu/inspiracion-nuevo-diseno-gpsia/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 19:28:12 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Boozox]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://boozox.net/?p=653</guid>
		<description><![CDATA[Tras leer este recomendadísimo post de SmashingMagazine de tendencias web, a través de un twitt de Gafeman, me entró repentinamente la inspiración, y decidí retomar Gpsia. He hecho muchísimos retoques de programación (bugs sobretodo), y nuevas features (adjuntar vídeos a rutas, comentar en más lugares&#8230;.), pero de lo que más orgulloso estoy es del nuevo [...]]]></description>
			<content:encoded><![CDATA[<p>Tras leer este <a href="http://www.smashingmagazine.com/2009/01/21/current-web-design-trends-for-2009/">recomendadísimo post de SmashingMagazine</a> de tendencias web, a través de <a href="http://twitter.com/gafeman/status/1161636761">un twitt</a> de <a href="http://viciao2k3.com">Gafeman</a>, me entró repentinamente la <strong>inspiración</strong>, y decidí retomar <a href="http://gpsia.com">Gpsia</a>.</p>
<p>He hecho muchísimos retoques de <strong>programación</strong> (bugs sobretodo), y nuevas <strong>features</strong> (adjuntar vídeos a rutas, comentar en más lugares&#8230;.), pero de lo que más orgulloso estoy es del nuevo diseño!</p>
<p>Realmente Smashing Magazine lo vale a la hora de inspirar, altamente recomendado. </p>
<h2><a href="http://boozox.net/boozox/inspiracion-nuevo-diseno-gpsia/#respond">Te gusta el nuevo diseño de Gpsia?</a></h2>
<p><strong>Antes y después</strong><br />
<a href="http://gpsia.com" title="Antes y Después en Gpsia.com"><img src="http://farm4.static.flickr.com/3526/3242130300_ac5cbe624f.jpg" width="469" height="500" alt="Antes y Después en Gpsia.com" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/ubuntu/inspiracion-nuevo-diseno-gpsia/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guia básica para editar imágenes en PHP con GD</title>
		<link>http://boozox.net/php/guia-basica-para-editar-imagenes-en-php-con-gd/</link>
		<comments>http://boozox.net/php/guia-basica-para-editar-imagenes-en-php-con-gd/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 11:28:21 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[Código]]></category>
		<category><![CDATA[Imagen Digital]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[gd]]></category>
		<category><![CDATA[imagen]]></category>
		<category><![CDATA[libreria]]></category>

		<guid isPermaLink="false">http://boozox.net/?p=523</guid>
		<description><![CDATA[Crear y editar imágenes con PHP puede ser muy fácil si tienes instalada la biblioteca GD en tu servidor. Aunque las opciones que ofrece GD son muy básicas, son suficientes para desarrollar scripts con capacidades muy superiores. Ahora voy a presentaros estas funciones básicas con ejemplos, para que puedas crear aplicaciones más complejas. Crear la [...]]]></description>
			<content:encoded><![CDATA[<p>Crear y editar imágenes con PHP <strong>puede ser muy fácil</strong> si tienes instalada la biblioteca GD en tu servidor.</p>
<p>Aunque las opciones que ofrece GD son muy básicas, son suficientes para desarrollar scripts con <strong>capacidades muy superiores</strong>. Ahora voy a presentaros estas <strong>funciones básicas</strong> con ejemplos, para que puedas crear aplicaciones más complejas.</p>
<h2>Crear la imagen de cero o desde un archivo</h2>
<p>Para tratar imágenes en GD trabajamos con recursos o variables tipo resource de imágenes. Esto es una varible que representa a la imagen.</p>
<p>Para crear un nuevo recurso de imagen podemos usar la función <a href="http://es2.php.net/manual/es/function.imagecreate.php">imagecreate()</a> aúnque es más recomendable usar la función <a href="http://es2.php.net/manual/es/function.imagecreatetruecolor.php">imagecreatetruecolor()</a></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="nu0">300</span>, <span class="nu0">200</span><span class="br0">&#41;</span>; <span class="co1">//a partir de aqui trabajo con una imagen de 300&#215;200</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$im2</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="nu0">100</span>, <span class="nu0">100</span><span class="br0">&#41;</span>; <span class="co1">//he creado otra imagen distinta con dimensiones 100&#215;100</span></div>
</li>
</ol>
</div>
<p>Si queremos partir de una imagen ya existente, para convertirla en recurso tendremos que usar la función adecuada dependiendo del formato de la imagen. Los principales formatos son JPEG, PNG y GIF; con las funciones <a href="http://es2.php.net/manual/es/function.imagecreatefromjpeg.php">imagecreatefromjpeg()</a>, <a href="http://es2.php.net/manual/es/function.imagecreatefrompng.php">imagecreatefrompng()</a> y <a href="http://es2.php.net/manual/es/function.imagecreatefromgif.php">imagecreatefromgif()</a> respectivamente.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$miJpeg</span> =imagecreatefromjpeg<span class="br0">&#40;</span><span class="st0">&#8216;miimagen.jpg&#8217;</span><span class="br0">&#41;</span>; <span class="co1">//he creado un recurso a partir del archivo miimagen.jpg</span></div>
</li>
</ol>
</div>
<p>Si quieres ahorrarte el pensar a la hora de crear un recurso a partir de imagen, o desconoces el formato de entrada de la imagen (y quieres que lo haga automáticamente) puedes usar esta función para crear cualquier tipo de imagen.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> newimage<span class="br0">&#40;</span><span class="re0">$src</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$im</span> = <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">switch</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <a href="http://www.php.net/eregi"><span class="kw3">eregi</span></a><span class="br0">&#40;</span><span class="st0">&#8216;http://&#8217;</span>, <span class="re0">$src</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$im</span> = imagecreatefromstring<span class="br0">&#40;</span> getUrlData<span class="br0">&#40;</span><span class="re0">$src</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagealphablending<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagesavealpha<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <a href="http://www.php.net/eregi"><span class="kw3">eregi</span></a><span class="br0">&#40;</span><span class="st0">&#8216;<span class="es0">\.</span>jpg&#8217;</span>, <span class="re0">$src</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$im</span> = imagecreatefromjpeg<span class="br0">&#40;</span><span class="re0">$src</span><span class="br0">&#41;</span>; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <a href="http://www.php.net/eregi"><span class="kw3">eregi</span></a><span class="br0">&#40;</span><span class="st0">&#8216;<span class="es0">\.</span>gif&#8217;</span>, <span class="re0">$src</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$imp</span> = imagecreatefromgif<span class="br0">&#40;</span><span class="re0">$src</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$x</span> = imagesx<span class="br0">&#40;</span><span class="re0">$imp</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$y</span> = imagesy<span class="br0">&#40;</span><span class="re0">$imp</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$im</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$x</span>, <span class="re0">$y</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagefilledrectangle<span class="br0">&#40;</span> <span class="re0">$im</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$x</span>, <span class="re0">$y</span>, imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">255</span>, <span class="nu0">255</span>, <span class="nu0">255</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagecopy<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="re0">$imp</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$x</span>, <span class="re0">$y</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <a href="http://www.php.net/eregi"><span class="kw3">eregi</span></a><span class="br0">&#40;</span><span class="st0">&#8216;<span class="es0">\.</span>png&#8217;</span>, <span class="re0">$src</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$im</span> = imagecreatefrompng<span class="br0">&#40;</span><span class="re0">$src</span><span class="br0">&#41;</span>; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagealphablending<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; imagesavealpha<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$im</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw2">function</span> getUrlData<span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$ch</span> = curl_init<span class="br0">&#40;</span><span class="re0">$url</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; curl_setopt<span class="br0">&#40;</span><span class="re0">$ch</span>, CURLOPT_FAILONERROR, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; curl_setopt<span class="br0">&#40;</span><span class="re0">$ch</span>, CURLOPT_CONNECTTIMEOUT, <span class="nu0">30</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; curl_setopt<span class="br0">&#40;</span><span class="re0">$ch</span>, CURLOPT_RETURNTRANSFER, <span class="nu0">1</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="re0">$get</span> = curl_exec<span class="br0">&#40;</span><span class="re0">$ch</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; curl_close<span class="br0">&#40;</span><span class="re0">$ch</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$get</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>[<a href="http://boozox.net/jaula/newimage.phps">descargar código</a>]</p>
<p>Esta función puede crear una imagen a partir de JPEG, PNG, GIF o URL (requiere CURL)</p>
<p>Si queremos saber las dimensiones de un recurso de imagen, usaremos las funciones <strong>imagesx($im)</strong> e <strong>imagesy($im)</strong> que devuelven el <strong>ancho</strong> y <strong>alto</strong> del recurso, en píxeles, respectivamente.</p>
<h2>Copiar, recortar y redimensionar</h2>
<p>La modificación más básica que podemos hacer a una imagen es recortarla y redimensionarla.</p>
<p>En ambos casos la forma de trabajar es, en primer lugar crear un nuevo recurso con las dimensiones apropiadas, y en segundo lugar copiar de la imagen origen a la imagen destino aplicando el cambio deseado.</p>
<h3>Recortar una imagen</h3>
<p>Para recortar una imagen de, por ejemplo, 500 x 400 en 50px por la derecha y por abajo, haremos lo siguiente:</p>
<ol>
<li>Creamos un nuevo recurso de 500 &#8211; 50 = <strong>450</strong> por 400 &#8211; 50 = <strong>350px</strong></li>
<li>Usamos la función imagecopy para copiar de la imagen origen, en nuestra nueva imagen
<p><em>bool <strong>imagecopy</strong>  ( <strong>resource</strong> $im_destino  , <strong>resource</strong> $im_origen  , <strong>int</strong> $pos_x_destino  , <strong>int</strong> $pos_y_destino  , <strong>int</strong> $pos_x_origen  , <strong>int</strong> $pos_y_origen  , <strong>int</strong> $ancho_origen  , <strong>int</strong> $alto_origen  )</em></p>
</li>
<li>Los dos primeros parámetros son los recursos destino y origen</li>
<li>Los dos siguientes son la posición en eje x e y de la imagen destino, donde queremos comenzar a copiar (en nuestro caso 0,0; porque el eje está arriba y a la izquierda)</li>
<li>Los dos siguientes son el ancho y el alto de la imagen que queremos recortar del aimagen original. En nuestro caso 450 y 350.</li>
</ol>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im_origen</span> = imagecreatefromjpeg<span class="br0">&#40;</span><span class="st0">&#8216;mi_imagen.jpg&#8217;</span><span class="br0">&#41;</span>; <span class="co1">//sabemos que mide 500 x 400</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$im_destino</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="nu0">450</span>, <span class="nu0">350</span><span class="br0">&#41;</span>; <span class="co1">//im_destino contendrá la nueva imagen recortada</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">imagecopy<span class="br0">&#40;</span><span class="re0">$im_destino</span>, <span class="re0">$im_origen</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">450</span>, <span class="nu0">350</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">// Ahora im_destino es im_origen recortada por abajo y por la derecha 50px</span></div>
</li>
</ol>
</div>
<p>[<a href="http://boozox.net/jaula/crop.phps">descargar código</a>] <strong>Ejemplo</strong>: [<a href="http://boozox.net/jaula/img.jpg">original</a>] [<a href="http://boozox.net/jaula/crop.php">recortada dinámicamente</a>]</p>
<h3>Redimensionar una imagen</h3>
<p>En este ejemplo vamos a redimensionar a la mitad la imagen origen, sea cual sea su tamaño.</p>
<p>Crearemos primero un nuevo recurso con las dimexiones x/2 e y/2, y usaremos la función <a href="http://es2.php.net/manual/es/function.imagecopyresampled.php">imagecopyresampled()</a> (también podríamos usar <a href="http://es2.php.net/manual/es/function.imagecopyresized.php">imagecopyresized()</a>, pero la que vamos a usar suaviza los píxeles interpolándolos – tiene mejor calidad)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im_origen</span> = imagecreatefrompng<span class="br0">&#40;</span><span class="st0">&#8216;foo.png&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$ancho</span> = imagesx<span class="br0">&#40;</span><span class="re0">$im_origen</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$alto</span> = imagesy<span class="br0">&#40;</span><span class="re0">$im_origen</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$nuevo_ancho</span> = <a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span><span class="re0">$ancho</span> / <span class="nu0">2</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$nuevo_alto</span> = <a href="http://www.php.net/round"><span class="kw3">round</span></a><span class="br0">&#40;</span><span class="re0">$alto</span> / <span class="nu0">2</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$im_destino</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="re0">$nuevo_ancho</span>, <span class="re0">$nuevo_alto</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">imagecopyresampled<span class="br0">&#40;</span><span class="re0">$im_destino</span>, <span class="re0">$im_origen</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="re0">$nuevo_ancho</span>, <span class="re0">$nuevo_alto</span>, <span class="re0">$ancho</span>, <span class="re0">$alto</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">// ahora im_destino es la mitad de grande que im_origen</span></div>
</li>
</ol>
</div>
<h2>Dibujar figuras y texto</h2>
<p>Las figuras que GD nos deja pintar son muy básicas, parecidas a las que ofrece el programa Paint</p>
<p>En este punto lo más importante es crear colores para una imagen. Los colores se deben crear y asociar a una imagen mediante la función <a href="http://es2.php.net/manual/es/function.imagerectangle.php">imagecolorallocate()</a>. El color lo indicamos mediante parámetros <a href="http://es.wikipedia.org/wiki/Modelo_de_color_RGB">RGB</a> (Red Green Blue) que podemos extraer fácilmente de cualquier paleta, como la del Photoshop o el Gimp</p>
<h3>Dibujar un rectángulo</h3>
<p>Quizás la figura más simple. Podemos dibujar sólo el borde del rectángulo con la función <a href="http://es2.php.net/manual/es/function.imagerectangle.php">imagerectangle()</a> o el rectangulo relleno de color, con la función <a href="http://es2.php.net/manual/es/function.imagefilledrectangle.php">imagefilledrectangle()</a></p>
<p> bool <strong>imagerectangle</strong>  ( <strong>resource</strong> $imagen  , <strong>int</strong> $x1  , <strong>int</strong> $y1  , <strong>int</strong> $x2  , <strong>int</strong> $y2  , <strong>int</strong> $color  )</p>
<p> bool <strong>imagefilledrectangle</strong>  ( <strong>resource</strong> $imagen  , <strong>int</strong> $x1  , <strong>int</strong> $y1  , <strong>int</strong> $x2  , <strong>int</strong> $y2  , <strong>int</strong> $color  )</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$imagen</span> = imagecreatefromjpeg<span class="br0">&#40;</span><span class="st0">&#8216;mi_imagen.jpg&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$negro</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$imagen</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//voy a dibujar un rectangulo negro entre las coordenadas (5,5) y (25,15), recuerda que el eje está arriba a la izquierda</span></div>
</li>
<li class="li1">
<div class="de1">imagefilledrectangle<span class="br0">&#40;</span><span class="re0">$imagen</span>, <span class="nu0">5</span>, <span class="nu0">5</span>, <span class="nu0">25</span>, <span class="nu0">15</span>, <span class="re0">$negro</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<h3>Otras figuras</h3>
<p>Existen muchas figuras que puedes dibujar con GD, desde <a href="http://es2.php.net/manual/es/function.imageline.php">una línea</a> hasta un <a href="http://es2.php.net/manual/es/function.imagefilledpolygon.php">polígono</a>, pasando por la <a href="http://es2.php.net/manual/es/function.imagefilledellipse.php">elipse</a> o el <a href="http://es2.php.net/manual/es/function.imagesetpixel.php">píxel</a>. Sólo busca la que más te conviene en la documentación, o combina varias para obtener la figura deseada.</p>
<h3>Escribir texto</h3>
<p>Es <strong>realmente sencillo</strong>. Si no te quieres complicar la vida, puedes usar la función <a href="http://es2.php.net/manual/es/function.imagestring.php">imagestring()</a> que te da la opción de elegir entre <strong>5 fuentes internas</strong> indicando sólo el número de referencia&#8230;</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im</span> = imagecreate<span class="br0">&#40;</span><span class="nu0">100</span>, <span class="nu0">30</span><span class="br0">&#41;</span>; <span class="co1">//creo una nueva imagen de 100&#215;30</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$fondo</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">255</span>, <span class="nu0">255</span>, <span class="nu0">255</span><span class="br0">&#41;</span>; <span class="co1">//blanco. El primer color creado, se utiliza como fondo automaticamente para esa imagen</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$color_texto</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">255</span><span class="br0">&#41;</span>; <span class="co1">//azul</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// escribo la cadena arriba a la izquierda con la fuente #5</span></div>
</li>
<li class="li2">
<div class="de2">imagestring<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">5</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="st0">&quot;¡Hola mundo!&quot;</span>, <span class="re0">$color_texto</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>&#8230; o si quieres <strong>tener más control sobre el estilo</strong>, puedes usar fuentes <a href="http://es.wikipedia.org/wiki/TrueType">TrueType</a> con la función <a href="http://es2.php.net/manual/es/function.imagettftext.php">imagettftext()</a> (en la web <a href="http://www.dafont.com/">DaFont</a> tienes miles de fuentes TrueType gratuitas)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im</span> = imagecreatetruecolor<span class="br0">&#40;</span><span class="nu0">400</span>, <span class="nu0">30</span><span class="br0">&#41;</span>; <span class="co1">//creo una nueva imagen de 400&#215;30</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// creo algunos colores</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$blanco</span> = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">255</span>, <span class="nu0">255</span>, <span class="nu0">255</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$gris</span> &nbsp; = imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">128</span>, <span class="nu0">128</span>, <span class="nu0">128</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$negro</span> &nbsp;= imagecolorallocate<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">imagefilledrectangle<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">399</span>, <span class="nu0">29</span>, <span class="re0">$blanco</span><span class="br0">&#41;</span>; <span class="co1">//relleno el fondo</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// El texto a pintar</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$texto</span> = <span class="st0">&quot;Boozox.net&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="co1">// El archivo ttf, escribe la ruta correctamente!!</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$fuente</span> = <span class="st0">&#8216;fuente.ttf&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Agrego una sombra al texto</span></div>
</li>
<li class="li1">
<div class="de1">imagettftext<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">20</span>, <span class="nu0">0</span>, <span class="nu0">11</span>, <span class="nu0">21</span>, <span class="re0">$gris</span>, <span class="re0">$fuente</span>, <span class="re0">$texto</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// Escribo el texto</span></div>
</li>
<li class="li1">
<div class="de1">imagettftext<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="nu0">20</span>, <span class="nu0">0</span>, <span class="nu0">10</span>, <span class="nu0">20</span>, <span class="re0">$negro</span>, <span class="re0">$fuente</span>, <span class="re0">$texto</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>[<a href="http://boozox.net/jaula/ttftext.phps">descargar código</a>]<br />
<strong>Demo:</strong><br />
<img src="http://boozox.net/jaula/ttftext.php"></p>
<h2>Tratar bien la transparencia en PNG</h2>
<p>Las imágenes PNG admiten un <strong>canal Alpha que indica la opacidad</strong> en cada punto de la imagen, para crear efectos semitransparentes. Si te interesa que esta transparencia se muestre correctamente, deberás calentarte un poco más la cabeza, y tener el canal Alpha siempre en cuenta. Te aconsejo que incluyas <strong>estas dos líneas</strong> después de crear una nueva imagen con transparencia (aunque tendrás que estar siempre atento de que el canal alpha no se pierda!)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$im</span> = imagecreatefrompng<span class="br0">&#40;</span><span class="st0">&#8216;mi_transparencia.png&#8217;</span><span class="br0">&#41;</span>; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">//conservar transparencia</span></div>
</li>
<li class="li1">
<div class="de1">imagealphablending<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">imagesavealpha<span class="br0">&#40;</span><span class="re0">$im</span>, <span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Recuerda también que puedes <strong>crear colores con canal de transparencia</strong> usando <a href="http://es2.php.net/manual/es/function.imagecolorallocatealpha.php">imagecolorallocatealpha()</a> en lugar de imagecolorallocate()</p>
<h2>Exportar la imagen para visualizarla</h2>
<p>Después de haber modificado nuestra imagen tal como deseamos, tendremos que <strong>exportarla</strong>. Existe una función para cada formato de salida (<a href="http://es2.php.net/manual/es/function.imagejpeg.php">imagejpeg()</a>, <a href="http://es2.php.net/manual/es/function.imagepng.php">imagepng()</a>, <a href="http://es2.php.net/manual/es/function.imagegif.php">imagegif()</a>, etc&#8230;). Personalmente te recomiendo siempre <strong>exportar en PNG</strong> porque se conserva la <strong>calidad</strong> y la <strong>nitidez</strong> mucho mejor.</p>
<p>En todos los casos tendremos la opción de generar el código de la imagen, si queremos que el archivo PHP simule ser la propia imagen, o indicarle dónde queremos que almacene la imagen resultado.</p>
<p>Para el primer caso, tendremos que indicar mediante las cabeceras que lo que estamos a punto de mostrar <strong>es una imagen</strong>. Para esto usamos la función header() indicando el tipo de archivo en concreto de que se trata (image/jpeg, image/png o image/gif).</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">//este codigo se incluiria al final del proceso de edicion, suponiendo que $im es el recurso de la imagen que queremos mostrar</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&quot;Content-type: image/png&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">imagepng<span class="br0">&#40;</span><span class="re0">$im</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Una vez creado este archivo, podemos mostrar el resultado en una página HTML <strong>simplemente creando una etiqueta de imagen</strong> que referencie a ese archivo .php</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;img src=&quot;imagen.php&quot; /&gt;</div>
</li>
</ol>
</div>
<p>Si queremos <strong>almacenar en nuestro disco</strong> la imagen resultante, tendremos que pasar como segundo parámetro a la función el nombre del archivo que queremos generar.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">imagepng<span class="br0">&#40;</span><span class="re0">$im</span>,<span class="st0">&#8216;ruta/miarchivo.png&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p><strong style="font-size:1.4em;">Recuerda que me interesa mucho tu opinión. Crees que falta algo? tienes dudas? vas a trabajar con la librería GD ahora que sabes cómo funciona? has hecho experimentos curiosos con imágenes dinámicas? &#8230;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/php/guia-basica-para-editar-imagenes-en-php-con-gd/feed/</wfw:commentRss>
		<slash:comments>53</slash:comments>
		</item>
		<item>
		<title>Ó cómo escuchar los deseos de la comunidad</title>
		<link>http://boozox.net/software-libre/o-como-escuchar-los-deseos-de-la-comunidad/</link>
		<comments>http://boozox.net/software-libre/o-como-escuchar-los-deseos-de-la-comunidad/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 18:47:00 +0000</pubDate>
		<dc:creator>José Cabo</dc:creator>
				<category><![CDATA[Canonical]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Opinión]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://boozox.net/?p=340</guid>
		<description><![CDATA[Después de tantos meses sin publicar nada qué mejor que recordar, aunque sea un poco, el sabor de la libertad. Que puedes ser escuchado. Que tus ideas puedes ser oídas. En definitiva, participar de verdad en como te gustaría que fuera lo que usas. Canonical nos ofrece un nuevo servicio a disposición de la comunidad [...]]]></description>
			<content:encoded><![CDATA[<p>Después de tantos meses sin publicar nada qué mejor que recordar, aunque sea un poco, el sabor de la <em>libertad</em>. Que puedes ser escuchado. <strong>Que tus ideas puedes ser oídas</strong>. En definitiva, participar de verdad en como te gustaría que fuera lo que usas.</p>
<p><img src="http://boozox.net/wp-content/screenshot4.png" alt="" title="screenshot4" style="float:left;" /><a href="http://www.canonical.com/">Canonical</a> nos ofrece un nuevo servicio a disposición de la comunidad de <a href="http://www.ubuntu.com/products/whatisubuntu">Ubuntu</a> y derivados. La prueba definitiva del poder de decisión de la gente <em>normal</em>: de tú y de mi. Hablo de <strong>Ubuntu Brainstorm</strong>.</p>
<p><a href="http://brainstorm.ubuntu.com/">Ubuntu Brainstorm</a> fue dado a conocer por Canonical a principios de Marzo. Una versión bastante simple si la comparamos con la actual. Este servicio de Canonical intenta <strong>acercar todavía más el Software Libre a la comunidad dándoles la posibilidad de exponer sus ideas y ser votadas</strong>, juzgadas y, si son viables, llevarlas a cabo.</p>
<p>El servicio, que está basado en <a href="http://www.ideastorm.com/">Ideastorm</a> de DELL, ha conseguido una mejora brutal en pocos meses. De vez en cuando se puede ver todavía <a href="http://brainstorm.ubuntu.com/category/11">alguna nueva idea</a> en portada para mejorar la propia web. Gracias a esto, en sus inicios ayudó a evolucionar de forma exponencial el desarrollo de Brainstorm y convertirlo en lo que es hoy en día.</p>
<p>Brainstorm nos ofrece la posibilidad de registrarnos <strong>de forma gratuita y rápida</strong>. Nuestras ideas serán votadas y revisadas por <em>personas normales</em> y desarrolladores. Estos segundos pueden incluso poner anotaciones sobre la viabilidad y comentarios técnicos de la misma. Si la idea resulta lo suficiente interesante por la comunidad y desarrolladores se puede enlazar a una entrada de Blueprints del launchpad o incluso con la sección de bugs o UbuntuForums para que pueda ser adaptada a las diferentes plataformas de Canonical (Ubuntu, Kubuntu, las webs de Canonical, etc&#8230;). Al fin y al cabo&#8230; el Software Libre lo hacemos entre todos, ¿no?<img src="http://boozox.net/wp-content/screenshot7.png" alt="" title="screenshot7" style="float:right;" /></p>
<p>Actualmente hay enlaces a las secciones más importantes: &#8220;<em>Ideas más importantes de hoy (actual portada); <a href="http://brainstorm.ubuntu.com/most_popular_this_week/">de esta semana</a>; <a href="http://brainstorm.ubuntu.com/most_popular_this_month/">de este mes</a>; <a href="http://brainstorm.ubuntu.com/most_popular_ever/">desde siempre</a></em>; etc&#8230;&#8221;. Aconsejo revisar de vez en cuando las ideas en portada porque muchas de ellas llegan a ser muy buenas y, por supuesto, votarlas.</p>
<p>Aunque no todo es color de rosa. Hay gente que no acaba de comprender lo que es un brainstorm: Un portal que sirve para enviar ideas y que estas sean votadas. Han habido algunas absurdas que se proclamaban como &#8220;Linux debe parecerse a Windows&#8221; o &#8220;Linux tiene que adoptar el theme de XP&#8221;. Como veréis, no aportan demasiado (por decir algo). En fin. Recordad sin embargo, sin menospreciar ese intento por <em>halludar</em>, antes de enviar vuestra idea <strong>buscad</strong> por las antiguas y evitad de este modo que sea duplicada.</p>
<p><strong>Registraros y enviad vuestras ideas!</strong>, sin vergüenza.</p>
<p><strong><a href="http://brainstorm.ubuntu.com/">Enlace a Ubuntu Brainstorm</a></strong><a href='http://boozox.net/wp-content/screenshot7.png'></a></p>
<p>Este post me ha dado una idea para una próxima entrada. ¿Qué os parecería un pequeño resumen sobre lo que hemos conseguido &#8220;gracias&#8221; a Canonical (lo que nos ofrece, sus servicios, portales, labs, etc&#8230;)?</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/software-libre/o-como-escuchar-los-deseos-de-la-comunidad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¡¡Ya tenemos Ubuntu 8.04 Hardy Heron LTS en la calle!!</title>
		<link>http://boozox.net/software-libre/%c2%a1%c2%a1ya-tenemos-ubuntu-804-hardy-heron-lts-en-la-calle/</link>
		<comments>http://boozox.net/software-libre/%c2%a1%c2%a1ya-tenemos-ubuntu-804-hardy-heron-lts-en-la-calle/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 18:28:29 +0000</pubDate>
		<dc:creator>José Cabo</dc:creator>
				<category><![CDATA[Canonical]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://boozox.net/software-libre/%c2%a1%c2%a1ya-tenemos-ubuntu-804-hardy-heron-lts-en-la-calle/</guid>
		<description><![CDATA[Como habéis leído en el titular: Canonical ha liberado hoy, Jueves día 23 de Abril del 2008, la versión final de Ubuntu 8.04 LTS (Long Time Support) llamada Hardy Heron siguiendo con su famosa forma de nombrar las diferentes distribuciones. Si queréis descargarosla tenéis la posibilidad de hacerlo por descarga directa, aunque claro, yo prefiero [...]]]></description>
			<content:encoded><![CDATA[<p>Como habéis leído en el titular: Canonical ha liberado hoy, <strong>Jueves día 23 de Abril del 2008</strong>, la versión final de <strong>Ubuntu 8.04 LTS (Long Time Support) llamada Hardy Heron</strong> siguiendo con su famosa forma de nombrar las diferentes distribuciones.</p>
<p><img style="float: left;" src='http://boozox.net/wp-content/ubuntu_lts_hardy-heron.png' alt='ubuntu_lts_hardy-heron.png' />Si queréis <a href="http://releases.ubuntu.com/hardy/">descargarosla</a> tenéis la posibilidad de hacerlo por descarga directa, aunque claro, yo prefiero<strong> hacerlo por <a href="http://releases.ubuntu.com/hardy/ubuntu-8.04-desktop-i386.iso.torrent">torrent</a></strong> porque va mucho más rápido y no colapsáis los servidores de Canonical. Ubuntu os brinda la posibilidad de actualizar directamente desde vuestra actual distribución si tenéis conexión a internet. Con ir al gestor de actualizaciones veréis que se ha activado un módulo que antes no estaba. Pinchad en &#8220;<strong>actualizar a 8.04</strong>&#8221; y al reiniciar tendréis Hardy completamente instalada y funcionando.</p>
<p>Podéis ver algunas de las características desde la web de <a href="http://www.ubuntu.com/news/ubuntu-8.04-lts-desktop">Ubuntu.com</a> [en inglés]. Os puedo nombrar algunas algunas de sus características más interesantes: </p>
<ul>
<li>Actualización de Gnome 2.22 </li>
<li>Firefox 3 (aún en beta&#8230; y por lo tanto algo arriesgado)</li>
<li>PulseAudio</li>
</ul>
<p>Pero os aseguro que vienen muchísimas más. ¡Wubi! para instalar Ubuntu -en Windows- (sin particionar el disco duro).</p>
<p>Al mismo tiempo Canonical ha lanzado también otras distribuciones. Algunas de las más importantes son: <a href="http://www.kubuntu.org/">Kubuntu</a>,<a href="http://www.xubuntu.org/"> Xubuntu</a>, <a href="http://www.edubuntu.org/">Edubuntu</a> y <a href="http://www.gobuntu.org/">Gobuntu</a> (redirecciona a Ubuntu.com). Esta última es la nueva del grupo y promete ser <strong>100% software libre, sin código ni drivers no-libres</strong> (por lo que quizás en muchos ordenadores falte cierto soporte de hardware).</p>
<p>En unos días os traeré una Review completa. <strong>Ahora&#8230; a disfrutar con el nuevo Ubuntu!</strong> <img src='http://boozox.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/software-libre/%c2%a1%c2%a1ya-tenemos-ubuntu-804-hardy-heron-lts-en-la-calle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOWTO instalación estandar de Firefox 3.x en cualquier distribución de Linux</title>
		<link>http://boozox.net/software-libre/howto-instalacion-estandar-de-firefox-3x-en-cualquier-distribucion-de-linux/</link>
		<comments>http://boozox.net/software-libre/howto-instalacion-estandar-de-firefox-3x-en-cualquier-distribucion-de-linux/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 18:28:02 +0000</pubDate>
		<dc:creator>José Cabo</dc:creator>
				<category><![CDATA[Aplicaciones]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://boozox.net/software-libre/howto-instalacion-estandar-de-firefox-3x-en-cualquier-distribucion-de-linux/</guid>
		<description><![CDATA[El otro día estaba en mi habitación picando teclas cuando mi compañero Alex me preguntó sobre cómo demonios se instalaba Firefox 3 (beta 5) descargado desde la web de Mozilla. Quizás sea un buen momento para hablar de como hacerlo. Muchas empresas o incluso programadores se toman la libertad de compilar ellos mismos el código [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día estaba en mi habitación picando teclas cuando mi compañero Alex me preguntó sobre <strong>cómo demonios se instalaba Firefox 3 (beta 5) descargado desde <a href="http://www.mozilla.com/en-US/firefox/all-beta.html">la web de Mozilla</a></strong>. Quizás sea un buen momento para hablar de como hacerlo.</p>
<p>Muchas empresas o incluso programadores se toman la libertad de compilar ellos mismos el código fuente de la aplicación que quieren dar a conocer para ahorrar la molestia a los usuarios (muchas veces por vagos ni nos molestamos en compilar). Suele venir en un paquete <a href="http://es.wikipedia.org/wiki/Deb">deb</a> o <a href="http://en.wikipedia.org/wiki/RPM_Package_Manager">rpm</a> pero la gran mayoría de las veces lo hace como un paquete comprimido (suele ser .tar.gz). <strong>Es el caso de Mozilla con Firefox</strong>.</p>
<p>Podemos descargar Firefox en nuestro idioma y para nuestro Sistema Operativo. Vendrá en un paquete .tar.gz (un paquete comprimido) con lo que dentro estarán los binarios (previamente compilados). Podríamos entender que dentro de <em>eso</em> está el programa que queremos &#8220;<em>instalar</em>&#8220;.</p>
<p>Como ya sabéis, en Linux las cosas no se instalan&#8230; bueno, no existe una carpeta específica para instalar las cosas. No es que las podamos instalar donde queramos, que también, pero el sistema nos da esa libertad. Yo, por mi parte, recomendaría su instalación en /opt/firefox/ y aun así, si solo queremos echar un vistazo simplemente ejecutarla desde el propio fichero descomprimido (sin instalar).</p>
<p>Un proceso sencillo y en modo gráfico sería algo algo así:</p>
<ol>
<li>Descomprimimos el fichero descargado .tar.gz (donde sea).</li>
<li>Obtendremos una carpeta llamada <strong>firefox</strong>. Su contenido o ella misma la deberemos copiar a <strong>/opt/firefox</strong> o la que hayamos decidido&#8230; (recuerda ejecutar nautilus como root: <strong>$ sudo nautilus /opt/</strong> (en caso de gnome en Ubuntu) sino no tendrás privilegios en esa carpeta).</li>
<li>Ejecutamos Mozilla Firefox con <strong>doble clic</strong> en el fichero llamado firefox ó <strong>$ /opt/firefox/firefox</strong> ó <strong>$ ./firefox</strong> si estamos en el mismo directorio.</li>
<li>¡A probarlo! <img src='http://boozox.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </li>
</ol>
<p style="text-align:center;" ><img src='http://boozox.net/wp-content/firefox3b5pant1.png' alt='firefox3b5pant1.png' /></p>
<p><strong>Resumen:</strong> Descomprimes, copias el directorio donde se quiera y&#8230; ejecutas la aplicación.</p>
<p><strong>Nota:</strong> No intentes abrir Firefox 3 con otra versión de Firefox abierta pues se abrirá otra ventana de la versión que tienes ya abierta. Cierra antes cualquier proceso de la versión anterior (aplicable a cualquier Sistema Operativo).<br />
<strong>Nota2:</strong> Mozilla Firefox comparte <strong>TODAS</strong> las preferencias, cookies, historial y bueno, todo xD. Así que posiblemente al volver a la versión 2 de Mozilla Firefox tengáis ciertas cosas modificadas. Si no sabéis solucionarlo preguntad.</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/software-libre/howto-instalacion-estandar-de-firefox-3x-en-cualquier-distribucion-de-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sorprendentemente indignante: que ganas tengo de que salga Firefox 3</title>
		<link>http://boozox.net/software-libre/sorprendentemente-indignante-que-ganas-tengo-de-que-salga-firefox-3/</link>
		<comments>http://boozox.net/software-libre/sorprendentemente-indignante-que-ganas-tengo-de-que-salga-firefox-3/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 21:36:49 +0000</pubDate>
		<dc:creator>José Cabo</dc:creator>
				<category><![CDATA[Comparativa]]></category>
		<category><![CDATA[Curioso]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://boozox.net/software-libre/sorprendentemente-indignante-que-ganas-tengo-de-que-salga-firefox-3/</guid>
		<description><![CDATA[He llegado a casa después de tener el navegador Firefox abierto en Ubuntu Gutsy Gibbon durante un día entero y&#8230; los resultados han sido sorprendentes a la par de indignantes. Vamos, que me han entristecido bastante. ¡¡¡Que ganas tengo de que salga Firefox 3!!! y nos solucione esto&#8230; ¡¡Y con poco más de 20 pestañas!! [...]]]></description>
			<content:encoded><![CDATA[<p>He llegado a casa después de tener el navegador Firefox abierto en Ubuntu Gutsy Gibbon durante un día entero y&#8230; los resultados han sido sorprendentes a la par de indignantes. Vamos, que me han entristecido bastante.<br />
<strong>¡¡¡<a href="http://www.anieto2k.com/2008/02/13/probando-firefox-3-beta-3/">Que ganas tengo de que salga Firefox 3</a>!!!</strong> y <a href="http://www.anieto2k.com/2008/02/18/navegadores-web-y-el-consumo-de-memoria/">nos solucione esto</a>&#8230; <a href="http://medon.lunarservers.com/suspended.page/?p=4603">¡¡Y con poco más de 20 pestañas!!</a></p>
<div style="text-align:center;">
<a href='http://boozox.net/wp-content/consumfirefxmemgran.png' title='consumfirefxmempeq.png'><img src='http://boozox.net/wp-content/consumfirefxmempeq.png' alt='consumfirefxmempeq.png' /></a><br />
<strong>Pinchad en la imagen.</strong>
</div>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/software-libre/sorprendentemente-indignante-que-ganas-tengo-de-que-salga-firefox-3/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Para mí, el software libre es&#8230;.</title>
		<link>http://boozox.net/software-libre/para-mi-el-software-libre-es/</link>
		<comments>http://boozox.net/software-libre/para-mi-el-software-libre-es/#comments</comments>
		<pubDate>Sat, 16 Feb 2008 04:54:20 +0000</pubDate>
		<dc:creator>Alex Barros</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Licencias]]></category>
		<category><![CDATA[Software libre]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://boozox.net/software-libre/para-mi-el-software-libre-es/</guid>
		<description><![CDATA[Navegando entre mis feeds, he topado con un post en PuntoGeek, sobre un informe alertando de que &#8220;utilizar software de código abierto no es sinónimo de 100% de seguridad&#8220;, tratando este fenómeno de &#8220;mito&#8221; Tras leer el artículo (el informe no lo leí, porque hay que rellenar un extenso formulario para leerlo, aún no lo [...]]]></description>
			<content:encoded><![CDATA[<p>Navegando entre mis <a href="http://es.wikipedia.org/wiki/Feed">feeds</a>, he topado con <a href="http://www.puntogeek.com/2008/02/16/descubriendo-la-verdad-detras-de-los-mitos-de-la-seguridad-del-codigo-abierto-2">un post en PuntoGeek</a>, sobre un informe alertando de que &#8220;<em>utilizar software de código abierto no es sinónimo de 100% de seguridad</em>&#8220;, tratando este fenómeno de &#8220;<em>mito</em>&#8221;</p>
<p>Tras leer el artículo (el informe no lo leí, porque <strong>hay que rellenar un extenso formulario para leerlo</strong>, aún no lo comprendo) publiqué un comentario que me gustaría reproducir aquí, para poder compartir con vosotros <strong>mi opinión sobre el Software Libre</strong>:</p>
<blockquote><p>
      Nos olvidamos de lo esencial:</p>
<p>      No se defiende el Software Libre por ser más seguro, ni por ser gratuito, ni por crear comunidad. Todo esto depende del proyecto en concreto (aúnque estos tres fenómenos se cumplen a menudo en el S.L. )</p>
<p>      Defender el software libre, es defender que la cultura sea Libre. Una sociedad prospera si su cultura se comparte. Música, novelas, arte gráfico, cura de enfermedades, técnicas de fermentación…. y, por qué no? * código de programas *</p>
<p>      Un programa software libre podrá ser inseguro, de pago y un fiasco en popularidad, pero ese código será accesible a programadores, que podrán contribuir a mejorarlo en favor de la sociedad.</p>
<p>      Sabemos además que no es una utopía, Ubuntu está ganando cada vez más terreno, con millones de usuarios por el mundo, Firefox podría convertirse en el navegador mayoritario (ya lo es en algunas regiones) e incluso Google, Youtube o Flickr son aplicaciones montadas sobre Software Libre.</p>
<p>      Cada un@ es libre de opinar, pero las cartas están sobre la mesa, y las evidencias nadie las puede negar.</p>
<p>      Doy mi apollo incondicional al Software Libre, e invito a todos y todas a conocer el gran potencial de este movimiento ideológico.</p>
</blockquote>
<p>Si te quieres informar más, la <a href="http://es.wikipedia.org/wiki/Software_libre">Wikipedia</a> es un buen lugar para comenzar. (He mencionado que <a href="http://es.wikipedia.org/wiki/Wikipedia#Software_y_hardware">Wikipedia es Software Libre</a> (<a href="http://es.wikipedia.org/wiki/GNU_GPL">GPL</a>)?)</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/software-libre/para-mi-el-software-libre-es/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Bug en Ubuntu le incapacita para tramitar URL con guión: URL-.com</title>
		<link>http://boozox.net/linux/bug-en-ubuntu-le-incapacita-para-tramitar-url-con-guion-url-com/</link>
		<comments>http://boozox.net/linux/bug-en-ubuntu-le-incapacita-para-tramitar-url-con-guion-url-com/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 06:30:24 +0000</pubDate>
		<dc:creator>José Cabo</dc:creator>
				<category><![CDATA[Bug]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://boozox.net/linux/bug-en-ubuntu-le-incapacita-para-tramitar-url-con-guion-url-com/</guid>
		<description><![CDATA[Gracias a mi compañero Alex que me ha enlazado a una noticia en menéame donde se informa de un bug en lauchpad de Ubuntu reportando que Linux es incapaz de tramitar una URL, independientemente de la aplicación que se use (Firefox, Lynx, ping, etc), acabada en -.com (supongo que el resto de dominios además del [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float:right;" src='http://boozox.net/wp-content/tuxbigger.png' alt='tuxbigger.png' />Gracias a mi compañero Alex que me ha enlazado a una <a href="http://meneame.net/story/linux-no-capaz-acceder-urls-guion-nombre">noticia en menéame</a> donde se informa de un bug en lauchpad de Ubuntu reportando que Linux es incapaz de tramitar una URL, independientemente de la aplicación que se use (Firefox, Lynx, ping, etc), acabada en <strong>-.com</strong> (<del datetime="2007-12-04T22:59:27+00:00">supongo que el resto de dominios además del COM están incluidos</del> <em>Sí, están incluidos cualquier tipo de dominio</em>).</p>
<p>En otros sistemas operativos, en principio, funciona (Windows, Mac, Solaris, &#8230;) en cambio en Ubuntu GNU/Linux no se puede. No puedo afirmar si es un problema que respecta solamente a Ubuntu o a todas las distribuciones de GNU/Linux. Según voy informándome, <strong>probablemente sea de alguna librería del kernel</strong> y por lo tanto <strong>es posible que esté en todas las distribuciones</strong>, no lo se. En ese caso, la corrección es más complicada. Aun así y debido a que es una librería (siempre manejando casos hipotéticos)<strong> con una actualización</strong> de la empresa que gestiona la distribución se debería de solucionar lo antes posible (Canonical).</p>
<p>URL por si queréis reportar vuestras experiencias desde otras distribuciones (por favor) y Sistemas Operativos:<br />
<a href="http://-uno-.blogspot.com/">http://-uno-.blogspot.com/</a> y <a href="http://gui-.deviantart.com">http://gui-.deviantart.com/</a></p>
<p><a href="https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/121467">Launchpad bug #121467</a></p>
<p><strong>Actualización [14:25 5-12-2007]</strong>: Resulta que no es un bug, al menos no por lo que significa tal cual&#8230; GNU/Linux es el único que cumple el estándar para el manejo de URL y el resto de SO&#8230; no. Desde mi punto de vista, aunque no se cumpla el estándar, no veo ninguna objeción como para no incluir dicho soporte (el del guioncito) puesto que limita el acceso total a esos dominios desde un sistema Linux.</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/linux/bug-en-ubuntu-le-incapacita-para-tramitar-url-con-guion-url-com/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Canonical lanza PPA, un servicio del lauchpad para crear ejecutables en deb</title>
		<link>http://boozox.net/linux/canonical-lanza-ppa-un-servicio-del-lauchpad-para-crear-ejecutables-en-deb/</link>
		<comments>http://boozox.net/linux/canonical-lanza-ppa-un-servicio-del-lauchpad-para-crear-ejecutables-en-deb/#comments</comments>
		<pubDate>Thu, 29 Nov 2007 13:04:26 +0000</pubDate>
		<dc:creator>José Cabo</dc:creator>
				<category><![CDATA[Canonical]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://boozox.net/linux/canonical-lanza-ppa-un-servicio-del-lauchpad-para-crear-ejecutables-en-deb/</guid>
		<description><![CDATA[Canonical anuncia la salida de PPA, un servicio para desarrolladores y usuarios de lauchpad. Consiste en que el usuario, con su cuenta con un espacio máximo de 1GB, sube el código fuente y el mismo servicio se encargaría de compilarlo y empaquetarlo en un .deb. Además, te honra con un repositorio &#8220;personal&#8221; que puede usar [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float:right;" src='http://boozox.net/wp-content/launchpad-heading.png' alt='launchpad-heading.png' />Canonical anuncia la salida de PPA, <strong>un servicio para desarrolladores</strong> y usuarios de lauchpad. Consiste en que el usuario, con su cuenta con un espacio máximo de 1GB, sube el código fuente y el mismo servicio <strong>se encargaría de compilarlo y empaquetarlo en un .deb</strong>. Además, te honra con un <strong>repositorio &#8220;personal&#8221;</strong> que puede usar quien quiera.</p>
<p>Vamos!!, creo que es de lo mejorcito que se ha podido idear. Tenemos SourceForge, pero este es el usuario quien se encarga de subir los binarios ya compilados. No es lo mismo. Ahora podremos <strong>subir el código fuente, se compilaría y estaría empaquetado</strong> para su uso en distribuciones con soporte Debian (aunque con objetivos de uso de las Ubuntu).</p>
<p><a href="https://help.launchpad.net/PPAQuickStart">Aquí</a> tenéis las instrucciones para activar vuestro servicio PPA además de como usarlo y subir vuestros códigos fuentes.</p>
<p><a href="https://launchpad.net/ubuntu/+ppas">Enlace a los repositorios de los usuarios</a><br />
<a href="http://www.ubuntu.com/news/launchpad-ppa">Anuncio de Canonical</a></p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/linux/canonical-lanza-ppa-un-servicio-del-lauchpad-para-crear-ejecutables-en-deb/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>¿Qué orden de nombres debería usar para nombrar a las Ubuntu&#8217;s?</title>
		<link>http://boozox.net/linux/%c2%bfque-orden-de-nombres-deberia-usar-para-nombrar-a-las-ubuntus/</link>
		<comments>http://boozox.net/linux/%c2%bfque-orden-de-nombres-deberia-usar-para-nombrar-a-las-ubuntus/#comments</comments>
		<pubDate>Thu, 25 Oct 2007 20:15:51 +0000</pubDate>
		<dc:creator>José Cabo</dc:creator>
				<category><![CDATA[Canonical]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Pa' gustos colores]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://boozox.net/linux/%c2%bfque-orden-de-nombres-deberia-usar-para-nombrar-a-las-ubuntus/</guid>
		<description><![CDATA[¿Qué orden de versiones, sabores y gustos debería usar para nombrar correctamente a las diferentes Ubuntu&#8217;s que han salido desde el 2004? Yo mismo me he hecho esa pregunta, qué nomenclatura debería usar para nombrar correctamente y al mismo tiempo de forma vistosa y con estilo el propio nombre de Ubuntu. Ubuntu lo que son [...]]]></description>
			<content:encoded><![CDATA[<p><strong>¿Qué orden de versiones, sabores y gustos debería usar para nombrar correctamente a las diferentes Ubuntu&#8217;s que han salido desde el 2004?</strong></p>
<p>Yo mismo me he hecho esa pregunta, qué nomenclatura debería usar para nombrar correctamente y al mismo tiempo de forma vistosa y con estilo el propio nombre de Ubuntu. Ubuntu lo que son nombres ha tenido para parir; versiones; gustos; X&#8217;s; K&#8217;s; etc&#8230;. pero pocas veces, a la hora de referirnos a éstas o simplemente a la hora de escribir en el CD hemos sabido como hacerlo.</p>
<p>Yo os traigo un método que creo que es el que se debería usar ahora, aunque admite variaciones y opiniones. Todo está basado en permitir una fácil y <strong>completa lectura</strong>.</p>
<p>Estos son ejemplo:</p>
<p>* <strong>Para Ubuntu Feisty:</strong><br />
&#8211; Ubuntu GNU/Linux 7.04 Feisty Fawn i384 Desktop BETA1<br />
&#8211; Ubuntu GNU/Linux 7.10 Gutsy Gibbon AMD64 Alternate<br />
&#8211; KUbuntu GNU/Linux 7.10 Gutsy Gibbon i384 Desktop<br />
* <strong>Para Dapper</strong><br />
&#8211; Ubuntu GNU/Linux 6.06.1 LTS Dapper Drake i384 InstallCD<br />
.<br />
.<br />
.</p>
<p>Acabáis de ver con ejemplos una forma fácil de nombrar las distribuciones y versiones de Ubuntu. Básicamente y en forma de esquema quedaría:</p>
<p><strong>[DISTRIBUCIÓN] [SISTEMA-OPERATIVO] [VERSIÓN] [NOMBRE DE LA VERSIÓN] [ARQUITECTURA] [TYPE] [EXTRAS]</strong></p>
<p>En donde:<br />
<strong>[DISTRIBUCIÓN]</strong> Son los diferentes gustos: <em>Ubuntu, Kubuntu, Xubuntu, Edubuntu, Gobuntu, ?ubuntu, &#8230;.</em><br />
<strong>[SISTEMA-OPERATIVO]</strong> Es la etiqueta <strong>MÁS IMPORTANTE</strong> de todas. Nos recuerda que Ubuntu es una distribución entre otras tantas y que el sistema operativo es Linux: <em><strong>GNU/Linux</strong></em>. Porque ni Ubuntu es Linux ni Linux es Ubuntu. Sin éste, Ubuntu no existiría de ninguna de las maneras.<br />
<strong>[VERSIÓN]</strong> Básicamente&#8230; se refiere al número de la versión que correspondiente: <em>4.10; 5.04; 5.10; 6.06; 6.06.1; 6.10; 7.04; 7.10; &#8230;</em><br />
<strong>[NOMBRE DE LA VERSIÓN]</strong> El nombre de la versión que se le ha dado: <em>Warty Warthog; Hoary Hedgehog; Breezy Badger; Dapper Drake; Edgy Eft; Feisty Fawn; Gutsy Gibbon; &#8230;</em> En esta etiqueta se incluiría si lo fuera <em>&#8220;LTS&#8221;</em> (En Dapper y en la próxima Hardy, por ejemplo).<br />
<strong>[ARQUITECTURA]</strong> Para la arquitectura a la que se destinará la instalación: <em>i386 (32bits); AMD64 (64bits); MAC</em><br />
<strong>[TYPE]</strong> El tipo de CD que es: <em>LiveCD; InstallCD; Desktop; Alternate; ¿Server?;&#8230;</em><br />
<strong>[EXTRAS]</strong> Los extras que podamos añadir como información. Esto puede ser si es una <em>RC</em>, una <em>BETA</em>, una &#8216;<em>flight</em>&#8216;, etc.</p>
<p>Se aceptan sugerencias.</p>
]]></content:encoded>
			<wfw:commentRss>http://boozox.net/linux/%c2%bfque-orden-de-nombres-deberia-usar-para-nombrar-a-las-ubuntus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

