<?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>Sebastián Barría</title>
	<atom:link href="http://www.sebastianbarria.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sebastianbarria.com</link>
	<description>Desarrollo web y multimedia</description>
	<lastBuildDate>Thu, 18 Apr 2013 02:37:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Los monos ambiciosos</title>
		<link>http://www.sebastianbarria.com/otros-temas/los-monos-ambiciosos/</link>
		<comments>http://www.sebastianbarria.com/otros-temas/los-monos-ambiciosos/#comments</comments>
		<pubDate>Thu, 18 Apr 2013 02:37:27 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Otros temas]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=162</guid>
		<description><![CDATA[Esta es otra historia de monos bastante interesante, que también da bastante que pensar&#8230;
Un grupo de monos estaba molestando constantemente a unos aldeanos en África. Bajaban de los árboles, robaban su comida y luego se escapaban.
Ante la impotencia, a uno de los aldeanos se le ocurrió la genial idea de poner al medio de la aldea una jarra de greda de cuello muy delgado, donde sólo cabía la mano del mono. Dentro de la jarra echó unos cuantos manís (asegurándose de que los monos lo vieran) y se sentó a esperar.
Al poco rato comenzaron a bajar los&#8230;]]></description>
				<content:encoded><![CDATA[<p>Esta es otra historia de monos bastante interesante, que también da bastante que pensar&#8230;</p>
<p>Un grupo de monos estaba molestando constantemente a unos aldeanos en África. Bajaban de los árboles, robaban su comida y luego se escapaban.</p>
<p>Ante la impotencia, a uno de los aldeanos se le ocurrió la genial idea de poner al medio de la aldea una jarra de greda de cuello muy delgado, donde sólo cabía la mano del mono. Dentro de la jarra echó unos cuantos manís (asegurándose de que los monos lo vieran) y se sentó a esperar.</p>
<p>Al poco rato comenzaron a bajar los monos con la intención de robarse el maní. El primer mono se acercó y metió la mano. Tomó el maní y al intentar sacar la mano empuñada se quedó atrapado. Ambicioso, el mono no podía soltar el maní e intentaba escapar infructuosamente. El aldeano atrapó al mono, y sucesivamente fue atrapando a los demás monos que quedaban atrapados.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/otros-temas/los-monos-ambiciosos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo trabajar con bases de datos grandes en MySQL</title>
		<link>http://www.sebastianbarria.com/web/como-trabajar-con-bases-de-datos-grandes-en-mysql/</link>
		<comments>http://www.sebastianbarria.com/web/como-trabajar-con-bases-de-datos-grandes-en-mysql/#comments</comments>
		<pubDate>Sun, 14 Apr 2013 06:05:32 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=161</guid>
		<description><![CDATA[Primero que nada, quiero aclarar que por bases de datos &#8220;grandes&#8221; me refiero a aquellas que tienen más de 100.000 filas.
Una base de datos muy grande puede generar bastantes problemas, como por ejemplo que un sitio se demore una eternidad en cargar o incluso que deje de responder. Pero el problema no es la base de datos ni el motor. Dicen que cuando hay que trabajar con grandes cantidades de datos debe dejar de usarse MySQL y usar SQL, pero finalmente una base de datos MySQL puede funcionar tan bien como una SQL si está bien configurada.
En base&#8230;]]></description>
				<content:encoded><![CDATA[<p>Primero que nada, quiero aclarar que por bases de datos &#8220;grandes&#8221; me refiero a aquellas que tienen más de 100.000 filas.</p>
<p>Una base de datos muy grande puede generar bastantes problemas, como por ejemplo que un sitio se demore una eternidad en cargar o incluso que deje de responder. Pero el problema no es la base de datos ni el motor. Dicen que cuando hay que trabajar con grandes cantidades de datos debe dejar de usarse MySQL y usar SQL, pero finalmente una base de datos MySQL puede funcionar tan bien como una SQL si está bien configurada.</p>
<p>En base a mi experiencia, realmente lo complicado de las bases de datos grandes no son la cantidad de filas que tengan, sino la cantidad de datos que deben cruzarse.</p>
<p>Voy a poner un ejemplo práctico. Yo tengo una base de datos que tiene 3 tablas:</p>
<p>ciudades: 2.650.000 filas<br />
regiones: 3850 filas<br />
paises: 250 filas</p>
<p>Una de las formas más eficientes de mejorar las consultas son los &#8220;índices&#8221;, para lo cual se debe definir (idealmente) un largo y que columna se indexará. Lo que hacen los índices es generar una especie de &#8220;libro&#8221; donde tomará los X primeros caracteres de cada palabra de la columna definida y los agrupará (indexará). De esta forma, cuando yo busque algo, el sistema buscará en su índice primero y verá cuales son los que cumplen con esas caracteríscticas y luego irá a consultar esos datos (de esa manera no busca en toda la base de datos, sino en los que dice el índice).</p>
<p>Otra manera es utilizando LIMIT. Si estamos consultando algo que sabemos que retornará 1 sólo dato (por ejemplo cuando buscamos algo por ID), al ponerle LIMIT 1 se reducen considerablemente los tiempos. Esto es lógico pues al consultar dentro de 2.650.000 filas, si el sistema encuentra el dato en la fila n°4 (por ejemplo), al no tener un &#8220;LIMIT&#8221;, continuará consultando hasta el final de la base de datos. Por el contrario, si tiene el LIMIT, dejará de consultar apenas obtenga la cantidad de resultados especificada.</p>
<p>Otra cosa a considerar es que a utilizar LIKE (&#8216;%xxx%&#8217;), el largo del string xxx influye mucho en los tiempos de respuesta. Por ejemplo, si busco (en la base de datos de las ciudades) alguna que contenga &#8220;%s%&#8221;, la consulta tarda 0,0022 seg. Si busco alguna que contenga &#8220;%santiago de %&#8221;, la consulta tarda 3,877.</p>
<p>Y finalmente el GRAN problema es cuando se cruzan datos. La tabla paises tiene 3 datos: ID, nombre, region. La región es un ID que va asociado al ID de la tabla regiones (de ahí sacaré los nombres de cada región). Y la región pertenece a un país, cuyo nombre está en la tabla de paises (ID, nombre pais).</p>
<p>Si quiero pedir el nombre de la ciudad, el nombre de la región y el nombre del país de todas las ciudades que comiencen con &#8220;santiag%&#8221;, tendría una consulta como la siguiente:</p>
<pre>SELECT ciudad.nombre, region.nombre, pais.nombre FROM ciudades, regiones, paises WHERE ciudad.nombre LIKE ("santiag%") AND ciudad.region=region.id AND region.pais=pais.id</pre>
<p>&nbsp;</p>
<p>Esta consulta, al tener que cruzar datos entre tablas demorará mucho tiempo, ya que obligaremos al motor de base de datos a tener en memoria los nombres de todas las ciudades, regiones y países y hacerlos coincidir. Mientras más WHERE apliquemos, más lenta se tornará la consulta.</p>
<p>¿Qué hacemos en casos como este, en que la consulta demore por ejemplo 35 segundos?&#8230; claramente no podemos dejar esperando a nuestros clientes todo ese rato. Para casos como estos, la solución es tan simple como hacer 3 consultas a la base de datos:</p>
<ol>
<li>Primero, se consulta el listado de paises y se guarda en un array asociativo, donde el Key sea el ID del pais y el valor sea el Nombre del pais.</li>
<li>Luego se hace lo mismo con las regiones</li>
<li>Finalmente se hace la consulta SOLAMENTE de las ciudades que partan con &#8220;santiag%&#8221;. Sin cruce de datos ni nada.</li>
</ol>
<p>Entonces, cuando queramos mostrar los datos del pais y la región haremos algo como: &lt;? echo $regiones[ID_CIUDAD]; ?&gt;, &lt;? echo $paises[ID_CIUDAD]; ?&gt;, lo cual mostraría en pantalla algo como &#8220;Región Metropoitana, Chile&#8221;.</p>
<p>Esta manera, en algunos casos es mucho más eficiente que esperar 35 segundos por consulta, ya que como son 3 consultas simples, demorarían menos de 0,5 seg. cada una.</p>
<p>Estas son algunas formas de optimizar las consultas a la base de datos. Aunque se diga lo contrario por ahí, SI es posible manejar millones de datos en MySQL sin tener problemas de tiempos de respuesta. Sólo basta con configurar y optimizar las consultas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/como-trabajar-con-bases-de-datos-grandes-en-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertir colores hexadecimales a su tono en escala de grises en PHP</title>
		<link>http://www.sebastianbarria.com/web/convertir-colores-hexadecimales-a-su-tono-en-escala-de-grises-en-php/</link>
		<comments>http://www.sebastianbarria.com/web/convertir-colores-hexadecimales-a-su-tono-en-escala-de-grises-en-php/#comments</comments>
		<pubDate>Thu, 28 Feb 2013 16:16:32 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=158</guid>
		<description><![CDATA[El siguiente es una función desarrollada en PHP para convertir colores hexadecimales (colores Web) en su color equivalente en escala de grises.
Ojo que esto NO ES para convertir imágenes a grayscale, sino que para convertir los colores (tipo #ffcc00) a su equivalente en escala de grises.
<pre>function grayscale($color,$antecesor="#"){
    $coloresWeb=array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");

    $color=strtolower(str_replace("#","",$color));
    if(strlen($color)==3){ $color=$color[0].$color[0].$color[1].$color[1].$color[2].$color[2]; }

    $posiciones=array(
        array_search($color[0],$coloresWeb,true),
        array_search($color[1],$coloresWeb,true),
        array_search($color[2],$coloresWeb,true),
        array_search($color[3],$coloresWeb,true),
        array_search($color[4],$coloresWeb,true),
        array_search($color[5],$coloresWeb,true)
    );

    $total=0;
    foreach($posiciones as $posicion){
        $total+=$posicion;
    }

    $promedio=0;
    if($total){
        $promedio=$coloresWeb[round($total/6)];
    }

   &#8230;</pre>]]></description>
				<content:encoded><![CDATA[<p>El siguiente es una función desarrollada en PHP para convertir colores hexadecimales (colores Web) en su color equivalente en escala de grises.</p>
<p>Ojo que esto NO ES para convertir imágenes a grayscale, sino que para convertir los colores (tipo #ffcc00) a su equivalente en escala de grises.</p>
<pre>function grayscale($color,$antecesor="#"){
    $coloresWeb=array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");

    $color=strtolower(str_replace("#","",$color));
    if(strlen($color)==3){ $color=$color[0].$color[0].$color[1].$color[1].$color[2].$color[2]; }

    $posiciones=array(
        array_search($color[0],$coloresWeb,true),
        array_search($color[1],$coloresWeb,true),
        array_search($color[2],$coloresWeb,true),
        array_search($color[3],$coloresWeb,true),
        array_search($color[4],$coloresWeb,true),
        array_search($color[5],$coloresWeb,true)
    );

    $total=0;
    foreach($posiciones as $posicion){
        $total+=$posicion;
    }

    $promedio=0;
    if($total){
        $promedio=$coloresWeb[round($total/6)];
    }

    return $antecesor.$promedio.$promedio.$promedio.$promedio.$promedio.$promedio;
}</pre>
<p>Como siempre, todos los comentarios son bienvenidos&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/convertir-colores-hexadecimales-a-su-tono-en-escala-de-grises-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La revolución de Internet y el cambio de mentalidad</title>
		<link>http://www.sebastianbarria.com/web/la-revolucion-de-internet-y-el-cambio-de-mentalidad/</link>
		<comments>http://www.sebastianbarria.com/web/la-revolucion-de-internet-y-el-cambio-de-mentalidad/#comments</comments>
		<pubDate>Thu, 28 Feb 2013 14:53:40 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Teoría]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=151</guid>
		<description><![CDATA[Este es un artículo que redacté para la <a href="http://www.revistacarrusel.cl/la-revolucion-de-internet-y-el-cambio-de-mentalidad/" target="_blank">revista Carrusel</a>
El siguiente es el texto que fue publicado en la revista

Aparentemente no nos hemos dado cuenta, pero<strong> Internet ha revolucionado por completo nuestras vidas y la manera de comunicarnos como sociedad.&#8230;</strong>
Creemos habernos dado cuenta porque hemos estado viviendo el cambio, pero si lo analizamos en profundidad, esta revolución es mucho mayor de lo que parece.
Como menciona Clay Shirky en una de sus charlas para el TED, en los últimos 500 años han existido 5 grandes revoluciones en los medios y que han ayudado por completo a la]]></description>
				<content:encoded><![CDATA[<blockquote><p>Este es un artículo que redacté para la <a href="http://www.revistacarrusel.cl/la-revolucion-de-internet-y-el-cambio-de-mentalidad/" target="_blank">revista Carrusel</a><br />
El siguiente es el texto que fue publicado en la revista</p></blockquote>
<div>
<p>Aparentemente no nos hemos dado cuenta, pero<strong> Internet ha revolucionado por completo nuestras vidas y la manera de comunicarnos como sociedad.</strong></p>
<p>Creemos habernos dado cuenta porque hemos estado viviendo el cambio, pero si lo analizamos en profundidad, esta revolución es mucho mayor de lo que parece.</p>
<p>Como menciona Clay Shirky en una de sus charlas para el TED, en los últimos 500 años han existido 5 grandes revoluciones en los medios y que han ayudado por completo a la comunicación, o más específicamente, a la divulgación de la información y conocimiento.</p>
<p>La imprenta fue la primera gran revolución y que permitió la difusión masiva del conocimiento; el telégrafo y el teléfono vinieron después a revolucionar la comunicación directa entre 2 personas; los medios grabados y codificados (audio, imágenes, y video) permitieron almacenar y difundir información “no escrita” y capturar momentos para la posteridad; y el aprovechamiento de las ondas electromagnéticas permitió generar la radio y televisión, con lo cual<strong> fue posible difundir una cantidad enorme de información a todo el mundo.</strong></p>
<p>Todos estos han sido grandes inventos y revoluciones, pero si lo analizamos en detalle, todos<strong> estos medios tienen la particularidad de ser “uno a uno” o “uno a muchos”</strong>, lo cual ha sido la forma de comunicarse durante prácticamente toda la historia de la humanidad, hasta ahora.</p>
<p><strong>Internet ha sido la 5ª gran revolución.</strong> Internet ha permitido la comunicación “muchos a muchos”, es decir, que ha abierto el espectro comunicacional permitiendo a cualquier persona ser productor de conocimiento y entregarlo a quien esté dispuesto a recibirlo. En Internet todos somos profesores y todos somos alumnos; todos somos emisores y todos receptores.</p>
<p>Internet y toda su tecnología adyacente (computadores, tablets, celulares, etc.) se han transformado en un medio que<strong> abarca a las 4 revoluciones anteriores, permitiendo a las personas crear contenido</strong> (audio, videos, textos, imágenes, aplicaciones, juegos, etc.) e incluso conceptos sobre los cuales todos pueden discutir, opinar y comentar.</p>
<p>Imaginémoslo como una analogía en una sala de clases: hasta antes de Internet, el profesor se paraba frente a los alumnos y les daba una charla, con lo cual todos aprendían lo que se les enseñaba y toda la comunicación venía de una única fuente. Ahora, las clases son algo así como una terapia grupal, donde<strong> ya no hay un orador, sino alguien que propone un tema</strong>, el cual es complementado con el conocimiento de todos los alumnos.</p>
<p>Esto es la gran revolución que ha producido Internet. Es algo que hay que <strong>“querer” entender y debemos darnos cuenta hoy mismo de este cambio</strong>. Internet no es una moda, es una revolución que ha producido un cambio de mentalidad en la sociedad, y sobre todo en los niños que quieren participar del conocimiento y no solamente recibirlo.</p>
<p>A los niños de hoy hay que permitirles dar el gran paso, pues de una manera u otra lo darán. La sociedad avanza, y así también debe hacerlo la comunicación y enseñanza que los padres les entreguen. Tenemos que dejarlos (y enseñarles a) utilizar las herramientas que Internet ha traído consigo, para que ellos mismos investiguen y creen contenido; hay que dejarlos experimentar y comunicarse de la manera en que sus cerebros vienen programados, pues recordemos que los más jóvenes ya no son como nosotros, sino personas con una nueva mentalidad que ha venido de la mano con este proceso de revolución comunicacional que estamos viviendo.</p>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/la-revolucion-de-internet-y-el-cambio-de-mentalidad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Código PHP para generar automáticamente palabras claves (meta keywords)</title>
		<link>http://www.sebastianbarria.com/web/codigo-php-para-generar-automaticamente-palabras-claves-meta-keywords/</link>
		<comments>http://www.sebastianbarria.com/web/codigo-php-para-generar-automaticamente-palabras-claves-meta-keywords/#comments</comments>
		<pubDate>Tue, 02 Oct 2012 03:36:02 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=150</guid>
		<description><![CDATA[Imagino que a muchos de ustedes les sucederá que al desarrollar un sitio hay que poner las palabras claves, idealmente, diferentes en cada página, lo cual es un trabajo de lo más aburrido (y que probablemente al final no hacen)&#8230; yo tampoco, por supuesto.
PEOR AÚN!!!&#8230; están desarrollando un sitio que lo va a administrar uno de sus clientes, que poco y nada sabe de Internet&#8230; osea que las posibilidades de que el sitio vaya a tener keywords son infinitamente nulas!!!
Pues bien&#8230; para quienes trabajan &#8220;como hombres&#8221;, machos y vikingos de la Web (es decir, sin sistemas como WordPress,&#8230;]]></description>
				<content:encoded><![CDATA[<p>Imagino que a muchos de ustedes les sucederá que al desarrollar un sitio hay que poner las palabras claves, idealmente, diferentes en cada página, lo cual es un trabajo de lo más aburrido (y que probablemente al final no hacen)&#8230; yo tampoco, por supuesto.</p>
<p>PEOR AÚN!!!&#8230; están desarrollando un sitio que lo va a administrar uno de sus clientes, que poco y nada sabe de Internet&#8230; osea que las posibilidades de que el sitio vaya a tener keywords son infinitamente nulas!!!</p>
<p>Pues bien&#8230; para quienes trabajan &#8220;como hombres&#8221;, machos y vikingos de la Web (es decir, sin sistemas como WordPress, Joomla o cualquier otro que use plugins para salvarle la vida al programador), les dejo este código PHP  (script, snippet o como quieran llamarlo) hecho por mi para auto-generar una cierta cantidad de palabras claves (keywords) basado en algún texto que se le envíe (idealmente el cuerpo de la página en cuestión). Es IDEAL para generar meta keywords, por ejemplo.</p>
<p>Odio los comentarios en los códigos PHP (al menos nunca he visto uno realmente útil), asique no los voy a poner&#8230; sólo les dejaré el código &#8220;pelado&#8221;, a lo mero macho.</p>
<pre>function keywords($texto,$cantidad=20){
$keywords=array();
$palabrasNoConsideradas="que,qué,cuán,cuan,los,las,una,unos,unas,donde,dónde,como,cómo,cuando,porque,por,para,según,sin,con,mas,más,pero,del";
$palabrasNoConsideradas=explode(",",$palabrasNoConsideradas);

$texto=strip_tags(html_entity_decode($texto,ENT_NOQUOTES,"UTF-8"));
$texto=preg_replace(array('/\s+/'),' ',$texto);
$texto=preg_replace(array('/\r/', '/\n/','/[¿!¡;,:\.\?#@()"]/'),'',$texto);
$texto=explode(" ",$texto);
$palabras=array();
foreach($texto as $palabra){
if(ctype_upper($palabra) and count($keywords)&lt;$cantidad and !in_array($palabra,$keywords)){ array_push($keywords,$palabra); } //las palabras en mayúscula son keywords automáticamente
else{
if(strlen($palabra)&gt;2 and !in_array($palabra,$palabrasNoConsideradas)){
if($palabras[$palabra]){ $palabras[$palabra]++; }
else{ $palabras[$palabra]=1; }
}
}
}
arsort($palabras);
$palabras=array_keys(array_slice($palabras,0,$cantidad-count($keywords)));
$keywords=array_merge($palabras,$keywords);

return implode(",",$keywords);
}</pre>
<p>Voilá!&#8230; cualquier mejora o comentario, por favor háganmelo llegar. Gracias!</p>
<p>PD: se habrán dado cuenta que insinué que los que usan WordPress no son &#8220;machos vikingos&#8221; y casualmente este sitio está hecho con WordPress&#8230; bueno, es sólo una coincidencia&#8230; jajaja.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/codigo-php-para-generar-automaticamente-palabras-claves-meta-keywords/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>La paradoja de los monos</title>
		<link>http://www.sebastianbarria.com/otros-temas/la-paradoja-de-los-monos/</link>
		<comments>http://www.sebastianbarria.com/otros-temas/la-paradoja-de-los-monos/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 18:17:05 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Otros temas]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=147</guid>
		<description><![CDATA[Les contaré una historia que me encanta, pues da bastante para pensar sobre el comportamiento de la raza humana.
En un experimento se metieron cinco monos en una habitación. En el centro de la misma ubicaron una escalera, y en lo alto, unos plátanos. Cuando uno de los monos subía por la escalera para acceder a los plátanos, los cinetíficos rociaban al resto de los monos con un chorro de agua fría. Al cabo de un tiempo, los monos asimilaron la conexión entre el uso de la escalera y el chorro de agua fría, de modo que cuando uno de&#8230;]]></description>
				<content:encoded><![CDATA[<p>Les contaré una historia que me encanta, pues da bastante para pensar sobre el comportamiento de la raza humana.</p>
<p>En un experimento se metieron cinco monos en una habitación. En el centro de la misma ubicaron una escalera, y en lo alto, unos plátanos. Cuando uno de los monos subía por la escalera para acceder a los plátanos, los cinetíficos rociaban al resto de los monos con un chorro de agua fría. Al cabo de un tiempo, los monos asimilaron la conexión entre el uso de la escalera y el chorro de agua fría, de modo que cuando uno de ellos se aventuraba a subir en busca de un plátano, el resto de monos se lo impedía con violencia. Al final, e incluso ante la tentación del alimento, ningún mono se atrevía a subir por la escalera.</p>
<p>En ese momento, los científicos sacaron a uno de los cinco monos iniciales e introdujeron uno nuevo en la habitación.</p>
<p>El mono nuevo, naturalmente, trepó por la escalera en busca de los plátanos. En cuanto los demás observaron sus intenciones, se abalanzaron sobre él y lo bajaron a golpes antes de que el chorro de agua fría hiciera su aparición. Después de repetirse la experiencia varias veces, al final el nuevo mono comprendió que era mejor para su integridad renunciar a ascender por la escalera.</p>
<p>Los científicos sustituyeron otra vez a uno de los monos del grupo inicial. Posteriormente se repitió el proceso con el tercer, cuarto y quinto mono, hasta que llegó un momento en que todos los monos del experimento inicial habían sido sustituidos.</p>
<p>En ese momento, los científicos se encontraron con algo sorprendente. Ninguno de los monos que había en la habitación había recibido nunca el chorro de agua fría, sin embargo, ninguno se atrevía a trepar para tomar un plátano.</p>
<p>Si hubieran podido preguntar a los primates por qué no subían para alcanzar el alimento, probablemente la respuesta hubiera sido &#8220;No lo sé. Esto siempre ha sido así&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/otros-temas/la-paradoja-de-los-monos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mootools vs jQuery</title>
		<link>http://www.sebastianbarria.com/web/mootools-vs-jquery/</link>
		<comments>http://www.sebastianbarria.com/web/mootools-vs-jquery/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 23:21:33 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Recomiendo]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=144</guid>
		<description><![CDATA[Este post es en parte para realizar una comparativa entre <a href="http://mootools.net/" target="_blank">Mootools</a> y <a href="http://www.jquery.com/" target="_blank">jQuery&#8230;</a>. Ambas son librerías de javascript que permiten hacer cosas como animar objetos, seleccionar elementos, etc. en cada página donde se ejecuten, es decir que en la práctica lo que hacen es entregarnos funciones pre-hechas para realizar las tareas de javascript y así permitir, entre otras cosas, simplicarnos la vida y compatibilizar los navegadores. Ambas sirven para lo mismo y de hecho funcionan de manera bastante similar.
Muchas personas no conocen Mootools y, como generalmente ven más sitios o ejemplos hechos en jQuery creen que &#8220;es mejor&#8221;,]]></description>
				<content:encoded><![CDATA[<p>Este post es en parte para realizar una comparativa entre <a href="http://mootools.net/" target="_blank">Mootools</a> y <a href="http://www.jquery.com/" target="_blank">jQuery</a>. Ambas son librerías de javascript que permiten hacer cosas como animar objetos, seleccionar elementos, etc. en cada página donde se ejecuten, es decir que en la práctica lo que hacen es entregarnos funciones pre-hechas para realizar las tareas de javascript y así permitir, entre otras cosas, simplicarnos la vida y compatibilizar los navegadores. Ambas sirven para lo mismo y de hecho funcionan de manera bastante similar.</p>
<p>Muchas personas no conocen Mootools y, como generalmente ven más sitios o ejemplos hechos en jQuery creen que &#8220;es mejor&#8221;, pero a mi juicio Mootools es mucho mejor que jQuery. De hecho, NUNCA he visto algo que se pueda hacer en jQuery y que no se pueda hacer en Mootools (por favor si alguien sabe de algo que lo publique acá), y en teoría no tendría porqué jQuery ser mejor que Mootools en ese sentido si ambos están basados únicamente en lo que permite hacer javascript.</p>
<h2>El gran plus de jQuery: su documentación</h2>
<p>Me he encontrado que cuando quiero buscar algo relacionado a jQuery me es bastante fácil encontrar una solución o ejemplos, a diferencia de Mootools, que su documentación es bastante pobre (sólo lo justo y necesario). Además de eso, mootools tiene unos ejemplos online muy antiguos (de la versión 1.1) y para las últimas versiones ofrecen descargar los ejemplos o revisar su funcionalidad en una interfaz llamada <a href="http://jsfiddle.net/" target="_blank">jsFiddle</a>, en la cual también se encuentran ejemplos de las demás librerías como <a href="http://developer.yahoo.com/yui/" target="_blank">YUI</a> o <a href="http://www.prototypejs.org/" target="_blank">prototype</a>.</p>
<p>Por su parte jQuery ofrece cosas mucho más simples como <a href="http://jqueryui.com/" target="_blank">jQueryUI</a> o su listado de <a href="http://plugins.jquery.com/" target="_blank">plugins</a>, los cuales ofrecen ejemplos bastante claros, concretos y simples. Quizás por eso es tan popular jQuery, porque es mucho más fácil encontrar una librería que se ajuste a las necesidades de algún proyecto, la cual puedes implementar incluso con poco conocimiento. De todas formas Mootools no se queda atrás y ofrece <a href="http://mootools.net/forge/" target="_blank">Mootools Forge</a> (que en la práctica es un repositorio de plugins) y existen sitios como <a href="http://www.jourmoly.com.ar/category/mootools-en-espanol/" target="_blank">JOURMOLY</a> que tiene muchos ejemplos realmente útilies y que le &#8220;salvan el pellejo&#8221;.</p>
<h2>El gran plus de Mootools: su funcionalidad</h2>
<p>Vamos directo con un ejemplo: cuando tengo un link y quiero que al hacer click haga submit a un formulario simplemente pongo lo siguiente en mootools:</p>
<pre>$('id_del_formulario').submit();</pre>
<p>En jQuery esto no funciona. Es algo complejo de explicarselo a humanos (yo no soy programador de profesión asique tampoco me gusta explicar las cosas como programador), pero en resumidas cuentas, mootools permite seleccionar un objeto con $ y eso al final es lo mismo que decir document.getElementById. En jQuery, al usar el $ el objeto se convierte en un objeto de jQuery y si quiero hacer un submit tengo que usar una función interna que trae jQuery para dichos efectos. Al ser un objeto de jQuery aparentemente no puede interactuar con todas las funciones básicas de javascript, y eso a la larga es confuso.</p>
<blockquote><p>NOTA: puede ser que en las últimas versiones de jQuery esto ya no suceda. Me tocó hace tiempo hacer algo como esto y últimamente no me ha tocado desarrollar en jQuery, asique si estoy mal avísenme.</p></blockquote>
<p>Lo importante es que Mootools es más flexible en ese sentido. Es bastante fácil de implementar y tiene métodos muy simples. Como es obvio, también, hay cosas que son más simples en jQuery, asique creo que en ese sentido es mejor que cada uno decida.</p>
<h2>Mi opinión personal</h2>
<p>Por mi parte recomiendo Mootools. Personalmente no me gusta jQuery (es como escoger entre WordPress o Joomla, entre los cuales prefiero WordPress), y encuentro que es un poco más engorroso de entender y programar.</p>
<p>Personalmente uso un archivo que pesa 213k pero que contiene TODO Mootools (ya que hay un Mootools &#8220;básico&#8221; y un &#8220;core&#8221; que tiene más funcionalidades) y con eso puedo hacer todo lo que quiera en cualquier sitio. Como los .js se cargan una sola vez y luego se toman del caché el impacto que esto produce es imperceptible y además de esa manera no se llama a n archivos (como sucede en jQuery, donde se carga la base y luego se van cargando librerías para efectos, desplegables, carruseles, etc.), sino que se carga sólo 1, lo cual optimiza bastante la carga de la página.</p>
<p>Con esto inicio el debate por si alguien se quiere sumar&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/mootools-vs-jquery/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Largo de elementos para insertar en mysql</title>
		<link>http://www.sebastianbarria.com/web/largo-de-elementos-para-insertar-en-mysql/</link>
		<comments>http://www.sebastianbarria.com/web/largo-de-elementos-para-insertar-en-mysql/#comments</comments>
		<pubDate>Sun, 18 Sep 2011 06:03:10 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=142</guid>
		<description><![CDATA[Muchas veces planificamos y creamos bases de datos en las cuales tendremos que almacenar varios datos, pero en la práctica no sabemos la cantidad real de caracteres que tendrá cada uno. En ese caso generalmente ponemos un valor cualquiera con el que nos aseguremos que va a caber la información.
Por ejemplo, si hacemos una aplicacación que se conecte con twitter, vamos a recibir ciertos datos que vienen en una enorme cadena de texto, pero la pregunta es: ¿cuántos caracteres recibiremos?&#8230; si no sabemos le pondremos algo así como 255, y probablemente estemos ocupando espacio adicional en el base de&#8230;]]></description>
				<content:encoded><![CDATA[<p>Muchas veces planificamos y creamos bases de datos en las cuales tendremos que almacenar varios datos, pero en la práctica no sabemos la cantidad real de caracteres que tendrá cada uno. En ese caso generalmente ponemos un valor cualquiera con el que nos aseguremos que va a caber la información.</p>
<p>Por ejemplo, si hacemos una aplicacación que se conecte con twitter, vamos a recibir ciertos datos que vienen en una enorme cadena de texto, pero la pregunta es: ¿cuántos caracteres recibiremos?&#8230; si no sabemos le pondremos algo así como 255, y probablemente estemos ocupando espacio adicional en el base de datos.</p>
<p>Bueno&#8230; a mi me pasó eso&#8230; y voy a compartir la información que investigué y que deduje para que se les haga más fácil la tarea XD.</p>
<p><strong>ID = 10 caracteres</strong> (hablando de ID&#8217;s numéricos con auto-increment y &#8220;unsigned&#8221;)<strong><br />
Email</strong> =256 caracteres (64 antes de la @, y un máximo de 256)<br />
<strong>Passwords</strong> = 32 caracteres si se almacenan en formato MD5 (recomendado)<br />
<strong>Nombres</strong> = 100 (generalmente con eso alcanza&#8230; sino se puede ocupar un varchar de 255 o un tinytext)<br />
<strong>ID de Facebook</strong> =64 caracteres (pues cambiaron hace poco el largo de la cadena en vista de que tienen muchos registrados)<br />
<strong>Twitter Oauth Token</strong> = 50 caracteres<br />
<strong>Twitter Oauth Token Secret</strong> = 50 caracteres<br />
<strong>Twitter Username</strong> = 15 caracteres<br />
<strong>RUT</strong> (chileno) = 12 caracteres (si se almacena con puntos y guión) o 9 caracteres (si se almacena sin puntos ni guión, que es lo más óptimo)<br />
<strong>URL</strong> = Se supone que no hay un largo máximo definido, sin embargo leí por ahí que IE6 acepta un máximo de 2047 caracteres si la escribo en el navegador&#8230; raro, pero en verdad no sabría que largo (maxlength) recomendar. De todas formas yo generalmente pongo 255 ó 500 caracteres&#8230; DUDO que alguien tenga un sitio web con más qu eso (los 2047 caracteres probablemente se apliquen a un post en un blog, pero no a la URL de un sitio personal).</p>
<p>BuenoHay muchos otros tipos de datos, y por supuesto que pueden preguntar en los comentarios o aportar si tienen otros datos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/largo-de-elementos-para-insertar-en-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logo Selección Chilena vectorizado (FH11)</title>
		<link>http://www.sebastianbarria.com/mis-proyectos/logo-seleccion-chilena-vectorizado-fh11/</link>
		<comments>http://www.sebastianbarria.com/mis-proyectos/logo-seleccion-chilena-vectorizado-fh11/#comments</comments>
		<pubDate>Sun, 03 Apr 2011 18:32:03 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Mis proyectos]]></category>
		<category><![CDATA[Otros temas]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=138</guid>
		<description><![CDATA[Una vez, para hacer un Wallpaper para http://www.larojamundial.com tuve que vectorizar el logo de la Selección Chilena de fútbol, ya que no lo pude encontrar googleando.
<a href="http://www.sebastianbarria.com/wp-content/uploads/2011/04/logo-seleccion-chilena.png"><img title="logo seleccion chilena" src="http://www.sebastianbarria.com/wp-content/uploads/2011/04/logo-seleccion-chilena.png" alt="" width="702" height="600" /></a>
Acá se los dejo por si a alguien le sirve.
<a href="http://www.sebastianbarria.com/wp-content/uploads/2011/04/logo-seleccion-chilena.zip">[DESCARGAR EN FORMATO FH11]</a>
<a href="http://www.sebastianbarria.com/wp-content/uploads/2011/04/logo-seleccion-chilena.png">[DESCARGAR EN FORMATO PNG]&#8230;</a>]]></description>
				<content:encoded><![CDATA[<p>Una vez, para hacer un Wallpaper para http://www.larojamundial.com tuve que vectorizar el logo de la Selección Chilena de fútbol, ya que no lo pude encontrar googleando.</p>
<p><a href="http://www.sebastianbarria.com/wp-content/uploads/2011/04/logo-seleccion-chilena.png"><img title="logo seleccion chilena" src="http://www.sebastianbarria.com/wp-content/uploads/2011/04/logo-seleccion-chilena.png" alt="" width="702" height="600" /></a></p>
<p>Acá se los dejo por si a alguien le sirve.</p>
<p><a href="http://www.sebastianbarria.com/wp-content/uploads/2011/04/logo-seleccion-chilena.zip">[DESCARGAR EN FORMATO FH11]</a><br />
<a href="http://www.sebastianbarria.com/wp-content/uploads/2011/04/logo-seleccion-chilena.png">[DESCARGAR EN FORMATO PNG]</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/mis-proyectos/logo-seleccion-chilena-vectorizado-fh11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>www.tumensajeajapon.com</title>
		<link>http://www.sebastianbarria.com/web/www-tumensajeajapon-com/</link>
		<comments>http://www.sebastianbarria.com/web/www-tumensajeajapon-com/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 00:02:39 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Acerca de mi]]></category>
		<category><![CDATA[Mis proyectos]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/web/www-tumensajeajapon-com/</guid>
		<description><![CDATA[Era viernes en la mañana cuando me llama @rdeguerra y me dice &#8220;perro! Tengo una idea&#8221;. Me la explicó y me gustó, asique me puse manos a la obra aunque en ese minuto lo que menos tenía era tiempo.
El sitio permite escribir un mensaje en español y traducirlo al japonés (usando la API de Google translate) para después enviarlo vía twitter mencionando la cuenta de @earthquake_jp y el hashtag #msgJapon.
El sitio dio excelentes resultados y fue mencionado en muchos lugares.
Una excelente idea ejecutada en tiempo récord.
Visítenlo en<a href="http://www.tumensajeajapon.com"> </a>
<a href="http://www.tumensajeajapon.com">http://www.tumensajeajapon.com&#8230;</a>]]></description>
				<content:encoded><![CDATA[<p>Era viernes en la mañana cuando me llama @rdeguerra y me dice &#8220;perro! Tengo una idea&#8221;. Me la explicó y me gustó, asique me puse manos a la obra aunque en ese minuto lo que menos tenía era tiempo.<br />
El sitio permite escribir un mensaje en español y traducirlo al japonés (usando la API de Google translate) para después enviarlo vía twitter mencionando la cuenta de @earthquake_jp y el hashtag #msgJapon.<br />
El sitio dio excelentes resultados y fue mencionado en muchos lugares.<br />
Una excelente idea ejecutada en tiempo récord.</p>
<p>Visítenlo en<a href="http://www.tumensajeajapon.com"> </a></p>
<blockquote><p><a href="http://www.tumensajeajapon.com">http://www.tumensajeajapon.com</a></p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/www-tumensajeajapon-com/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.488 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-05-13 15:33:23 -->

<!-- Compression = gzip -->