<?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>Fri, 19 Mar 2010 16:50:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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 configuración [...]]]></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>10</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: &#8216;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>4</slash:comments>
		</item>
		<item>
		<title>Tutorial básico de Speed Tracer</title>
		<link>http://www.kabytes.com/tutoriales/tutorial-basico-de-speed-tracer/</link>
		<comments>http://www.kabytes.com/tutoriales/tutorial-basico-de-speed-tracer/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 16:20:49 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Page Speed]]></category>
		<category><![CDATA[Speed Tracer]]></category>
		<category><![CDATA[YSlow]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=12550</guid>
		<description><![CDATA[Speed Tracer es una de las nuevas extensiones estrella para web developers que Google introdujo para Google Chrome, y que para mi gusto, es una de las mejores herramientas para la optimización de sitios web junto a Firebug, Page Speed e YSlow de Yahoo.
Para comenzar necesitamos solo tres cosas:

Google Chrome instalado.
Instalada la extensión Speed Tracer.
Café [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-12567 alignright" style="border: none;" title="Tutorial SpeedTracer Google" src="http://www.kabytes.com/wp-content/uploads/2010/03/SpeedTracer-Google.jpg" alt="Tutorial SpeedTracer Google" width="146" height="146" />Speed Tracer es una de las nuevas extensiones estrella para web developers que Google introdujo para Google Chrome, y que para mi gusto, es una de las mejores herramientas para la optimización de sitios web junto a Firebug, <a title="Page Speed" href="http://www.kabytes.com/tutoriales/tutorial-basico-de-page-speed/">Page Speed</a> e YSlow de Yahoo.</p>
<p>Para comenzar necesitamos solo tres cosas:</p>
<ul>
<li>Google Chrome instalado.</li>
<li>Instalada la extensión <a title="Speedtracer" href="http://code.google.com/webtoolkit/speedtracer">Speed Tracer</a>.</li>
<li>Café o té (a gusto)</li>
</ul>
<h2>Instalación y configuración de Speed Tracer</h2>
<p>La instalación en Windows es muy simple, pero requiere dos pasos. Instalados Google Chrome e Speed Tracer debemos ir al icono del navegador de Google, dirigirnos a la solapa que dice “shortcut” y donde esta la ruta o target al ejecutable de Google Chrome agregar al final y con un espacio lo siguiente:</p>
<pre><code>--enable-extension-timeline-api</code></pre>
<p>Luego salvar los cambios y ejecutar Chrome.</p>
<p>La instalación en Mac OS X es un poco distinta, pero es muy simple también. Para Mac tenemos que descargar <a href="http://dl.google.com/gwt/speedtracer/ChromeWithSpeedTracer.dmg">Speed Tracer bootstrap</a> en resumidas cuentas hace lo mismo que en Windows pero de forma automática. Una vez que instalamos el programa nos aparece un nuevo icono de Chrome que ejecuta el navegador pero del modo adecuado para correr Speed Tracer sin problemas.</p>
<h2>Primer acercamiento a Speed Tracer</h2>
<p>Si la instalación la pudimos realizar con éxito al iniciar Chrome vamos a encontrarnos que al lado derecho de la barra de direcciones aparece un pequeño icono que justamente es igual al logo de Google Speed Tracer, algo igual a esto:</p>
<p><img class="alignnone size-full wp-image-12570" title="inicio speed tracer" src="http://www.kabytes.com/wp-content/uploads/2010/03/inicio-speed-tracer.jpg" alt="" width="580" height="99" /></p>
<p>Como muchos se imaginaran la forma de iniciar esta fantástica herramienta es ingresando al sitio que queremos verificar y presionando el reloj, al hacer eso ingresaremos al monitor de Speed tracer en ventana nueva.</p>
<p>Para que comience la magia refresquemos desde el botón del navegador el sitio, en ese momento Speed tracer comenzara a grabar el funcionamiento del sitio con sus respectivas estadísticas.</p>
<p><img class="alignnone size-full wp-image-12576" title="inicio speed tracer" src="http://www.kabytes.com/wp-content/uploads/2010/03/inicio-speed-tracer1.jpg" alt="inicio speed tracer" width="590" height="401" /></p>
<p>Muchos al ver el funcionamiento y grabación de la sesión recordaran la mítica timeline del Flash, aquí la metodología es similar,  por otro lado tendremos un botón de grabación para comenzar o reanudar la recopilación de información, un botón reset para comenzar de nuevo. También podemos guardar el informe como es de esperarse para luego modificando el sitio comparar resultados.</p>
<h2>La gráfica y el tiempo</h2>
<p>Esta extensión tiene algo que la convierte en prácticamente única, y que nos brinda información que otros complementos no, la gráfica y el tiempo exacto de cada evento.</p>
<p><img class="alignnone size-full wp-image-12594" title="opciones monitor" src="http://www.kabytes.com/wp-content/uploads/2010/03/opciones-monitor.png" alt="opciones monitor" width="590" height="179" /></p>
<p>Esto quiere decir que a medida que vamos descargando el sitio la extensión va creando una gráfica de consumo de recursos, una vez que detenemos la grabación al igual que una gráfica de Google Analytics vamos a poder elegir el periodo de tiempo a evaluar y analizar de forma detallada y a la máxima potencia que fue lo que ocurrió en ese preciso lapso de tiempo.</p>
<p>Y repito, esto es por lejos lo mas potente que tiene la herramienta, ver con total exactitud que es lo que esta consumiendo recursos no tiene precio,  otras herramientas lo que hacen es contemplar el sitio como un todo y generar un informe en base a la totalidad de recursos, aquí la información nos dan el resultado con una precisión de milésimas de segundo, la gráfica es por demás descriptiva, basta con verla que podemos seleccionar el rango de un pico y ver que estaba pasando ahí.</p>
<p>Las gráficas, como en análisis en si se puede dividir en dos partes: El monitor de recursos y el monitor de eventos.</p>
<h2>El monitor de Eventos</h2>
<p>Simple de usar, podemos analizar los distintos eventos con alto nivel de precisión.  Y el informe por columnas es valioso por la información que podemos obtener, un informe tiene este aspecto:</p>
<p><img class="alignnone size-full wp-image-12589" title="monitor eventos" src="http://www.kabytes.com/wp-content/uploads/2010/03/monitor-eventos.png" alt="monitor eventos" width="590" height="400" /></p>
<p>En la tabla vamos a poder encontrar:</p>
<ul>
<li><strong>Started</strong>: Tiempo relativo a la linea de tiempo cuando el evento se inicio.</li>
<li><strong>Duration</strong>: Tiempo que duro el evento en milisegundos</li>
<li><strong>Type</strong>: Tipo de evento (aquí esta la <a title="data dump format" href="http://code.google.com/intl/es-ES/webtoolkit/speedtracer/data-dump-format.html">lista completa</a> en inglés)</li>
<li><strong>Breakdown by time</strong>: Se indican los tres tipos de eventos que mas consumen tiempo de reloj durante la ejecución de ese evento en particular.</li>
</ul>
<p>Ademas si lo deseamos cada una de estas filas se puede expandir click mediante para ver un poco más de detalles del evento en particular. A todo esto a medida que vamos pasando el punto del mouse sobre cada fila vamos viendo en la gráfica de arriba la linea exacta del evento.</p>
<h2>El monitor de Recursos</h2>
<p>Aquí con el monitor de recursos sinceramente me quedo con el de YSlow, no obstante es también practico y como principal ventaja puedo decir que cada recurso es separado del total mostrando las cabeceras recibidas del servidor. Algo útil para detectar anomalías como por ejemplo una ruta a un archivo rota, o una cache o tiempo de expiración inexistentes.</p>
<p>La desventaja que veo en esta herramienta es que no permite definir si se utiliza o no un <a title="CDN" href="http://en.wikipedia.org/wiki/Content_delivery_network">CDN</a>, algo que veo necesario para filtrar el total de recursos descargador de un mismo lugar, mejorando considerablemente el análisis.</p>
<p>Algo que me gusta del monitor de recursos es que nos da una serie de alertas para avisarnos de que algún elemento puede ser optimizado para mejorar el rendimiento por ejemplo colocando la cache-expiration a una imagen, etc.</p>
<h2>Conclusión:</h2>
<p>Speed Tracer es una excelente herramienta gratuita, y si trabajamos con ella y otras tantas como Firebug, Pagespeed, y YSlow la optimización de nuestro sitio web se convierte en una tarea mucho mas simple y divertida que antes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/tutorial-basico-de-speed-tracer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sitios de &#8220;Hágalo usted mismo&#8221;</title>
		<link>http://www.kabytes.com/tutoriales/sitios-de-hagalo-usted-mismo/</link>
		<comments>http://www.kabytes.com/tutoriales/sitios-de-hagalo-usted-mismo/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 18:21:55 +0000</pubDate>
		<dc:creator>Tamara</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Electrónica]]></category>
		<category><![CDATA[Manuales]]></category>
		<category><![CDATA[Recursos]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=10908</guid>
		<description><![CDATA[No es una gran lista, a veces la calidad supera la cantidad, y creo que a veces es bueno. En este caso les voy a hablar de dos sitios que si bien son muy diferentes entre sí, la funcionalidad es la misma, ambos brindan información para realizar diferentes tipos de trabajos en casa, desde maquillarse [...]]]></description>
			<content:encoded><![CDATA[<p>No es una gran lista, a veces la calidad supera la cantidad, y creo que a veces es bueno. En este caso les voy a hablar de dos sitios que si bien son muy diferentes entre sí, la funcionalidad es la misma, ambos brindan información para realizar diferentes tipos de trabajos en casa, desde maquillarse hasta construir lápices LED.</p>
<p>Personalmente suelo buscar estas cosas, porque más allá de las manualidades, se puede aprender mucho sobre circuitos y conexiones que quizás son fáciles de hacer pero no tenía idea.</p>
<p>Para esto les voy a recomendar estos sitios que me parecen excelentes, y ninguno está íntegramente orientado a las tareas del hogar, sino más bien a aparatos y cosas en general.</p>
<p>El primero de ellos, lo encontré hace cerca de un año, se trata de <a title="Instructables" href="http://www.instructables.com/">Instructables</a>, un sitio enorme, dónde sus usuarios brindan tutoriales sobre cómo construir desde estructuras de luces hasta comida extraña. Contiene muchísima información y siempre se encuentra algo interesante para leer y sumergirse en su funcionamiento.</p>
<p>Los artículos de Instructables suelen contar con esquemas, y explicaciones que pueden descargarse de forma gratuita, podemos incluso obtener un código para insertar las guías en nuestro propio sitio sin ningún problema. Es realmente un portal excelente que, para quienes estamos buscando siempre realizar circuitos extraños y esas cosas tan lindas, resulta extremadamente útil.</p>
<p><img class="alignnone size-full wp-image-10909" title="Sitios de hágalo usted mismo" src="http://www.kabytes.com/wp-content/uploads/2009/12/instructables.jpg" alt="Sitios de hágalo usted mismo" width="570" height="399" /></p>
<p>Por otro lado, una web que encontré hoy, pero se que lleva varios años también, <a title="Wikihow" href="http://www.wikihow.com/">Wiki How</a>, que tiene básicamente el mismo funcionamiento que Instructables pero es mucho más pequeño y no contiene tanta electrónica. El sitio entero está dividido en categorías que nos permiten ir a buscar directamente lo que necesitamos.</p>
<p><img class="alignnone size-full wp-image-10910" title="Sitios de hágalo usted mismo" src="http://www.kabytes.com/wp-content/uploads/2009/12/wiki-how.jpg" alt="Sitios de hágalo usted mismo" width="570" height="360" /></p>
<p>Ambos sitios contienen plataformas de registro de usuarios y permiten colaborar con nuestros propios tutoriales y guías de DIY, también cuentan con diversas formas para mantenerse en contacto con la comunidad (Twitter, Facebook, Feeds RSS o Newsletter).</p>
<p>No he podido encontrar sitios de estas características en español y considero que, más que nada, es porque llevar adelante una plataforma de estas con éxito requiere muchísimo trabajo para hacerlo bien, si alguno de ustedes conoce un proyecto parecido en español (que no sea solamente de tareas del hogar) no dude en aportarlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/sitios-de-hagalo-usted-mismo/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Tutorial básico de Page Speed</title>
		<link>http://www.kabytes.com/tutoriales/tutorial-basico-de-page-speed/</link>
		<comments>http://www.kabytes.com/tutoriales/tutorial-basico-de-page-speed/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 18:01:07 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Page Speed]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=10707</guid>
		<description><![CDATA[Una de las cosas que mas me gusta hacer cuando tengo unos minutos es intentar optimizar los distintos códigos que hago, en mi caso es una especie de terapia puesto que a veces a no ser que tengas millones de visitas por día los cambios no marcan la diferencia, no obstante la acumulación de mejoras [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas que mas me gusta hacer cuando tengo unos minutos es intentar optimizar los distintos códigos que hago, en mi caso es una especie de terapia puesto que a veces a no ser que tengas millones de visitas por día los cambios no marcan la diferencia, no obstante la acumulación de mejoras hace que el resultado final sea siempre mucho mejor.</p>
<p>Cuando hablamos de optimización del código de nuestros sitios web uno debe hablar de forma obligada de tres programas que son casi imprescindibles, tanto por lo fácil que resulta utilizarlos como la ayuda que nos proveen, ellos son Firefox, Firebug y Pagespeed, que es justamente de la extensión en la que vamos a centrarnos en este tutorial básico de uso.</p>
<p><img class="size-full wp-image-10784" style="border:none" title="tutorial page speed" src="http://www.kabytes.com/wp-content/uploads/2009/12/tutorial-page-speed.png" alt="tutorial page speed" width="600" height="287" /></p>
<h2>¿Que es Page Speed?</h2>
<p>Page Speed es una extensión o complemento para Firefox open source desarrollado ni mas ni menos por Google para todos los diseñadores o programadores web. Que tiene como razón de existir asistirnos en la mejora de nuestros código para una correcta optimizaron y un excelente desempeño. Esto da como resultado que nuestro sitio sea:</p>
<ul>
<li>Mas rápido</li>
<li>Mas liviano</li>
<li>Mas barato de mantener</li>
<li>Mas eficiente</li>
</ul>
<p>¿Suena bien verdad? &#8230; continuemos</p>
<h2>¿Como instalar Page Speed?</h2>
<p>Solo vamos a necesitar tres cosas, y para nuestra suerte todas gratuitas.</p>
<ul>
<li>Primero instalar <a title="Firefox Download" href="http://www.mozilla-europe.org/es/firefox/">Firefox</a>, navegador que ya deberías tener instalado hace tiempo <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </li>
<li>Luego tener instalado otra extensión: <a title="Firebug" href="http://getfirebug.com/">Firebug</a> también gratis, liviana y que sirve para otras cosas, es imprescindible.</li>
<li>Y por ultimo y ahora si, instalar la extensión de <a title="Page Speed" href="http://code.google.com/speed/page-speed/download.html">Page Speed</a>.</li>
</ul>
<h2>¿Como utilizar Page Speed?</h2>
<p>Bueno si seguimos los simples pasos anteriores y no se presento ningún problema al iniciar Firefox vamos a encontrarnos con una pequeña cucaracha en el borde inferior derecho de la pantalla.  Que y a diferencia de cualquier otra cucaracha esta es muy útil y simpática, se debería ver así:</p>
<p><img class="alignnone size-full wp-image-10788" style="border:none" title="cucaracha" src="http://www.kabytes.com/wp-content/uploads/2009/12/cucaracha.png" alt="cucaracha" width="600" height="70" /></p>
<p>Ahora al hacer click sobre ella, se abrirá lo que instalamos en el paso anterior, es decir, Firebug, ahora lo que tenemos que hacer e ir a la <strong>solapa &#8220;Page Speed&#8221;</strong> donde veremos un botón central que debería decir &#8220;<strong>Analyze Performance</strong>&#8221; haciendo Click en el esta maravillosa extensión comenzara a analizar automáticamente el sitio que esta abierto en ese momento en Firefox.</p>
<p>Por ejemplo obtendremos el siguiente informe:</p>
<p><img class="size-full wp-image-10791" style="border:none" title="page speed resultados" src="http://www.kabytes.com/wp-content/uploads/2009/12/page-speed-resultados.jpg" alt="page speed resultados" width="600" height="280" /></p>
<p>Como pueden ver en la imagen que coloque, Page Speed va a evaluar el desempeño de nuestro sitio por una serie de factores, dependiendo de la situación marcara con tres distintos estados a cada uno, estos son:</p>
<ul>
<li><strong>Tilde Verde</strong>: Todo funciona perfecto, no hace falta hacer nada, la vida es bella.</li>
<li><strong>Alerta Amarilla</strong>: Si buen funciona podría mejorarse.</li>
<li><strong>Alerta Rojo</strong>: Tarea requerida y es aquí donde debemos prestar especial atención porque Page Speed acaba de detectar un factor por el cual podremos obtener una mejora sustancial.</li>
</ul>
<p>En total existen <strong>21 posibles escenarios</strong> por los cuales page speed va a evaluar nuestro sitio, con la ayuda de Tamara a continuación pasamos a hacer una muy pequeña introducción de cada uno, obviamente en la <a title="Docs Page Speed" href="http://code.google.com/speed/page-speed/docs/using.html">ayuda oficial de Pagespeed</a> encontraran mas información, pero como este es un tutorial básico de uso no queríamos dejar de contarles mas o menos de que trata cada factor.</p>
<h2>Índice</h2>
<p>Mantenemos el nombre de cada buena practica para que tengan una forma de buscar una rápida referencia, ya que <strong>Page Speed</strong> las mostrara con exactamente el mismo nombre que colocamos a continuación.</p>
<p>1. <a href="#leverage.browser.caching">Leverage browser caching</a><br />
2. <a href="#remove.unused.css">Remove unused CSS</a><br />
3. <a href="#serve.static.content.from.cookieless.domain">Serve static content from a cookieless domain</a><br />
4. <a href="#put.css.in.the.document.head">Put CSS in the document head</a><br />
5. <a href="#use.efficient.css.selectors">Use efficient CSS selectors</a><br />
6. <a href="#leverage.proxy.caching">Leverage proxy caching</a><br />
7. <a href="#minify.css">Minify CSS</a><br />
8. <a href="#minify.javascript">Minify JavaScript</a><br />
9. <a href="#optimize.images">Optimize images</a><br />
10. <a href="#minimize.cookie.size">Minimize cookie size</a><br />
11. <a href="#enable.gzip.compression">Enable gzip compression</a><br />
12. <a href="#combine.external.javascript">Combine external JavaScript</a><br />
13. <a href="#minimize.dns.lookups">Minimize DNS lookups</a><br />
14. <a href="#optimize.the.order.of.styles.and.scripts">Optimize the order of styles and scripts</a><br />
15. <a href="#serve.resources.from.a.consistent.url">Serve resources from a consistent URL</a><br />
16. <a href="#avoid.css.expressions">Avoid CSS expressions</a><br />
17. <a href="#combine.external.css">Combine external CSS</a><br />
18. <a href="#specify.image.dimensions">Specify image dimensions</a><br />
19. <a href="#minimize.redirects">Minimize redirects</a><br />
20. <a href="#defer.loading.of.javascript">Defer loading of JavaScript</a><br />
21. <a href="#parallelize.downloads.across.hostnames">Parallelize downloads across hostnames</a></p>
<h2 id="leverage.browser.caching">1. Leverage browser caching</h2>
<p>Colocando una fecha de caducidad o edad máxima en los headers del HTTP para recursos estáticos, permite que el explorador cargue previamente los recursos descargados desde el disco local, en lugar de utilizar la red.</p>
<h2 id="remove.unused.css">2. Remove unused CSS</h2>
<p>Este punto nos dice que <strong>estamos teniendo declaradas varias cosas dentro de nuestra hoja de estilos que no estamos utilizando</strong>, algo que es bastante normal y que si no es exagerado no es para nada nocivo, una buena practica para evitar este tipo de problemas es utilizar distintos css dependiendo de la sección o parte del sitio, es decir, si por ejemplo declaramos x cantidad de clases en nuestro css para mostrar cierta imagen en la home del sitio, quitarla en el css del archivo individual.</p>
<p>Obviamente y como venimos viendo en este tutorial todo depende de la situación en concreto.</p>
<h2 id="serve.static.content.from.cookieless.domain">3. Serve static content from a cookieless domain</h2>
<p>Brindar recursos estáticos desde un dominio sin cookies, reduce el tamaño total de solicitudes hechas desde una página.</p>
<h2 id="put.css.in.the.document.head">4. Put CSS in the document head</h2>
<p>Esto es fácil y bien simple. Primero una recomendación: <a title="utilizar import" href="http://www.anieto2k.com/2009/04/09/no-uses-import/">es mas eficiente utilizar la propiedad &lt;link&gt; que @import</a> y por otro lado debemos colocar los estilos bien arriba dentro del &lt;head&gt;&lt;/head&gt; del documento. Mas fácil imposible, la diferencia se nota bastante.</p>
<h2 id="use.efficient.css.selectors">5. Use efficient CSS selectors</h2>
<p>Obviando claves selectoras ineficientes, que combinen con un gran número de elementos puede acelerar la visualización de la página.</p>
<h2 id="leverage.proxy.caching">6. Leverage proxy caching</h2>
<p>Habilitando el caching en los headers HTTP para recursos estáticos, permite al explorador descargar fuentes desde un servidor proxy cercano, en lugar de un servidor de origen remoto.</p>
<h2 id="minify.css">7. Minify CSS</h2>
<p>Compactar nuestras hojas de estilo pueden ahorrarnos algunos kb que pueden parecer insignificantes pero que no lo son tanto cuando comenzamos a multiplicar por el numero de visitantes. Existen varias herramientas para <a title="optimizar CSS" href="http://www.kabytes.com/aplicaciones-online/4-herramientas-para-optimizar-css/">optimizar archivos css</a>.</p>
<h2 id="minify.javascript">8. Minify JavaScript</h2>
<p>Similar al caso anterior, compactar correctamente nuestras bibliotecas javascript se traduce directamente no solo en un ahorro de transferencia de archivos sino también en mejores tiempo de carga, recuerden que cuanto menos pesa nuestro sitio mas rápido podrá ser descargado.</p>
<p>También recuerden que muchas veces y cuando se habla de bibliotecas comunes como jQuery, mootools, etc. podemos <a title="Ahorrar transferencia jquery, mootools" href="http://www.kabytes.com/programacion/ahorrar-transferencia-de-datos-en-bibliotecas-javascript/">utilizar libremente a Google</a> para que nos preste el alojamiento completamente gratis, y ahorrar toda esa transferencia de datos.</p>
<h2 id="optimize.images">9. Optimize images</h2>
<p>El formato correcto, el tamaño y la pérdida de compresión de imágenes puede salvar muchos bytes de información.</p>
<h2 id="minimize.cookie.size">10. Minimize cookie size</h2>
<p>Manteniendo las cookies lo más pequeñas posible, asegura que una solicitud HTTP pueda entrar en un solo paquete.</p>
<h2 id="enable.gzip.compression">11. Enable gzip compression</h2>
<p>Utilizar la compresión Gzip es una de las grandes mejoras que podemos hacer para acelerar la descarga de nuestros sitios, en Wordpress se puede hacer de forma mas o menos simple, en mi caso <a title="gzippy" href="http://wordpress.org/extend/plugins/gzippy/">instale un plugin</a> y listo pero dependiendo de la configuración de nuestro servidor habilitar la compresión <a title="activar compresion gzip wordpress" href="http://ayudawordpress.com/activar-compresion-gzip-a-wordpress-25/">se puede hacer de varias formas</a>.</p>
<p>Como no todo es Wordpress les deje otro enlace para <a title="Active Gzip Compression" href="http://css-tricks.com/snippets/htaccess/active-gzip-compression/">activar la compresión gzip desde el htaccess</a>.</p>
<h2 id="combine.external.javascript">12. Combine external JavaScript</h2>
<p>Combinar scripts externos en la menor cantidad de archivos posibles, acorta los <a title="RTT" href="http://es.wikipedia.org/wiki/RTT">RTTs</a> y retrasa la descarga de otros recursos.</p>
<h2 id="minimize.dns.lookups">13. Minimize DNS lookups</h2>
<p>Reducir el número de nombres de dominios únicos, desde donde los recursos son brindandos, acorta el número de resoluciones de DNS que el explorador debe hacer, y en consecuencia, el retraso <a href="http://es.wikipedia.org/wiki/RTT">RTT</a>.</p>
<h2 id="optimize.the.order.of.styles.and.scripts">14. Optimize the order of styles and scripts</h2>
<p>Ordenar las hojas de estilo y los scripts inline externos, permite mejor paralelización de las descargas y acelera el tiempo de visualización del explorador.</p>
<h2 id="serve.resources.from.a.consistent.url">15. Serve resources from a consistent URL</h2>
<p>Es  importante brindar un recurso desde una URL única, para eliminar los bytes duplicados de descarga y <a title="RTT" href="http://es.wikipedia.org/wiki/RTT">RTTs</a> adicionales.</p>
<h2 id="avoid.css.expressions">16. Avoid CSS expressions</h2>
<p>Las expresiones CSS degradan la performance de la visualizacion; reemplazandolas con alternativas, mejorará la visualización, en especial para usuarios de Internet Explorer.</p>
<p>Nota: Estas prácticas aplican solamente a Internet Explorer 5 a 7, que soportan expresiones CSS. Las expresiones CSS son desaprobados por IE 8, y no soportados por otros exploradores.</p>
<h2 id="combine.external.css">17. Combine external CSS</h2>
<p>La idea principal de esto es que evitemos hacer muchas solicitudes, es decir, no exagerar haciendo llamados a CSS externos, algo que <strong>Google recomienda es utilizar hasta un máximo de 3 archivos externos</strong>, pero preferentemente que sean solo 2, esto se logra combinando, por ejemplo podemos juntar los que poseen unas pocas lineas logrando así un solo archivo en lugar de 4 o 5.</p>
<h2 id="specify.image.dimensions">18. Specify image dimensions</h2>
<p>Simplemente definir las dimensiones de las imágenes utilizando <a title="height width" href="http://www.w3schools.com/tags/tag_IMG.asp">height y width</a>.</p>
<h2 id="minimize.redirects">19. Minimize redirects</h2>
<p>Minimizar redirecciones HTTP desde una URL a otra, acorta los RTT adicionales y el tiempo de espera para los usuarios.</p>
<h2 id="defer.loading.of.javascript">20. Defer loading of JavaScript</h2>
<p>Diferir la carga de funciones JavaScript que no son necesarias al comienzo, reducen la descarga incial, permitiendo que otros recursos sean descargados en paralelo, y acelerando la ejecución y el tiempo de visualización.</p>
<h2 id="parallelize.downloads.across.hostnames">21. Parallelize downloads across hostnames</h2>
<p>Servir recursos desde cuatro o cinco nombres de dominio diferentes, aumenta la paralelización de descargas.</p>
<h2>Finalmente, Page Speed no es la respuesta definitiva</h2>
<p>Si bien me encanta Page Speed y me parece una herramienta de tremenda utilidad estoy seguro que no es la respuesta definitiva en cuanto a optimizaron de recursos se refiere, inclusive no siempre sus sugerencias deben ser tomadas absolutamente al pie de la letra.</p>
<p>Page Speed provee una serie de lineamientos, y no a todos los sitios estos consejos les resultan de igual utilidad, ni siquiera significa que lograr pasar al 100% esta validación sea lo mejor, lo que recomiendo es prestar atención a sus consejos pero tampoco enloquecer por cumplirlos a todos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/tutorial-basico-de-page-speed/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Como hacer un globo de historieta solo con CSS</title>
		<link>http://www.kabytes.com/programacion/como-hacer-un-globo-de-historieta-solo-con-css/</link>
		<comments>http://www.kabytes.com/programacion/como-hacer-un-globo-de-historieta-solo-con-css/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 14:59:28 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=9720</guid>
		<description><![CDATA[Las posibilidades con CSS son casi infinitas, y mucho depende de la creatividad del programador o diseñador, no obstante las grandes limitaciones, por lo general vienen de mano de los navegadores y su bendita compatibilidad con los estándares. No obstante hay personas que todavía logran aprovechar las herramientas que están disponibles hoy en día para [...]]]></description>
			<content:encoded><![CDATA[<p>Las posibilidades con CSS son casi infinitas, y mucho depende de la creatividad del programador o diseñador, no obstante las grandes limitaciones, por lo general vienen de mano de los navegadores y su bendita compatibilidad con los estándares. No obstante hay personas que todavía logran aprovechar las herramientas que están disponibles hoy en día para encontrar nuevas formas de implementar CSS, hoy mientas leía a <a title="CSS triangles" href="http://www.dinnermint.org/css/creating-triangles-in-css/">Jon Rohan</a> encontré una forma realmente ingeniosas de <strong>crear globos o bocadillos sin usar absolutamente ninguna imagen</strong>.</p>
<p>Antes de empezar una captura de pantalla de como quedaría el <a title="Globo o bocadillo" href="http://es.wikipedia.org/wiki/Globo_%28historieta%29">globo o bocadillo</a> (términos que aprendí gracias a Tamara hace 10 minutos porque no sabia el nombre real de este componente tan usado en los comics <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> )</p>
<p style="text-align: center;"><img class="size-full wp-image-9723 aligncenter" style="border:none" title="globo solo con css" src="http://www.kabytes.com/wp-content/uploads/2009/10/globo-solo-con-css.gif" alt="globo solo con css" width="334" height="85" /></p>
<p>Y todo esto sin usar una sola imagen. Empecemos a ver como armar esto paso por paso.</p>
<p>1) Lo primero es el código HTML del globo estilo historieta.</p>
<div class="igBar"><span id="lhtml-5"><a href="#" onclick="javascript:showPlainTxt('html-5'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-5">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"chat-bubble"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Globo o bocadillo</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"chat-bubble-arrow-border"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"chat-bubble-arrow"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>2) Una vez que colocamos el código HTML pasemos a colocar el CSS componente a componente, lo primero que vamos a hacer es crear el estilo del div que es el globo propiamente, el mismo se hace usando como base la propiedades CSS para <a title="Bordes redondeados css" href="http://www.kabytes.com/programacion/como-crear-bordes-redondeados-utilizando-solo-css-y-sin-imagenes/">crear bordes redondeados</a>, que ya vimos en otro tutorial. Por lo que el código seria el siguiente:</p>
<div class="igBar"><span id="lcss-6"><a href="#" onclick="javascript:showPlainTxt('css-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CSS:</span>
<div id="css-6">
<div class="css">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #6666ff;">.chat-bubble </span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">background-color</span>:#EDEDED;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">border<span style="color: #3333ff;">:2px </span>solid #666666;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">font-size</span>:35px;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">line-<span style="color: #000000; font-weight: bold;">height</span>:<span style="color: #cc66cc;color:#800000;">1</span>.3em;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">margin<span style="color: #3333ff;">:10px </span>auto;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">padding</span>:10px;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">position</span>:<span style="color: #993333;">relative</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">text-align</span>:<span style="color: #993333;">center</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000; font-weight: bold;">width</span>:300px;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">-moz-border-radius:10px;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">-webkit-border-radius:10px;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">-moz-box-shadow<span style="color: #3333ff;">:<span style="color: #cc66cc;color:#800000;">0</span> </span><span style="color: #cc66cc;color:#800000;">0</span> 5px #888888;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">-webkit-box-shadow<span style="color: #3333ff;">:<span style="color: #cc66cc;color:#800000;">0</span> </span><span style="color: #cc66cc;color:#800000;">0</span> 5px #888888;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Como se ve en el código no hay nada raro, es exactamente lo mismo que vimos en el tutorial que les comente anteriormente, además que se le agrega una sombra, algo que le da un efecto visual muy lindo. Si hicimos todo bien el resultado parcial seria el siguiente:</p>
<p style="text-align: center;"><img src="http://www.kabytes.com/wp-content/uploads/2009/10/globo-css-parcial.gif" style="border:none" alt="globo css parcial" title="globo css parcial" width="334" height="85" class="size-full wp-image-9727" /></p>
<p>3) Ahora solo falta agregar el triangulo inferior para darle ese aspecto de globo de historieta tan clásico, para hacer eso el código se divide en dos partes. La primer parte del código se encarga de generar el fondo del triangulo que luego se convertirá en el borde visualmente.</p>
<div class="igBar"><span id="lcss-7"><a href="#" onclick="javascript:showPlainTxt('css-7'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CSS:</span>
<div id="css-7">
<div class="css">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #6666ff;">.chat-bubble-arrow-<span style="color: #000000; font-weight: bold;">border</span> </span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">border-color</span>: #666666 <span style="color: #993333;">transparent</span> <span style="color: #993333;">transparent</span> <span style="color: #993333;">transparent</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">border-style</span>: <span style="color: #993333;">solid</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">border-width</span>: 10px;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">height</span>:<span style="color: #cc66cc;color:#800000;">0</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">width</span>:<span style="color: #cc66cc;color:#800000;">0</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">position</span>:<span style="color: #993333;">absolute</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">bottom</span>:-22px;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">left</span>:30px;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Y la segunda parte que incluye un hack para IE6 que se encarga de rellenar el triangulo.</p>
<div class="igBar"><span id="lcss-8"><a href="#" onclick="javascript:showPlainTxt('css-8'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CSS:</span>
<div id="css-8">
<div class="css">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #6666ff;">.chat-bubble-arrow </span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">border-color</span>: #EDEDED <span style="color: #993333;">transparent</span> <span style="color: #993333;">transparent</span> <span style="color: #993333;">transparent</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">border-style</span>: <span style="color: #993333;">solid</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">border-width</span>: 10px;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">height</span>:<span style="color: #cc66cc;color:#800000;">0</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">width</span>:<span style="color: #cc66cc;color:#800000;">0</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">position</span>:<span style="color: #993333;">absolute</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">bottom</span>:-19px;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #000000; font-weight: bold;">left</span>:30px;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">/* IE6 */</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #6666ff;">.chat-bubble-arrow </span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; _border-left-<span style="color: #000000; font-weight: bold;">color</span>: pink;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; _border-bottom-<span style="color: #000000; font-weight: bold;">color</span>: pink;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; _border-right-<span style="color: #000000; font-weight: bold;">color</span>: pink;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; _filter: chroma<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">color</span>=pink<span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #66cc66;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Y eso es todo, si siguieron todos los pasos tendrán un globo diseñado íntegramente en CSS y sin usar absolutamente ninguna imagen.</p>
<p>La compatibilidad con navegadores es muy pero muy buena, sacando obviamente a Internet Explorer que si bien se ve correctamente los bordes redondeados no funcionan y veremos el globo con bordes rectangulares, algo que no es grave y que en primera instancia, y al menos a mi, no me impediría usar esta técnica <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/como-hacer-un-globo-de-historieta-solo-con-css/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Tutorial: Como pegar los subtítulos a una película (AVI)</title>
		<link>http://www.kabytes.com/tutoriales/tutorial-como-pegar-los-subtitulos-a-una-pelicula-avi/</link>
		<comments>http://www.kabytes.com/tutoriales/tutorial-como-pegar-los-subtitulos-a-una-pelicula-avi/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 18:13:57 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=9664</guid>
		<description><![CDATA[Desde ya hace bastante tiempo que tengo un DVD BGH con lector de memorias usb, algo que es bastante practico porque al descargar una película basta con enviarla a un pendrive para poder conectar este al dvd y ver la película tranquilamente en mi televisor, no obstante este DVD BGH tiene un problema importante, el [...]]]></description>
			<content:encoded><![CDATA[<p>Desde ya hace bastante tiempo que tengo un DVD BGH con lector de memorias usb, algo que es bastante practico porque al descargar una película basta con enviarla a un pendrive para poder conectar este al dvd y ver la película tranquilamente en mi televisor, no obstante este DVD BGH tiene un problema importante, el tamaño de los subtítulos, uno cuando coloca los subtítulos en el pendrive en formato srt el reproductor lo “levanta” de forma automática pero con una letra tan pequeña que probablemente uno termine la película con dolor de cabeza.</p>
<p>Es por esa simple razón que la mejor solución que encontré es la de <strong>pegar los subtítulos directamente a la película</strong>.</p>
<p>Para <strong>pegar o fundir los subtítulos</strong> a por ejemplo un archivo avi las posibilidades eran muchas pero sinceramente una mas complicada que otra, por ejemplo una posibilidad era <a title="Virtualdub" href="http://www.virtualdub.org/">virtualdub</a> pero para hacer esto había que seguir tantos pasos y el proceso demoraba tanto que me terminaba desanimando, hasta que un día un amigo mió bastante fanático de las series me recomendó <a title="Avirecom" href="http://www.avirecomp.com/download.php">AVI ReComp</a> y desde entonces no lo cambio por nada, porque ya desde que comence a usarlo pegar un subtitulo a una película fue tan simple que cualquier alternativa me representaba un dolor de cabeza, a continuación los pasos que tienen que seguir para hacer esta tarea de forma sencilla.</p>
<h2>Simple tutorial para pegar subtítulos</h2>
<p>1) Lo primero que tienes que hacer obviamente es obtener de forma gratuita <a title="Avirecom" href="http://www.avirecomp.com/download.php">AVI ReComp</a> e instalarlo, el proceso es el mismo que con cualquier programa, paso obvio pero que aclaro por si hay algún perdido <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Es importante que instalen todo, inclusive el AviSynth, todo sea porque luego no nos este pidiendo que instalemos codecs extraños ni nada.</p>
<p>Una vez que finalice toda la instalacion y ejecutemos el programa llegaremos a esta ventana:</p>
<p><img class="size-full wp-image-9677" title="inserta subtitulos serie" src="http://www.kabytes.com/wp-content/uploads/2009/10/inserta-subtitulos-serie.png" alt="inserta subtitulos serie" width="590" height="456" /></p>
<p>2) Ahora lo primero que tienes que hacer es seleccionar el archivo de origen, para hacer esto basta que seleccionemos con el botón <strong>OPEN AVI</strong> la ruta donde se encuentra el mismo.</p>
<p><img class="size-full wp-image-9689" title="seleccionar avi" src="http://www.kabytes.com/wp-content/uploads/2009/10/seleccionar-avi.gif" alt="seleccionar avi" width="439" height="108" /></p>
<p>3) Luego seleccionamos la salida, es decir donde se guardara el archivo avi con los subtítulos integrados. Para hacer esto seleccionamos la ruta de destino con el botón “SAVE AVI”</p>
<p><img class="size-full wp-image-9691" title="guarda subtitulos integrados" src="http://www.kabytes.com/wp-content/uploads/2009/10/guarda-subtitulos-integrados.gif" alt="guarda subtitulos integrados" width="439" height="140" /></p>
<p>4) Una vez finalizado los pasos anteriores pasamos a la parte en que le decimos al programa que subtítulos debe colocar y de que forma, para hacer esto en el menu del programa seleccionamos "additions" cuando hagamos esto veremos la siguiente pantalla:</p>
<p><img class="size-full wp-image-9697" title="grabar avi subtitulos" src="http://www.kabytes.com/wp-content/uploads/2009/10/grabar-avi-subtitulos.gif" alt="grabar avi subtitulos" width="470" height="315" /></p>
<p>En esta pantalla tenemos dos opciones muy importantes, la primera se refiere a si queremos bordes oscuros en los subtítulos función especialmente interesante para mejorar la visibilidad de los textos y segundo, la opción para seleccionar el archivo que contiene los subtítulos propiamente, para hacer esto tildamos la opción "enable/disable" y buscamos la ruta con los subtítulos, el programa admite subtítulos con extensiones txt, sub, srt, ass y ssa.</p>
<p>5) Listo, ya estamos, ahora debemos ir al menú y seleccionar “queue” y ahí apretar en orden los botones “add to queue” que se encarga de ingresar en la lista de tareas la grabación de lo que acabamos de hacer en los pasos anteriores, luego apretar en Start y listo, el programa comenzara a pegar los subtítulos en la película correspondiente.</p>
<p><img class="size-full wp-image-9701" title="grabar subtitulos en pelicula" src="http://www.kabytes.com/wp-content/uploads/2009/10/grabar-subtitulos-en-pelicula.gif" alt="grabar subtitulos en pelicula" width="460" height="310" /></p>
<p>El proceso suele demorar bastante, así que con paciencia, es ideal que hagamos esto cuando no tenemos que seguir trabajando con la computadora para evitar demoras.</p>
<p>Espero que les sea de utilidad este simple tutorial <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Web para descargar el programa: <a title="Avirecom" href="http://www.avirecomp.com/download.php">AVI ReComp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/tutoriales/tutorial-como-pegar-los-subtitulos-a-una-pelicula-avi/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Como usar Wordpress como un acortador de url</title>
		<link>http://www.kabytes.com/programacion/como-usar-wordpress-como-un-acortador-de-url/</link>
		<comments>http://www.kabytes.com/programacion/como-usar-wordpress-como-un-acortador-de-url/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 20:08:16 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=9509</guid>
		<description><![CDATA[Muchas personas me preguntaron como hacer para usar Wordpress como un acortador de urls, sin necesidad de usar un servicio externo o bien un plugin. La verdad que estoy contento por como funciona esto por varios motivos que paso a detallar.

No dependemos de un tercero como puede ser Tinyurl por lo que el sistema no [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas personas me preguntaron como hacer para usar Wordpress como un acortador de urls, sin necesidad de usar un servicio externo o bien un plugin. La verdad que estoy contento por como funciona esto por varios motivos que paso a detallar.</p>
<ul>
<li>No dependemos de un tercero como puede ser <a title="Tinyurl" href="http://tinyurl.com/">Tinyurl</a> por lo que el sistema no funciona solo cuando no funciona la bitácora completa.</li>
<li>La forma de acortar la url no requiere de programación adicional, no hace falta incluir una función nueva ni nada.</li>
<li> Queda mucho mejor mostrar una url con nuestro dominio que usando uno de terceros.</li>
<li>Es mas fácil enviar a sitios como Twitter una url corta y propia que la url del post completa o bien utilizando un tercero.</li>
<li>Es muy fácil hacerlo.</li>
</ul>
<p>Si te parece buena la idea, el resultado por ejemplo es el siguiente:</p>
<p><strong>URL Normal</strong>:  <em>http://www.kabytes.com/tutoriales/enlaces-a-sitios-sociales-en-wordpress-y-sin-plugins/</em><br />
<strong>URL Acortada</strong>: <em>http://www.kabytes.com/9463</em></p>
<h2>Empecemos, como usar WP como acortador de urls:</h2>
<p><strong>1) </strong>Lo lindo de esta forma de acortar la url es que es nativa de Wordpress al 100% y seguramente mas de uno ya estará sospechando al ver que la dirección corta tiene ese numero al finalizar y justamente, ese numero es el ID del post que solo WP genera al crear cada entrada por lo que en realidad es: <em>http://www.kabytes.com/ID_POST</em></p>
<p>De esta manera y de la misma forma que mostré en el <a title="Tutorial enviar a red social" href="http://www.kabytes.com/tutoriales/enlaces-a-sitios-sociales-en-wordpress-y-sin-plugins/">tutorial para mostrar los links sociales</a> para mostrar esta url acortada basta usar el siguiente código dentro del bucle de WP:</p>
<blockquote><p>http://www.kabytes.com/&lt;?php echo $post-&gt;ID; ?&gt;</p></blockquote>
<p>Obviamente cambiando la url por la de su dominio, ya con eso estarán mostrando y sin ningún tipo de problema la url acortada.</p>
<p><strong>2)</strong> Ahora viene lo lindo de acortar la url de esta forma, solo necesitamos editar el archivo.htaccess el mismo se encuentra en la raíz de nuestro servidor y colocar tal cual muestro el siguiente código que vi hace tiempo en <a title="Walhez" href="http://walhez.com/2009/06/%C2%BFcomo-url-cortas-desde-tu-wordpress-usando-tu-dominio/">Walhez</a>:</p>
<blockquote><p># URL Corta<br />
RewriteEngine On<br />
RewriteRule ^([0-9]+)$ ?p=$1 [R=301,L]</p></blockquote>
<p>Y listo, <strong>ya tendrán su propio acortador de direcciones de forma nativa en Wordpress</strong>, muy simple, además que esas url hacen una redirección 301 por lo que todo enlace transmitirá pagerank sin ningún problema <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/como-usar-wordpress-como-un-acortador-de-url/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Enlaces a sitios sociales en Wordpress y sin plugins</title>
		<link>http://www.kabytes.com/tutoriales/enlaces-a-sitios-sociales-en-wordpress-y-sin-plugins/</link>
		<comments>http://www.kabytes.com/tutoriales/enlaces-a-sitios-sociales-en-wordpress-y-sin-plugins/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 19:14:32 +0000</pubDate>
		<dc:creator>Pablo</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=9463</guid>
		<description><![CDATA[Hace unos días Mauro me escribió preguntando como hacia para mostrar en Kabytes los iconos con sus respectivos enlaces para enviar una noticia a las redes y sitios sociales mas populares, a continuación les explico paso a paso como deben hacer esto y sin utilizar ningún plugin, algo que es bastante fácil y útil para [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días Mauro me escribió preguntando como hacia para mostrar en <a href="http://www.kabytes.com/">Kabytes</a> los iconos con sus respectivos enlaces para enviar una noticia a las redes y sitios sociales mas populares, a continuación les explico paso a paso como deben hacer esto y sin utilizar ningún plugin, algo que es bastante fácil y útil para reducir aun mas el consumo de recursos de nuestro servidor.  Antes de comenzar, una vez que finalicen con este tutorial el resultado es el siguiente, obviamente voy a excluir la parte del <a href="http://www.kabytes.com/programacion/tutorial-basico-sobre-css-sprite/">CSS sprite</a> que ya explique anteriormente.  </p>
<p><img class="size-full wp-image-9497" title="enviar a wordpress" src="http://www.kabytes.com/wp-content/uploads/2009/10/enviar-a-wordpress.png" alt="enviar a wordpress" width="537" height="25" /></p>
<h2>Como colocar los enlaces a los sitios sociales sin plugins:</h2>
<p>Lo primero y prácticamente único que tenemos que hacer es colocar el siguiente código en el archivo <strong>single.php</strong> de nuestro querido theme de Wordpress.  </p>
<div class="igBar"><span id="lphp-10"><a href="#" onclick="javascript:showPlainTxt('php-10'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-10">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;a href=<span style="color:#FF0000;">"http://twitter.com/home?status=&lt;?php the_title(); ?&gt;: http://www.kabytes.com/&lt;?php echo $post-&gt;ID; ?&gt; @kabytes"</span> <span style="color:#000000; font-weight:bold;">class</span>=<span style="color:#FF0000;">"twitter"</span> rel=<span style="color:#FF0000;">"nofollow"</span> title=<span style="color:#FF0000;">"Enviar a Twitter"</span>&gt;Twitter&lt;/a&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;a href=<span style="color:#FF0000;">"http://www.facebook.com/share.php?u=&lt;?php echo get_permalink() ?&gt;&amp;t=&lt;?php the_title(); ?&gt;"</span> <span style="color:#000000; font-weight:bold;">class</span>=<span style="color:#FF0000;">"facebook"</span> rel=<span style="color:#FF0000;">"nofollow"</span> title=<span style="color:#FF0000;">"Compartir en Facebook"</span>&gt;Facebook&lt;/a&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;a href=<span style="color:#FF0000;">"http://del.icio.us/post?url=&lt;?php echo get_permalink() ?&gt;&amp;title=&lt;?php the_title(); ?&gt;"</span> <span style="color:#000000; font-weight:bold;">class</span>=<span style="color:#FF0000;">"delicious"</span> rel=<span style="color:#FF0000;">"nofollow"</span> title=<span style="color:#FF0000;">"Guardar en delicious"</span>&gt;Delicious&lt;/a&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;a href=<span style="color:#FF0000;">"http://meneame.net/submit.php?url=&lt;?php echo get_permalink() ?&gt;"</span> <span style="color:#000000; font-weight:bold;">class</span>=<span style="color:#FF0000;">"meneame"</span> rel=<span style="color:#FF0000;">"nofollow"</span> title=<span style="color:#FF0000;">"Enviar a Menéame"</span>&gt;Menéame&lt;/a&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;a href=<span style="color:#FF0000;">"http://www.stumbleupon.com/submit?url=&lt;?php echo get_permalink() ?&gt;&amp;title=&lt;?php the_title(); ?&gt;"</span> <span style="color:#000000; font-weight:bold;">class</span>=<span style="color:#FF0000;">"stumbleupon"</span> rel=<span style="color:#FF0000;">"nofollow"</span> title=<span style="color:#FF0000;">"Enviar a Stumbleupon"</span>&gt;Stumbleupon&lt;/a&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Y listo, luego basta con agregar un estilo a cada enlace para que se muestre un icono en cada uno, en mi caso mantuve los mismos que en el tutorial de los <a href="../programacion/tutorial-basico-sobre-css-sprite/">CSS sprite</a> y listo, en otro post explico como hacemos aquí para acortar automáticamente las urls de cada entrada <img src='http://www.kabytes.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />   </p>
<p>Lo bueno de mostrar los enlaces para enviar a los sitios sociales de esta forma es que no recargamos nuestra instalación de Wordpress con ningún plugin y no es necesario la utilización de ningún servicio externo que muchas veces tiende a demorar la carga del blog con solicitudes que no son realmente imprescindibles.  </p>
<p>Espero que les sea de utilidad <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/enlaces-a-sitios-sociales-en-wordpress-y-sin-plugins/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Validando el formulario de FeedBurner</title>
		<link>http://www.kabytes.com/diseno/validando-el-formulario-de-feedburner/</link>
		<comments>http://www.kabytes.com/diseno/validando-el-formulario-de-feedburner/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 19:10:01 +0000</pubDate>
		<dc:creator>Nahuel Sanchez</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Feedburner]]></category>
		<category><![CDATA[Validación]]></category>

		<guid isPermaLink="false">http://www.kabytes.com/?p=9128</guid>
		<description><![CDATA[A mediados de este mes que hoy se da por finalizado, uno de los ya famosos ingenieros de Google, Matt Cutts, confirmó lo que ha sido tema de discusión en las mesas de debates de varios SEOs: ¿validar ayuda o no al posicionamiento e indexación de un Sitio Web?. Finalmente se confirmó que la validez [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-9129" style="border:none;" title="HTML" src="http://www.kabytes.com/wp-content/uploads/2009/09/HTML.png" alt="HTML" width="128" height="128" />A mediados de este mes que hoy se da por finalizado, uno de los ya famosos ingenieros de Google, Matt Cutts, confirmó lo que ha sido tema de discusión en las mesas de debates de varios SEOs: <strong>¿validar ayuda o no al posicionamiento e indexación de un Sitio Web?</strong>. Finalmente se confirmó que la validez de un documento según la <a title="W3C Validator" href="http://validator.w3.org/">W3C</a> no nos dará una mejor posición en los resultados de Google, los robots encargados de la indexación no tratarán de manera diferente a nuestro sitio, y no obtendremos un trato preferencial por obtener un "<em>Passed</em>" como resultado en el escaneo del documento.</p>
<p>De igual forma, el lograr validar un documento por la sencilla y excelente razón de querer superarnos es una difícil pero hermosa tarea que muchos decidimos encarar, ya que <strong>lograr cero errores en el escaneo de nuestro Sitio nos provoca una destacada sensación de orgullo y felicidad</strong>. Como poseedores de una bitácora tendemos a luchar con un factor extra que influye en la validez de nuestro documento, y me refiero al formulario de FeedBurner utilizado para que nuestros lectores se subscriban mediante correo electrónico, el cual, lamentablemente, no valida en su forma original.</p>
<p>Luego de no encontrar una respuesta concreta al asunto, decidí encarar por mis propios medios el formulario de registro y modificarlo para que el mismo valide. Lamentablemente <strong>la validez del mismo tiene como desventaja que anularemos la ventana emergente de FeedBurner y provocaremos que la página de confirmación directamente se cargue en la misma ventana en la cual nuestro sitio se está mostrando</strong> (lo que para algunos significa la pérdida definitiva del usuario). Veamos la línea donde se encuentra el problema:</p>
<div class="igBar"><span id="lphp-14"><a href="#" onclick="javascript:showPlainTxt('php-14'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-14">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;form onsubmit=<span style="color:#FF0000;">"window.open("</span>http:<span style="color:#FF9933; font-style:italic;">//feedburner.google.com/fb/a/mailverify?uri=TU-ID&quot;, &quot;popupwindow&quot;, &quot;scrollbars=yes,width=550,height=520&quot;);return true&quot; target=&quot;popupwindow&quot; method=&quot;post&quot; action=&quot;http://feedburner.google.com/fb/a/mailverify&quot;&gt; </span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Según la <a title="W3C Validator" href="http://validator.w3.org/">W3C</a> el uso de "<em>target="popupwindow"</em>" no está permitido, así que lo que haremos es borrar dicho parámetro,  y modificar completamente el "<em>onsubmit</em>" con el fin de dejar, en dicho lugar, únicamente la dirección de la página de validación del registro de FeedBurner. Tendremos entonces el siguiente resultado en la primera línea del código:</p>
<div class="igBar"><span id="lphp-15"><a href="#" onclick="javascript:showPlainTxt('php-15'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-15">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;form onsubmit=<span style="color:#FF0000;">"http://feedburner.google.com/fb/a/mailverify?uri=TU-ID"</span> method=<span style="color:#FF0000;">"post"</span> action=<span style="color:#FF0000;">"http://feedburner.google.com/fb/a/mailverify"</span>&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>También, muchos obtendrán errores de validación en el resto del formulario, lo cual se soluciona dejando todos los "<em>label</em>" e "<em>input</em>" dentro de un mismo "<em>&lt;div&gt;</em>" y "<em>&lt;/div&gt;</em>", o "<em>&lt;p&gt;</em>" y "<em>&lt;/p&gt;</em>". Por ejemplo, el siguiente es el formulario de registro que estoy actualmente utilizando en <a title="LeegaR Blog" href="http://www.leegar.com.ar/">LeegaR Blog</a> y pasa los estándares de validación:</p>
<div class="igBar"><span id="lphp-16"><a href="#" onclick="javascript:showPlainTxt('php-16'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-16">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;form onsubmit=<span style="color:#FF0000;">"http://feedburner.google.com/fb/a/mailverify?uri=LeegaR"</span> method=<span style="color:#FF0000;">"post"</span> action=<span style="color:#FF0000;">"http://feedburner.google.com/fb/a/mailverify"</span>&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;p&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;label <span style="color:#616100;">for</span>=<span style="color:#FF0000;">"email"</span>&gt;Feed por email&lt;/label&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;input type=<span style="color:#FF0000;">"text"</span> name=<span style="color:#FF0000;">"email"</span> id=<span style="color:#FF0000;">"email"</span> value=<span style="color:#FF0000;">"Escribe tu Email y presiona Enter"</span> onfocus=<span style="color:#FF0000;">"if (this.value == 'Escribe tu Email y presiona Enter') {this.value = '';}"</span> onblur=<span style="color:#FF0000;">"if (this.value == '') {this.value = 'Escribe tu Email y presiona Enter';}"</span>&nbsp; /&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;input type=<span style="color:#FF0000;">"hidden"</span> name=<span style="color:#FF0000;">"uri"</span> value=<span style="color:#FF0000;">"LeegaR"</span>/&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;input type=<span style="color:#FF0000;">"hidden"</span> value=<span style="color:#FF0000;">"es_ES"</span> name=<span style="color:#FF0000;">"loc"</span>/&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/p&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/form&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Una de las frases que destaco del vídeo en el cual Matt Cutts confirma que la validez del documento no influye en el posicionamiento es "<strong><em>It's important to realize that the vast majority of pages on the web don't validate</em></strong>" (en Español, "<em>Es importante darse cuenta de que la gran mayoría de páginas en la web no validan</em>") por lo cual si queremos desprendernos del grupo mayoritario, y sacarnos la etiqueta de "<em>Mi página no valid</em>a", podemos empezar a trabajar ahora mismo en el código de nuestro sitio hasta lograr la perfección. Saludos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kabytes.com/diseno/validando-el-formulario-de-feedburner/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
