<?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 &#187; Web</title>
	<atom:link href="http://www.sebastianbarria.com/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sebastianbarria.com</link>
	<description>Desarrollo web y multimedia</description>
	<lastBuildDate>Wed, 11 Jan 2012 18:17:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>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>1</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>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>
		<item>
		<title>Conceptos a definir para crear un sitio Web (y una tienda online)</title>
		<link>http://www.sebastianbarria.com/web/conceptos-a-definir-para-crear-un-sitio-web-y-una-tienda-online/</link>
		<comments>http://www.sebastianbarria.com/web/conceptos-a-definir-para-crear-un-sitio-web-y-una-tienda-online/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 13:38:49 +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=125</guid>
		<description><![CDATA[<h3>Introducción</h3>
Mucha gente no sabe bien que hacer antes de partir con el desarrollo de un sitio Web. Tienen la idea de lo que quieren, pero una cosa es tener una idea y la otra es tenerlo CLARO.
Acá voy a intententar ayudar a definir lo básico que hay que pensar antes de comenzar con un sitio Web, en base a mi experiencia. Espero que les sirva&#8230;
<h3>Conceptos generales&#8230;</h3>
Lo primero es plantearse objetivos y definir a quien estará enfocado el sitio. Con esto en mente, se podrá tomar desiciones a futuro dándole prioridades a los objetivos y sabiendo que]]></description>
			<content:encoded><![CDATA[<h3>Introducción</h3>
<p>Mucha gente no sabe bien que hacer antes de partir con el desarrollo de un sitio Web. Tienen la idea de lo que quieren, pero una cosa es tener una idea y la otra es tenerlo CLARO.</p>
<p>Acá voy a intententar ayudar a definir lo básico que hay que pensar antes de comenzar con un sitio Web, en base a mi experiencia. Espero que les sirva&#8230;</p>
<h3>Conceptos generales</h3>
<p>Lo primero es plantearse objetivos y definir a quien estará enfocado el sitio. Con esto en mente, se podrá tomar desiciones a futuro dándole prioridades a los objetivos y sabiendo que cosas enfatizar cuando sea necesario.</p>
<ul>
<li>Objetivo principal del sitio (vender, mostrar la empresa, servir de intranet, generar una base de datos de clientes, etc.)</li>
<li>Objetivos secundarios (lo mismo que el principal, pero con menos importancia)</li>
<li>A quién está enfocado el sitio (tratar de caracterizar una personas. Inventarle un nombre ficticio incluso&#8230; algo así como &#8220;José Andrés. El vive en el barrio alto. Vive con su mamá y su papá y tiene 3 hermanas mujeres. Lee el diario los domingos y estudia Arquitectura en la Universidad XXXX. Cuando egrese va a manejar la empresa del padre, etc.&#8221;. Con eso se define el tipo de persona &#8220;ideal&#8221; a la que quiero apuntar y a futuro se podran tomar desiciones de marketing, comerciales y desiciones respecto al contenido del mismo sitio Web y la forma de comunicarse.</li>
<li>Definir a los otros públicos que podrían visitar el sitio (la competencia, mis propios empleados, los extranjeros, etc.)</li>
<li>El impacto que quiero producir sobre los distintos públicos (quiero que la competencia vea mi sitio y sienta envidia. Que los extranjeros vean que mi sitio es tan avanzado como el de ellos, quiero ganar premios en concursos de diseño, etc.)</li>
<li>Conceptos generales del sitio (fácil uso, limpieza visual, tecnológico, harto movimiento, etc. Deberían ser los 2 ó 3 más importantes).</li>
<li>Referencias (quiero que mi sitio sea como xxxxx. La idea es saber hacia donde tiene que apuntar el diseño y desarrollo).</li>
</ul>
<h3>Conceptos logísticos</h3>
<p>El sitio tiene que ir acompañado por todo un contexto humano detrás:</p>
<ul>
<li>Quién será el encargado del desarrollo del sitio por parte de la empresa (tiene que haber una única persona que nos comunique las desiciones que se van a tomar. Si esa persona tiene que discutir con 20 personas detrás de ella, da lo mismo, pero lo importante es que haya un UNICO canal de comunicación entre la empresa que desarrolle y el cliente)</li>
<li>Cada cuanto tiempo se actualizará el sitio (esto se debe hacer en base a la REALIDAD de la empresa. Si no hay una persona que pueda crear banners o textos y no se pretende contratar a alguien para ese trabajo, hay que saberlo de antemano para ver que desiciones tomar en los puntos siguientes)</li>
<li>Quién va a administrar el sitio (cuanta gente, cantidad de experiencia en computación, etc.)</li>
<li>¿El sitio va a tener un administrador de contenidos o un equipo de trabajo detrás? (esto varía en relación a la complejidad de contenido que deberá ser administrado y lo que quieren que pase con el sitio. Al final esto es consecuencia de los puntos anteriores)</li>
<li>¿Se aceptará alguna forma de contacto con el sitio?. ¿Quién responderá esos correos de contacto?</li>
<li>¿Quién redactará los textos inciales del sitio?</li>
</ul>
<h3>¿Y si quiero hacer una tienda online?</h3>
<p>Las tiendas online son un tema aparte, debido a su complejidad, y requieren pensar cosas adicionales como:</p>
<ul>
<li>Cuál será el beneficio de la tienda por sobre las demás formas de venta? (¿porqué la gente va a preferir comprar en esta tienda y no en una tienda física, donde pueda tocar y ver los productos?, ¿los productos que se ofrezcan tendrán precios más bajos que las tiendas físicas?, ¿el despacho será gratis?, etc.)</li>
<li>¿Con quién se van a realizar los despachos? (la empresa que se contrate tendrá la capacidad de aguantar la cantidad de carga y llegará a todas partes?, ¿los precios de esta empresa son razonables en base a los tipos de producto que se deban despachar?)</li>
<li>¿El costo de despacho va a estar cargado al público o corre por cuenta de la empresa?</li>
<li>¿Como se mantendrá actualizado el sistema de stock (manualmente, existe una base de datos de los productos, a través de un excel, etc.)</li>
<li>¿Existirá una bodega REAL para la tienda? (¿será una tienda más con su stock propio?)</li>
<li>¿Como será la ficha genérica para ingresar productos (debe ser una ficha que sirva para ingresar datos básicos y opcionales para TODOS los productos. Una única ficha que sirva para cualquier tipo de producto)</li>
<li>¿Existirán productos &#8220;madres&#8221; e &#8220;hijos&#8221;, o sólo productos? (¿cada producto &#8220;madre&#8221; tendrá variaciones de productos &#8220;hijos&#8221;?. Hay que ver si para el tipo de tienda eso es viable)</li>
</ul>
<p>Creo que eso es lo escencial. El resto de las desiciones se toman en la etapa de planificación del sitio en base a los conceptos generales que se hayan definido para el sitio.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/conceptos-a-definir-para-crear-un-sitio-web-y-una-tienda-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatizar las frases por defecto en los campos de texto</title>
		<link>http://www.sebastianbarria.com/web/automatizar-las-frases-por-defecto-en-los-campos-de-texto/</link>
		<comments>http://www.sebastianbarria.com/web/automatizar-las-frases-por-defecto-en-los-campos-de-texto/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 00:44:01 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=112</guid>
		<description><![CDATA[Imagino que más de alguna vez habrán visto los típicos campos de texto con alguna frase como &#8220;ingresa tu email aquí&#8221; y que cuando le hacen click esa frase desaparece por completo dejando el input vacío. Y lógicamente que cuando me salgo de boton vuelve la frase original.
Acá les dejo una forma automática de hacerlo, en javascript, por supuesto:
<pre>var inputs=$$('#formulario_de_contacto .text','#formulario_de_contacto textarea');
for(i=0;i&#60;inputs.length;i++){
	inputs[i].txtOriginal=inputs[i].value;
	inputs[i].onfocus=function(){
		if(this.value==this.txtOriginal){ this.value=""; }
	}
	inputs[i].onblur=function(){
		if(this.value==""){ this.value=this.txtOriginal; }
	}
}
&#8230;</pre>
No hay mucho que explicar de este código: primero selecciona todos los textarea y elementos con la clase &#8220;text&#8221; (que es la que]]></description>
			<content:encoded><![CDATA[<p>Imagino que más de alguna vez habrán visto los típicos campos de texto con alguna frase como &#8220;ingresa tu email aquí&#8221; y que cuando le hacen click esa frase desaparece por completo dejando el input vacío. Y lógicamente que cuando me salgo de boton vuelve la frase original.</p>
<p>Acá les dejo una forma automática de hacerlo, en javascript, por supuesto:</p>
<pre>var inputs=$$('#formulario_de_contacto .text','#formulario_de_contacto textarea');
for(i=0;i&lt;inputs.length;i++){
	inputs[i].txtOriginal=inputs[i].value;
	inputs[i].onfocus=function(){
		if(this.value==this.txtOriginal){ this.value=""; }
	}
	inputs[i].onblur=function(){
		if(this.value==""){ this.value=this.txtOriginal; }
	}
}
</pre>
<p>No hay mucho que explicar de este código: primero selecciona todos los textarea y elementos con la clase &#8220;text&#8221; (que es la que yo uso para diferenciar los inputs type=&#8221;text&#8221; de los otros inputs) y luego a cada uno de esos elementos les lee el value original y lo guarda en una variable txtOriginal, para luego decirle que cuando se ponga el cursor sobre ellos revise si tienen el mismo texto que el original o si está vacío para hacer la acción correspondiente.</p>
<p>El código anterior utiliza mootools para optimizar la búsqueda de los inputs de texto y los textarea dentro del código. Si no saben como se utiliza mootools, vean <a href="/javascript/tutorial-de-mootools-seleccionar-objetos/">este tutorial</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/automatizar-las-frases-por-defecto-en-los-campos-de-texto/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Usar registros SPF en tu servidor para evitar ser catalogado como SPAM</title>
		<link>http://www.sebastianbarria.com/web/usar-registros-spf-en-tu-servidor-para-evitar-ser-catalogado-como-spam/</link>
		<comments>http://www.sebastianbarria.com/web/usar-registros-spf-en-tu-servidor-para-evitar-ser-catalogado-como-spam/#comments</comments>
		<pubDate>Mon, 31 May 2010 15:10:23 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Servidor]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=106</guid>
		<description><![CDATA[Uf!&#8230; ese fue el título más específico que se me ocurrió&#8230; porque literalmente es eso. Acá les voy a plantear cual fue mi situación:
En <a href="http://www.geekbox.cl" target="_blank">GEEKBOX</a> estuvimos haciendo las primeras pruebas de registro para el juego <a href="http://www.brooksbrothers.cl/mundial/" target="_blank">Brooks Brothers Mundial</a>, y parte de este proceso correspondía a enviar correos a los usuarios que se registraban para poder validar sus cuentas. Estos correos se autogeneraban vía PHP y se enviaban con la típica funcion <em>mail()&#8230;</em>.
Resulta que extrañamente los correos dirigidos a cuentas de hotmail no llegaban (ni siquiera al spam), pues el sistema interno de hotmail los bloqueaba al]]></description>
			<content:encoded><![CDATA[<p>Uf!&#8230; ese fue el título más específico que se me ocurrió&#8230; porque literalmente es eso. Acá les voy a plantear cual fue mi situación:</p>
<p>En <a href="http://www.geekbox.cl" target="_blank">GEEKBOX</a> estuvimos haciendo las primeras pruebas de registro para el juego <a href="http://www.brooksbrothers.cl/mundial/" target="_blank">Brooks Brothers Mundial</a>, y parte de este proceso correspondía a enviar correos a los usuarios que se registraban para poder validar sus cuentas. Estos correos se autogeneraban vía PHP y se enviaban con la típica funcion <em>mail()</em>.</p>
<p>Resulta que extrañamente los correos dirigidos a cuentas de hotmail no llegaban (ni siquiera al spam), pues el sistema interno de hotmail los bloqueaba al ser generados por programación. La duda que le da a este servicio de correo (por la cual no quería aceptar los correos) era que éstos se enviaban desde una dirección IP xxx.xxx.xxx.xxx (la de los servidores del servicio de alojamiento), pero no era necesariamente la misma IP que la que utiliza el sitio en cuestión (que tiene una de las tantas direcciones IP de los servidores). Esto quiere decir que estos correos le producían &#8220;desconfianza&#8221; porque no sabía con certeza si eran enviados por terceros utilizando una dirección falsa o si eran enviados REALMENTE por el sitio. Asique, &#8220;ante la duda abstente&#8221; y ellos lo rechazan.</p>
<p>En resumidas cuentas no llegaban los correos y necesitaba una solución.</p>
<h2>La solución!</h2>
<p>Buscando y buscando logré entender como se tiene que hacer para que esto no ocurra: el concepto principal es asociarle a nuestro servidor un dato que defina cuales son las direcciones IP válidas para enviar correos &#8220;autorizados&#8221; por el sitio. Este &#8220;dato&#8221; es un &#8220;registro&#8221; (como los típicos registros A o CNAME) del tipo TXT que define los valores (IPs) para que los sistemas de correo (como Hotmail) puedan consultarle. Este &#8220;dato&#8221; es el llamado registro SPF o <em>SPF record </em>(<em>Sender Policy Framework</em>).</p>
<p>En resumidas cuentas, si Hotmail ve que le están enviando un correo desde la IP xxx.xxx.xxx.xxx diciendo que viene desde <em>tusitio.com</em>, se conectará <em>tusitio.com</em> y consultará si dentro de sus registros del tipo TXT hay alguno que tenga la información de los SPF. Si la encuntra, consultará cuales son las direcciones IP autorizadas desde las cuales el sitio enviará correos. Si todo está en orden (la IP desde donde se envía el correo calza con la autorizada por el servidor) recibirá el correo sin problemas; si no, lo rechazará y probablemente asumirá como que el correo nunca existió.</p>
<p>Un ejemplo de registro TXT que contiene esta información es el siguiente (para Dreamhost):</p>
<pre>v=spf1 ip4:64.111.100.0/24 ip4:66.33.201.0/24 ip4:66.33.216.0/24 ip4:208.97.132.0/24
ip4:208.97.187.0/24 ip4:208.113.200.0/24 ip4:208.113.244.0/24 ip4:208.113.175.0/24 mx -all</pre>
<p>Este dato se le asocia al servidor y listo. Luego de un rato todo debería funcionar normalmente.</p>
<blockquote><p>Hay que tener en consideración que los SPF son independientes para cada subdominio. Es decir, que si los aplicas en <em>tudominio.com</em>, no van a ser considerados para <em>tusubdominio.tudominio.com</em>. Hotmail no los considera el mismo sitio (pues no lo son).</p>
<p>Para saber si tu servidor tiene asociado algún registro SPF puedes visitar <a href="http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/" target="_blank">este sitio de microsoft</a> donde revisa los registros A, MX y SPF de tu servidor. Si encuentra algún SPF te lo muestra, sino, te muestra los registros MX para que puedas crear (con su <em>wizard</em>) los registros que necesitas.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/usar-registros-spf-en-tu-servidor-para-evitar-ser-catalogado-como-spam/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>¿Cómo usar The Geek Toolbox?</title>
		<link>http://www.sebastianbarria.com/web/%c2%bfcomo-usar-the-geek-toolbox/</link>
		<comments>http://www.sebastianbarria.com/web/%c2%bfcomo-usar-the-geek-toolbox/#comments</comments>
		<pubDate>Fri, 28 May 2010 14:38:01 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Recomiendo]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=104</guid>
		<description><![CDATA[<img title="logo_the_geek_toolbox" src="../wp-content/uploads/2010/05/logo_the_geek_toolbox.gif" alt="" width="320" height="114" />
<a href="http://www.thegeektoolbox.com/" target="_blank">The Geek Toolbox</a> es un sitio Web que permite realizar tareas o acciones completamente &#8220;geek&#8221;, ya sea relacionada a tus sitios Web, o tareas simples como averiguar la hora UTC, cambiar tamaño a imágenes, o &#8220;jugar&#8221; a codificar y decodificar palabras.
De más está decir que es uno de mis proyectos, y por algo hago este post para explicar algunas de sus funciones poco comunes. Sitios como este hay muchos, pero ninguno tiene todas estas herramientas juntas, y además, multilenguaje.
Estas son algunas de las herramientas disponibles:
<strong>Días entre dos fechas:&#8230;</strong> muy simple: ingresa la fecha de inicio (por ejemplo]]></description>
			<content:encoded><![CDATA[<p><img title="logo_the_geek_toolbox" src="../wp-content/uploads/2010/05/logo_the_geek_toolbox.gif" alt="" width="320" height="114" /></p>
<p><a href="http://www.thegeektoolbox.com/" target="_blank">The Geek Toolbox</a> es un sitio Web que permite realizar tareas o acciones completamente &#8220;geek&#8221;, ya sea relacionada a tus sitios Web, o tareas simples como averiguar la hora UTC, cambiar tamaño a imágenes, o &#8220;jugar&#8221; a codificar y decodificar palabras.</p>
<p>De más está decir que es uno de mis proyectos, y por algo hago este post para explicar algunas de sus funciones poco comunes. Sitios como este hay muchos, pero ninguno tiene todas estas herramientas juntas, y además, multilenguaje.</p>
<p>Estas son algunas de las herramientas disponibles:</p>
<p><strong>Días entre dos fechas:</strong> muy simple: ingresa la fecha de inicio (por ejemplo el día de tu nacimiento) y la fecha de término (por ejemplo hoy) y sabrás cuantos días hay entre esas dos fechas.</p>
<p><strong>Generador de favicon:</strong> el favicon es el típico ícono que se ve al lado de la URL de algún sitio. Para generarlo solo basta con seleccionar una foto de tu computador y presionar el botón &#8220;crear&#8221;. Hay que considerar que el ícono que genera esta herramienta no es un simple gif o png, sino un icono en formato .ico, el cual es el formato OFICIAL para los favicon y es el formato que todos los servidores reconocen automáticamente. No te dejes engañar!&#8230; no aceptes imitaciones!</p>
<p><strong>Calculadora de proporciones:</strong> esta herramienta es muy buena (si entiendes como se usa, claro está). ¿Alguna vez te ha pasado que tienes una imagen de 800 x 600, por ejemplo, y necesitas ponerla en un sitio Web de 500 x &#8220;xxx&#8221;?. Si no sabes cual es la proporción exacta, solo basta con que uses esta herramienta y <em>voilá</em>!: ingresas el tamaño original y luego el tamaño al que quieres dejar tu nueva imágen y esta herramienta te entrega el resultado. Nada de abrir photoshop y crear una foto de 800 x 600 y luego achicarla. Con la calcuradora de proporciones podrás ¡¡¡calcular proporciones!!! (WOW!!!). En fin. Esto se puede ocupar para embeber un video de youtube, por ejemplo y saber cual será el nuevo tamaño que le darás sin perder las proporciones.</p>
<h3>¿Y que se espera para el futuro?</h3>
<p>Pronto, se viene un &#8220;<strong>formateador de textos</strong>&#8221; (pasar un texto a minúsculas, &#8220;Dejarlo En Formato Título&#8221;, quitarle los acentos, reemplazar caracteres, etc.), una &#8220;<strong>calculadora de permisos UNIX</strong>&#8221; (los famosos CHMOD), y algunas otras sorpresas.</p>
<p><strong>¿Tienes alguna idea más para incluir?&#8230; todo aporte es bienvenido!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/%c2%bfcomo-usar-the-geek-toolbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consejos prácticos de Google para usuarios de WordPress</title>
		<link>http://www.sebastianbarria.com/web/consejos-practicos-de-google-para-usuarios-de-wordpress/</link>
		<comments>http://www.sebastianbarria.com/web/consejos-practicos-de-google-para-usuarios-de-wordpress/#comments</comments>
		<pubDate>Mon, 24 May 2010 14:10:00 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=103</guid>
		<description><![CDATA[En las siguientes diapositivas encontrarás una serie de consejos que propone Google para quienes utilizan WordPress para armar sus sitios, o para quienes (sin ser webmasters) tienen su propio blog en WordPress.
Para quienes no estén muy familiarizados con todos los conceptos, les describo algunos poco comunes:
<strong>Canonicalización</strong>: escoger la mejor URL para mostrar una página (o nuestro sitio web).
<strong>Googlebot</strong>: es el &#8220;robot&#8221; de Google, que lee nuestras páginas web para agregarlas a su base de datos.
<a href="http://ayudawordpress.com/consejos-de-google-para-webmasters-que-usan-wordpress/" target="_blank">Vía Ayuda WordPress&#8230;</a>]]></description>
			<content:encoded><![CDATA[<p>En las siguientes diapositivas encontrarás una serie de consejos que propone Google para quienes utilizan WordPress para armar sus sitios, o para quienes (sin ser webmasters) tienen su propio blog en WordPress.</p>
<p>Para quienes no estén muy familiarizados con todos los conceptos, les describo algunos poco comunes:</p>
<p><strong>Canonicalización</strong>: escoger la mejor URL para mostrar una página (o nuestro sitio web).<br />
<strong>Googlebot</strong>: es el &#8220;robot&#8221; de Google, que lee nuestras páginas web para agregarlas a su base de datos.</p>
<p><a href="http://ayudawordpress.com/consejos-de-google-para-webmasters-que-usan-wordpress/" target="_blank">Vía Ayuda WordPress</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/consejos-practicos-de-google-para-usuarios-de-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La metainformación aplicada a Web</title>
		<link>http://www.sebastianbarria.com/web/la-metainformacion-aplicada-a-web/</link>
		<comments>http://www.sebastianbarria.com/web/la-metainformacion-aplicada-a-web/#comments</comments>
		<pubDate>Tue, 11 May 2010 20:50:47 +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=100</guid>
		<description><![CDATA[La metainformación, en palabras simples, es la información que va más allá de lo que podemos ver. En el fondo es información de la información.
Un ejemplo claro de esto lo podemos ver en la frase &#8220;el perro ladró&#8221;, que claramente significa que &#8220;el animal del tipo perro ha realizado el acto de ladrar&#8221;, y sea donde sea que mencione eso significará lo mismo. La metainformación entonces está presente en COMO y CUANDO digo esta frase, es decir, en el contexto en que se presenta. Por ejemplo:
<ul>
<li>Si deseamos saber quién fue el que despertó al bebé con un sonido </li>&#8230;</ul>]]></description>
			<content:encoded><![CDATA[<p>La metainformación, en palabras simples, es la información que va más allá de lo que podemos ver. En el fondo es información de la información.</p>
<p>Un ejemplo claro de esto lo podemos ver en la frase &#8220;el perro ladró&#8221;, que claramente significa que &#8220;el animal del tipo perro ha realizado el acto de ladrar&#8221;, y sea donde sea que mencione eso significará lo mismo. La metainformación entonces está presente en COMO y CUANDO digo esta frase, es decir, en el contexto en que se presenta. Por ejemplo:</p>
<ul>
<li>Si deseamos saber quién fue el que despertó al bebé con un sonido de ladrido, puedo decir &#8220;EL PERRO ladró&#8221;, para &#8220;acusarlo&#8221; de que él fue quién lo hizo.</li>
<li>Si el perro es muy pequeño y nunca en su vida había ladrado, y hoy por primera vez lo hizo, puedo decir &#8220;el perro ladró!!!&#8221; para expresar la emoción del momento.</li>
<li>Si el perro ladra porque quiere avisarnos algo, podemos decirle a alguien &#8220;el perro ladró&#8221;, así como contándole que vaya a ver que quiere el perro, pues acaba de ladrar.</li>
</ul>
<p>Ahí tenemos tres ejemplos distintos de la misma frase, que significa lo mismo, pero que dependiendo del contexto donde se menciona se refiere a distintas cosas. Eso es &#8220;metainformación&#8221;, pues el contexto me entrega información adicional a la que se ve a simple vista. Lo mismo pasa con las expresiones corporales, por ejemplo, pues una levantada de cejas o una entonación distinta puede variar notoriamente una frase.</p>
<h3>Ahora&#8230; como aplicamos esto a la Web?</h3>
<p>Los sitios Web siempre intentan comunicar algo, y generalmente esta comunicación debe ser transmitida a través de imágenes o palabras. En ambos casos es muy importante escoger bien la manera de comunicarse, porque cada frase o imagen tiene algo de metainformación implícita.</p>
<p>Un ejemplo claro es si quiero hacer un sitio para participar en algo y ganar un premio. Hay que ser muy cuidadoso porque dependiendo de la frase que escoja y la manera de comunicarme con las personas voy a conseguir distintas cosas. Lo que tengo que hacer es invitarlos a participar, pero es muy distinto decir &#8220;juega con nosotros&#8221; que &#8220;participa con nosotros&#8221;, aunque en la práctica quiero expresar el mismo concepto. &#8220;Juega&#8221; es mucho más &#8220;diversión&#8221;, podría decirse incluso que &#8220;para niños&#8221;. En cambio &#8220;participar&#8221; es algo mucho más formal y sobrio. Es algo muy sutil, pero que va a decir mucho de nosotros .</p>
<p>Una foto en blanco y negro y una a color pueden contener exactamente lo mismo, pero por el solo hecho de ser en blanco y negro ya me está diciendo otras cosas que la que a color no hace: habla de arte, talvez de antiguedad, de recuerdos, etc.; al igual que una foto en color sepia me habla de melancolía, desgaste o algún otro concepto similar.</p>
<p>Otro ejemplo está en el código fuente. Yo puedo armar dos sitios que se vean iguales en cualquier navegador, y si veo el código fuente de ambas páginas es igual. Sin embargo lo que los diferencia es que un código está perfectamente ordenado y tabulado y el otro no. Técnicamente ambos dicen lo mismo y cumplen la misma función, pero el código ordenado me va a transmitir que la persona que hizo el sitio hace las cosas bien. El que no es ordenado me va a decir que la persona es desordenada. Tal vez incluso crea que se demoró más en lograr el mismo trabajo porque me da la impresión que no tiene claro lo que hace.</p>
<p>La metainformación es algo de lo que hay que preocuparse mucho, aunque no se vea en una primera mirada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/la-metainformacion-aplicada-a-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Detectar si se cargó un archivo .js</title>
		<link>http://www.sebastianbarria.com/web/detectar-si-se-cargo-un-archivo-js/</link>
		<comments>http://www.sebastianbarria.com/web/detectar-si-se-cargo-un-archivo-js/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 00:29:31 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=95</guid>
		<description><![CDATA[Basándome en lo planteado <a href="/web/comprobar-si-existe-una-variable-en-javascript/">en este post</a>, esta vez les presento este &#8220;truquito&#8221;. No hay que ser muy inteligente tampoco para que a uno se le ocurra esto, asique no pretendo lucirme ni nada.
Hay veces en que llamo a una función pero en la página donde estoy no he cargado el archivo .js correspondiente y por lo tanto el navegador me tira un error. ¿Cómo solucionarlo?: fácil (siempre digo lo mismo). Tenemos que agregar al final del archivo js una variable cualquiera:
<pre>var archivoCargado=1;&#8230;</pre>
Y luego, antes de llamar a la funcion que necesitamos le preguntamos si esa]]></description>
			<content:encoded><![CDATA[<p>Basándome en lo planteado <a href="/web/comprobar-si-existe-una-variable-en-javascript/">en este post</a>, esta vez les presento este &#8220;truquito&#8221;. No hay que ser muy inteligente tampoco para que a uno se le ocurra esto, asique no pretendo lucirme ni nada.</p>
<p>Hay veces en que llamo a una función pero en la página donde estoy no he cargado el archivo .js correspondiente y por lo tanto el navegador me tira un error. ¿Cómo solucionarlo?: fácil (siempre digo lo mismo). Tenemos que agregar al final del archivo js una variable cualquiera:</p>
<pre>var archivoCargado=1;</pre>
<p>Y luego, antes de llamar a la funcion que necesitamos le preguntamos si esa variable existe (sin que nos arroje un error). Si la variable existe es porque se cargó el archivo, y si no existe será &#8220;<em>undefined</em>&#8220;, osea que no ha sido definida, osea que el archivo no se cargó. Algo así:</p>
<pre>if(typeof(archivoCargado)!="undefined"){ ejecutarFuncion(); }</pre>
<p> <img src='http://www.sebastianbarria.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8230;dudas?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/detectar-si-se-cargo-un-archivo-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

