<?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>Kabytes &#187; Tutoriales</title>
	<atom:link href="http://www.kabytes.com/category/tutoriales/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kabytes.com</link>
	<description></description>
	<lastBuildDate>Wed, 08 Feb 2012 16:47:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Tutorial básico: Debug en PHP utilizando FirePHP</title>
		<link>http://www.kabytes.com/tutoriales/tutorial-basico-debug-en-php-utilizando-firephp/</link>
		<comments>http://www.kabytes.com/tutoriales/tutorial-basico-debug-en-php-utilizando-firephp/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 17:57:14 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[FirePHP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=22853</guid>
		<description><![CDATA[&#8220;Depurar es dos veces más difícil que escribir el código en primer lugar. Entonces si escribes el código tan astutamente como sea posible, no eres -por definición- tan listo como para depurarlo.&#8221; Brian Kernighan Durante muchos años mi proceso de depuración en PHP se baso simplemente en utilizar echo y print_r, sinceramente no necesite más [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<em>Depurar es dos veces más difícil que escribir el código en primer lugar. Entonces si escribes el código tan astutamente como sea posible, no eres -por definición- tan listo como para depurarlo.</em>&#8221; Brian Kernighan</p>
<p>Durante muchos años mi proceso de depuración en PHP se baso simplemente en utilizar echo y print_r, sinceramente no necesite más durante mucho tiempo.</p>
<p>Pero así como esta metodología es efectiva y extremadamente simple, también tiene restricciones, especialmente en aquellos sitios en donde PHP se ejecuta en segundo plano, sitios que por ejemplo utilizan AJAX hacen que el proceso de depurar mostrando mensajes directamente en el documento se vuelva algo muy dificultoso. La solución FirePHP.</p>
<p><img class="alignnone size-full wp-image-22880" style="border: none;" title="tutorial debug php firephp" src="http://www.kabytes.com/wp-content/uploads/2011/07/tutorial-debug-php-firephp.png" alt="tutorial debug php firephp" width="600" height="272" /></p>
<h2>¿Que es FirePHP?</h2>
<p>FirePHP es un complemento de Firefox que funciona de forma conjunta con otra extensión que los desarrolladores conocemos muy bien, estoy hablando de Firebug. FirePHP es una herramienta fundamental para aquellos que gusten de depurar código PHP de forma simple y sin complicaciones.</p>
<p>FirePHP es complemente gratuito, así que no hay excusas para aprender a utilizarlo.</p>
<p>El complemento de Firefox FirePHP funciona enviando mensajes a la consola de Firebug, estos mensajes pueden configurarse de distintos modos, e inclusive permiten el envío de variables para mostrar su contenido directamente en la consola.</p>
<h2>¿Que necesitamos?</h2>
<p>Muy pocas cosas, lo mejor, todas gratuitas:</p>
<ul>
<li>Firefox</li>
<li>Firebug</li>
<li>FirePHP</li>
<li>Un servidor con PHP corriendo, comúnmente utilizaremos un entorno LAMP, si quieren instalarlo facilmente en Windows te recomiendo <a title="EasyPHP" href="http://www.kabytes.com/software/easyphp-servidor-apache-php-mysql/">EasyPHP</a>, en Mac MAMP y finalmente si tienes una computadora vieja en casa puedes <a title="Montar un servidor de pruebas Apache, PHP, MySQL" href="http://www.kabytes.com/programacion/montar-un-servidor-de-desarrollo-ubuntu-apache-php-y-mysql/">montar un servidor casero de pruebas</a>.</li>
</ul>
<p>Eso es todo.</p>
<h2>¿Como configurar FirePHP?</h2>
<p>1º Lo primero que necesitamos es ir al sitio oficial de <a title="FirePHP" href="http://www.firephp.org/">FirePHP</a> e instalar el complemento en Firefox, esto no requiere ningún conocimiento, simplemente instalamos la extensión. Obviamente <a title="Firebug" href="http://getfirebug.com/">Firebug</a> ya debería estar instalado anteriormente.</p>
<p>2º Ahora necesitamos descarga, también de la web oficial de FirePHP los archivos PHP necesarios para crear la comunicación entre nuestra aplicación PHP y la extensión, las bibliotecas necesarias se denominan FirePHPCore.</p>
<p>Una vez que descargues y descomprimas el core de FirePHP nos vamos a encontrar con una carpeta con el nombre FirePHPCore-0.3.2 2 (última versión estable del core), dentro de esta carpeta ingresamos a Lib y copiamos íntegramente la carpeta que encontramos dentro, la carpeta se llama <strong>FirePHPCore</strong>.</p>
<p>La carpeta FirePHPCore la debemos copiar y pegar directamente en el proyecto que queremos depurar, esto no es obligatorio, pero si practico, ya que después tendremos que colocar la ruta a la carpeta desde nuestra aplicación.</p>
<p>3º La configuración es muy simple, dentro del archivo PHP que deseamos depurar instalamos la biblioteca e inicializamos la instancia de FirePHP:</p>
<pre>&lt;?php
require_once('FirePHPCore/FirePHP.class.php');
ob_start();
$firephp = FirePHP::getInstance(true);
?&gt;</pre>
<p>4º Ahora simplemente enviamos los mensajes que deseemos a la consola, existen varios métodos, el más simple es:</p>
<pre>$firephp-&gt;log('Mensaje enviado a consola', 'Mensaje');</pre>
<p>Para ver el mensaje, ingresamos a Firefox, abrimos Firebug y nos dirigimos a la pestaña “consola” y lo que veremos será lo siguiente:</p>
<p><img class="alignnone size-full wp-image-22875" title="tutorial firebug español" src="http://www.kabytes.com/wp-content/uploads/2011/07/tutorial-firebug-espanol.png" alt="tutorial firebug español" width="577" height="100" /></p>
<p>Y eso es todo, pero vamos a ver algunas cosas más para aprovechar mejor la potencia de FirePHP.</p>
<h2>Configurar tipos de mensajes</h2>
<p>Con motivos de aprovechar mejor los distintos tipos de mensajes, y así lograr organizarnos mejor, podemos indicarle a FirePHP que tipo vamos a utilizar, para hacerlo simplemente indicamos el tipo al momento de inicializar, los 4 tipos distintos de mensajes posibles son:</p>
<pre>$firephp-&gt;log('Un mensaje plano');
$firephp-&gt;info('Un mensaje de información');
$firephp-&gt;warn('Una alerta');
$firephp-&gt;error('Enviar un mensaje de error');</pre>
<p>El resultado:</p>
<p><img class="alignnone size-full wp-image-22876" title="tipos mensajes firebug tutorial" src="http://www.kabytes.com/wp-content/uploads/2011/07/tipos-mensajes-firebug-tutorial.png" alt="tipos mensajes firebug tutorial" width="577" height="184" /></p>
<h2>Envío de variables y formato de salida</h2>
<p>Obviamente, de solo mensajes no vive el hombre, probablemente necesitemos mostrar arrays, objetos, etc. Por ejemplo si lo que queremos es mostrar el contenido de un array y de paso formatearlo como una tabla podemos hacer algo similar a esto:</p>
<pre>$table   = array();
$table[] = array('Titulo 1','Titulo 2', 'Titulo 3');
$table[] = array('Col 1, fila 1','Col 2, fila 1','Col 3, fila 1');
$table[] = array('Col 1, fila 2','Col 2, fila 2','Col 3, fila 2');
$table[] = array('Col 1, fila 3','Col 2, fila 3','Col 3, fila 3');

$firephp-&gt;table('Tabla', $table);  

fb($table, 'Tabla', FirePHP::TABLE);</pre>
<p>El resultado:</p>
<p><img class="alignnone size-full wp-image-22877" title="formato mensajes firebug" src="http://www.kabytes.com/wp-content/uploads/2011/07/formato-mensajes-firebug.png" alt="formato mensajes firebug" width="577" height="200" /></p>
<p>Este tutorial es básico, FirePHP cuenta con más opciones de configuración, en mi caso y por el momento estas que describí en la entrada son las que más utilizo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/tutorial-basico-debug-en-php-utilizando-firephp/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Dibujo para principiantes: el cuerpo humano</title>
		<link>http://www.kabytes.com/tutoriales/dibujo-para-principiantes-el-cuerpo-humano/</link>
		<comments>http://www.kabytes.com/tutoriales/dibujo-para-principiantes-el-cuerpo-humano/#comments</comments>
		<pubDate>Tue, 03 May 2011 17:12:31 +0000</pubDate>
		<dc:creator>Tamara</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Dibujos]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=21076</guid>
		<description><![CDATA[Desde muy pequeña me encontré siempre relacionada con el dibujo y el arte, gracias a mi madre quien es profesora y ha intentado por todos los medios que aprendiera. Lamento no haberme dedicado el tiempo que hubiese sido necesario, ya que no muchos pueden contar con esta ventaja. Cuando encontré esta guía, me fue imposible [...]]]></description>
			<content:encoded><![CDATA[<p>Desde muy pequeña me encontré siempre relacionada con el dibujo y el arte, gracias a mi madre quien es profesora y ha intentado por todos los medios que aprendiera. Lamento no haberme dedicado el tiempo que hubiese sido necesario, ya que no muchos pueden contar con esta ventaja. Cuando encontré esta guía, me fue imposible no recordar los momentos en los que ella me enseñaba las cuestiones básicas del dibujo, que pueden considerarse necesarias para muchísimas cosas, no solo en lo profesional sino en la vida.</p>
<p>Hoy en día, ya grande y con más computadora que lápiz y papel, puedo reconocer que hubiese sido fantástico aprender en ese momento, aunque nunca es tarde para empezar. Para ello hay sitios que se dedican a enseñar a través de tutoriales para <a title="Aprender a dibujar gratis online" href="http://www.kabytes.com/tutoriales/aprende-a-dibujar-gratis/">aprender a dibujar</a> y otros, como en este caso, que realizaron una infografía sobre las cuestiones básicas que debemos tener en cuenta para dibujar el cuerpo humano.</p>
<p><img class="alignnone size-full wp-image-21077" title="Dibujo para principiantes: el cuerpo humano" src="http://www.kabytes.com/wp-content/uploads/2011/05/Dibujo-para-principiantes-el-cuerpo-humano.jpg" alt="Infografía sobre bases del dibujo del cuerpo humano" width="570" height="840" /></p>
<p>Descargar <a title="Xanarts" href="http://www.xanarts.com/como-dibujar-el-cuerpo-humano/">Infografía</a> | <strong>Xanarts</strong></p>
<p>Obviamente el dibujo no es algo que pueda aprenderse instantáneamente, como casi todo en la vida requiere de práctica, empeño y algo que para mi es fundamental: voluntad. No importa que los primeros bosquejos nos parezcan horribles, hay que seguir intentando.</p>
<p>Me encuentro con que esta infografía va por partes y permite analizar parte a parte cada sector del cuerpo humano, las diferentes perspectivas que necesitamos tener en cuenta para lograr un dibujo realista y sobre todo, algunas cuestiones anatómicas que son esenciales incluso para que luego de avanzar sobre la práctica podamos modificar, aumentar o deformar a gusto.</p>
<p>Es una ayuda importante si están pensando en comenzar a dibujar, y un excelente lugar de consulta para todos aquellos que ya dibujan de forma amateur y desean humanizar sus creaciones. Espero les sirva de cualquier manera, ya que crear, lo que sea, expresa el alma en otra dimensión.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/dibujo-para-principiantes-el-cuerpo-humano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como leer tus propios libros en formato epub en el iPod e iPhone</title>
		<link>http://www.kabytes.com/tutoriales/como-leer-tus-propios-libros-en-formato-epub-en-el-ipod-e-iphone/</link>
		<comments>http://www.kabytes.com/tutoriales/como-leer-tus-propios-libros-en-formato-epub-en-el-ipod-e-iphone/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 13:15:15 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Aplicaciones Mac]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[iBooks]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod]]></category>
		<category><![CDATA[Libros]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=19382</guid>
		<description><![CDATA[Ayer les mostraba un programa gratuito para leer archivos epub, hoy les quería mostrar como agregar a nuestro iPhone, iPod (y probablemente iPad) un libro en formato epub muy fácilmente. 1) Lo primero que hay que hacer es abrir el iTunes, una vez dentro nos dirigimos a: Archivo -&#62; Añadir a la biblioteca. Y seleccionamos [...]]]></description>
			<content:encoded><![CDATA[<p>Ayer les mostraba un <a title="Programa gratuito para leer epub" href="http://www.kabytes.com/software/programa-gratuito-para-leer-archivos-epub/">programa gratuito para leer archivos epub</a>, hoy les quería mostrar como agregar a nuestro iPhone, iPod (y probablemente iPad) un libro en formato epub muy fácilmente.</p>
<p>1) Lo primero que hay que hacer es abrir el iTunes, una vez dentro nos dirigimos a:<br />
Archivo -&gt; Añadir a la biblioteca. Y seleccionamos el archivo epub que queremos importar.</p>
<p><img class="alignnone size-full wp-image-19385" title="agregar epub itunes" src="http://www.kabytes.com/wp-content/uploads/2011/01/agregar-epub-itunes.png" alt="agregar epub itunes" width="495" height="255" /></p>
<p>2) Una vez seleccionado nos aparece dentro de la biblioteca la opción de Libros. Ahora simplemente conectamos nuestro dispositivo, lo seleccionamos y nos dirigimos a la opción libros del menú superior.<br />
<img class="alignnone size-full wp-image-19386" title="agregar libro itunes" src="http://www.kabytes.com/wp-content/uploads/2011/01/agregar-libro-itunes.png" alt="agregar libro itunes" width="590" height="348" /></p>
<p>Ahora simplemente tildamos la opción de sincronizar libros, podemos seleccionar todos o bien solamente los que queremos sincronizar con nuestro dispositivo.</p>
<p>Una vez finalizado aceptamos los cambios y esperamos. Lo más probable si nunca leímos libros nativos desde el iTunes es que pida instalar una aplicación, ya solo iTunes nos recomienda iBooks que es gratuita, la instalamos y listo.</p>
<p>Eso es todo, al finalizar todo este proceso que no es para nada complejo nos dirigimos a nuestro dispositivo, abrimos iBooks y ahi tendremos nuestros libros listos para leer <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Así se ve iBooks con nuestro primer libro sincronizado:</p>
<p><img class="alignnone size-full wp-image-19391" title="lectura epub iphone" src="http://www.kabytes.com/wp-content/uploads/2011/02/lectura-epub-iphone.jpg" alt="lectura epub iphone" width="320" height="480" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/como-leer-tus-propios-libros-en-formato-epub-en-el-ipod-e-iphone/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Tutorial: Como realizar una visualización gráfica de una base de datos MySQL</title>
		<link>http://www.kabytes.com/programacion/tutorial-como-realizar-una-visualizacion-grafica-de-una-base-de-datos-mysql/</link>
		<comments>http://www.kabytes.com/programacion/tutorial-como-realizar-una-visualizacion-grafica-de-una-base-de-datos-mysql/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 17:30:28 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=18434</guid>
		<description><![CDATA[En muchas oportunidades nos vamos a ver trabajando con determinada base de datos en la que debido a su complejidad necesitaremos realizar una visualización gráfica por medio de un diagrama para encontrar posibles errores en el diseño, o bien utilizar esta herramienta para hallar posibles llaves o relaciones para optimizar el rendimiento. Realizar un diagrama [...]]]></description>
			<content:encoded><![CDATA[<p>En muchas oportunidades nos vamos a ver trabajando con determinada base de datos en la que debido a su complejidad necesitaremos realizar una visualización gráfica por medio de un diagrama para encontrar posibles errores en el diseño, o bien utilizar esta herramienta para hallar posibles llaves o relaciones para optimizar el rendimiento.</p>
<p>Realizar un diagrama de una base de datos es algo muy simple y rápido, y en mi caso se volvió en una necesidad, en muy pocos pasos les voy a explicar como pueden crear un diagrama de sus bases de datos en apenas unos segundos.</p>
<h2>Guía para visualizar gráficamente una base de datos MySQL</h2>
<p>1) Lo primero que necesitamos es el programa <a title="Mysql Workbench" href="http://wb.mysql.com/">MySQL Workbeanch</a>, un software muy potente, gratuito y disponible para los sistemas operativos Windows, Mac OS y las distros de Linux más utilizadas. Actualmente esta disponible la versión 5.2.31. La instalación es muy simple y es igual a la de cualquier otro programa.</p>
<p>2) Una vez instalado Mysql Workbench vamos a utilizar la opción disponible en su pagina de inicio “<strong>Create ERR Model From Existing Database</strong>”</p>
<p><img class="alignnone size-full wp-image-18435" title="crear EER modelo" src="http://www.kabytes.com/wp-content/uploads/2010/12/crear-eer-modelo.png" alt="crear EER modelo" width="500" height="136" /></p>
<p>Como se puede ver en la captura también tenemos disponible la opción de crear el diagrama en base a la importación de la sentencia de creación Mysql de una base de datos. En el ejemplo vamos a utilizar la opción de crear el diagrama utilizando una tabla ya existente.</p>
<p>Un <a href="http://es.wikipedia.org/wiki/Modelo_entidad-relaci%C3%B3n">EER</a> (Enhanced Entity Model) o en español seria algo como “Modelo Entidad-Relación” significa simplemente que vamos a crear un diagrama de relaciones, una especie de modelado de datos de determinado sistema de información. Lo interesante de esta forma de modelar es que los diagramas realizados van a tener listas con atributos y descripciones, algo importantísimo para determinar la utilidad real del uso de esta herramienta.</p>
<p>3) El siguiente paso es configurar la base de datos. En mi caso utilizo una base de datos que tengo configurada en mi computadora, de ahí que los datos son del localhost y con los valores por defecto. La herramienta funciona perfectamente con cualquier base de datos independientemente de su ubicación, por lo que van a poder crear un modelo por más que la base de datos se encuentre en un servidor en producción.</p>
<p><img class="alignnone size-full wp-image-18437" title="configurar base datos mysql" src="http://www.kabytes.com/wp-content/uploads/2010/12/configurar-base-datos-mysql.png" alt="configurar base datos mysql" width="590" height="385" /></p>
<p>4) En el próximo paso simplemente la base de datos se va a conectar, no tenemos que hacer nada, una vez que la conexión funciona simplemente pasamos al Select Schema.</p>
<p>5) Una vez conectada la herramienta con el servidor se nos pide que seleccionemos la base de datos a la cual le queremos realizar el esquema, la pantalla se ve de la siguiente manera, en mi caso voy a utilizar como ejemplo una base de datos creada por WordPress.</p>
<p><img class="alignnone size-full wp-image-18438" title="seleccionar base de datos" src="http://www.kabytes.com/wp-content/uploads/2010/12/seleccionar-base-de-datos.png" alt="seleccionar base de datos" width="590" height="386" /></p>
<p>6) Si todo salió bien, vamos a tener las tablas cargadas de la base de datos que seleccionamos en el paso anterior, ahora tenemos la opción de filtrar que tablas utilizar y cuales no, esta parte es importante si queremos aislar nuestro estudio a determinadas tablas.</p>
<p><img class="alignnone size-full wp-image-18439" title="seleccionar tablas" src="http://www.kabytes.com/wp-content/uploads/2010/12/seleccionar-tablas.png" alt="seleccionar tablas" width="590" height="383" /></p>
<p>7) Ahora solo nos quedan dos pantallas más que iremos aceptando y que no requieren acción, el programa solo se encarga de realizar todos los trabajos, finalmente nos vamos a encontrar con la base de datos diagramada perfectamente mostrando las tablas, sus relaciones, los datos y sus clases.</p>
<p>El resultado, la base de datos utilizada por WordPress de forma gráfica:</p>
<p><img class="alignnone size-full wp-image-18442" title="mysql diagrama" src="http://www.kabytes.com/wp-content/uploads/2010/12/mysql-diagrama.png" alt="mysql diagrama" width="590" height="490" /></p>
<p>Eso es todo, ¿Fácil verdad?</p>
<p>La base de datos de WordPress no utiliza relaciones, usa tablas MyISAM, por lo que la gráfica es solo útil para visualizar rápidamente el tipo de datos y la composición de las tablas. Cuando trabajamos con base de datos relacionales como innodb la herramienta cobra mucho más sentido ya que se disparan flechas mostrando las relaciones entre las distintas claves foráneas, les aseguro que es muy pero muy útil hacer eso cuando buscamos relaciones <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/programacion/tutorial-como-realizar-una-visualizacion-grafica-de-una-base-de-datos-mysql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tutorial básico de mod_pagespeed para Apache 2</title>
		<link>http://www.kabytes.com/tutoriales/tutorial-de-mod_pagespeed-para-apache-2/</link>
		<comments>http://www.kabytes.com/tutoriales/tutorial-de-mod_pagespeed-para-apache-2/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 18:15:20 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=17621</guid>
		<description><![CDATA[La semana pasada Google lanzo su proyecto de optimización más reciente se trata del modulo pagespeed para Apache 2, bajo su iniciativa de hacer la web más rápida. Cuidado a no confundir con la extensión Page Speed que también responde a la misma campaña pero que poco tiene que ver con este nuevo proyecto. Lo [...]]]></description>
			<content:encoded><![CDATA[<p>La semana pasada Google lanzo su proyecto de optimización más reciente se trata del <strong>modulo pagespeed para Apache 2</strong>, bajo su iniciativa de hacer la web más rápida. Cuidado a no confundir con la <a title="Tutorial Page Speed" href="http://www.kabytes.com/tutoriales/tutorial-basico-de-page-speed/">extensión Page Speed</a> que también responde a la misma campaña pero que poco tiene que ver con este nuevo proyecto.</p>
<p style="text-align: center;"><img class="size-full wp-image-17637 aligncenter" style="border: none;" title="guia mod_pagespeed" src="http://www.kabytes.com/wp-content/uploads/2010/11/tutorial-mod_pagespeed.jpg" alt="guia mod_pagespeed" width="572" height="76" /></p>
<p>Lo interesante de mod_pagespeed es que realiza de forma automática correcciones a nuestros sitios para que reflejen las mejores practicas para tener una web rápida, es decir, nos ayuda en la optimización sin prácticamente tocar una línea de código. Como yo siempre fui bastante reacio a las correcciones automáticas este fin de semana lo instale y realice varias pruebas, algunas con excelentes resultados y otros con no tanto.</p>
<p>Comencemos.</p>
<h2>Requerimientos para instalar mod_pagespeed</h2>
<ul>
<li>Acceso SSH a nuestro servidor, por lo general este tipo de acceso lo vamos a tener en servidores VPS o bien dedicados.</li>
<li>Consola SSH</li>
<li> Paciencia, cafe o cualquier snack que nos ayude emocionalmente <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </li>
</ul>
<h2>Instalación</h2>
<p>El modulo page speed esta disponible para las plataformas CentOS/Fedora (32-bit y 64-bit), Debian/Ubuntu (32-bit y 64-bit) y finalmente, como es de esperarse obviamente, para Apache 2.2.</p>
<p>La instalación varia según la plataforma, la forma de realizarla sugerida por Google es la siguiente:</p>
<p>Para instalar los paquetes en Debian/Ubuntu, ejecutar desde la consola con acceso root:<br />
<code> </code></p>
<pre><code>dpkg -i mod-pagespeed-*.deb
apt-get -f install</code></pre>
<p><code> </code><br />
Para CentOS/Fedora, ejecutar también como root:<br />
<code> </code></p>
<pre><code>yum localinstall mod-pagespeed-*.rpm</code></pre>
<p><code> </code><br />
o<br />
<code> </code></p>
<pre><code>rpm -i mod-pagespeed-*.rpm</code></pre>
<p><code> </code></p>
<p><strong>Nota 1</strong>: Si no cuentan con el repositorio de Google instalado (cosa muy probable) pueden hacerlo con el siguiente comando:<br />
<code> </code></p>
<pre><code>sudo touch /etc/default/mod-pagespeed</code></pre>
<p><code> </code></p>
<p><strong>Nota 2</strong>: Antes de comenzar la instalación es muy importante que busquen en Google si su proveedor de alojamiento cuenta con alguna opción de instalación automática. Por ejemplo Dreamhost permite la instalación con tan solo tildar una opción. Otro ejemplo es Godaddy que también tiene preinstalado el modulo. En caso contrario muchos proveedores como Mediatemple están brindando guías punto a punto de como instalar este modulo especialmente en base a sus servidores y su configuración.</p>
<h2>Editar el archivo pagespeed.conf</h2>
<p>Una vez que finalizamos la instalación y si todo salió bien vamos a poder editar el archivo de configuración de Page Speed, es justamente desde aquí que le vamos a decir al modulo que tipo de optimización vamos a querer realizar en nuestro sitio. Para editar este archivo podemos utilizar vi, por lo general la ruta del archivo será la siguiente:</p>
<p><code> </code></p>
<pre><code>vi /etc/httpd/conf.d/pagespeed.conf</code></pre>
<p><code> </code></p>
<p>Antes de hacer nada, vamos a buscar dos líneas en especial que son las siguientes:</p>
<p><code> </code></p>
<pre><code>ModPagespeedFileCachePath            "/var/mod_pagespeed/cache/"
ModPagespeedGeneratedFilePrefix      "/var/mod_pagespeed/files/"
</code></pre>
<p><code> </code></p>
<p>Estas lineas son muy importantes, indican donde se van a guardar los archivos generados por pagespeed como así también las cache dinámicas, por favor <strong>revisen si las carpetas indicadas están creadas y con permisos de escritura</strong>.</p>
<p>El archivo de configuración por defecto que viene con Page speed contiene una configuración básica de las distintas opciones, en si todo el archivo es bastante fácil de comprender, por ejemplo a continuación coloco un extracto de la instalación básica de los distintos filtros.</p>
<p><code> </code></p>
<pre><code>ModPagespeedFileCachePath            "/var/mod_pagespeed/cache/"
ModPagespeedFileCacheSizeKb          102400
ModPagespeedFileCacheCleanIntervalMs 3600000
ModPagespeedGeneratedFilePrefix      "/var/mod_pagespeed/files/"
ModPagespeedLRUCacheKbPerProcess     1024
ModPagespeedLRUCacheByteLimit        16384
ModPagespeedCssInlineMaxBytes        2048
ModPagespeedImgInlineMaxBytes        2048
ModPagespeedJsInlineMaxBytes         2048
ModPagespeedCssOutlineMinBytes       3000
ModPagespeedJsOutlineMinBytes        3000
</code></pre>
<p><strong>¿Filtros?</strong> Probablemente muchos se quedaron pensando a que me refería, o al menos le llamo la atención la palabra, por suerte <strong>los llamados filtros de Page Speed son los que nos permiten a nosotros configurar en su máximo esplendor este modulo de apache</strong>, con ellos vamos a determinar que queremos que haga exactamente.</p>
<h2>Uso de los filtros de Page Speed</h2>
<p>Los filtros pueden estar o no activos, para ello basta con colocar una directiva en cada caso:</p>
<p><strong>Desactivar filtros:</strong><br />
<code> </code></p>
<pre><code>ModPagespeedDisableFilters nombrefiltroA, nombrefiltroB</code></pre>
<p><code> </code></p>
<p><strong>Activando filtros:</strong><br />
<code> </code></p>
<pre><code>ModPagespeedEnableFilters nombrefiltroA, nombrefiltroB</code></pre>
<p><code> </code></p>
<p>Es muy importante tener en cuenta estas dos cosas, porque de aquí vamos a poder ir haciendo las respectivas pruebas. Un pequeño consejo, en el mismo archivo de configuración (pagespeed.conf) donde vamos ir activando o desactivando filtros según nuestras necesidades tenemos la línea de <em>pánico</em>, es decir, aquella que vamos a utilizar si hacemos algo que rompe todo en nuestro sitio <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> , la linea en cuestión en definitiva activa o desactiva el mod completo y es la siguiente:</p>
<pre><code>ModPagespeed on</code></pre>
<p>Si en lugar de on escribimos off vamos a desactivar el modulo completo, como dije antes, para usar el caso de <em>pánico</em> si vemos que algo que activamos hizo algún desastre <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<h2>Filtros de mod_pagespeed</h2>
<p>A continuación coloco los distintos <strong>filtros posibles de Page Speed</strong> y para que sirve cada uno de ellos, recuerden que para activarlos deben colocar ModPagespeedEnableFilters seguido del nombre del filtro, en caso de utilizar varios simplemente separen los nombres por comas.</p>
<h3>add_instrumentation</h3>
<p>Inserta en el código de forma automática un pequeño script javascript para controlar el tiempo de respuesta de nuestro sitio. El resultado luego lo podemos visualizar desde las estadísticas de Page Speed, las estadísticas vienen activadas por defecto al momento de instalar el modulo.</p>
<h3>extend_cache</h3>
<p>Brinda la posibilidad de potenciar el cacheo de elementos, para eso agrega un tiempo máximo de vida dentro de las cabeceras http, para aprovechar la capacidad de los navegadores modernos de guardar elementos en la cache local. Ademas utiliza un hash para renombrar los elementos que se encuentran en la cache.</p>
<p>Por ejemplo un elemento HTML y su cabecera http:</p>
<pre><code>HTML tag   : &lt;img src="logo.gif" /&gt;
HTTP header: Cache-Control:public, max-age=300</code></pre>
<p>El mismo ejemplo utilizando el mod_pagespeed:</p>
<pre><code>HTML tag   : &lt;img src="ce.c17941127d34679357baa1b36fb4ecc5.logo,g" /&gt;
HTTP header: Cache-Control:public, max-age=31536000</code></pre>
<h3>collapse_whitespace</h3>
<p>Quita todos los saltos de línea innecesarios en el HTML. Reduce el tamaño del documento al quitarlos acelerando la descarga.</p>
<h3>combine_css</h3>
<p>Como su nombre lo indica combina múltiples archivos CSS en uno solo. Con esto lo que logramos es reducir las llamadas al servidor. Por ejemplo si nuestro sitio cuenta con 3 archivos CSS mod_pagespeed los combina a los tres por orden de aparición en uno solo y lo guarda bajo un nombre creado en base a un hash.</p>
<h3>combine_heads</h3>
<p>Si nuestro documento contiene más de un head los combina en uno solo mejorando el renderizado en el navegador.</p>
<h3>move_css_to_head</h3>
<p>Mueve las llamadas a los archivos CSS al head por más que estas se encuentren al final del documento. Practica que mejora el renderizado de nuestro navegador.</p>
<h3>elide_attributes</h3>
<p>Un filtro para mi muy controversial. Elimina muchos tags “innecesarios” para reducir el tamaño del documento, pero a la vez deja a nuestro sitio como un documento invalido XHTML. Ademas hay que usarlo con mucha precaución si utilizamos por ejemplo jQuery porque elimina muchas veces cosas que son necesarias a la hora de “levantar” alguna variable. En lo personal no me gusta este filtro.</p>
<p>Ejemplo de un elemento:<br />
<code> </code></p>
<pre><code>  &lt;button name="ok" disabled="disabled"&gt;</code></pre>
<p><code> </code></p>
<p>El mod_pagespeed reescribe:<br />
<code> </code></p>
<pre><code>  &lt;button name="ok" disabled&gt;</code></pre>
<p><code> </code></p>
<h3>inline_css e inline_javascript</h3>
<p>Ambos filtros hacen lo mismo. Copian el contenido de un CSS o JS externo y lo pegan directamente en el documento evitando hacer una llamada externa. Muchos se estarán preguntando que decide que se pega en el documento y que no, la respuesta esta en el extracto original del pagespeed.conf que coloque al principio, porque ahí es donde se estipula el tamaño máximo del archivo.</p>
<p>Por ejemplo con <strong>ModPagespeedCssInlineMaxBytes 2048</strong> estamos diciendo que embeba en el documento todos los archivos CSS que no superen los 2048 bytes, si el archivo supera este tamaño que continue siendo una llamada externa, lo mismo ocurre con inline_javascript.</p>
<h3>outline_css y outline_javascript</h3>
<p>Hace exactamente lo contrario al ejemplo anterior. Si el CSS se encuentra dentro del documento y supera un tamaño máximo, este se quita del documento original y es llevado a un archivo externo. También este tamaño se decide desde las directivas utilizando <strong>ModPagespeedCssOutlineMinBytes</strong> y <strong>ModPagespeedJsOutlineMinBytes</strong>.</p>
<h3>remove_quotes</h3>
<p>Remueve las comillas innecesarias para ahorrar espacio. En este caso me parece una buena práctica. Probablemente el ahorro en recursos no sea impresionante, pero de seguro se notara al menos un poco al llegar a fin de mes <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<h3>remove_comments</h3>
<p>Quita todos los comentarios del código HTML. Ahorrando espacio, es una opción bastante buena para ahorrarnos trabajo a nosotros.</p>
<h3>rewrite_css, rewrite_images y rewrite_javascript</h3>
<p>Los tres filtros que a mi más me gustaron. Se encargan de comprimir nuestros archivos al máximo posible. En el caso de las imágenes reduce el tamaño sin perder absolutamente nada de calidad. De todas las opciones estas tres son las que sin lugar a duda más diferencia marcaran a la hora de tiempos de descarga y ahorro de recursos (especialmente si hablamos de transferencia de datos).</p>
<p>Algo interesante de mod_pagespeed es que al trabajar con cache de datos no sobrecarga demasiado al servidor, por ejemplo cuando visitamos una pagina con una imagen la misma se muestra de forma original, pero la magia viene en la segunda visita porque ya va a mostrar la imagen desde la cache con las mejoras y optimizaciones realizadas.</p>
<h2>Conclusión</h2>
<p>El modulo de Page Speed es otra apuesta de Google por promocionar una serie de buenas practicas que existen desde ya hace bastante tiempo para que nuestros sitios web se descarguen muy rápido. La realidad es que el modulo esta creado para aquellas personas que no desean lidiar desde un comienzo con esta serie de lineamientos. Es una forma de automatizar cosas que tendríamos que hacer nosotros automáticamente al publicar un proyecto. No obstante es útil y practico, una vez instalado nos vamos a olvidar de muchos aspectos y tendremos gran parte de nuestro sitio optimizado.</p>
<p>En el <a href="http://googlewebmastercentral.blogspot.com/2010/11/make-your-websites-run-faster.html">blog de Google Webmaster</a> al momento de lanzar el modulo <strong>se habla de una mejora del doble de velocidad</strong>. Este numero es muy probable que se alcance en sitios que no tienen ninguna optimización, pero no ocurrirá en aquellos sitios que ya cumplan con varias pautas o buenas practicas, como por ejemplo la de comprimir archivos CSS, Javascript y una optimización del tamaño de las imágenes.</p>
<p>Queda en cada uno de nosotros que filtros probar y cuales no. Por el momento aquí Pagespeed esta desactivado, pero seguiré probando los fines de semana con menos trafico que combinación es la que funciona mejor <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><strong>Más información sobre mod_pagespeed</strong>:</p>
<ul>
<li><a title="modpagespeed" href="http://modpagespeed.com/">Ejemplos uso de filtros</a></li>
<li><a title="Code Google Pagespeed" href="http://code.google.com/intl/es/speed/page-speed/docs/using_mod.html">Sitio oficial de mod_pagespeed</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/tutorial-de-mod_pagespeed-para-apache-2/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Tutorial: Como usar la API de Google Font</title>
		<link>http://www.kabytes.com/tutoriales/tutorial-como-usar-la-api-de-google-font/</link>
		<comments>http://www.kabytes.com/tutoriales/tutorial-como-usar-la-api-de-google-font/#comments</comments>
		<pubDate>Thu, 20 May 2010 18:21:32 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=14209</guid>
		<description><![CDATA[Si google tiene una característica buena para los programadores es que todas sus APIs son muy fáciles de implementar, desde la API de Google Maps que esta tendencia se viene repitiendo, y por suerte para nosotros la API de Google Font no es la excepción. Hoy me puse a jugar un poco con ella y [...]]]></description>
			<content:encoded><![CDATA[<p>Si google tiene una característica buena para los programadores es que todas sus APIs son muy fáciles de implementar, desde la API de Google Maps que esta tendencia se viene repitiendo, y por suerte para nosotros la API de Google Font no es la excepción.</p>
<p>Hoy me puse a jugar un poco con ella y quería comentarle a modo de guía básica como funcionar, para que sirve y sobre todo como implementar esta fantástica herramienta. Comencemos.</p>
<p style="text-align: center;"><img class="size-full wp-image-14223 aligncenter" style="border: none;" title="tutorial google fonts" src="http://www.kabytes.com/wp-content/uploads/2010/05/tutorial-google-fonts.png" alt="tutorial google fonts" width="525" height="74" /></p>
<h2>¿Para que sirve la API de Google Font?</h2>
<p>Principalmente para que podamos utilizar cualquier familia de tipografías en nuestro sitio web, independientemente de las que son consideradas por defectos en los navegadores más populares.</p>
<p>Siempre fue una critica hacia los navegadores las pocas tipografías aceptadas por defecto, pero desde hace un tiempo existen varias alternativas como <a title="FLIR" href="http://www.kabytes.com/tutoriales/tutorial-flir-como-utilizar-cualquier-tipografia-en-nuestro-sitio/">FLIR</a> para que los diseñadores puedan implementar cualquier familia de fuentes. No obstante muchas de estas alternativas tienen varias contras, como su compleja implementación.</p>
<p>Todos estos pormenores hicieron que CSS se tome en serio el asunto y casi por arte de magia en su versión 3 logre implementar font-face, una propiedad que permite definir cualquier tipografía en base al archivo fuente de la misma. Y es ahi donde justamente donde Google se puso a trabajar brindando un api para hacer el trabajo sucio.</p>
<h2>¿Cuando debería utilizar la API de Google Font?</h2>
<p>Aquí vamos a encontrarnos con varias opciones y cada uno debería poder determinar cuando merece la pena usar un API y cuando no. A mi me gusta evaluarlo de la siguiente forma y decido utilizar un API cuando:</p>
<ul>
<li>Necesito utilizar distintas familias de tipografías no instaladas por defecto y no quiero tener que trabajar en subir los archivos de las fuentes, ni definirlas manualmente en mi CSS.</li>
<li>Cuando quiero ahorrar transferencia. Ya que la transferencia ocasionada por el archivo de la tipografías corre por cortesía de Google.</li>
<li>Cuando quiero velocidad. Es similar al caso anterior, pero aquí hagan pruebas, muchas veces la paralelización de descargas desde distintos host acelera considerablemente el tiempo de descarga de un sitio web, otras veces&#8230;.no tanto.</li>
</ul>
<h2>Bien, me gusto ¿Que necesito para empezar?</h2>
<p>Solo tiempo y un poco de ganas.</p>
<p>Ademas y antes de comenzar te voy a recomendar que mires la <a title="Webfonts" href="http://code.google.com/webfonts">lista completa de tipografías incluidas en el API</a> que si bien no son millones son unas cuantas, numero que muy posiblemente aumente en los próximos meses.</p>
<h2>¿Como puede implementar el API en mi sitio?</h2>
<p>Muy pero muy fácil, con una simple linea de código.</p>
<pre>&lt;link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=<var>Font+Name</var>"&gt;</pre>
<p>No es muy difícil darse cuenta que lo único que tenemos que cambiar es la <em>Font+Name</em> para habilitar la tipografía en nuestro sitio. Si lo deseamos y queremos usar más de una tipo vamos a indicarlas como parametros separados por <strong>|</strong></p>
<p>Por ejemplo vamos a activar las tipografías Tangerine, Inconsolata y Droid Sans:</p>
<pre>http://fonts.googleapis.com/css?family=Tangerine|Inconsolata|Droid+Sans</pre>
<p>Luego vamos a definir la nueva tipografia instalada en nuesta hoja de estilo de la siguiente forma:</p>
<pre>h1{font-family: 'Tangerine', serif; color: green}</pre>
<p>Es decir, que prácticamente estaremos trabajando con nuestra hoja de estilo como lo hicimos siempre.</p>
<h2>¿Un ejemplo de utilización completo?</h2>
<pre><code>&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Ejemplo de uso de la API de Google Fonts&lt;/title&gt;
&lt;link rel="stylesheet" type="text/css"
href="http://fonts.googleapis.com/css?family=Tangerine|Inconsolata|Droid+Sans"&gt;

&lt;style&gt;
body, html {
margin: 0;
padding: 0;
background: #ccc;
text-align: center;
font-size:30px;
font-family: arial; }
h1, h2, h3{margin-bottom:10px; padding:0;}
h1{font-family: 'Tangerine', serif; color: green}
h2{font-family: 'Inconsolata', serif; color: blue}
h3{font-family: 'Droid Sans', serif;color: red}
&lt;/style&gt;

&lt;/head&gt;

&lt;body&gt;
&lt;h1&gt;Escribiendo con Tangerine!&lt;/h1&gt;
&lt;h2&gt;Escribiendo con Inconsolata!&lt;/h1&gt;
&lt;h3&gt;Escribiendo con Droid Sans!&lt;/h1&gt;
&lt;/body&gt;

&lt;/html&gt;
</code></pre>
<p>Y el resultado lo pueden <a title="Ejemplo Api Google" href="http://www.kabytes.com/cursos/css3/api-google-font.html">ver online directamente</a>.</p>
<p>Utilizar la API de Google Fonts, es realmente fácil y por las pruebas que hice es bastante rápido el renderizado de las distintas familias de tipografías, por lo que su uso es bastante recomendado.</p>
<h2>¿Desventajas de uso?</h2>
<p>Si bien estoy bastante contento con el resultado no creo que por el momento la API de Google Fonts reemplace a los sistemas que se vienen utilizando hasta el momento para generar compatibilidad con tipografías no instaladas por defecto, las principales razones son:</p>
<ul>
<li>No hay todavía disponibles muchas familias de fuentes.</li>
<li>Muchas personas no quieren depender de un tercero a la hora de servir sus sitios.</li>
<li>Si el API falla todo nuestro sitio va a mostrar las tipografias por defecto con un resultado probablemente bastante desagradable (aunque esto se puede configurar desde el CSS como siempre)</li>
<li>Si el navegador no tiene compatibilidad con la propiedad font-face también va a mostrar una fuente por defecto.</li>
</ul>
<h2>Finalmente&#8230;</h2>
<p>Si bien tenemos cosas a favor y en contra, jugar un poco con Google Font me gusto mucho, creo que es una API con futuro si se mejora el repositorio de archivos tipográficos, brindando más posibilidades que las pocas que hay hoy en día.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/tutorial-como-usar-la-api-de-google-font/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Limpiar el cooler de una notebook Dell Inspiron 1425</title>
		<link>http://www.kabytes.com/tutoriales/limpiar-el-cooler-de-una-notebook-dell-inspiron-1425/</link>
		<comments>http://www.kabytes.com/tutoriales/limpiar-el-cooler-de-una-notebook-dell-inspiron-1425/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 13:00:09 +0000</pubDate>
		<dc:creator>Tamara</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[Inspiron 1425]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=13225</guid>
		<description><![CDATA[Compré esta computadora hace un año y medio aproximadamente, mas o menos al año de adquirida, comencé a oír el ruido del ventilador que giraba haciendo un ruido extraño. Rogando que se tratara de suciedad me decidí abrirla para limpiarla y ciertamente, estaba muy sucia. Luego de quitarle la capa de suciedad, el ventilador volvió [...]]]></description>
			<content:encoded><![CDATA[<p>Compré esta computadora hace un año y medio aproximadamente, mas o menos al año de adquirida, comencé a oír el ruido del ventilador que giraba haciendo un ruido extraño. Rogando que se tratara de suciedad me decidí abrirla para limpiarla y ciertamente, estaba muy sucia.</p>
<p>Luego de quitarle la capa de suciedad, el ventilador volvió a funcionar perfectamente, por lo que la operación fue un éxito. Confieso que me dio miedo abrirla, pero una vez que quité la tapa todo resultó muy simple y sin consecuencias indeseadas.</p>
<p>Para todos aquellos que posean una <strong>Dell Inspiron 1425</strong>, o modelos similares, he aquí un pequeño tutorial para abrirla y limpiarla. Así evitaremos cualquier accidente relacionado con este componente tan necesario para el correcto funcionamiento de cualquier ordenador.</p>
<p>Precisaremos un destornillador de precisión, un paño para colocar la máquina y otro paño seco o papel tissue para limpiar. Debemos prestar especial atención a la forma en la que vamos desarmando todo, para luego saber con exactitud como volver hacia atrás.</p>
<p><strong>Paso 1:</strong> colocamos la computadora cerrada e invertida sobre el paño designado. Con el destornillador Phillips (punta estrella) adecuado nos disponemos a extraer los siete tornillos de la tapa.</p>
<p><img class="alignnone size-full wp-image-13228" title="Limpiar el cooler de Inspiron 1425" src="http://www.kabytes.com/wp-content/uploads/2010/04/limpiar-cooler-inspiron.jpg" alt="" width="580" height="400" /></p>
<p><strong>Paso 2: </strong>una vez que hemos aflojado los siete tornillos los dejamos todos juntos a un lado y procedemos a extraer la tapa, y vemos el dispositivo al cual está adosado el ventilador, allí nos encontramos con cinco tornillos más que debemos quitar.</p>
<p><img class="alignnone size-full wp-image-13231" title="Limpiar el cooler de Inspiron 1425" src="http://www.kabytes.com/wp-content/uploads/2010/04/limpiar-cooler-inspiron-2.jpg" alt="" width="580" height="400" /></p>
<p><strong>Paso 3:</strong> Una vez hecho esto quitamos con mucho cuidado y siempre hacia arriba todo el dispositivo. Lo separamos y observaremos como tanto el cooler como el compartimento que lo contiene, están sucios.</p>
<p><img class="alignnone size-full wp-image-13233" title="Limpiar el cooler de Inspiron 1425" src="http://www.kabytes.com/wp-content/uploads/2010/04/limpiar-cooler-inspiron-3.jpg" alt="" width="580" height="400" /></p>
<p><strong>Paso 4:</strong> Quitamos la suciedad del compartimento lo mejor posible, no utilizar paños húmedos, simplemente la extraemos envolviendo, en un paño o papel tissue, una vez hecho esto, soplamos el excedente y será suficiente. Por otro lado con mucha suavidad limpiamos el cooler, también soplar o utilizar aire comprimido puede servirnos.</p>
<p><img class="alignnone size-full wp-image-13235" title="Limpiar el cooler de Inspiron 1425" src="http://www.kabytes.com/wp-content/uploads/2010/04/limpiar-cooler-inspiron-4.jpg" alt="" width="580" height="400" /></p>
<p>Una vez que tenemos todo limpio, chequeamos que la pasta de nuestro procesador (el cuadrado) siga en perfecto estado, sino, deberemos reemplazarla para evitar tildados. Volvemos hacia atrás todo, colocando primero el cooler con su dispositivo en su lugar, atornillamos, tapamos y atornillamos nuevamente.</p>
<p>Si alguno ha hecho la prueba con otro modelo y considera que el procedimiento es muy similar, por favor no dude en comentarlo, para ampliar la solución a otras notebooks. Espero les sea útil. <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/limpiar-el-cooler-de-una-notebook-dell-inspiron-1425/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Tutorial: slider de imágenes jQuery</title>
		<link>http://www.kabytes.com/tutoriales/tutorial-slider-de-imagenes-jquery/</link>
		<comments>http://www.kabytes.com/tutoriales/tutorial-slider-de-imagenes-jquery/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 15:29:41 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=13130</guid>
		<description><![CDATA[Creo que si existe algo en jQuery que se puede hacer de cientos de formas distintas, eso es sin lugar a duda, un slider de imágenes animado. Existen un sinfín de posibilidades y de plugins disponibles, no obstante y como es realmente imposible probar todos voy a centrarme en uno que me gusta mucho y [...]]]></description>
			<content:encoded><![CDATA[<p>Creo que si existe algo en jQuery que se puede hacer de cientos de formas distintas, eso es sin lugar a duda, un <strong>slider de imágenes animado</strong>. Existen un sinfín de posibilidades y de plugins disponibles, no obstante y como es realmente imposible probar todos voy a centrarme en uno que me gusta mucho y voy a explicar como hacerlo funcionar.</p>
<p>Antes de empezar, el enlace al <a title="Ejemplo Slider jQuery" href="http://www.kabytes.com/cursos/jquery/ejemplo-slider-imagenes-jquery/">ejemplo del slider jQuery</a> y un pequeño video de como se ve el resultado.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="590" height="369" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=10510508&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=ffffff&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="590" height="369" src="http://vimeo.com/moogaloop.swf?clip_id=10510508&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=ffffff&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>¿Que necesitamos?</h2>
<ul>
<li>Framework jQuery en su ultima versión. Como siempre yo lo cargo desde Google</li>
<li><a title="Pikachoose" href="http://pikachoose.com/download/">Pikachoose</a> que es el plugin que yo utilizo.</li>
<li>Las imágenes que queremos mostrar en este slider, es importante que todas tengan el mismo tamaño, si bien que tengan distinto tamaño no afecta en nada porque el excedente se oculta el resultado es optimo cuando nosotros mismos cortamos las imágenes, de esa forma mostramos exactamente lo que queremos.</li>
<li>Unos 20 minutos de tiempo y café o mate a gusto.</li>
</ul>
<h2>Preparando el lienzo</h2>
<p>El código html es muy limpio y prolijo, solo requerimos una lista común y un contenedor.</p>
<pre>&lt;div class="slider"&gt;
&lt;ul id="slider_imagenes"&gt;
&lt;li&gt;&lt;img src="gato01.jpg"/&gt;&lt;span&gt;&lt;a href="#"&gt;Kabytes.com!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="gato02.jpg"/&gt;&lt;span&gt;&lt;a href="#"&gt;Kabytes.com!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="gato03.jpg"/&gt;&lt;span&gt;&lt;a href="#"&gt;Kabytes.com!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="gato04.jpg"/&gt;&lt;span&gt;&lt;a href="#"&gt;Kabytes.com!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="gato05.jpg"/&gt;&lt;span&gt;&lt;a href="#"&gt;Kabytes.com!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="gato06.jpg"/&gt;&lt;span&gt;&lt;a href="#"&gt;Kabytes.com!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="gato07.jpg"/&gt;&lt;span&gt;&lt;a href="#"&gt;Kabytes.com!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="gato08.jpg<a href="view-source:http://www.kabytes.com/cursos/jquery/ejemplo-slider-imagenes-jquery/images/gato08.jpg"></a>"/&gt;&lt;span&gt;&lt;a href="#"&gt;Kabytes.com!&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</pre>
<p>El html no tiene ciencia alguna. Pido disculpas por no utilizar los atributos alt ni title, pero para hacer el ejemplo quería dejarlo lo mas limpio posible mostrando solo los elementos imprescindibles para que funcione el slider, luego ustedes pueden agregar estas etiquetas para cumplir con los estándares como corresponde.</p>
<p>Lo único que hay que decir aquí, es que dentro del span vamos a colocar el texto que queremos mostrar en el slider, es decir, lo que se va a mostrar por encima de la banda negra semi transparente.</p>
<h2>Configurando el slider</h2>
<p>Ya tenemos el cuerpo del html, ahora solo necesitamos configurar los javascript necesarios.</p>
<pre>&lt;script src="<a href="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js</a>"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="<a href="http://www.kabytes.com/cursos/jquery/ejemplo-slider-imagenes-jquery/js/pikachoose-min.js">js/pikachoose-min.js</a>"&gt;&lt;/script&gt;

&lt;script language="javascript"&gt;
&lt;!--
$(document).ready(
	function (){
		$("#slider_imagenes").PikaChoose({
		auto_play: true,
		thumb_width: 123,
		thumb_height: 94,
		buttons_text: { play: "", stop: "", previous: "Anterior", next: "Proxima" }});
		});
--&gt;
&lt;/script&gt;
</pre>
<p>En las dos primeras lineas de código cargamos las bibliotecas javascript necesarias. Luego vamos a configurar el slider de imágenes.</p>
<ul>
<li><strong>$(&#8220;#slider_imagenes&#8221;).PikaChoose</strong> Le decimos al plugin que div utilizar. Esto es lo que tenemos que prestar atención por si vamos a hacer mas de un slider en la misma pagina.</li>
<li><strong>auto_play</strong> El slider comienza a reproducirse ni bien se termina la carga, las opciónes son true o false.</li>
<li><strong>thumb_width y thumb_height</strong> El tamaño de las miniaturas, es un escalado de las imágenes.</li>
<li><strong>buttons_text</strong> Son simplemente las traducciones de los enlaces de texto para desplazarse.</li>
</ul>
<p>Es muy simple la verdad, ademas si consultan la <a title="Pikachoose" href="http://pikachoose.com/versions/">documentación de Pikachoose</a> van a encontrar más opciones, una que me parece importante comentar es <strong>user_thumbs</strong> que admite dos valores, true o false, esto habilita o no las miniaturas y permite la inserción de miniaturas propias, es decir, que no se generan de forma automática.</p>
<h2>Estilos del slider de imágenes</h2>
<p>Los estilos que utilice los van a poder ver directamente desde el <a title="Ejemplo Slider jQuery" href="http://www.kabytes.com/cursos/jquery/ejemplo-slider-imagenes-jquery/">código fuente del ejemplo</a> que esta online y a su disposición, les comento que esta dividido en dos grupos, uno que es el definido por nosotros y otro que viene por defecto con el plugin, ese no hace falta ni tocarlo para que se visualice correctamente.</p>
<p>Y eso es todo, hay que jugar un poco con las opciones pero el resultado es muy bueno. Probablemente este slider jQuery de imágenes quede muy bien si lo combinamos con nuestras <a title="Flickr" href="http://www.kabytes.com/programacion/tutorial-para-integrar-en-tu-web-flickr-usando-jquery/">fotos de Flickr</a> <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/tutorial-slider-de-imagenes-jquery/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Reducir el consumo de RAM de WordPress con eAccelerator</title>
		<link>http://www.kabytes.com/tutoriales/reducir-el-consumo-de-ram-de-wordpress-con-eaccelerator/</link>
		<comments>http://www.kabytes.com/tutoriales/reducir-el-consumo-de-ram-de-wordpress-con-eaccelerator/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 11:00:40 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[eAccelerator]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=12830</guid>
		<description><![CDATA[Hace aproximadamente 15 días, en un fin de semana que tenia un poco de tiempo libre me decidí a jugar un poco con el VPS donde se aloja Kabytes, principalmente probando distintas configuraciones para optimizarlo ya que últimamente WordPress estaba consumiendo todos los recursos. La cuestión es que por mas pruebas que hice cambiando la [...]]]></description>
			<content:encoded><![CDATA[<p>Hace aproximadamente 15 días, en un fin de semana que tenia un poco de tiempo libre me decidí a jugar un poco con el VPS donde se aloja <a title="Kabytes" href="http://www.kabytes.com">Kabytes</a>, principalmente probando distintas configuraciones para optimizarlo ya que últimamente WordPress estaba consumiendo todos los recursos.</p>
<p>La cuestión es que por mas pruebas que hice cambiando la configuración de MySQL y de Apache los resultados eran muy similares a los obtenidos en pruebas pasadas, hasta que recordé que hacia un tiempo, y para otro proyecto, había instalado una cache de scripts PHP, para ser mas  preciso <a title="eaccelerator" href="http://eaccelerator.net/">eAccelerator</a>.</p>
<p style="text-align: center;"><img class="size-full wp-image-12860 aligncenter" style="border: none;" title="wordpress eaccelerator" src="http://www.kabytes.com/wp-content/uploads/2010/03/wordpress-eaccelerator.png" alt="wordpress eaccelerator" width="590" height="100" /></p>
<h2>¿Como funciona eAccelerator?</h2>
<p>Todo programador sabe (o debería saber) la diferencia entre un lenguaje compilado y uno interpretado. PHP es un justamente un lenguaje interpretado, eso significa que por cada ejecución esta se interpreta, creando una estructura de datos que posteriormente se ejecuta.</p>
<p>Este proceso como se imaginaran es bastante costoso y lento a comparación del realizado por un lenguaje compilado. Quizás este sea unos de los puntos débiles de PHP.</p>
<p>Finalmente tenemos este problema, y es justamente donde entra eAccelerator. Este maravilloso proyecto lo que hace es crear una cache de todos nuestros scripts en PHP, evitando que cada uno de estos tenga que interpretarse por cada ejecución, ahorrando recursos y ganando mucha velocidad.</p>
<p>Lo que esta muy bien de este acelerador es que no requiere acción alguna de nosotros luego de la instalación.</p>
<p>Muchos se estarán preguntando ¿que pasa si un archivo PHP es modificado? la respuesta es simple, nada, eAccelerator detecta la fecha de modificado de un archivo y sobreescribe la cache por la mas reciente. Mas simple imposible.</p>
<h2>¿El resultado de instalar eAccelerator con WordPress?</h2>
<p>Impresionante, WordPress instalado sin casi utilizar plugin estaba consumiendo 14mb de ram aproximadamente (con picos de casi 20mb), luego de instalar eAccelarator solo 4.48mb.</p>
<p><img class="alignnone size-full wp-image-12837" title="Consumo ram WordPress" src="http://www.kabytes.com/wp-content/uploads/2010/03/consumo-ram-wordpress.png" alt="Consumo ram WordPress" width="430" height="252" /></p>
<h2>Instalación de eAccelerator</h2>
<p>La instalación fue bastante simple y no necesito mas que algunos comandos desde consola, aunque recomiendo que sigan alguna guía exactamente para la versión de sistema operativo instalado en su servidor, les dejo la que hice yo y funciono la perfección, con la configuración sugerida por <a title="CentOS" href="http://www.php.ph/2007/12/21/centos-5-eaccelerator-installation/">PHP.ph en CentOS 5</a>.</p>
<pre>yum install php-devel
yum groupinstall 'Development Tools'
</pre>
<p>Cambiamos de directorio, bajamos los archivos e instalamos</p>
<pre>cd /tmp
wget http://bart.eaccelerator.net/source/0.9.5.2/eaccelerator-0.9.5.2.tar.bz2
tar xvfj eaccelerator-0.9.5.2.tar.bz2
cd eaccelerator-0.9.5.2
Phpize.
phpize
./configure
Install it.
make
make install
</pre>
<p>Creamos un archivo de configuración</p>
<pre>vi /etc/php.d/eaccelerator.ini [Enter]

extension="eaccelerator.so"
eaccelerator.shm_size="0"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
</pre>
<p>Creamos un directorio donde se va a guardar la cache de scripts y le damos permisos. Finalmente reiniciamos el Apache.</p>
<pre>mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator
/etc/init.d/httpd restart
</pre>
<p>Si todo salió bien vamos a tener instalada y funcionando correctamente la extensión de eAccelerator en nuestro servidor.  Para probarlo podemos crear un archivo .php con este contenido.</p>
<pre>&lt;?php phpinfo(); ?&gt;
</pre>
<p>Ejecutarlo en cualquier dominio y ver si la extensión aparece instalada. Otra opción, y mas fácil de ver si esta funcionando, es instalar el plugin para WP <a title="TPC Memory Usage" href="http://wordpress.org/extend/plugins/tpc-memory-usage/">TPC Memory usage</a>, que es el del screenshot y verificar en las opciones dentro de la lista de extensiones instaladas si se encuentra la de eAccelerator.</p>
<p>Nota: Buscando mas información sobre eAccelerator y WordPress veo que <a title="Anieto2k" href="http://www.anieto2k.com/2009/09/08/reduce-el-consumo-de-memoria-de-tu-wordpress/">Andrés en Anieto2k</a> comenta que utilizando <a title="Zend" href="http://www.zend.com/en/products/guard/?anchor=Optimizer#Optimizer">Zend Optimizer</a> los resultados pueden ser aún más impresionantes. Será cuestión de probar <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<h2>Plugin de WordPress para activar eAccelerator</h2>
<p>Ahora si no tenes acceso a ssh y no hay forma de modificar la configuración de tu servidor hay una alternativa. Instalar un <a title="plugin" href="http://neosmart.net/blog/2007/xcache-and-eaccelerator-wp-plugins-updated/">plugin</a> que activa por nosotros las ventajas de eAccelerator.</p>
<p>Ademas del plugin de eAccelerator en <a title="neosmart" href="http://neosmart.net/blog/2007/xcache-and-eaccelerator-wp-plugins-updated/">Neosmart </a>nos permiten descargar otro que activa XCache, que hace prácticamente lo mismo, esta ultima alternativa para crear cache PHP es muy similar y aunque no los probé leí en varios lados que es igual de buena. Si alguno tiene ganas y tiempo puede hacer la prueba a ver cual funciona mejor.</p>
<p>Los plugins por lo que leí estan en una etapa muy experimental, asi que es cuestión de hacer la prueba y ver si funciona y que tal es el rendimiento en nuestro servidor. Por favor si alguien lo hace avise en los comentarios <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/reducir-el-consumo-de-ram-de-wordpress-con-eaccelerator/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Tutorial para integrar en tu web Flickr usando jQuery</title>
		<link>http://www.kabytes.com/programacion/tutorial-para-integrar-en-tu-web-flickr-usando-jquery/</link>
		<comments>http://www.kabytes.com/programacion/tutorial-para-integrar-en-tu-web-flickr-usando-jquery/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 11:00:11 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=12775</guid>
		<description><![CDATA[Probablemente si tienes una cuenta en Flickr algún día se te habrá pasado por la mente integrarlo en algún proyecto, la realidad es que hay muchas formas de hacerlo, desde la utilización de librerías PHP que emplean el API de Flickr hasta simplemente unas lineas de código jQuery y la utilización del feed de nuestra [...]]]></description>
			<content:encoded><![CDATA[<p>Probablemente si tienes una cuenta en Flickr algún día se te habrá pasado por la mente integrarlo en algún proyecto, la realidad es que hay muchas formas de hacerlo, desde la utilización de librerías PHP que emplean el API de Flickr hasta simplemente unas lineas de código jQuery y la utilización del feed de nuestra cuenta, justamente esta última forma es la que voy a mostrar a continuación.</p>
<p>Antes de comenzar les dejo un enlace al <a title="Ejemplo jQuery Flickr" href="http://www.kabytes.com/cursos/jquery/flickr/ejemplo-basico.html">resultado del ejemplo</a> que voy a utilizar para que puedan verlo en funcionamiento y una captura de pantalla:</p>
<p style="text-align: center;"><img class="size-full wp-image-12794 aligncenter" style="border: none;" title="flickr feed" src="http://www.kabytes.com/wp-content/uploads/2010/03/flickr-feed.jpg" alt="flickr feed" width="589" height="416" /></p>
<p><strong>¿Que necesitamos?</strong></p>
<ul>
<li>Una cuenta de Flickr con nuestras mejores fotos, no es necesario que sea una cuenta PRO.</li>
<li>La biblioteca gratuita <a title="jquery flickr plugin" href="http://www.newmediacampaigns.com/page/jquery-flickr-plugin">jflickrfeed</a>.</li>
<li>La última versión del <a title="jQuery" href="http://jquery.com/">framework jQuery</a> (Pueden <a title="Ahorrar transferencia jquery, mootools" href="http://www.kabytes.com/programacion/ahorrar-transferencia-de-datos-en-bibliotecas-javascript/">cargarlo gratis cortesía de Google</a>)</li>
<li>Café y unos minutos de nuestro tiempo <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </li>
</ul>
<h2>Conociendo la ID del feed de nuestra cuenta de Flickr</h2>
<p>Para poder comenzar vamos a necesitar desde Flickr un único dato, el identificador del feed de la cuenta. Para hacer esto tenemos que dirigirnos a nuestra cuenta, específicamente al home de la misma, que tiene una url con la siguiente forma <strong>http://www.flickr.com/photos/nombre_usuario/</strong> una vez ahí nos dirigimos al pie de la pagina, y nos vamos a encontrar con lo siguiente enlace:</p>
<p><img class="alignnone size-full wp-image-12782" style="border: none;" title="feed flickr" src="http://www.kabytes.com/wp-content/uploads/2010/03/feed-flickr.png" alt="feed flickr" width="584" height="172" /></p>
<p>Ese es el feed de la cuenta, el enlace que obtendrán ahí tiene la siguiente forma (en negrita el id que nos interesa)</p>
<pre><code>http://api.flickr.com/services/feeds/photos_public.gne?id=<strong>12674896@N04</strong>&amp;lang=en-us&amp;
format=rss_200</code></pre>
<h2>Preparando el documento</h2>
<p>Ya tenemos el ID de nuestro feed de flickr, ahora vamos a prepara el documento con las bibliotecas necesarias, para hacer debemos colocar el siguiente código:</p>
<pre><code>&lt;script src="<a href="view-source:http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js</a>"&gt;&lt;/script&gt;
&lt;script src="<a href="view-source:http://www.kabytes.com/cursos/jquery/flickr/jflickrfeed.min.js">jflickrfeed.min.js</a>"&gt;&lt;/script&gt;
</code></pre>
<p>En la primera linea cargamos jQuery desde Google y en la segunda apuntamos al javascript que descargamos directamente desde <a title="jquery flickr plugin" href="http://www.newmediacampaigns.com/page/jquery-flickr-plugin">jflickrfeed</a>.</p>
<p>El cuerpo del documento HTML es puede ser el siguiente:</p>
<pre><code>&lt;div id="container"&gt;
&lt;h1&gt;Ejemplo basico: Flickr Feed + jQuery&lt;/h1&gt;
Este es un ejemplo muy básico de utilización del plugin jFlickrFeed.
&lt;div id="marco" class="thumbs"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre>
<h2>Configurando jQuery con el feed de Flickr</h2>
<p>Ahora vamos a lo interesante, como configurar para que muestre correctamente las miniaturas de nuestra cuenta de Flickr donde nosotros queramos. El código del ejemplo es el siguiente:</p>
<pre><code>&lt;script type="text/javascript"&gt;
$(document).ready(function(){
		$('#marco').jflickrfeed({
			limit: 18,
			qstrings: {
				id: '<strong>12674896@N04</strong>'
			},

				itemTemplate: '&lt;li&gt;&lt;a href="{{link}}" target="_blank"&gt;
				&lt;img src="{{image_s}}" alt="{{title}}" /&gt;&lt;/a&gt;&lt;/li&gt;'
                   });
});
&lt;/script&gt;</code></pre>
<p>Vamos a ver el código por partes.</p>
<ul>
<li> <strong>$(&#8216;#marco&#8217;).jflickrfeed</strong> : Vamos a decirle que selector utilizar para cargar las imágenes, es decir, la función va a buscar dentro del documento una div con id = marco y ahí colocara los datos.</li>
<li><strong>limit: 18</strong> : Este es el valor que tenemos que cambiar si queremos variar el numero de miniaturas a mostrar, en mi ejemplo selecciono 20.</li>
<li><strong>id: &#8217;12674896@N04&#8242;</strong> : Como se imaginaran, aquí debemos colocar el identificador que conseguimos en el primer paso.</li>
<li><strong>itemTemplate</strong> : Todo lo que se va a colocar aqui es la forma de la plantilla en que se colocan las imagenes, como se ve en el ejemplo van a ver algunas variables entre doble corchetes, esas son reemplazadas por jQuery por los valores correspondientes a las imágenes.</li>
</ul>
<h2>Un poco de CSS para darle estilo a los resultados</h2>
<pre><code>&lt;style type="text/css"&gt;
body, html {
margin: 0;
padding: 0;
background: #ccc;
text-align: center;
font-family: arial; }

#container {
width: 550px;
padding: 30px;
background: #f9f9f9;
margin: 10px auto;
text-align: left; }

.thumbs {
margin: 0;
padding: 0;
overflow: hidden; }

.thumbs li {
list-style: none;
float: left;
margin: 5px;
padding: 3px;
background: #eee;

-moz-box-shadow: 0 0 4px #444;
-webkit-box-shadow: 0 0 2px #000; }

.thumbs li a img:hover {
-moz-box-shadow: 0 0 4px green;
-webkit-box-shadow: 0 0 2px green; }

.thumbs li img { display: block; }

.thumbs li a img { border: none;}
&lt;/style&gt;
</code></pre>
<p>El css es fácil de entender es prácticamente el mismo que utiliza el plugin jQuery. La verdad que acá entra la imaginación para darle un estilo diferente y acorde al estilo de donde estarán integradas las imágenes.</p>
<p>Y listo, eso fue todo. Como podrán ver no es nada complicado integrar el feed de flickr a nuestros proyectos utilizando jQuery, creo que el trabajo pasa mas por el tema de lo estético que lo funcional <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/programacion/tutorial-para-integrar-en-tu-web-flickr-usando-jquery/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using apc
Page Caching using disk: enhanced
Database Caching 1/22 queries in 0.019 seconds using apc

Served from: www.kabytes.com @ 2012-02-09 02:16:54 -->
