<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>pragone.com</title>
	
	<link>http://pragone.com</link>
	<description>desarrollo, comunidad y monetización</description>
	<lastBuildDate>Fri, 15 May 2009 16:11:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Pragonecom" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Las nuevas tecnologías para la escalabilidad</title>
		<link>http://feedproxy.google.com/~r/Pragonecom/~3/VdZGVuOy4s8/81</link>
		<comments>http://pragone.com/interesante/las-nuevas-tecnologias-para-la-escalabilidad/81#comments</comments>
		<pubDate>Sun, 10 May 2009 15:26:55 +0000</pubDate>
		<dc:creator>pragone</dc:creator>
				<category><![CDATA[Interesante]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[db]]></category>
		<category><![CDATA[desarrollo programming]]></category>
		<category><![CDATA[funcional]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[voldemort]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://pragone.com/?p=81</guid>
		<description><![CDATA[Ultimamente, he estado viendo algunas nuevas tecnologías que se enfocan en la escalabilidad. Estamos en un momento realmente interesante de la evolución de las tecnologías Web, lo que más me llama la atención es que ya no basta con simplemente ver cómo optimizar o hacer el &#8220;fine tunning&#8221; de los sistemas que cualquier desarrollador conoce [...]]]></description>
			<content:encoded><![CDATA[<p>Ultimamente, he estado viendo algunas nuevas tecnologías que se enfocan en la escalabilidad. Estamos en un momento realmente interesante de la evolución de las tecnologías Web, lo que más me llama la atención es que ya no basta con simplemente ver cómo optimizar o hacer el &#8220;fine tunning&#8221; de los sistemas que cualquier desarrollador conoce ya, sino que es hora de, incluso, revisar los conceptos más básicos: siguen siendo las bases de datos relacionales las más apropiadas?, son los lenguajes Orientados a Objetos lo mejor?</p>
<p>Por supuesto, si tu página web sólo sirve unos pocos miles de impresiones al día o a la hora, no tienes grandes problemas y muchas de estas preguntas son simplemente irrelevantes por el bien de un desarrollo ágil, pero si comienzas a hablar de páginas con tráfico considerable es posible que te encuentres con problemas para los que no haya soluciones ampliamente conocidas.</p>
<p>Trataré de escribir algunos artículos más exponiendo mi punto de vista sobre algunas de las tecnologías que ya conocemos y sus alternativas. Por el momento simplemente les dejo con algunos enlaces que pueden resultarles interesantes:</p>
<h2>Lenguajes de programación:</h2>
<p></p>
<ul>
<li><a title="Is the Supremacy of Object-Oriented Programming Over?" rel="nofollow" href="http://blog.objectmentor.com/articles/2009/04/20/is-the-supremacy-of-object-oriented-programming-over" target="_blank">Is the Supremacy of Object-Oriented Programming Over?</a>: [EN] Un artículo realmente interesante que habla sobre las limitación de POO para ciertos problemas y plantea si es la hora de reintroducir lenguajes de programación funcionales por sus mejores condiciones para el manejo concurrente de tareas.</li>
<li><a title="Erlang programming language" href="http://www.erlang.org/" target="_blank">Erlang</a> [EN] (<a title="Erlang" href="http://es.wikipedia.org/wiki/Erlang" target="_blank">Wiki</a> [ES]): Un &#8220;nuevo&#8221; lenguaje de programación creado por Ericsson que es particularmente bueno para el manejo de tareas concurrentes y distribuidas. Es la base para algunos de los proyectos más interesantes que han salido últimamente.</li>
<li><a title="Clojure" href="http://clojure.org/" target="_blank">Clojure</a> [EN]: Otro lenguaje de programación funcional que vive dentro de la JVM</li>
</ul>
<h2>Persistencia / Bases de datos:</h2>
<p></p>
<ul>
<li><a title="Distributed key-value stores" href="http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores/" target="_blank">Anti-RDBMS a list of distributed key-value stores</a> [EN]: Un buen artículo en el que se presenta una lista con algunas de las alternativas existentes a bases de datos relacionales. Particularmente interesantes son <a title="Project Voldemort" href="http://project-voldemort.com/" target="_blank">Project Voldemort</a> y <a title="Apache CouchDB" href="http://en.wikipedia.org/wiki/CouchDB" target="_blank">CouchDB</a>.</li>
<li><a title="BigTable" href="http://labs.google.com/papers/bigtable-osdi06.pdf" target="_blank">BigTable</a> [EN,PDF] y <a title="MapReduce" href="http://es.wikipedia.org/wiki/MapReduce" target="_blank">MapReduce</a> [EN]: Desarrollados por Google, conceptualmente la base para la implementación de algunos de los sistemas de persistencia mencionados en el artículo anterior.</li>
<li><a title="Data consistency" href="http://www.allthingsdistributed.com/2008/12/eventually_consistent.html" target="_blank">Eventually Consistent</a> [EN]: un artículo interesante en el que se plantea la pregunta de: es necesaria la consistencia de la data siempre? o por razones de performance nos podemos permitir inconsistencias temporales?</li>
</ul>
<ul>
<li><a title="Gigaspaces" href="http://www.gigaspaces.com/" target="_blank">Gigaspaces</a> [EN]: Tecnología muy interesante que se enfoca en mantener todo en memoria y olvidarte de la persistencia (ya se encarga Gigaspaces de ello).</li>
<li><a title="TokuDB" href="http://www.tokutek.com/" target="_blank">TokuDB</a> [EN]: Un nuevo <em>storage engine</em> para MySQL, basado en lo que <a href="http://www.tokutek.com/" target="_blank">Tokutek</a> llama <em>Fractal Trees &#8482;</em>, o como lo llama el MIT <a title="Fractal tree indexing" href="http://supertech.csail.mit.edu/cacheObliviousBTree.html" target="_blank">&#8220;Cache-Oblivious Trees&#8221;</a> [EN]</li>
</ul>
<h2>Búsqueda de texto / Indexación de información:</h2>
<p></p>
<ul>
<li><a title="Sphinx, Full-text search engine" href="http://www.sphinxsearch.com/" target="_blank">Sphinx</a> [EN]: Un <em>FullText Search Engine</em>, con un performance excelente aunque con una lista limitada de funcionalidades.</li>
<li><a title="Solr" href="http://lucene.apache.org/solr/" target="_blank">Solr</a> [EN]: Un nuevo <em>FullText Search Engine</em> de Apache que encapsula a Lucene y provee algunas funcionalidades extra como el preprocesamiento de la data a indexar.</li>
</ul>
<p>Espero los enlaces les sean de interés, trataré de escribir algo más de detalle al respecto.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/4IQprOF8oEWfajm6KrIV9mZaS20/0/da"><img src="http://feedads.g.doubleclick.net/~a/4IQprOF8oEWfajm6KrIV9mZaS20/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/4IQprOF8oEWfajm6KrIV9mZaS20/1/da"><img src="http://feedads.g.doubleclick.net/~a/4IQprOF8oEWfajm6KrIV9mZaS20/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Pragonecom/~4/VdZGVuOy4s8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pragone.com/interesante/las-nuevas-tecnologias-para-la-escalabilidad/81/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://pragone.com/interesante/las-nuevas-tecnologias-para-la-escalabilidad/81</feedburner:origLink></item>
		<item>
		<title>eBay Anuncios…. it’s live!</title>
		<link>http://feedproxy.google.com/~r/Pragonecom/~3/A6xrPKdbS-I/78</link>
		<comments>http://pragone.com/proyectos/ebay-anuncios-its-live/78#comments</comments>
		<pubDate>Sun, 08 Mar 2009 20:37:28 +0000</pubDate>
		<dc:creator>pragone</dc:creator>
				<category><![CDATA[Proyectos]]></category>

		<guid isPermaLink="false">http://pragone.com/?p=78</guid>
		<description><![CDATA[Finalmente, luego de un par de meses de arduo trabajo los nuevos sitios de eBay Anuncios, eBay Pisos y de eBay Coches están al aire y funcionando&#8230; todavía quedan algunos pequeños detalles que resolver, pero nada que sea demasiado impactante para la experiencia del usuario en las nuevas páginas.
Ha sido un proyecto como ninguno en [...]]]></description>
			<content:encoded><![CDATA[<p>Finalmente, luego de un par de meses de arduo trabajo los nuevos sitios de <a title="eBay Anuncios. Compra y venta de artículos nuevos y de segunda mano" href="http://www.ebayanuncios.es" target="_blank">eBay Anuncios</a>, <a title="eBay Pisos, alquiler y compra de pisos, chalets y otros" href="http://www.ebaypisos.es" target="_blank">eBay Pisos</a> y de <a title="eBay Coches. Coches y motos, nuevos y de segunda mano" href="http://www.ebaycoches.es" target="_blank">eBay Coches</a> están al aire y funcionando&#8230; todavía quedan algunos pequeños detalles que resolver, pero nada que sea demasiado impactante para la experiencia del usuario en las nuevas páginas.</p>
<p>Ha sido un proyecto como ninguno en mi carrera profesional. El día 2 de Enero de este año empezó su vida como proyecto y cerca del 14 de Enero empezó de forma oficial su desarrollo. En poco menos de dos meses hemos construido una nueva plataforma desde cero (pues no hemos podido aprovechar prácticamente nada del código de Loquo).</p>
<p>Esta nueva plataforma resuelve la mayoría de las limitaciones que Loquo tiene: Un excelente motor de búsquedas; Soporte para atributos flexibles; Mejor soporte para I18N y muchos más.</p>
<p>De aquí mis felicitaciones, no sólo a mi equipo de desarrollo que ha respondido de una forma excelente frente a la presión con un constante buen ánimo y energía, sino a todos los integrantes del equipo: CS, OM/DM, SEO/SEM, al equipo de Liderago  y al equipo de Site Operations de Marktplaats.</p>
<p>Todas las partes han desempeñado su papel de forma magistral&#8230; y, debo decirlo, haber tenido una team-meeting el 3 de Marzo a las 2:00 (a.m.) cuando el sitio empezó a estar &#8220;live&#8221;, y que prácticamente todo el equipo estuviera ahí asegurándose de que su parte estuviera bien ha sido una experiencia genial de integración <img src='http://pragone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Me siento honrado de trabajar con este equipo.</p>
<p>Es un momento excelente y un proyecto muy especial.</p>
<p>Gracias a todos <img src='http://pragone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/DjLoWT4tpl1uxHASk2JAN7IR_Kc/0/da"><img src="http://feedads.g.doubleclick.net/~a/DjLoWT4tpl1uxHASk2JAN7IR_Kc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/DjLoWT4tpl1uxHASk2JAN7IR_Kc/1/da"><img src="http://feedads.g.doubleclick.net/~a/DjLoWT4tpl1uxHASk2JAN7IR_Kc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Pragonecom/~4/A6xrPKdbS-I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pragone.com/proyectos/ebay-anuncios-its-live/78/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://pragone.com/proyectos/ebay-anuncios-its-live/78</feedburner:origLink></item>
		<item>
		<title>Comida Venezolana: El Güero</title>
		<link>http://feedproxy.google.com/~r/Pragonecom/~3/vD_ZoNRFwH4/69</link>
		<comments>http://pragone.com/interesante/comida-venezolana-el-guero/69#comments</comments>
		<pubDate>Sun, 09 Nov 2008 11:54:46 +0000</pubDate>
		<dc:creator>pragone</dc:creator>
				<category><![CDATA[Interesante]]></category>
		<category><![CDATA[arepa]]></category>
		<category><![CDATA[cachapa]]></category>
		<category><![CDATA[comida]]></category>
		<category><![CDATA[guasacaca]]></category>
		<category><![CDATA[madrid]]></category>
		<category><![CDATA[restaurante]]></category>
		<category><![CDATA[venezuela]]></category>

		<guid isPermaLink="false">http://pragone.com/?p=69</guid>
		<description><![CDATA[Hace un par de semanas unos amigos nos invitaron a otro sitio de comida Venezolana, que debo decir ha estado incluso mejor que el anterior: El Güero, comida venezolana en Madrid.
Tienen una carta muy amplia de comida venezolana (y una carta de comida Mexicana que no ha probado pero de seguro que está muy buena).
Lo [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_73" class="wp-caption alignright" style="width: 198px"><img class="size-full wp-image-73" title="El Güero" src="http://pragone.com/wp-content/uploads/2008/11/guero.jpeg" alt="El Güero" width="188" height="294" /><p class="wp-caption-text">El Güero</p></div>
<p>Hace un par de semanas unos amigos nos invitaron a otro sitio de comida Venezolana, que debo decir ha estado incluso mejor que el anterior: <a title="El Güero, comida venezolana" href="http://www.elguero.es" target="_blank">El Güero, comida venezolana en Madrid</a>.</p>
<p>Tienen una carta muy amplia de comida venezolana (y una carta de comida Mexicana que no ha probado pero de seguro que está muy buena).</p>
<p>Lo mejor de todo: Tienen unos quesitos muy buenos: Queso de mano, Guayanés, Telita, etc. Si te quieres tomar una Polar o una Malta lo puedes hacer también&#8230; en fin, la verdad es que excelente totalmente. Además de que la atención es muy buena y te hacen sentir en casa <img src='http://pragone.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Luego de haber ido un par de veces, mi favorita es la <a title="¿Qué es una arepa pelúa?" href="http://es.wikipedia.org/wiki/Arepa#Variantes" target="_blank"><strong>Arepa pelúa</strong></a>: el guiso de carne mechada es genial&#8230; sobre todo cuando lo acompañas con la <a title="Guasacaca, comida típica venezolana" href="http://es.wikipedia.org/wiki/Guasacaca" target="_blank">guasacaca</a> que te dan y la salsita picante. Yo que soy de Caracas, me senti en el granjero del este <img src='http://pragone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: left;">Merecen una mensión especial también las <a title="Empanadas" href="http://es.wikipedia.org/wiki/Empanada" target="_blank">empanaditas</a>, las <a title="Cachapas" href="http://es.wikipedia.org/wiki/Cachapa" target="_blank">cachapas</a>, las <a title="Tajadas" href="http://es.wikipedia.org/wiki/Tajada" target="_blank">tajadas</a> con queso, los <a title="Tequeños" href="http://es.wikipedia.org/wiki/Teque%C3%B1os" target="_blank">tequeños</a>, el papelón con limón, el jugo de parchita&#8230; y ahora en época decembrina las <a title="Hallacas, comida típica Venezolana" href="http://es.wikipedia.org/wiki/Hallaca" target="_blank">hallacas</a> (que no las he probado, pero de seguro lo haré&#8230; se pueden encargar).</p>
<div id="attachment_70" class="wp-caption aligncenter" style="width: 310px"><a href="http://pragone.com/wp-content/uploads/2008/11/imgp1063.jpg"><img class="size-medium wp-image-70" title="Tajadas con Queso" src="http://pragone.com/wp-content/uploads/2008/11/imgp1063-300x225.jpg" alt="Tajadas con Queso" width="300" height="225" /></a><p class="wp-caption-text">Tajadas con Queso</p></div>
<p>La verdad no tomé muchas fotos (estaba muy ocupado comiendo hasta reventar <img src='http://pragone.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ), pero aquí les dejo un par de joyas que sé que les encantarán (si consigo otras fotos las montaré luego):</p>
<p style="text-align: center;"><a href="http://pragone.com/wp-content/uploads/2008/11/imgp1064.jpg"><img class="size-medium wp-image-71 aligncenter" title="Las salsas" src="http://pragone.com/wp-content/uploads/2008/11/imgp1064-300x225.jpg" alt="Guasacaca y Salsa Picante." width="300" height="225" /></a></p>
<p>Aquí les dejo también el menú de El Güero:</p>
<div id="attachment_72" class="wp-caption aligncenter" style="width: 504px"><a href="http://pragone.com/wp-content/uploads/2008/11/guero2.jpeg"><img class="size-full wp-image-72" title="Menú de El Güero" src="http://pragone.com/wp-content/uploads/2008/11/guero2.jpeg" alt="Menú de El Güero" width="494" height="756" /></a><p class="wp-caption-text">Menú de El Güero</p></div>
<p>En fin, un sitio que les recomiendo ampliamente.</p>
<p>Asegúrense de fimar el libro de visitas anotando su email y les notificarán de cosas nuevas como por ejemplo cuando salen las hallacas, etc. También pueden <a title="Blog de El Güero, comida venezolana" href="http://elgueromadrid.blogspot.com/2008/04/creacin-del-blog.html" target="_blank">visitar su Blog</a>.</p>
<p>La dirección: C/ Emigrantes, 2. 28043, Madrid.</p>
<p>Saludos y disfruten.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/JFz0XmnA3LTMfcL7AzPx8Xk5YDM/0/da"><img src="http://feedads.g.doubleclick.net/~a/JFz0XmnA3LTMfcL7AzPx8Xk5YDM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/JFz0XmnA3LTMfcL7AzPx8Xk5YDM/1/da"><img src="http://feedads.g.doubleclick.net/~a/JFz0XmnA3LTMfcL7AzPx8Xk5YDM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Pragonecom/~4/vD_ZoNRFwH4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pragone.com/interesante/comida-venezolana-el-guero/69/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://pragone.com/interesante/comida-venezolana-el-guero/69</feedburner:origLink></item>
		<item>
		<title>Da’ Gusto: Comida Venezolana en Madrid</title>
		<link>http://feedproxy.google.com/~r/Pragonecom/~3/FntIJUMaHK8/65</link>
		<comments>http://pragone.com/interesante/da-gusto-comida-venezolana-en-madrid/65#comments</comments>
		<pubDate>Sat, 23 Aug 2008 13:57:43 +0000</pubDate>
		<dc:creator>pragone</dc:creator>
				<category><![CDATA[Interesante]]></category>
		<category><![CDATA[arepa]]></category>
		<category><![CDATA[batido]]></category>
		<category><![CDATA[comida]]></category>
		<category><![CDATA[da gusto]]></category>
		<category><![CDATA[dagusto]]></category>
		<category><![CDATA[guanabana]]></category>
		<category><![CDATA[madrid]]></category>
		<category><![CDATA[parchita]]></category>
		<category><![CDATA[patacon]]></category>
		<category><![CDATA[tamarindo]]></category>
		<category><![CDATA[venezuela]]></category>

		<guid isPermaLink="false">http://pragone.com/?p=65</guid>
		<description><![CDATA[Hoy hemos ido a desayunar a un sitio muy bueno de comida Venezolana. Se llama &#8220;Da&#8217; Gusto&#8221;.
Tenían arepas, patacones, tequeños, unos batidos geniales y malta.
Es dueño es un maracucho muy simpático (aunque no recuerdo el nombre ahora). Nos sentimos como en casa cuando luego de traernos un jugo de Tamarindo, vino con el pote de [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy hemos ido a desayunar a un sitio muy bueno de comida Venezolana. Se llama &#8220;Da&#8217; Gusto&#8221;.</p>
<div id="attachment_66" class="wp-caption aligncenter" style="width: 310px"><a href="http://pragone.com/wp-content/uploads/2008/08/dsc_0414.jpg"><img class="size-medium wp-image-66" title="Da' Gusto: Comida Venezolana en Madrid" src="http://pragone.com/wp-content/uploads/2008/08/dsc_0414-300x201.jpg" alt="Da' Gusto: Comida Venezolana en Madrid" width="300" height="201" /></a><p class="wp-caption-text">Da&#39; Gusto: Comida Venezolana en Madrid</p></div>
<p>Tenían arepas, patacones, tequeños, unos batidos geniales y malta.</p>
<p>Es dueño es un maracucho muy simpático (aunque no recuerdo el nombre ahora). Nos sentimos como en casa cuando luego de traernos un jugo de Tamarindo, vino con el pote de la licuadora para echar el fondito <img src='http://pragone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div id="attachment_67" class="wp-caption aligncenter" style="width: 310px"><a href="http://pragone.com/wp-content/uploads/2008/08/dsc_0419_2.jpg"><img class="size-medium wp-image-67" title="Da Gusto: Sentirse como en casa" src="http://pragone.com/wp-content/uploads/2008/08/dsc_0419_2-300x201.jpg" alt="Da Gusto: Sentirse como en casa" width="300" height="201" /></a><p class="wp-caption-text">Da Gusto: Sentirse como en casa</p></div>
<p>En fin&#8230; muy recomendable. Yo me pedí un de carne mechada y estaba genial.</p>
<p>La dirección es:</p>
<p>Avda. De los Poblados, 131<br />
28025, Madrid</p>
<p>Telef: 913 410 731 / 622 431 583</p>
<p>En fin&#8230; muy bueno.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/3vprzwxexWbDQgpXUl6NxvELFRU/0/da"><img src="http://feedads.g.doubleclick.net/~a/3vprzwxexWbDQgpXUl6NxvELFRU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/3vprzwxexWbDQgpXUl6NxvELFRU/1/da"><img src="http://feedads.g.doubleclick.net/~a/3vprzwxexWbDQgpXUl6NxvELFRU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Pragonecom/~4/FntIJUMaHK8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pragone.com/interesante/da-gusto-comida-venezolana-en-madrid/65/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://pragone.com/interesante/da-gusto-comida-venezolana-en-madrid/65</feedburner:origLink></item>
		<item>
		<title>SVD e Indices para búsquedas en espacios de altas dimensiones</title>
		<link>http://feedproxy.google.com/~r/Pragonecom/~3/Wb-kM6bJTG8/55</link>
		<comments>http://pragone.com/proyectos/svd-e-indices-para-busquedas-en-espacios-de-altas-dimensiones/55#comments</comments>
		<pubDate>Wed, 13 Aug 2008 23:17:42 +0000</pubDate>
		<dc:creator>pragone</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[delta-tree]]></category>
		<category><![CDATA[detección spam]]></category>
		<category><![CDATA[imágenes]]></category>
		<category><![CDATA[reducción dimensional]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[SVD]]></category>

		<guid isPermaLink="false">http://pragone.com/?p=55</guid>
		<description><![CDATA[Como comenté en un articulo anterior sobre la detección de Spam en Imágenes, uno de los métodos es la identificación de imágenes duplicadas o casi duplicadas (Near-duplicate detection).
Este proceso consiste de dos partes:

La creación de un LSH (Locality Sensitive Hash), es decir, crear una especie de &#8220;firma&#8221; que tenga la propiedad de que dos imágenes [...]]]></description>
			<content:encoded><![CDATA[<p>Como comenté en un articulo anterior sobre la <a title="Detección de Spam en Imágenes" href="http://pragone.com/proyectos/deteccion-de-spam-en-imagenes/54" target="_blank">detección de Spam en Imágenes</a>, uno de los métodos es la identificación de imágenes duplicadas o casi duplicadas (Near-duplicate detection).</p>
<p>Este proceso consiste de dos partes:</p>
<ol>
<li>La creación de un LSH (Locality Sensitive Hash), es decir, crear una especie de &#8220;firma&#8221; que tenga la propiedad de que dos imágenes que se parezcan tengan dos firmas parecidas y que dos imágenes que no se parezcan tengan firmas diferentes.</li>
<li>Tener estas firmas en una base de datos para dada una &#8220;firma&#8221; buscar si hay alguna otra imagen cuya firma se parezca lo suficiente.</li>
</ol>
<p>Existen muchas formas de crear la firma, por ejemplo con el uso de <a title="Haar Wavelet" href="http://en.wikipedia.org/wiki/Haar_wavelet" target="_blank">Haar Wavelet</a>, Histogramas de colores, etc. Sin embargo, la parte de la búsqueda es la realmente complicada.</p>
<p>Una firma, puede consistir de 128, 200 o más números enteros. Estas firmas pueden ser vistas como un vector de tantas dimensiones como números la compongan, y de ahí que el título del artículo se refiera a espacios de alta dimensionalidad.</p>
<p>Debido a que buscar los duplicados de una imagen particular (imagen query) es encontrar algún otro &#8220;vector&#8221; en una base de datos cuya distancia a la imagen query sea menor a cierto umbral, estas búsquedas no son manejables con un sistema de base de datos convencional (No sin recorrer toda la base de datos a cada consulta y calcular la distancia de la imagen query con todas las imágenes de la BBDD).</p>
<p>Sin embargo, hay alternativas. La mayoría de ellas tienen que ver con reducciones dimensionales, es decir tratar de representar en menos dimensiones (con menos números) los mismos datos. Esto resulta bastante bien cuando la data es dispersa, ya que probablemente muchas dimensiones no aporten casi información (por ejemplo, en las estructuras de datos utilizadas para la detección de Spam con SVM (Support Vector Machines) en la que cada palabra es una dimensión y el valor de esa dimensión es la cantidad de veces que aparece la palabra en el texto.</p>
<p>Pero cuando la data no es esparcida, los métodos que se basan exclusivamente en reducciones dimensionales no son tan atractivos.</p>
<p>Es por esto que la propuesta descrita en: <a title="Indexing high-dimensional data for efficient in-memory similarity search" href="http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel5/69/30208/01388245.pdf?temp=x" target="_blank">Indexing High-Dimensional Data for Efficient In-Memory Similarity Search</a> resulta muy interesante.</p>
<p>En este paper se propone la creación de una estructura llamada un delta-tree, en el que los niveles superiores (más cercanos a la raíz) son de dimensiones menores que los inferiores (de hecho las &#8220;hojas&#8221; del árbol son los datos sin ninguna reducción dimensional).</p>
<p>Lo que más me llamó la atención fue la forma en la que se realiza la reducción dimensional: <a title="SVD: Singula Value Decomposition" href="http://http://en.wikipedia.org/wiki/Singular_value_decomposition" target="_blank">SVD:  Singular Value Decomposition</a>. Esta técnica te permite reducir la dimensionalidad de la data con una propiedad interesante:</p>
<p>Dados dos puntos x1 y x2 en el espacio m-dimensional de origen, y dados y1 y y2 sus &#8220;versiones reducidas&#8221;  en el espacio n-dimensional (con n &lt; m),</p>
<p>d(x1,x2) ≤ d(y1,y2), donde d(a,b) es la distancia que hay entre a y b.</p>
<p>De esta forma se puede recorrer el árbol, descartando las ramas que ya se encuentran muy lejos (por encima del umbral) con menos dimensiones (y por lo tanto menos cálculos) y centrar la búsqueda en las dimensiones superiores en un espacio mucho menor.</p>
<p>Esto me parecía muy bueno para ser verdad, así que me instalé <a title="Scilab: Open Source MatLab" href="http://www.scilab.org" target="_blank">SciLab</a> que es un excelente reemplazo gratis  de Matlab (as in beer and in speech), hice una prueba de esta reducción dimensional y comprobé la regla de las distancias empíricamente.</p>
<p>Creé de forma aleatoria una matriz de datos (50 puntos), cada uno de ellos en un espacio de 20 dimensiones, la reduje a 15, 10 y 5 dimensiones y comparé las distancias entre los puntos entre las distintas dimensiones y obtuve gráficos como este:</p>
<div id="attachment_60" class="wp-caption aligncenter" style="width: 510px"><a href="http://pragone.com/wp-content/uploads/2008/08/corr15.gif"><img class="size-full wp-image-60" title="Correlación con una reducción a 15 dimensiones" src="http://pragone.com/wp-content/uploads/2008/08/corr15.gif" alt="Correlación con una reducción a 15 dimensiones" width="500" height="333" /></a><p class="wp-caption-text">Correlación con una reducción a 15 dimensiones</p></div>
<p>Un punto de este gráfico se obtiene de la siguiente forma:</p>
<p>Coordenada x = distancia entre los puntos xi y xj en el espacio original (20 dimensiones)</p>
<p>Coordenada y = distancia entre los puntos xi y xj en el espacio reducido (15 dimensiones en este caso)</p>
<p>Como se puede ver existe una gran cercanía de estos puntos a la recta y=x (la correlación de los puntos en la gráfica de 15 dimensiones es de 0.95), con lo que se puede ver que hay una correlación entre las distancias en el espacio original y el espacio reducido.</p>
<p>Haciendo lo mismo con 10 y luego 5 dimensiones obtuve:</p>
<div id="attachment_61" class="wp-caption aligncenter" style="width: 510px"><a href="http://pragone.com/wp-content/uploads/2008/08/comp10.gif"><img class="size-full wp-image-61" title="Correlación con una reducción a 10 dimensiones" src="http://pragone.com/wp-content/uploads/2008/08/comp10.gif" alt="Correlación con una reducción a 10 dimensiones" width="500" height="333" /></a><p class="wp-caption-text">Correlación con una reducción a 10 dimensiones</p></div>
<p>Como es lógico se redujo más la correlación pues se pierde más información en la reducción dimensional, pero sigue habiendo una fuerte relación entre las distancias en ambos espacios.</p>
<p>Y, finalmente, con una reducción a 5 dimensiones obtuve:</p>
<div id="attachment_62" class="wp-caption aligncenter" style="width: 510px"><a href="http://pragone.com/wp-content/uploads/2008/08/comp5.gif"><img class="size-full wp-image-62" title="Correlación con una reducción a 5 dimensiones" src="http://pragone.com/wp-content/uploads/2008/08/comp5.gif" alt="Correlación con una reducción a 5 dimensiones" width="500" height="333" /></a><p class="wp-caption-text">Correlación con una reducción a 5 dimensiones</p></div>
<p>En el que la correlación si bien existe es bastante débil.</p>
<p>Sin embargo, incluso en este escenario en el que se pierde tanta información por la reducción dimensional, logré verificar que se mantiene la asumpción sobre que las distancias en menores dimensiones son menores que en mayores dimensiones, y por lo tanto el esquema propuesto sirve.</p>
<p>No conozco ningún manejador de base de datos que pudiere utilizar para representar esto&#8230; así que supongo que tendré que crear uno <img src='http://pragone.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p><a href="http://feedads.g.doubleclick.net/~a/PTkED4I7ksP0MSKiMieD7F2XzkE/0/da"><img src="http://feedads.g.doubleclick.net/~a/PTkED4I7ksP0MSKiMieD7F2XzkE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PTkED4I7ksP0MSKiMieD7F2XzkE/1/da"><img src="http://feedads.g.doubleclick.net/~a/PTkED4I7ksP0MSKiMieD7F2XzkE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Pragonecom/~4/Wb-kM6bJTG8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pragone.com/proyectos/svd-e-indices-para-busquedas-en-espacios-de-altas-dimensiones/55/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://pragone.com/proyectos/svd-e-indices-para-busquedas-en-espacios-de-altas-dimensiones/55</feedburner:origLink></item>
		<item>
		<title>Detección de Spam en imágenes</title>
		<link>http://feedproxy.google.com/~r/Pragonecom/~3/EDJN6psK3qQ/54</link>
		<comments>http://pragone.com/proyectos/deteccion-de-spam-en-imagenes/54#comments</comments>
		<pubDate>Sat, 09 Aug 2008 14:18:01 +0000</pubDate>
		<dc:creator>pragone</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[detección de duplicados]]></category>
		<category><![CDATA[image spam]]></category>
		<category><![CDATA[investigación]]></category>
		<category><![CDATA[loquo]]></category>
		<category><![CDATA[LSH]]></category>
		<category><![CDATA[near-duplicate]]></category>
		<category><![CDATA[OCR]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[spam imágenes]]></category>

		<guid isPermaLink="false">http://pragone.com/?p=54</guid>
		<description><![CDATA[Aprovecho mientras tengo al SciLab entrenando una ANN (Artificial Neural Network) para contarles sobre las últimas investigaciones que estoy haciendo.
En Loquo, buena parte de mi labor se centra no solo en el desarrollo de producto, sino en la investigación e innovación en la plataforma.
El primer fruto que logramos fue la creación del sistema de detección [...]]]></description>
			<content:encoded><![CDATA[<p>Aprovecho mientras tengo al <a title="Scilab: Open Source MatLab" href="http://www.scilab.org" target="_blank">SciLab</a> entrenando una <a title="ANN: Artificial Neural Network [EN]" href="http://en.wikipedia.org/wiki/Artificial_neural_network" target="_blank">ANN (Artificial Neural Network)</a> para contarles sobre las últimas investigaciones que estoy haciendo.</p>
<p>En Loquo, buena parte de mi labor se centra no solo en el desarrollo de producto, sino en la investigación e innovación en la plataforma.</p>
<p>El primer fruto que logramos fue la creación del sistema de detección de duplicados. Este sistema ha tenido un impacto muy positivo en el sitio, logrando mejorar la calidad del contenido y por lo tanto la experiencia del usuario.</p>
<p>Claro está, los spammers no se iban a quedar de brazos cruzados y, como era lógico, han evolucionado sus técnicas.</p>
<p>Primero, se fueron por la ruta de colocar texto oculto (cuyo color se parece mucho al color de fondo), así que sacamos un sistema que elimina el texto oculto (utilizando un cálculo que toma en consideración la percepción de los colores para el ojo humano). Luego, colocaron texto muy pequeño&#8230; y también lo eliminamos.</p>
<p>Ahora, simplemente colocan textos aleatorios de forma visible y colocan toda la información &#8220;de verdad&#8221; en imágenes.</p>
<p>Por supuesto, colocar esta información en las imágenes las hace prácticamente indetectables&#8230; ¿o no? <img src='http://pragone.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Pues es en eso en lo que estoy trabajando ahora. En luchar contra el Spam en Imágenes.</p>
<h3>Problemas para la detección de Spam en Imágenes</h3>
<p>La detección de Spam en imágenes es particularmente retadora porque una imágen no es más que un conjunto de pixels, cada uno de un color. A diferencia del texto en el que cada palabra tiene un sentido particular, un pixel o linea no tiene ningún significado como tal.Además, las imágenes son información bidimensional, mientras que el texto es de una sola dimensión&#8230;</p>
<p>En fin, es un problema mucho más complicado, así que..</p>
<h3>¿Cómo afrontar el problema de detección de Spam en Imágenes?</h3>
<p>Como siempre, en problemas complejos, no hay una solución sencilla. El sistema que tengo en mente tiene dos módulos principales:</p>
<ul>
<li>Análisis de la imagen: En este se busca extraer información de la imagen para tratar de reconocer si una imágen particular es Spam o no.</li>
<li>Detección de imágenes duplicadas: En este otro, lo que se busca es saber si una imagen se parece a otra que ya se encuentre en el sistema y que haya sido identificada como Spam.</li>
</ul>
<p>Cada una de estas tareas es todo un reto pues consisten de procesamientos altamente complicados, con lo cual escalarlo a una plataforma con tantos visitantes como lo es Loquo (más de 5.5 millones de Usuarios únicos al mes) es un problema doblemente complicado.</p>
<h3>Análisis de la Imagen</h3>
<p>Este sistema consiste en la extracción de información a partir de una imágen.</p>
<p>Evidentemente, la información más &#8220;sencilla&#8221; de extraer son los textos que se encuentren embebidos en la imágen a través de uso de un software <a title="OCR: Optical Character Recognition [EN]" href="http://en.wikipedia.org/wiki/Optical_character_recognition" target="_blank">OCR (Optical Character Recognition)</a>.</p>
<p>Para esto se deben hacer dos pasos:</p>
<ol>
<li><strong>Document Layout Analysis:</strong> Este primer paso consiste en identificar en una imagen las áreas que probablemente contienen texto.</li>
<li><strong>OCR:</strong> Luego, las áreas con alta probabilidad de contener texto son pasadas al software OCR para ver qué es capaz de reconocer.</li>
</ol>
<p>Otra forma de analizar la imagen sería intentar extraer información sobre los objetos que componen la imagen. Este es un proceso aún más complicado, pero podría servir, para, por ejemplo, reconocer si en una imagen hay una pistola o algún otro elemento prohibido.</p>
<h3>Detección de imágenes duplicadas</h3>
<p>Este sistema busca identificar si una imagen dada se parece lo suficiente a alguna otra imagen de una base de datos.</p>
<p>Evidentemente la forma trivial es simplemente compara los hashes de los archivos (MD5 o SHA1). Pero esto sólo sirve para reconocer que se trata del mismo archivo. Basta cambiar un pixel en la imagen y este sistema sería inválido. Por esto, la forma correcta de atajar este problema es con &#8220;Near-Duplicate Image Detection&#8221;.</p>
<p>El sistema de Near-Duplicate Image Detection consiste en crear una especie de Hash a partir de la imagen, pero de tal forma que si dos imágenes se parecen, sus respectivos Hashes también se parezcan. (Esto se conoce como <a title="LSH: Locality Sensitive Hashing [EN]" href="http://en.wikipedia.org/wiki/Locality_sensitive_hashing" target="_blank">LSH: Locality Sensitive Hashing</a>.</p>
<p>En próximos artículos comentaré un poco sobre los avances logrados en cada una de estas áreas.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/seED-JUfHlMfV05Cwvm52UNNPBY/0/da"><img src="http://feedads.g.doubleclick.net/~a/seED-JUfHlMfV05Cwvm52UNNPBY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/seED-JUfHlMfV05Cwvm52UNNPBY/1/da"><img src="http://feedads.g.doubleclick.net/~a/seED-JUfHlMfV05Cwvm52UNNPBY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Pragonecom/~4/EDJN6psK3qQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pragone.com/proyectos/deteccion-de-spam-en-imagenes/54/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://pragone.com/proyectos/deteccion-de-spam-en-imagenes/54</feedburner:origLink></item>
		<item>
		<title>Integrar phpBB3 con tu sitio. (2da integración, 1ra parte)</title>
		<link>http://feedproxy.google.com/~r/Pragonecom/~3/3ah9MOZk6Ks/52</link>
		<comments>http://pragone.com/proyectos/integrar-phpbb3-con-tu-sitio-2da-integracion-1ra-parte/52#comments</comments>
		<pubDate>Tue, 10 Jun 2008 21:22:33 +0000</pubDate>
		<dc:creator>pragone</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[integración]]></category>
		<category><![CDATA[integrar]]></category>
		<category><![CDATA[interfaz]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpbb]]></category>
		<category><![CDATA[phpbb3]]></category>
		<category><![CDATA[registro]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[usuario]]></category>

		<guid isPermaLink="false">http://pragone.com/?p=52</guid>
		<description><![CDATA[Este artículo es parte de un conjunto de artículos/tutoriales sobre cómo integrar phpBB3 con otro sistema.
Puedes ir al artículo principal sobre cómo integrar phpBB3 con tu sitio para ver las distintas formas de integración
Este es el segundo artículo o tutorial de la serie sobre cómo integrar phpBB3 con tu sitio.
phpBB3 es un excelente paquete de [...]]]></description>
			<content:encoded><![CDATA[<div style="border:1px solid darkgray; width:95%; margin: 10px; padding: 6px; background-color:#ddddaa">Este artículo es parte de un conjunto de artículos/tutoriales sobre cómo integrar phpBB3 con otro sistema.<br />
Puedes ir al artículo principal sobre <a style="text-decoration:underline; font-weight:bold" title="tutoriales para integrar phpBB3 con tu sitio" href="http://pragone.com/proyectos/integracion-de-phpbb3-con-tu-sitio/47">cómo integrar phpBB3 con tu sitio</a> para ver las distintas formas de integración</div>
<p>Este es el segundo artículo o tutorial de la serie sobre cómo <a title="Tutorial sobre cómo integrar phpBB3 con tu sitio" href="http://pragone.com/proyectos/integracion-de-phpbb3-con-tu-sitio/47" target="_blank">integrar phpBB3</a> con tu sitio.</p>
<p><a title="phpBB un software de foro gratuito" href="http://www.phpbb.com" target="_blank">phpBB3</a> es un excelente paquete de foros gratuito, escrito en PHP+MySQL. Debido a su gran utilidad y al hecho de que es de código abierto (free as in beer and speech), una de las cosas que muchos queremos hacer es integrarlo con algún otro sistema que tengamos, para poder ofrecer la excelente funcionalidad del foro, sin que esto complique la experiencia del usuario en el sitio.</p>
<p>En este artículo se trata la segunda integración descrita en el artículo: <a title="tutoriales para integrar phpBB3 con tu sitio" href="http://pragone.com/proyectos/integracion-de-phpbb3-con-tu-sitio/47">cómo integrar phpBB3 con tu sitio</a>:</p>
<h3>Al crear un usuario en el otro sistema, automáticamente se crea un usuario en phpBB3 y hacer login en uno de ellos automáticamente te loguea en el otro.</h3>
<p>Esta es una integración un poco más compleja que la anterior y por lo tanto la divido en dos partes. En esta hablo sobre cómo hacer para que al registrar a un usuario en &#8220;el otro sistema&#8221; (el que no es phpBB3), automáticamente quede registrado en el foro. La segunda parte la dejo para otro artículo por ser un poco más compleja y depender de la configuración de los dos sitios (si están o no en el mismo dominio o subdominio).</p>
<h3>La idea básica</h3>
<p>phpBB3 está muy bien hecho, el código es muy modular y es fácil de navegar. Por esto, cuando estudiamos cómo hace phpBB3 la creación de un nuevo usuario nos encontramos con lo que buscamos en el archivo includes/ucp/ucp_register.php [<a title="Source code at code.phpbb.com" href="http://code.phpbb.com/repositories/entry/5/tags/release_3_0_1/phpBB/includes/ucp/ucp_register.php?rev=8499" target="_blank">code</a>] (luego de sortear mucho código de validación).</p>
<p>Para crear un nuevo usuario nos bastaría con este código:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">/* GetUserIp: 
	 *
	 * Taken from: http://forums.whirlpool.net.au/forum-replies-archive.cfm/976380.html
	 *
	 */</span>
&nbsp;
	<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'IN_PHPBB'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$phpbb_root_path</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'PHPBB_ROOT_PATH'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> ? PHPBB_ROOT_PATH <span style="color: #339933;">:</span> <span style="color: #0000ff;">'./'</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$phpEx</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strrchr</span><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">require</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$phpbb_root_path</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'common.'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$phpEx</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">require</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$phpbb_root_path</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'includes/functions_user.'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$phpEx</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">require</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$phpbb_root_path</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'includes/functions_module.'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$phpEx</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> GetUserIP<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_CLIENT_IP'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_CLIENT_IP'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">return</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_X_FORWARDED_FOR'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_CLIENT_IP'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'HTTP_CLIENT_IP'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #990000;">getenv</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'REMOTE_ADDR'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000088;">$user_name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'paolo123'</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$user_pass</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'shh123'</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$user_email</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'usuario@servidor.de.correo'</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$user_lang</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'es'</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$user_ip</span> <span style="color: #339933;">=</span> GetUserIP<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'SELECT group_id
		FROM '</span> <span style="color: #339933;">.</span> GROUPS_TABLE <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;
		WHERE group_name = 'REGISTERED'
			AND group_type = &quot;</span> <span style="color: #339933;">.</span> GROUP_SPECIAL<span style="color: #339933;">;</span>
	<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql_fetchrow</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sql_freeresult</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #990000;">trigger_error</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'NO_GROUP'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000088;">$group_id</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'group_id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Utilizamos el uso horario del foro</span>
	<span style="color: #000088;">$is_dst</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'board_dst'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>	
	<span style="color: #000088;">$timezone</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'board_timezone'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Reunimos toda la data del nuevo usuario</span>
	<span style="color: #000088;">$user_row</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'username'</span>		<span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$user_name</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'user_password'</span>		<span style="color: #339933;">=&gt;</span> phpbb_hash<span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_pass</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'user_email'</span>		<span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$user_email</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'group_id'</span>		<span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$group_id</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'user_timezone'</span>		<span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#40;</span>float<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$timezone</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'user_dst'</span>		<span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$is_dst</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'user_lang'</span>		<span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$user_lang</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'user_type'</span>		<span style="color: #339933;">=&gt;</span> USER_NORMAL<span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'user_actkey'</span>		<span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'user_ip'</span>		<span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$user_ip</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'user_regdate'</span>		<span style="color: #339933;">=&gt;</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'user_inactive_reason'</span>	<span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'user_inactive_time'</span>	<span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Register user...</span>
	<span style="color: #000088;">$user_id</span> <span style="color: #339933;">=</span> user_add<span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_row</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cp_data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// This should not happen, because the required variables are listed above...</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$user_id</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #990000;">trigger_error</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'NO_USER'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">E_USER_ERROR</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Este código crea un usuario con nombre &#8216;paolo123&#8242; y clave &#8217;shh123&#8242;. Este será un usuario idéntico a cualquier otro usuario que se haya registrado siguiendo el proceso normal del foro. </p>
<h3>Consideraciones finales</h3>
<p>Importante indicar que este código está pensado para ejecutar en un archivo que estuviera en la carpeta raíz del foro, por lo que si no es este el caso, habría que modificar la declaración del principio que dice: <code>$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';</code> cambiando el &#8216;./&#8217; por la ruta relativa o absoluta de la carpeta raíz del foro.</p>
<p><strong>Importante:</strong> Crear el usuario de esta forma, salta todas las verificaciones que hay normalmente en el foro, por lo que es importante asegurarse de que todos los datos son válidos.</p>
<p>La forma de integrar este código con tu sistema la dejo a discreción del usuario, ya que variaría mucho dependiendo del sistema desde el que se invoque&#8230; lo único que hay que tener presente son los datos que necesita este código para ejecutar: <code>$user_name, $user_pass, $user_email, $user_lang</code> y <code>$user_ip</code>.</p>
<p>En el próximo artículo de esta &#8220;serie&#8221; trataré el tema de la segunda parte de esta integración: el manejo de sesiones&#8230; Cómo hacer que cuando un usuario se identifique en uno de los sistemas, quede identificado en el otro también.</p>
<p>Espero les sirva.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/Ow01rjQeeyiRuDCHtutZ_SJD8xQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/Ow01rjQeeyiRuDCHtutZ_SJD8xQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Ow01rjQeeyiRuDCHtutZ_SJD8xQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/Ow01rjQeeyiRuDCHtutZ_SJD8xQ/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Pragonecom/~4/3ah9MOZk6Ks" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pragone.com/proyectos/integrar-phpbb3-con-tu-sitio-2da-integracion-1ra-parte/52/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		<feedburner:origLink>http://pragone.com/proyectos/integrar-phpbb3-con-tu-sitio-2da-integracion-1ra-parte/52</feedburner:origLink></item>
		<item>
		<title>Integración de phpBB3 con tu sitio</title>
		<link>http://feedproxy.google.com/~r/Pragonecom/~3/zwl8PXXsrqk/47</link>
		<comments>http://pragone.com/proyectos/integracion-de-phpbb3-con-tu-sitio/47#comments</comments>
		<pubDate>Sun, 08 Jun 2008 12:43:42 +0000</pubDate>
		<dc:creator>pragone</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[integración]]></category>
		<category><![CDATA[integrar]]></category>
		<category><![CDATA[interfaz]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpbb3]]></category>
		<category><![CDATA[registro]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[usuario]]></category>

		<guid isPermaLink="false">http://pragone.com/?p=47</guid>
		<description><![CDATA[Hace un tiempo, escribí un artículo sobre cómo integrar phpBB3 con tu sitio.
Este post ha tenido bastantes visitas, lo que me lleva a pensar que no hay mucha literatura en español al respecto y que sí hay mucho interés&#8230;. por lo que he decidido que escribiré un conjunto de artículos sobre cómo hacer las integraciones.
Lo [...]]]></description>
			<content:encoded><![CDATA[<p>Hace un tiempo, escribí un artículo sobre <a title="¿Cómo integrar phpBB3 con tu sitio?" href="http://pragone.com/proyectos/como-integrar-phpbb3-con-tu-sitio/38" target="_blank">cómo integrar phpBB3 con tu sitio</a>.</p>
<p>Este post ha tenido bastantes visitas, lo que me lleva a pensar que no hay mucha literatura en español al respecto y que sí hay mucho interés&#8230;. por lo que he decidido que escribiré un conjunto de artículos sobre cómo hacer las integraciones.</p>
<p>Lo primero, es que hay muchas formas de integrar phpBB3 con otro sitio web. Las cosas que necesitas hacer dependen de cómo desees que sea esa integración, y por eso el primer paso es tener claro cómo quieres integrar phpBB3 a tu sitio.</p>
<p>Primero que nada, definamos una &#8220;nomenclatura&#8221; para entender bien las distintas formas de integración:</p>
<h2>Partes de los sistemas</h2>
<h3>Registro de usuarios</h3>
<p>Es el conjunto de páginas y el código que se encarga de crear un nuevo usuario en el sistema.</p>
<h3>Identificación</h3>
<p>Una vez creado el usuario, este es el conjunto de páginas y código que se encarga de verificar la información de usuario/clave contra la base de datos de usuarios y que da acceso a un usuario registrado al sitio.</p>
<h3>Manejo de sesión</h3>
<p>Son las porciones de código (nada visible para el usuario) que le indican al sistema si quien está solicitando una página específica es un usuario registrado que ya se ha identificado en la página. Por lo general se maneja a través de Cookies en el navegador del usuario.</p>
<h3>Mis Datos</h3>
<p>Son las páginas en las que el usuario puede entrar para modificar su información (cambio de clave, email, etc).</p>
<h3>Información del sistema</h3>
<p>Con información del sistema me refiero a distintos datos de uno de los sistemas que se podría querer mostrar. Por ejemplo: Número de usuarios registrados en el foro, número de hilos del foro, etc.</p>
<p>Lo mismo para el otro sistema (si por ejemplo el otro sistema es un blog, último post, número de comentarios de un post particular, etc).</p>
<p>Ya habiéndole dado nombre a todo esto, el escenario que nos encontramos al iniciar la integración es este:</p>
<p><img class="aligncenter size-full wp-image-49" title="Partes de los sistemas" src="http://pragone.com/wp-content/uploads/2008/06/parts.jpg" alt="Partes de los sistemas" width="500" height="385" /></p>
<p><strong>Leyenda:</strong></p>
<p>- Cada columna es un módulo.<br />
- La primera fila es la capa de presentación, es decir, las páginas que se le muestra al usuario.<br />
- La segunda fila es la capa de lógica o aplicación, es decir, el código que se ejecuta para realizar la acción solicitada en la página.</p>
<h2>Formas de Integración</h2>
<p>Ya teniendo un estándar para definir las distintas partes, una integración no es más que sustituir o modificar algunas de estas partes en uno de los sistemas por la misma parte en el otro (probablemente con nuevo código).</p>
<p>Algo importante al decidir cómo hacer la integración es que, por más que se deseen integrar los sistemas, siempre se deberá preservar la base de datos de usuarios de cada uno de ellos. Esto es así porque de lo contrario la cantidad de cambios sería muy grande y haría muy difícil que en el futuro se puedan actualizar los sistemas.</p>
<p>Hay muchas formas de realizar la integración entre el phpBB3 y el otro sistema. Lo que haré será escribir distintos artículos explicando cada una de las formas de integración, e iré enlazándolos desde este post a medida que vayan saliendo.</p>
<h3>Integración 1: phpBB3 usa la base de datos de usuario del otro sistema para autenticar a los usuarios. Los usuarios de phpBB3 se crean de forma pasiva.</h3>
<p>[<a title="Integrar phpBB3 con otro sistema. Modalidad 1" href="http://pragone.com/proyectos/como-integrar-phpbb3-con-tu-sitio/38" target="_blank">Ir directamente al artículo</a>]</p>
<p>Esta es la integración más sencilla (gracias a que phpBB3 implementa módulos de autenticación).</p>
<p>Estas son las características de esta integración:</p>
<ul>
<li>El registro de usuarios está completamente deshabilitado en el phpBB3</li>
<li>No se puede alterar la información del usuario en phpBB3.</li>
<li>Al realizar el login en phpBB3, la información del usuario es contrastada con la base de datos de usuario del otro sistema</li>
<li>En caso de que sea la primera vez que un usuario válido del otro sistema entra al phpBB3, un nuevo usuario es creado de forma &#8220;automágica&#8221; en el phpBB3.</li>
<li>Cada sistema maneja sus sesiones de forma independiente.</li>
<li>No se muestra información de un sistema en el otro</li>
</ul>
<p>Gráficamente sería así:</p>
<p><a href="http://pragone.com/proyectos/como-integrar-phpbb3-con-tu-sitio/38"><img class="aligncenter size-full wp-image-50" title="Integración 1: phpBB3 usa la base de datos de usuario del otro sistema para autenticar a los usuarios" src="http://pragone.com/wp-content/uploads/2008/06/integracion1.jpg" alt="Integración 1: phpBB3 usa la base de datos de usuario del otro sistema para autenticar a los usuarios" width="500" height="385" /></a></p>
<p>Aquí está el post en el que se explica <a title="Integrar phpBB3 con otro sistema. Modalidad 1" href="http://pragone.com/proyectos/como-integrar-phpbb3-con-tu-sitio/38" target="_blank">cómo hacer esta integración de phpBB3</a>.</p>
<h3>Integración 2: Al crear un usuario en el otro sistema, automáticamente se crea un usuario en phpBB3 y hacer login en uno de ellos automáticamente te loguea en el otro.</h3>
<p>[<a title="Integrar phpBB3 con otro sistema. Modalidad 2" href="http://pragone.com/proyectos/integrar-phpbb3-con-tu-sitio-2da-integracion-1ra-parte/52" target="_blank">Ir directamente a la primera parte artículo</a>]</p>
<p>Esta integración es diferente de la anterior porque los usuario son creados en phpBB3 de forma activa, es decir, aunque el usuario no haya entrado en el phpBB3 ya su usuario existe.</p>
<p>Estas son las características de esta integración:</p>
<ul>
<li>El registro de usuarios está deshabilitado en uno de los sistemas (aquí se explica con el registro de usuarios deshabilitado en el phpBB3, aunque podría ser en el otro sentido).</li>
<li>Cuando un usuario se registra en el otro sistema, se crea un nuevo usuario tanto en la base de datos del otro sistema como en la de phpBB3</li>
<li>No se puede alterar la información del usuario en el sistema en el que el registro esté deshabilitado (en este caso, no se puede alterar la información en phpBB3).</li>
<li>Al realizar el login en cualquiera de los dos sistemas, la información del usuario es contrastada con la base de datos de dicho sistema, pero se inician las sesiones en ambos, de forma de que basta un login en alguno de ellos para estar logueado en ambos.</li>
<li>No se muestra información de un sistema en el otro</li>
</ul>
<p>Gráficamente sería así:</p>
<p><img class="aligncenter size-full wp-image-51" title="Integracion 2: Creación activa de usuarios" src="http://pragone.com/wp-content/uploads/2008/06/integracion2.jpg" alt="Integracion 2: Creación activa de usuarios" width="500" height="276" /></p>
<p>He dividido este artículo en dos partes:</p>
<ol>
<li>Creación del usuario: <a title="Integrar phpBB3 con otro sistema. Modalidad 2" href="http://pragone.com/proyectos/integrar-phpbb3-con-tu-sitio-2da-integracion-1ra-parte/52" target="_blank">Ver artículo</a></li>
<li>Manejo de sesiones: <span style="color: #ff6600;"><strong>[pronto estará disponible]</strong></span></li>
</ol>
<h2>Más integraciones</h2>
<p>Hay muchas formas de hacer las integraciones. Estaré describiendo las distintas formas dependiendo de lo que sea más solicitado. Deja un comentario solicitando la explicación de una integración si no la ves aquí.</p>
<p>Algunas integraciones ya han sido solicitadas y estoy trabajando en nuevos posts para explicarlas.</p>
<p>También son bienvenidos comentarios en los que me indiques si te sirvió o no alguna integración en particular. Estos comentarios hazlos, por favor, en el post específico de esa forma de integración.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/w6mnZ4L8HoFw4l6I5wP2xvFD4Lo/0/da"><img src="http://feedads.g.doubleclick.net/~a/w6mnZ4L8HoFw4l6I5wP2xvFD4Lo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/w6mnZ4L8HoFw4l6I5wP2xvFD4Lo/1/da"><img src="http://feedads.g.doubleclick.net/~a/w6mnZ4L8HoFw4l6I5wP2xvFD4Lo/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Pragonecom/~4/zwl8PXXsrqk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pragone.com/proyectos/integracion-de-phpbb3-con-tu-sitio/47/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://pragone.com/proyectos/integracion-de-phpbb3-con-tu-sitio/47</feedburner:origLink></item>
		<item>
		<title>Canje de licencia de conducir de Venezuela a España</title>
		<link>http://feedproxy.google.com/~r/Pragonecom/~3/Go-UhH1tcio/46</link>
		<comments>http://pragone.com/interesante/canje-de-licencia-de-conducir-de-venezuela-a-espana/46#comments</comments>
		<pubDate>Thu, 29 May 2008 19:08:24 +0000</pubDate>
		<dc:creator>pragone</dc:creator>
				<category><![CDATA[Interesante]]></category>
		<category><![CDATA[canje]]></category>
		<category><![CDATA[dgt]]></category>
		<category><![CDATA[españa]]></category>
		<category><![CDATA[formulario]]></category>
		<category><![CDATA[licencia conducir]]></category>
		<category><![CDATA[trámite]]></category>
		<category><![CDATA[venezuela]]></category>

		<guid isPermaLink="false">http://pragone.com/?p=46</guid>
		<description><![CDATA[He querido crear este post con algo de información sobre cómo hacer el canje de licencia de conducir de Venezuela a España.
Gracias a un convenio firmado entre Venezuela y España es posible hacer el canje de la licencia de conducir venezolana por la española sin necesidad de realizar ningún examen adicional (para licencias de tercer [...]]]></description>
			<content:encoded><![CDATA[<p>He querido crear este post con algo de información sobre cómo hacer el canje de licencia de conducir de Venezuela a España.</p>
<p>Gracias a un convenio firmado entre Venezuela y España es posible hacer el canje de la licencia de conducir venezolana por la española sin necesidad de realizar ningún examen adicional (para licencias de tercer grado o menor). Aquí pueden encontrar un PDF con el documento que da pie a este canje: <a title="Reglamento canje de licencia Venezuela - España" href="http://dgt.es/was6/portal/contenidos/documentos/normas_legislacion/reglamento_trafico/reglamento_trafico077.pdf" target="_blank">http://dgt.es/was6/portal/contenidos/documentos/normas_legislacion/reglamento_trafico/reglamento_trafico077.pdf</a></p>
<p>Aunque tengo amigos que han realizado el proceso sin ningún problema, yo me he encontrado alguno (de hecho todavía estoy en el proceso)&#8230; por lo que decidí escribir al respecto con lo que espero ayude a otros.</p>
<h2>Primer paso: Solicitar cita para el canje</h2>
<p>Para poder realizar el canje lo primero que se debe hacer es solicitar una cita a la <a title="Dirección General de Tránsito" href="http://www.dgt.es" target="_blank">DGT</a> (Dirección General de Tránsito). Esto se puede hacer por teléfono, llamando al: <strong>902 30 01 75</strong>, o, en teoría, por la web de la DGT en este enlace: <a title="Solicitud cita de canje de licencia" href="https://canjes.dgt.es/CANJES-DGT/canjes/index_canjes.jsp?formulario=si" target="_blank">https://canjes.dgt.es/CANJES-DGT/canjes/index_canjes.jsp?formulario=si</a>. Digo en teoría, porque a mi nunca me ha funcionado.</p>
<p>Para esto necesitarás haberte registrado en como extranjero, es decir, tener un N.I.E. (Número de Identificación de Extranjero), y, evidentemente, una licencia de conducir venezolana.</p>
<p><strong>Nota: Cuando te pregunten el número de la licencia, da tu mismo número de cédula (no el número que está en la parte de atrás de la licencia).</strong></p>
<p>Solicitar la cita es un proceso rápido, aunque en ocasiones puedes tener que esperar unos cuantos minutos para ser atendido&#8230; lo que no es tan inmediato es la fecha de la cita. En mi caso la solicité en Diciembre de 2007 y me la dieron para Mayo del 2008&#8230; 5 meses! (Actualización: ahora en Julio de 2008 he pedido otra cita y me la dieron para Marzo del 2009, por lo que los tiempos han aumentado: 8 meses)</p>
<h2>Segundo paso: Preparación para el día de la cita</h2>
<p>La cita, es en la oficina de la DGT de tu provincia. (En el caso de Madrid es en Arturo Soria 125). Los requesitos que se deben presenta varían según la fuente. La página web dice una cosa, el papel que tienen en la DGT dice otra y otros documentos que puedes conseguir en la red dicen otras. Yo colocaré aquí los del papel de la DGT que son los que usa el personal de la DGT, así que es el que doy por bueno:</p>
<ul>
<li>Solicitud en impreso oficial: Te la darán el día de la cita. De todas formas, aquí pongo un <a title="Formulario solicitud de canje" href="https://canjes.dgt.es/CANJES-DGT/canjes/images/Mod2-40.pdf" target="_blank">enlace al formulario</a> (PDF)</li>
<li>Tasa de 18.20 € (a la fecha de escritura de esto, aunque varía en el tiempo): Se paga ahí mismo en la DGT en caja.</li>
<li>Original (y yo llevaría una copia) de la Tarjeta de Residencia (NIE). Si no lo tienes y tienes nacionalidad de un país de la comunidad europeo, entonces solicita un Certificado de Inscripción en el Registro General de Extranjeros (<a title="Formulario solicitud de Certificado de Inscripción" href="http://www.mir.es/SGACAVT/modelos/extranjeria/modelos_extranje/" target="_blank">link al formulario</a>)</li>
<li>Original y fotocopia de la licencia de conducir en vigor</li>
<li>Original y fotocopia de la cédula de identidad venezolana o del pasaporte venezolano</li>
<li>Declaración del titular: También te lo dan ahí el día de la cita y básicamente es un formulario en el que das declaración jurada de que no tienes ningún impedimento legal para poder conducir.</li>
<li>Dos fotografías tipo carnet (aunque necesitarás una más para el examen psicofísico).</li>
<li>Informe de aptitud psicofísica: Debe ser de la misma provincia en la que residas y en la que estás tramitando el canje. Puedes conseguir uno que te quede cerca en esta lista de <a title="Dónde hacer la prueba de aptitud psicofísica" href="http://www.educacionvial.dgt.es/tramites/crc/crc.htm" target="_blank">centros de aptitud psicofísica</a></li>
</ul>
<p>Otra cosa que dice el papel es que si tu permiso de conducir ha sido expedido después del 24 de Julio de 2006, sólo se canjearán si han sido obtenidos antes de residir en España (supongo que es para evitar que alguien le pague a un gestor para que te saque la licencia en Venezuela y te la mande por correo <img src='http://pragone.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  )</p>
<h2>Tercer paso: el día de la cita</h2>
<p>El día de la cita, ve lo más temprano posible&#8230; no importa la hora a la que estés citado. Esa hora sólo es de referencia&#8230; Esto es lo que debes hacer:</p>
<p>1.- Ve a la primera planta a donde dice: &#8220;Información de canje de licencia extranjeros&#8221;: Ahí presentas tu NIE y verifican que tengas cita ese día. Te deben dar:</p>
<ul>
<li>El formulario de solicitud</li>
<li>La declaración en la que dices que nada te impide hacer el trámite</li>
<li>Un número para ser atendido</li>
</ul>
<p>2.- Rellena el formulario de solicitud y cruza la sala a la parte de caja para particulares. Ahí pagarás la tasa correspondiente al trámite.</p>
<p>3.- Subes al cuarto piso y esperas a que te toque el turno. Una vez ahí presentas todos los documentos y listo.</p>
<h2>Problemas posibles. Cómo saber si todo va bien</h2>
<p>Bueno&#8230; desgraciadamente, puedo hablarles de un problema que he tenido. El primer paso (solicitar la cita) hace que la DGT solicite a Venezuela la confirmación de los datos de tu licencia. En mi caso, 5 meses luego de haber solicitado la cita todavía no tenían confirmación. De hecho puedes entrar en: <a title="Consulta de estado de la solicitud" href="https://canjes.dgt.es/CANJES-DGT/canjes/index_canjes.jsp?consulta=estado" target="_blank">https://canjes.dgt.es/CANJES-DGT/canjes/index_canjes.jsp?consulta=estado</a>, colocar tu NIE y ver si ya han recibido la confirmación. En mi caso no la tenían, así que sigo esperando y tratando de solicitar una nueva cita para que vuelvan a enviar la solicitud.</p>
<p>Bueno, espero que sea de ayuda, si lo fué deja un comentario <img src='http://pragone.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Si algún enlace está roto o si hay algún cambio en los requisitos deja un comentario y lo corregiré. <strong>No garantizo que la información aquí expuesta esté actualizada.</strong> Esta ha sido mi experiencia.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/mZv3eBxz7ZJtr7V44Z4qI5Xd9Rc/0/da"><img src="http://feedads.g.doubleclick.net/~a/mZv3eBxz7ZJtr7V44Z4qI5Xd9Rc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/mZv3eBxz7ZJtr7V44Z4qI5Xd9Rc/1/da"><img src="http://feedads.g.doubleclick.net/~a/mZv3eBxz7ZJtr7V44Z4qI5Xd9Rc/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Pragonecom/~4/Go-UhH1tcio" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pragone.com/interesante/canje-de-licencia-de-conducir-de-venezuela-a-espana/46/feed</wfw:commentRss>
		<slash:comments>228</slash:comments>
		<feedburner:origLink>http://pragone.com/interesante/canje-de-licencia-de-conducir-de-venezuela-a-espana/46</feedburner:origLink></item>
		<item>
		<title>Escribir libros de forma colaborativa: Un draft de concepto</title>
		<link>http://feedproxy.google.com/~r/Pragonecom/~3/cEUogW5cS0U/45</link>
		<comments>http://pragone.com/interesante/escribir-libros-de-forma-colaborativa-un-draft-de-concepto/45#comments</comments>
		<pubDate>Sun, 25 May 2008 12:28:44 +0000</pubDate>
		<dc:creator>pragone</dc:creator>
				<category><![CDATA[Interesante]]></category>
		<category><![CDATA[concepto]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[libro colaborativo]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://pragone.com/?p=45</guid>
		<description><![CDATA[El experimento de Javier al crear una Guía de SEO, basado en lo que ha escrito en el blog de VSEO, me ha parecido muy interesante, por lo que se me ha ocurrido que sería interesante poder contar con una herramienta que permitiera editar y seleccionar este contenido de forma colaborativa.
Estuve buscando y me pareció [...]]]></description>
			<content:encoded><![CDATA[<p>El experimento de Javier al crear una <a title="Guía de SEO" href="http://www.vseo.es/buscadores/seo-guia-de-referencia/" target="_blank">Guía de SEO</a>, basado en lo que ha escrito en el blog de VSEO, me ha parecido muy interesante, por lo que se me ha ocurrido que sería interesante poder contar con una herramienta que permitiera editar y seleccionar este contenido de forma colaborativa.</p>
<p>Estuve buscando y me pareció que algo ya debía existir&#8230; pero no he encontrado nada realmente útil. Lo más cercano fue un &#8220;hack&#8221; para MediaWiki (el software de la Wikipedia): <a href="http://meta.wikimedia.org/wiki/PDF_Export" target="_blank">PDF Export</a>&#8230; pero la verdad está muy verde.</p>
<p>Así que aquí lanzo el concepto de cómo me parece que se podría hacer:</p>
<p>Debería ser una mezcla entre una Wikipedia y Digg.</p>
<p>Este software debería por un lado mantener un índice básico de secciones en el que esboces los capítulos y categorías del contenido. Básicamente, darle un orden.</p>
<p>Esto te permitiría que pudieras publicar posts del blog bajo una categoría específica. Una vez que el contenido se haya copiado a la nueva plataforma, se podría editar estilo Wiki por cualquier persona, aunque habría un &#8220;editor&#8221; que decide qué se queda y qué no.</p>
<p>Además de esto, los usuarios podrían votar sobre cada artículo para indicar si les ha sido útil, si les parece que se encuentra desactualizado, erroneo, etc, y colocar sus comentarios.</p>
<p>Y finalmente, un módulo para organizar estilos y para generar el PDF a partir de todo el contenido.</p>
<p>En fin, me parece que es un concepto interesante.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/pmVwbVswoJTyqI3PIRuUUm7gadw/0/da"><img src="http://feedads.g.doubleclick.net/~a/pmVwbVswoJTyqI3PIRuUUm7gadw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pmVwbVswoJTyqI3PIRuUUm7gadw/1/da"><img src="http://feedads.g.doubleclick.net/~a/pmVwbVswoJTyqI3PIRuUUm7gadw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/Pragonecom/~4/cEUogW5cS0U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://pragone.com/interesante/escribir-libros-de-forma-colaborativa-un-draft-de-concepto/45/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://pragone.com/interesante/escribir-libros-de-forma-colaborativa-un-draft-de-concepto/45</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 5.564 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-11-11 19:52:38 -->
