<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>PureJS Project</title>
	<atom:link href="http://purejs.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://purejs.wordpress.com</link>
	<description>PureJS Framework al descubierto</description>
	<lastBuildDate>Sat, 05 Dec 2009 18:55:23 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='purejs.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>PureJS Project</title>
		<link>http://purejs.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://purejs.wordpress.com/osd.xml" title="PureJS Project" />
	<atom:link rel='hub' href='http://purejs.wordpress.com/?pushpress=hub'/>
		<item>
		<title>&#8230;y primeros enlaces</title>
		<link>http://purejs.wordpress.com/2009/12/05/y-primeros-enlaces/</link>
		<comments>http://purejs.wordpress.com/2009/12/05/y-primeros-enlaces/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 15:41:04 +0000</pubDate>
		<dc:creator>purejs</dc:creator>
				<category><![CDATA[Updates y releases]]></category>

		<guid isPermaLink="false">http://purejs.wordpress.com/?p=17</guid>
		<description><![CDATA[Enlaces temporales al código fuente y una pequeña demostración de uso.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=purejs.wordpress.com&amp;blog=10817823&amp;post=17&amp;subd=purejs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Aún no tengo activada la forja de RedIris, así que temporalmente tengo el proyecto en <a title="PureJS en SourceForge" href="http://purejs.sourceforge.net" target="_blank">SourceForge</a>.</p>
<p>También tengo colgada una <a title="Demo de PureJS" href="http://purejs.sourceforge.net" target="_blank">demostración de uso</a>. Es algo simplona, pero creo que ilustra la idea.</p>
<p>¡Anímate, y <a title="Descargar PureJS" href="http://sourceforge.net/projects/purejs/files/purejs/0.8.b3/PureJS.0.8b3.080519.zip/download" target="_blank">descarga el código fuente</a>! Tus aportaciones serán bienvenidas <img src='http://s2.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/purejs.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/purejs.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/purejs.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/purejs.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/purejs.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/purejs.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/purejs.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/purejs.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/purejs.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/purejs.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/purejs.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/purejs.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/purejs.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/purejs.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=purejs.wordpress.com&amp;blog=10817823&amp;post=17&amp;subd=purejs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://purejs.wordpress.com/2009/12/05/y-primeros-enlaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1b6435d1892757e47ce695aa5ab366b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">purejs</media:title>
		</media:content>
	</item>
		<item>
		<title>Primer día</title>
		<link>http://purejs.wordpress.com/2009/12/05/primer-dia/</link>
		<comments>http://purejs.wordpress.com/2009/12/05/primer-dia/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 11:59:47 +0000</pubDate>
		<dc:creator>purejs</dc:creator>
				<category><![CDATA[La historia de PureJS]]></category>

		<guid isPermaLink="false">http://purejs.wordpress.com/?p=11</guid>
		<description><![CDATA[La respuesta a las transcendentales preguntas ¿qué? y ¿por qué?<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=purejs.wordpress.com&amp;blog=10817823&amp;post=11&amp;subd=purejs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hay un primer día para todo lo que empieza&#8230;</p>
<p>Para participar con el PureJS en el<a title="IV Concurso Universiatrio de Software Libre" href="http://www.concursosoftwarelibre.org/" target="_blank"> IV Concurso Universitario de Software Libre</a> es necesario cumplir con dos trámites: alta en la <a title="Forja RedIris" href="http://forja.rediris.es/" target="_blank">forja RedIris</a> y alta de un blog en WordPress. Para darme de alta en la forja, era necesario que utilizase una cuenta de correo de alguna entidad adscrita a RedIris, la UNED en mi caso (así que tenía correo de la UNED&#8230;) Ahora sólo queda esperar las 48h esas que dicen que tardan en dar de alta el proyecto.</p>
<p>Mientras esperamos, te puedo ir contando la historia del PureJS <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>PureJS no es un proyecto nuevo. Todo empezó un día en el que uno de mis varios jefes me comentó que, en un par de meses, íbamos a necesitar un <em>grid editable</em>, tipo Excel, que funcionase desde el navegador, y que no fuera un ActiveX. Mi encargo era sencillamente investigar el tema, &#8220;darle una vuelta&#8221;.</p>
<p>Componentes &#8220;tipo Excel&#8221; de cliente, hay <a title="Googlear Grid Javascript" href="http://www.google.es/search?q=grid+javascript" target="_blank">muchos por ahí</a>, algunos muy buenos. La investigación estaba siendo sencilla, pero me distraje&#8230; pensé ¿y si lo hago yo?</p>
<p>Programar en Javascript es algo que mucha gente odia (a mí me encanta). Es un lenguaje casi sin reglas y, por ello, extraordinariamente flexible. Lo malo es que, al igual que pasaba (¿aún pasa?) con Visual Basic, lo más fácil es programar mal. Por más que uno se aplique, el código queda generalmente farragoso, difícil de mantener.</p>
<p>Conclusión: la primera versión del componente eran unas trescientas líneas que en aquel momento entendía, pero ¿sería capaz de recordar cómo funciona eso después de un mes? No, ni de broma.</p>
<p>Una de las navajas suízas de la programación es el &#8220;divide y vencerás&#8221;. En Javascript esto se consigue refactorizando funciones grandes en funciones más pequeñas, haciéndo el código más fácil de entender. Era una opción.</p>
<p>La solución en C++, C# o Java pasa por crear jerarquías de clases. Cada componente encapsula unas funcionalidades que son extendidas por un componente superior. En lugar de aplicar el &#8220;divide y vencerás&#8221; al código, se aplica a los conceptos.</p>
<p>Desafortunadamente, Javascript no es un lenguaje orientado a objetos, sino <strong>basado en objetos</strong>. No implementa el paradigma <a title="Programación orientada a objetos" href="http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos" target="_blank">OOP</a>. Existen algunas alternativas para &#8220;simular&#8221; la OOP en Javascript<strong> [Nota</strong>: No me refiero a los frameworks de desarrollo, sino a los remedios caseros que aparecen en los manuales<strong>]</strong> , utilizando las funciones objeto, prototipos y extensión de prototipos. Pero tienen varios problemas:</p>
<ul>
<li>El código no se clarifica, más bien se complica.</li>
<li>La herencia por prototipos es ineficiente en memoria, ya que copia el objeto heredado, en lugar de reusarlo.</li>
<li>Sobrecarga de métodos muy limitada, y bastante impredecible.</li>
</ul>
<p>Pero me daba la impresión de que estos problemas eran solucionables. Desarrollé una pequeña librería y pasé un par de semanas puliéndola, y resolví ponerla a prueba haciendo una jerarquía de clases para mi grid editable, cosa que hice en apenas dos tardes.</p>
<p>Al acabar el experimento, el código era sorprendentemente pequeño y claro. Me pregunté, &#8220;¿podrás entenderlo dentro de un més?&#8221; ¡Qué dices! ¡Por supuesto que sí!</p>
<p>Me gustó tanto el resultado que le puse nombre: &#8220;PureJS&#8221;, y decidi seguir desarrollándolo hasta convertirlo en un framework completo. Y ahí finaliza el principio.</p>
<p>Ya han pasado unos meses, y hay muchas cosas nuevas respecto a aquella primera versión&#8230; ¡pero lo mejor está por venir!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/purejs.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/purejs.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/purejs.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/purejs.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/purejs.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/purejs.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/purejs.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/purejs.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/purejs.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/purejs.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/purejs.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/purejs.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/purejs.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/purejs.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=purejs.wordpress.com&amp;blog=10817823&amp;post=11&amp;subd=purejs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://purejs.wordpress.com/2009/12/05/primer-dia/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1b6435d1892757e47ce695aa5ab366b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">purejs</media:title>
		</media:content>
	</item>
		<item>
		<title>Nace el blog!</title>
		<link>http://purejs.wordpress.com/2009/12/05/hello-world/</link>
		<comments>http://purejs.wordpress.com/2009/12/05/hello-world/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 08:45:33 +0000</pubDate>
		<dc:creator>purejs</dc:creator>
				<category><![CDATA[La historia de PureJS]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[¡Nace el blog de PureJS! Si mi fuerza de voluntad me lo permite, en estas páginas iré describiendo la evolución del proyecto, explicaré sus características, y fantasearé con sus posibilidades&#8230;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=purejs.wordpress.com&amp;blog=10817823&amp;post=1&amp;subd=purejs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>¡Nace el blog de PureJS!</p>
<p>Si mi fuerza de voluntad me lo permite, en estas páginas iré describiendo la evolución del proyecto, explicaré sus características, y fantasearé con sus posibilidades&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/purejs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/purejs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/purejs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/purejs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/purejs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/purejs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/purejs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/purejs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/purejs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/purejs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/purejs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/purejs.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/purejs.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/purejs.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=purejs.wordpress.com&amp;blog=10817823&amp;post=1&amp;subd=purejs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://purejs.wordpress.com/2009/12/05/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d1b6435d1892757e47ce695aa5ab366b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">purejs</media:title>
		</media:content>
	</item>
	</channel>
</rss>
