<?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/"
	>

<channel>
	<title>El Druida informático</title>
	<atom:link href="http://keltac.clangds.info/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://keltac.clangds.info</link>
	<description></description>
	<pubDate>Tue, 02 Jun 2009 18:59:37 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>sw:tor Nuevo y espectacular trailer</title>
		<link>http://keltac.clangds.info/?p=112</link>
		<comments>http://keltac.clangds.info/?p=112#comments</comments>
		<pubDate>Tue, 02 Jun 2009 18:56:21 +0000</pubDate>
		<dc:creator>Keltac</dc:creator>
		
		<category><![CDATA[Varios]]></category>

		<category><![CDATA[Videojuegos]]></category>

		<category><![CDATA[mmorpg]]></category>

		<category><![CDATA[sw:tor]]></category>

		<guid isPermaLink="false">http://keltac.clangds.info/?p=112</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/e7O351eDGNw&#038;rel=0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=es&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/e7O351eDGNw&#038;rel=0&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=es&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://keltac.clangds.info/?feed=rss2&amp;p=112</wfw:commentRss>
		</item>
		<item>
		<title>sw:tor &#8220;La Orden Jedi&#8221;</title>
		<link>http://keltac.clangds.info/?p=104</link>
		<comments>http://keltac.clangds.info/?p=104#comments</comments>
		<pubDate>Sun, 05 Apr 2009 14:58:52 +0000</pubDate>
		<dc:creator>Keltac</dc:creator>
		
		<category><![CDATA[Varios]]></category>

		<guid isPermaLink="false">http://keltac.clangds.info/?p=104</guid>
		<description><![CDATA[Los Jedi han sido los nobles defensores de la paz y diplomaticos de la República Galactica durante 22.000 años. Mientras los ciudadanos respetuoso con la ley miran a los Jedi con respeto y admiración, no asi los enemigos de la República Galactica  quienes los miran con suspicacia, miedo e ira.
El exito de la campaña militar [...]]]></description>
			<content:encoded><![CDATA[<p>Los Jedi han sido los nobles defensores de la paz y diplomaticos de la República Galactica durante 22.000 años. Mientras los ciudadanos respetuoso con la ley miran a los Jedi con respeto y admiración, no asi los enemigos de la República Galactica  quienes los miran con suspicacia, miedo e ira.</p>
<p>El exito de la campaña militar del Imperio Sith durante la Gran Guerra mostro las muertes de cientos de Jedi. Durante el saqueo de Coruscant, seis Maestros del Consejo Jedi fueron matados, y durante el tiempo transcurrido, los Sith han comenzado su propia campaña de reclutamiento para buscar niños sensitivos a la Fuerza por toda la galaxia.</p>
<p>Estas catastrofes han dañado la fé de la República Galactica en sus legendarios protectores, pero estan lejos de ser derrotados. Abrumados pero sin miedo, los Jedi han vuelto a su ancestral mundo natal de Tython, volviendo a sus principios eternos y mirando hacia el futuro, esperando para devolver el equilibrio a la Fuerza y la paz y la justicia a la galaxia.</p>
<p>Apesar de sus intenciones, la busqueda de serenidad de la Orden Jedi en Tython ha sido perturbado. A través de la ruinas Tythonianas, abundan misteriosas energias de Fuerza, y la herencia de una oscuridad hace tiempo olvidada ha resurgido. Con la llegada de un clan peregrino Twi&#8217;lek  dispuesto a establecerse en Tython violando la ley de la República Galactica, delicadas y peligrosas pruebas han surgido para los padawan Jedi en entrenamiento y para la orden misma.</p>
]]></content:encoded>
			<wfw:commentRss>http://keltac.clangds.info/?feed=rss2&amp;p=104</wfw:commentRss>
		</item>
		<item>
		<title>SW:TOR &#8220;El Imperio Sith&#8221;</title>
		<link>http://keltac.clangds.info/?p=87</link>
		<comments>http://keltac.clangds.info/?p=87#comments</comments>
		<pubDate>Sat, 28 Feb 2009 07:00:07 +0000</pubDate>
		<dc:creator>Keltac</dc:creator>
		
		<category><![CDATA[Varios]]></category>

		<category><![CDATA[Videojuegos]]></category>

		<category><![CDATA[mmorpg]]></category>

		<category><![CDATA[Star Wars]]></category>

		<category><![CDATA[sw:tor]]></category>

		<guid isPermaLink="false">http://keltac.clangds.info/?p=87</guid>
		<description><![CDATA[Continuamos la serie de articulos sobre &#8220;Star Wars: The Old Repúblic&#8221; con un articulo sobre el Imperio Sith.
En el siguiente hablaremos sobre la Orden Jedi.

El verdadero origen de los Sith permanece envuelto en misterio. La raza Sith fue, de hecho, insignificante hasta hace trescientos, cuando Jedis Oscuros exiliados llegaron a Korriban y subyugaran a los [...]]]></description>
			<content:encoded><![CDATA[<p>Continuamos la serie de articulos sobre &#8220;Star Wars: The Old Repúblic&#8221; con un articulo sobre el Imperio Sith.</p>
<p>En el siguiente hablaremos sobre la Orden Jedi.</p>
<p><span id="more-87"></span></p>
<p>El verdadero origen de los Sith permanece envuelto en misterio. La raza Sith fue, de hecho, insignificante hasta hace trescientos, cuando Jedis Oscuros exiliados llegaron a <a title="Korriban" href="http://starwars.wikia.com/wiki/Korriban">Korriban</a> y subyugaran a los Sith bajo sus normas y filosofía.</p>
<p>Con el paso de los años, los Jedis Oscuros se fueron casando con aquellos a los que governaban, y con el paso de las generaciones, la palabra &#8220;Sith&#8221; adquirio un nuevo significado. Esta poderosa nueva civilización comenzo a expandirse rápidamente, liderada por una creciente población de ambiciosos oscuros usarios de la Fuerza. Cincuenta años antes, los limites de la civilización Sith alcanzaron la República, y la Gran Guerra Hyerespacial comenzo.</p>
<p>El Oscuro Lord del Sith <a title="Naga Sadow" href="http://starwars.wikia.com/wiki/Naga_Sadow">Naga Sadow</a> lidero su ejercito en una agresiva campaña para destruir la Republica Galáctica. Aunque los Sith tuvieron exito al principio, la Orden Jedi volvio a unirse para derrotar a sus oscuros homólogos,destruyendo sistemáticamente la civilizción Sith en Korriban. <img class="alignright size-full wp-image-90" title="empire" src="http://keltac.clangds.info/wp-content/uploads/2009/02/empire.jpg" alt="empire" width="207" height="592" /></p>
<p>Sin saberlo los Jedi, el último Emperador de los Sith consiguió escapar a la masacre y se escondio en el Espacio Profundo con sus más fieles Lores Oscuros.</p>
<p>Estos Sith superviviente comenzaron a reconstruir su sociedad en un planeta distante, esperando el dia de su retorno para la venganza.</p>
<p>En el curso de los siguientes mil años, el Imperio Sith recupero su fuerza. El emperador desarrollo un gigantesco ejercito Imperial, una flota de avanzadas naves de guerra,  y emprendio oscuros rituales que le prolongaron la vida y su indiscutible reinado.</p>
<p>Cuando la hora de la venganza llego, los Sith comenzaron a infiltrarse en los sistemas estelares del borde exterior, sembrando semillas de discordia y haciendo tratos secretos con criminales y señores de la guerra locales. Con todas las piezas colocadas con precisión, los Sith lanzaron una enorme ofensiva que cogió a los Jedis con la guardia baja. Únicamente con la primera oleada, los Sith consiguieron tomar el control de diversos sistemas en el borde exterior, destruyendo los astilleros de la República en el <a title="Sector Sluis" href="http://starwars.wikia.com/wiki/Sluis_sector">sector Sluis</a>, y estrangular la popular <a title="Ruta Comercial Rimma" href="http://starwars.wikia.com/wiki/Rimma_Trade_Route">Ruta Comercial Rimma</a>.</p>
<p>Tras la embestida inicial, las brillantes estrategias del Emperador continuaron y la brutal fuerza de su ejercito Imperial golpearon a la República una y otra vez, desde los profundos desagües de <a title="Utapau" href="http://starwars.wikia.com/wiki/Utapau">Utapau</a> hasta los altos bosques de <a title="Agamar" href="http://starwars.wikia.com/wiki/Agamar">Agamar</a>. Aunque todo hacia pensar que el Imperio era capaz de continuar la guerra indefinidamente, el Emperador sorprendio a la República una vez más.</p>
<div>Mientras el Consejo del Oscuro Emperador estaban ocupados con los lideres de la República en las negociaciones de paz, diversos Lores del Sith y una élite del ejercito Imperial saqueaban el planeta Capital de la República.</div>
<div>Destruyendo el Templo Jedi y manteniendo el planeta como rehén, los Sith no dejaron otra opción a los lideres de la República que rendir diversos sistemas estelares lejanos firmando el <a title="Tratado de Coruscant" href="http://starwars.wikia.com/wiki/Treaty_of_Coruscant">Tratado de Coruscant</a>.</p>
<p>Desde el tratado, el Emperador se ha dedicado a perseguir sus propios misteriosos objetivos. Delegando el control al Consejo Oscuro, y preparando el escenario para una brutal lucha por el poder. En el vacío político, los líderes Sith y Imperiales mas fuertes y astutos estan surgiendo para asumir la autoridad, consolidando el dominio del Imperio y aplastando sus enemigos.</p>
<h6>El texto y las imagenes han sido extraidas de la web oficial del juego www.swtor.com</h6>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://keltac.clangds.info/?feed=rss2&amp;p=87</wfw:commentRss>
		</item>
		<item>
		<title>La capacidad metafórica es el primer requisito del talento</title>
		<link>http://keltac.clangds.info/?p=100</link>
		<comments>http://keltac.clangds.info/?p=100#comments</comments>
		<pubDate>Tue, 17 Feb 2009 17:56:18 +0000</pubDate>
		<dc:creator>Keltac</dc:creator>
		
		<category><![CDATA[Varios]]></category>

		<guid isPermaLink="false">http://keltac.clangds.info/?p=100</guid>
		<description><![CDATA[Una buenisima entrada en el blog de Eduar Punset, muy recomendable su lectura. Sobre todo la ultima parte donde da una explicación sonre como en ocasiones es mejor tomar decisiones de manera intitiva sin tener apenas información que razonar la decisión sin tener toda la información.
http://www.eduardpunset.es/blog/?p=175
]]></description>
			<content:encoded><![CDATA[<p>Una buenisima entrada en el blog de Eduar Punset, muy recomendable su lectura. Sobre todo la ultima parte donde da una explicación sonre como en ocasiones es mejor tomar decisiones de manera intitiva sin tener apenas información que razonar la decisión sin tener toda la información.</p>
<p><a href="http://www.eduardpunset.es/blog/?p=175" target="_self">http://www.eduardpunset.es/blog/?p=175</a></p>
]]></content:encoded>
			<wfw:commentRss>http://keltac.clangds.info/?feed=rss2&amp;p=100</wfw:commentRss>
		</item>
		<item>
		<title>SW:TOR &#8220;La República Galáctica&#8221;</title>
		<link>http://keltac.clangds.info/?p=72</link>
		<comments>http://keltac.clangds.info/?p=72#comments</comments>
		<pubDate>Mon, 02 Feb 2009 19:17:30 +0000</pubDate>
		<dc:creator>Keltac</dc:creator>
		
		<category><![CDATA[Tecnología y Informática]]></category>

		<category><![CDATA[Videojuegos]]></category>

		<category><![CDATA[mmorpg]]></category>

		<category><![CDATA[Star Wars]]></category>

		<category><![CDATA[sw:tor]]></category>

		<guid isPermaLink="false">http://keltac.clangds.info/?p=72</guid>
		<description><![CDATA[Con esta entrada inauguro una série de articulos, en  los quales ire explicando el trasfondo en el qual se desenvolupara el nuevo juego de Star Wars : The Old Republic.
En esta primera entrada os explicare como se encuentra la República Galáctica.

Durante más de 20000 años, la república galáctica ha sido el civilizado y avanzado poder [...]]]></description>
			<content:encoded><![CDATA[<p>Con esta entrada inauguro una série de articulos, en  los quales ire explicando el trasfondo en el qual se desenvolupara el nuevo juego de Star Wars : The Old Republic.</p>
<p>En esta primera entrada os explicare como se encuentra la República Galáctica.</p>
<p><span id="more-72"></span></p>
<p>Durante más de 20000 años, la república galáctica ha sido el civilizado y avanzado poder en la galaxia. Governada por el senado galáctico con representantes de centenares de sistemas y planetas, la répública a sido el centro de la paz y el rpogreso, un brillante faro en la oscuridad del espacio exterior.<img class="alignright size-full wp-image-75" title="republic" src="http://keltac.clangds.info/wp-content/uploads/2009/02/republic.jpg" alt="republic" width="195" height="626" /></p>
<p>La venerada orden Jedi se juro a si misma defender la República, para luchar contra la oscuridad, y llevar la paz y el equilibrio a la galaxia. Los Jedis han servido durante milenios en esta tarea, y durante este tiempo se han ganado la admiración de sus aliados, y el odio de sus enemigos.</p>
<p>Hace menos de un siglo, el mayor de estos enemigos ha retornado&#8230;</p>
<p>El ataque del Imperio Sith cogió a la República y a los Jedi completamente por sorpresa, y durante la larga y ardua guerra, la República se rompió. Después de que el planeta capital de Coruscant fuera saqueado por las fuerzas del Imperio Sith, el Canciller Supremo y el Senado fueron forzados a firmar el doloroso Tratado de Coruscant, que requeria que la república retirara su soporte a varios antiguos aliados, incluyendo a los siempre leales <a href="http://starwars.wikia.com/wiki/Bothan">Bothans</a>.</p>
<p>Luchando contra una ola de deserciones de Sistemas Estelares, y una insoportable crisis de suministros, y caos en las calles de Coruscant, el Senado ha quedado paralizado desde el tratado</p>
<p>La implacable y dividida nobleza de los mundos del núcleo discuten cada decision, dañando la moral de la ya descorazonada población de la República. Culpando a los Jedi por los fallos que llevaron a la dominación Imerial, el Senado se ha distanciado de los legendarios guardianes de la República.</p>
<p>Los Jedis permanecen entregados a la protección de la República, pero el Consejo Jedi se ha trasladado de Coruscant al ancestral mundo natal del los Jedi <a href="http://starwars.wikia.com/wiki/Tython">Tython</a>.</p>
<p>La República ha entrenado nuevos esquadrones de Fuerzas Especiales, disciplinados equipos capaces de trabajar conjuntamente con una eficacia cercana  a la perfección. Estas tropas de elite aun trabajan habitualmente en colaboración con los Jedi, pero en muchos lugares, los soldados han adquirido un papel destacado siempre en la defensa de la República.</p>
<p>A pesar de la depresión económica de la post-guerra y la continua expansión de sus enemigo, el espiritu de la República permanece independiente, valiente, y fuerte. Nuevos líderes estan dando un paso al frente incluso ahora para hacer frente al oscuro Imperio Sith, liberar la galaxia, y devolver a la República a su antigua gloria.</p>
<h6>El texto y las imagenes han sido extraidas de la web oficial del juego www.swtor.com</h6>
]]></content:encoded>
			<wfw:commentRss>http://keltac.clangds.info/?feed=rss2&amp;p=72</wfw:commentRss>
		</item>
		<item>
		<title>Nuevo video de Star Wars: The Old Republic</title>
		<link>http://keltac.clangds.info/?p=63</link>
		<comments>http://keltac.clangds.info/?p=63#comments</comments>
		<pubDate>Tue, 27 Jan 2009 13:28:47 +0000</pubDate>
		<dc:creator>Keltac</dc:creator>
		
		<category><![CDATA[Tecnología y Informática]]></category>

		<category><![CDATA[Videojuegos]]></category>

		<category><![CDATA[mmorpg]]></category>

		<category><![CDATA[Star Wars]]></category>

		<category><![CDATA[sw:tor]]></category>

		<guid isPermaLink="false">http://keltac.clangds.info/?p=63</guid>
		<description><![CDATA[El otro dia publicarón un nuevo video-reportaje sobre el nuevo masivo multiplayer de Star Wars: The Old Republic (sw:tor).
Va a ser desarrollado por Bioware (Baldu&#8217;s Gate, NeverWinter Nights, Mass Effect, kotor) y situara la acción 200 años antes de lo ocurrido en sw:kotor (Star Wars: Knight of The Old Republic)
Tengo muchas esperanzas puestas en el, [...]]]></description>
			<content:encoded><![CDATA[<p>El otro dia publicarón un nuevo video-reportaje sobre el nuevo masivo multiplayer de Star Wars: The Old Republic (sw:tor).</p>
<p>Va a ser desarrollado por Bioware (Baldu&#8217;s Gate, NeverWinter Nights, Mass Effect, kotor) y situara la acción 200 años antes de lo ocurrido en sw:kotor (Star Wars: Knight of The Old Republic)</p>
<p>Tengo muchas esperanzas puestas en el, a ver si por fin tenemos el mmorpg de Star Wars que tanto queremos, esperemos que si y de momento a babear&#8230;<br />
<br />
<span id="more-63"></span><br />
<br />
<object width="580" height="330" data="http://cdn-www.swtor.com/sites/all/themes/swtor/assets/mediaPlayerInterior.swf" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="flashvars" value="title=undefined&amp;description=undefined&amp;source=http://cdn-www.swtor.com/sites/all/files/vc/VD_20081212_VidDoc1_580x326.flv&amp;fullscreen_source=undefined&amp;comment_url=/media/vidcasts/viddoc001#comments&amp;download_1=header|Windows Media Video (.wmv),thumb|null,filesize|118MB,resolution|960x540,url|http://cdn-www.swtor.com/sites/all/files/vc/VD_20081212_VidDoc1_480p_wm9_wmv.zip&amp;download_2=header|QuickTime (.mov),thumb|null,filesize|131MB,resolution|960x540,url|http://cdn-www.swtor.com/sites/all/files/vc/VD_20081212_VidDoc1_480p_sv3_mov.zip" /><param name="src" value="http://cdn-www.swtor.com/sites/all/themes/swtor/assets/mediaPlayerInterior.swf" /><param name="allowfullscreen" value="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://keltac.clangds.info/?feed=rss2&amp;p=63</wfw:commentRss>
		</item>
		<item>
		<title>Bayas de Goji</title>
		<link>http://keltac.clangds.info/?p=50</link>
		<comments>http://keltac.clangds.info/?p=50#comments</comments>
		<pubDate>Wed, 21 Jan 2009 20:36:33 +0000</pubDate>
		<dc:creator>Keltac</dc:creator>
		
		<category><![CDATA[Varios]]></category>

		<guid isPermaLink="false">http://keltac.clangds.info/?p=50</guid>
		<description><![CDATA[El otro día apareció por casa un envase que ponía Bayas de Goji. Resulto que a mi madre se las habían recomendado en el herbolario por lo bien que van para la salud. También le habían dado unas hojas en las que explican todas las bondades de estas bayas originarias de China, y si solo [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día apareció por casa un envase que ponía Bayas de Goji. Resulto que a mi madre se las habían recomendado en el herbolario por lo bien que van para la salud. También le habían dado unas hojas en las que explican todas las bondades de estas bayas originarias de China, y si solo la mitad de lo que dicen es cierto la humanidad se va a volver inmortal xD</p>
<p>Os dejo, integras, todas las ventajas  de estas bayas que, por cierto, saben como pasas pero menos dulces&#8230; ¿que ? cuando lo leáis vosotros también os la comeréis aunque solo sea por si acaso.</p>
<p><span id="more-50"></span></p>
<p><!-- 	 	 --></p>
<p><strong>33 razones por las que el Goji debería ser tomado diariamente</strong></p>
<p><strong>1. Alarga la vida, protegiendo el cuerpo del envejecimiento prematuro por el efecto de su potente acción antioxidante.</strong><br />
Los trillones de células del cuerpo están constantemente siendo atacadas por radicales libres. Estos perjudiciales agentes que nos rodean pueden acelerar el envejecimiento destruyendo células vitales del cuerpo más rápido de lo que se reemplazan. El Goji es conocido como la  ‛‛Fruta de la Longevidad&#8217;‛. La fuerza de los antioxidantes y sus moléculas de polisacáridos nos defienden contra el envejecimiento prematuro, neutralizando el daño que los radicales libres causan en todo el cuerpo.</p>
<p><strong>2. Incrementa la energía y la fuerza, especialmente cuando se lucha contra las enfermedades.</strong><br />
Clasificado como uno de los adaptógenos por excelencia de Asia, el Goji incrementa la tolerancia al ejercicio y la resistencia. Ayuda a eliminar la fatiga, especialmente durante la convalecencia de alguna enfermedad.</p>
<p><strong>3. Nos hace sentirnos y encontrarnos más jóvenes.</strong><br />
El Goji puede estimular la liberación por la pituitaria de HGH (Human Growth Hormone), la hormona de la juventud. Los beneficios de la HGH son numerosos e incluyen, reducción de grasa corporal, un sueño más reparador, mejora la memoria, curación más rápida, mejora  de la libido y una apariencia más joven.</p>
<p><strong>4. Mantiene una presión sanguínea saludable.</strong><br />
Casi uno de cada cuatro adultos en Estados Unidos tiene hipertensión (presión alta de la sangre). La hipertensión sin control puede llevar a enfermedades cardiovasculares o fallo renal.<br />
La hipertensión es poco detectada a veces yes por eso por lo que se la llama &#8220;asesina silenciosa&#8221;. Un estudio de 1.998 muestra que el aumento de la presión sanguínea podría ser prevenido significativamente mediante la acción de las moléculas polisacáridas del Goji.</p>
<p><strong>5. Reduce su riesgo de cáncer.</strong><br />
La planta del Goji es una de las pocas en la Tierra que contiene el mineral anticancerígeno Germanio. Sus antioxidantes y polisacáridos únicos pueden detener las mutaciones genéticas que llevan al cáncer. Algunos científicos creen que el Goji puede ser un suplemento especialmente bueno para prevenir el cáncer de hígado porque refuerza la protección hepática y los efectos cancerígenos al mismo tiempo. Esto es importante pues el hígado es el órgano detoxificante más importante del cuerpo</p>
<p><strong>6. Reduce el colesterol.</strong><br />
El Goji contiene beta-sitosterol, que se ha probado efectivo para bajar los niveles de colesterol.<br />
Sus antioxidantes previenen la oxidación del colesterol y la formación de placas arteriales. Los flavonoides del Goji ayudan a mantener las arterias abiertas y funcionando suavemente.</p>
<p><strong>7. Ayuda a normalizar los niveles de azúcar en los inicios de la diabetes en adultos.</strong><br />
La baya del Goji se ha usado en China para el tratamiento de la diabetes inicial en adultos durante muchos años, y se ha observado que sus polisacáridos han mostrado capacidad para equilibrar el azúcar en la sangre y la respuesta a la insulina. También contiene betaína, que puede prevenir el hígado graso y el daño vascular que a veces se observa en los diabéticos.</p>
<p><strong>8. Mejora la respuesta sexual y trata la disfunción.</strong><br />
La baya del Goji es reverenciada como uno delos primeros tónicos sexuales herbales de toda la medicina asiática, y es legendaria por ayudar a &#8220;encender pasiones&#8221;. De hecho, hay un viejo proverbio chino que avisa a los hombres que viajan lejos de sus esposas y familias: &#8220;Aquel que viaje a 1.000 kilómetros de su hogar no debe comer Goji&#8221;. Estudios científicos recientes han mostrado el Goji aumenta la testosterona en sangre, incrementando por ello la libido tanto en hombres como en mujeres.</p>
<p><strong>9. Le ayuda a perder peso.<br />
</strong>En un estudio asiático sobre la obesidad, a los pacientes se les dio Goji por la mañana y por la tarde. Los resultados fueron excelentes, con la mayoría de pacientes perdiendo peso.  En otro estudio, los polisacáridos del Goji se mostraron efectivos reduciendo peso al mejorar la conversión de la comida en energía en lugar de grasa.</p>
<p><strong>10. Alivia los dolores de cabeza y los mareos.<br />
</strong>En la medicina tradicional china, las jaquecas y los mareos frecuentemente se asociaban a deficiencias en el riñón yin (energía vital) y yang (función). El Goji es una de las plantas más frecuentemente utilizadas para restaurar el equilibrio yin/yang.</p>
<p><strong>11. Alivia el insomnio y mejora la calidad del sueño.</strong></p>
<p>El Goji se ha utilizado durante mucho tiempo en Asia en el tratamiento natural del insomnio. En varios estudios médicos con personas de edad, casi todos los pacientes mostraron mejor calidad de Sueño.</p>
<p><strong>12. Mejora la Salud ocular y la visión.<br />
</strong>Desde tiempos antiguos, las bayas del Goji son muy conocidas en China por sus propiedades para mejorar la visión. Estudios actuales de científicos chinos han encontrado que el Goji es capaz de reducir el tiempo que tarda la visión en adaptarse a la oscuridad. También mejora la visión bajo condiciones de luz escasa.</p>
<p><strong>13. Fortalece su corazón.<br />
</strong>El Goji contiene cyperone, un Sesquiterpeno que es beneficioso para el corazón y la presión  sanguínea. Las antocianinas ayudan a mantener la fuerza e integridad de las arterias coronarias.</p>
<p><strong>14. Inhibe la peroxidación de los lípidos (una de las causas de enfermedad del corazón). </strong><br />
El colesterol y otros lípidos de la sangre pueden ser fatales cuando reaccionan en el cuerpo y forman lípidos peróxidos. La acumulación de estos pegajosos lípidos peróxidos en la sangre puede llevar a enfermedades cardiovasculares, ataques al Corazón, aterosclerosis y derrames cerebrales. El Goji incrementa los niveles de una enzima de la sangre que inhibe la formación de estos peligrosos lípidos.</p>
<p><strong>15. Mejora la resistencia a la enfermedad.<br />
</strong>El radical libre superóxido está implicado, de forma importante, en el comienzo y la progresión de las enfermedades en humanos. El superóxido es neutralizado en el Cuerpo por la enzima superóxido dismutasa (SOD), pero producimos menos de ésta a medida que envejecemos. A cualquier edad, el estrés de la vida diaria puede frenar la capacidad del cuerpo para producir suficiente SOD y mantener la enfermedad alejada. Se ha demostrado que con el consumo del Goji se puede incrementar hasta un 40% esta enzima (SOD) tan importante.</p>
<p><strong>16. Mejora la respuesta inmune (Células-T, IL-2, IgA e IgG).</strong></p>
<p>El sistema inmune es lo que podríamos llamar las ‛‛fuerzas armadas&#8221; de nuestro cuerpo. Más de 40 años de investigación han revelado la capacidad del Goji para regular la inmunidad ordenando y controlando muchas de las funciones importantes de defensa del cuerpo. Los polisacáridos del Goji estimulan y equilibran la actividad de toda clase de células inmunes, incluyendo las células T, las T citotóxicas, las células NK, las lisozimas, el factor de necrosis tumoral alfa y las inmunoglobulinas IgG y IgA.</p>
<p><strong>17. Recuperación del cáncer (promueve el crecimiento celular sano).<br />
</strong>Pacientes recibiendo medicación contra el cáncer junto al Goji mostraban una respuesta de hasta un 250% más que la obtenida con la medicación sola. Estos pacientes con cáncer avanzado experimentaron regresiones asombrosas de melanoma maligno, carcinoma de células renales, carcinoma colorrectal, cáncer de pulmón, carcinoma nasofaríngeo e hidrotórax maligno. El período de remisión del cáncer en los pacientes tratados con Goji duraba significativamente más que en aquellos tratados sin Goji.</p>
<p><strong>18. Restaura y repara el ADN (previniendo mutaciones que podrían causar cáncer).<br />
</strong>El ADN es la estructura química más importante de nuestro cuerpo. Mantiene la huella de todos los rasgos heredados de nuestros ancestros, asegurando también, a medida que es necesario, que nuestros billones de células se reproduzcan como duplicados exactos y sanos. La exposición a productos químicos, polución y radicales libres, puede causar daños y roturas en nuestro ADN. Esto puede llevar a mutaciones genéticas, cáncer e incluso la muerte. La betaína y las moléculas polisacáridas del Goji pueden restaurar y reparar el ADN dañado.</p>
<p><strong>19. Inhibe el crecimiento tumoral.<br />
</strong>La interleukina-2 (IL-2) es una citoquina (proteína celular) crucial que induce respuestas antitumorales en distintos tipos de cáncer. En estudios realizados en China, los polisacáridos del Goji han mostrado capacidad para mejorar la producción de IL-2. En los Estados Unidos, la ( IL-2 lleva estudiándose como factor de aumento de la inmunidad desde 1983, usado en algunos cánceres y para la infección por VIH. El Goji también tiene la capacidad de causar la muerte de células tumorales por inducción de la apóptosis; proceso por el cual las células son destruidas y recicladas.</p>
<p><strong>20. Reduce los efectos tóxicos de la quimioterapia y la radiación.<br />
</strong>En un estudio, tomar Goji parecía que mejoraba los efectos de la radiación en la lucha contra el cáncer de pulmón, permitiendo utilizar una dosis menor. Otros estudios indican que el Goji puede proteger de los efectos nocivos colaterales de la quimioterapia y la radiación.</p>
<p><strong>21. Fortalece la sangre, incrementando la producción de células rojas, células blancas y  plaquetas. Trata la deficiencia de la médula ósea.<br />
</strong>El Goji es un fortalecedor de la sangre y un rejuvenecedor renombrado. En un estudio, el Goji hacía que la sangre de personas ancianas volviera a un estado marcadamente más joven. En otra prueba, los flavoniodes del Goji protegían las células rojas contra el daño de los radicales libres. El Goji también se ha utilizado en estudios clínicos más recientes como tratamiento para las condiciones de deficiencia de la médula ósea (baja producción de glóbulos rojos, blancos y plaquetas).</p>
<p><strong>22. Mejora el recuento de linfocitos.<br />
</strong>Un linfocito es cualquiera del grupo de células blancas de la sangre, de importancia crucial en la parte adaptable del sistema inmune del cuerpo. La porción adaptable del sistema inmune Organiza una defensa a medida cuando los organismos invasores penetran las defensas generales del cuerpo. El Goji incrementa el número de linfocitos y ayuda a activarlos cuando el organismo está siendo atacado.</p>
<p><strong>23. Activa enzimas antiinfIamatorias.<br />
</strong>Estudios científicos intensivos llevados a cabo durante los últimos 20 años, han mostrado que en procesos inflamatorios agudos y crónicos, el radical superóxido se produce a un ritmo que sobrepasa la capacidad del sistema de enzimas SOD del cuerpo para eliminarlo. Tal desequilibrio resulta en dolor y daños a las articulaciones y los tejidos..E| Goji puede restaurar el equilibrio de la enzima SOD, tan importante por su efecto anti-inflamatorio.</p>
<p><strong>24. Ayuda a una función hepática sana (detoxifica).</strong></p>
<p>El Goji contiene un nuevo galactolípido que ha mostrado proteger células hepáticas, incluso contra hidrocarbonos altamente clorados.</p>
<p><strong>25. Minimiza los síntomas de la menopausia.<br />
</strong>En la medicina tradicional china, muchos síntomas menopaúsicos se achacan a una deficiencia del riñón yin. Durante muchísimo tiempo, el Goji ha sido el tónico yin, elegido preferentemente para restaurar el equilibrio hormonal.</p>
<p><strong><br />
26. Mejora la fertilidad.</strong><br />
El Goji ha sido utilizado durante mucho tiempo por los médicos asiáticos para el tratamiento de la infertilidad, tanto en hombres como en mujeres. En las mujeres, el Goji es conocido por su capacidad sin igual para restaurar el jing (esencia de la reproducción). En los hombres, los polisacáridos del Goji han mostrado que fortalecen lIa vida de las células espermáticas, y también se muestran potentes como inhibidores de la degradación estructural y muerte celular de células testiculares como consecuencia del estrés.</p>
<p><strong>27. Fortalece sus músculos y huesos.</strong><br />
EI Goji facilita la secreción de la HCH (hormona del crecimiento humano) que es responsable de muchas de las funciones importantes de mantenimiento, reparación y desarrollo. Esto  incluye la producción de masa muscular lisa y la incorporación de calcio en huesos y dientes.</p>
<p><strong>28. Mantiene una función renal normal.</strong><br />
En la medicina tradicional china los riñones son órganos de máxima importancia entre todos los órganos vitales. Se cree que controlan el cerebro y otros órganos. Una función renal correcta es considerada esencial para sobrevivir. El Goji tiene una merecida fama como supertónico, con influencia tanto sobre el yin como con el yang.</p>
<p><strong>29. Mejora la memoria y la habilidad de recordar.<br />
</strong>EI Goji es el primer &#8220;tónico cerebral&#8221; en Asia. Contiene betaina que se convierte en colina, una sustancia que acentuá la memoria y la capacidad para recordar.</p>
<p><strong>30. Ayuda con la tos seca y crónica.</strong><br />
EI Goji se usa por herboristas Chinos, solo mezclado con otras hierbas para aliviar la tos y la congestión.</p>
<p><strong>31. Alivia la ansiedad y el estrés.<br />
</strong>Como adaptógeno Goji ayuda al cuerpo a adaptarse y estar por encima del estrés. Provee las. Reservas de energía para ayudar a manejarnos ante casi cualquier dificultad.</p>
<p><strong>32. Impulsa la alegría y da brillo al espíritu.<br />
</strong>Se dice que el consumo constante de Goji nos trae una actitud alegre. En Asia, con razón, se la conoce como &#8220;la baya feliz&#8221;.</p>
<p><strong>33. Mejora la digestión debilitada.</strong><br />
El Goji se ha usado mucho tiempo para tratar la gastritis atrofica, un debilitamiento de la digestión causado por la actividad reducida de las células estomacales. EI Goji de por si se digiere fácilmente, especialmente si es tomado en la forma altamente biodisponible del  zumo.</p>
<p><strong>La información presentada no tiene la intención de diagnosticar enfermedades o prescribir tratamiento alguno. Consulte siempre con un médico cualificado, con conocimientos de suplementos naturales, antes de iniciar un tratamiento de suplementos y antes de hacer algún cambio de la medicación recetada.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://keltac.clangds.info/?feed=rss2&amp;p=50</wfw:commentRss>
		</item>
		<item>
		<title>Mejora del rendimiento del codigo gestionado</title>
		<link>http://keltac.clangds.info/?p=26</link>
		<comments>http://keltac.clangds.info/?p=26#comments</comments>
		<pubDate>Sun, 18 Jan 2009 00:07:25 +0000</pubDate>
		<dc:creator>Keltac</dc:creator>
		
		<category><![CDATA[Programacíon]]></category>

		<category><![CDATA[Tecnología y Informática]]></category>

		<category><![CDATA[.Net]]></category>

		<guid isPermaLink="false">http://keltac.clangds.info/wp/wordpress/?p=26</guid>
		<description><![CDATA[
Este post es otro de los documentos que prepare para usar en el trabajo.
En este se habla de una serie de recomendaciones para la optimizacion del uso de la memoria y mejora del rendimiento de aplicaciones en .Net.
En esencia es un extracto del libro ScaleNet que se puede encontrar gratuitamente en forma de pdf en [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 		H2 { margin-bottom: 0.21cm } 		H4 { margin-bottom: 0.21cm } 		H3 { margin-bottom: 0.21cm } 		A:link { so-language: zxx } --></p>
<p style="border: medium none ; padding: 0cm; margin-bottom: 0cm; font-weight: normal; text-decoration: none;">Este post es otro de los documentos que prepare para usar en el trabajo.<br />
En este se habla de una serie de recomendaciones para la optimizacion del uso de la memoria y mejora del rendimiento de aplicaciones en .Net.</p>
<p style="border: medium none ; padding: 0cm; margin-bottom: 0cm; font-weight: normal; text-decoration: none;">En esencia es un extracto del libro ScaleNet que se puede encontrar gratuitamente en forma de pdf en la web de Microsoft.</p>
<p style="border: medium none ; padding: 0cm; margin-bottom: 0cm; font-weight: normal; text-decoration: none;"><em><strong>Nota:</strong> Esta en Catalan, si tengo tiempo lo traducire al Castellano.</em></p>
<p style="border: medium none ; padding: 0cm; margin-bottom: 0cm; font-weight: normal; text-decoration: none;"><em><br />
</em></p>
<p style="border: medium none ; padding: 0cm; margin-bottom: 0cm; font-weight: normal; text-decoration: none;"><span id="more-26"></span></p>
<p style="border: medium none ; padding: 0cm; margin-bottom: 0cm; font-weight: normal; text-decoration: none;"><em><!-- 	 	 --><em>Aquí us deixo una serie de recomanacions que vaig recollir per tal de mirar d&#8217;optimizar l&#8217;ús de memoria d&#8217;una aplicació y millorar el rendiment.</em></em></p>
<p><em><em><img src="http://di.socialgo.com/application/external/tiny_mce/plugins/pagebreak/img/trans.gif" border="0" alt="" width="1" height="1" align="BOTTOM" /></em></em></p>
<h3><em><em>Quant a les propietats</em></em></h3>
<p><em><em>L&#8217;ús  de les propietats es una bona practica de la programació orientada a objectes, ja que permet encapsular la validació i comprovacions de seguretat i ens assegurem de que sigui executat quan la propietat es accedida.</em></em></p>
<p><em><em>Les propietat simples, que no tenen codi extra, no tenen una diferencia de rendiment en el accés respecte als camps públic. Això es deu a que el compilador agafa aquests paràmetres i el posa &#8220;inline&#8221;. Això es així sempre i quan la propietat no sigui virtual, ja que si no la propietat no es pot compilar &#8220;inline&#8221;.</em></em></p>
<h3><em><em>Variables Privades vs Públiques</em></em></h3>
<p><em><em>A més a més de les consideracions de visibilitat, s&#8217;ha de tenir present que quan es serialitza un objecte amb XmlSerializer, es serialitzen tots els membres públics per defecte, així s&#8217;ha d&#8217;evitar el menbres públics innecesaris per evitar sobrecarregar el métode.</em></em></p>
<h3><em>Consideracions quant al Garbage Collector</em></h3>
<ul>
<li>
<h4><em>Evitar la crida al GC.Collect</em></h4>
</li>
</ul>
<p><em><em>Aquest mètode realitza una recol·lecció de tots els elements de totes les generacions. Aquestes recol·leccions són costoses per que literalment es recorren tots els objectes vius de l&#8217;aplicació i comporta un quantitat de temps considerable.</em></em></p>
<p><em><em>L&#8217;algoritme del GC esta optimitzat per realitzar això quan menys costos resulti, per això es millor no cridar-lo de forma explicita. L&#8217;algoritme s&#8217;autoajusta amb el temps i ajusta les seves operacions a la les necessitats de memòria de l&#8217;aplicació.</em></em></p>
<p><em><em>En el caso de  que aún así se desee utilizar  hay que tener en cuenta que este método NO ejecuta la recolección, si no que la sugiere al GC y es este quien decide si la realiza o no. La forma correcta de llamar al garbage collector es:</em></em></p>
<p><em><em>En el cas de que, tot i així , es desitgifer servir hi ha que tenir present que aquest métode no executa la recolecció de forma automàtica, si no que suggereix la recolecció al GC i es aquest qui decideix si la fa o no. La forma correcta de fer la crida es la següent </em></em></p>
<p><em><em> &#8216;Recull memoria i executa finalitzadors</em></em></p>
<p><em><em> System.GC.Collect()</em></em></p>
<p><em><em> &#8216;Esperem a que els finalitzador s&#8217;hagin executat.</em></em></p>
<p><em><em> System.GC.WaitForPendingFinalizers()</em></em></p>
<p><em><em> System.GC.Collect()</em></em></p>
<p><em><em> </em></em></p>
<ul>
<li>
<h4><em><em>Contemplar l&#8217; us de WeakReference amb dades cacheades</em></em></h4>
</li>
</ul>
<p><em><em>Quan tenim gran col·leccions o arrays d&#8217;objectes tenim que contemplar l&#8217;ús de les referències dèbils. Les referències dèbils (WeakReference)  son una manera de mantenir les instancies als objectes de forma que si el sistema requereix alliberar memòria, els nostres objectes passin a un medi persistent de forma transparent a nosaltres, per a després ser fàcilment recuperats.</em></em></p>
<p><em><em>Degut a que aquest sistema comporta certs sobre costos es útil amb objectes de mides mitjanes a grosses, ens correspon a nosaltres decidir quins son objectes mitjans i grossos.</em></em></p>
<p><em><em>Es fa servir de la següent manera:</em></em></p>
<p><em><em> Public Sub SomeMethod()</em></em></p>
<p><em><em> </em></em></p>
<p><em><em> &#8216;Creem la col·lecció</em></em></p>
<p><em><em> Dim arr As ArrayList = New ArrayList(5)</em></em></p>
<p><em><em> &#8216;Creem el nostre objecte</em></em></p>
<p><em><em> Dim mo As MyObject = New MyObject()</em></em></p>
<p><em><em> &#8216;Creem l&#8217;objecte WeakReferencea del nostre objecte</em></em></p>
<p><em><em> Dim wk As WeakReference = New WeakReference(mo)</em></em></p>
<p><em><em> &#8216;Afegim la WeakReference a la col·lecció</em></em></p>
<p><em><em> arr.Add(wk)</em></em></p>
<p><em><em> &#8216;Recuperem la WeakReference</em></em></p>
<p><em><em> Dim wk2 As WeakReference = CType(arr(0), WeakReference)</em></em></p>
<p><em><em> Dim mob As MyObject = Nothing</em></em></p>
<p><em><em> If wk2.IsAlive Then</em></em></p>
<p><em><em> mob = CType(wk2.Target, MyObject)</em></em></p>
<p><em><em> End If</em></em></p>
<p><em><em> If mob Is Nothing Then</em></em></p>
<p><em><em> &#8216;Resucitem l&#8217;objecte per que ha estat reclamant pel GC</em></em></p>
<p><em><em> Else</em></em></p>
<p><em><em> &#8216;Continuem per que tenim l&#8217;objecte</em></em></p>
<p><em><em> End If</em></em></p>
<p><em><em> </em></em></p>
<p><em><em> End Sub</em></em></p>
<p><em><em> </em></em></p>
<ul>
<li>
<h4><em>Prevenir la promoció d&#8217;objectes de vida curta</em></h4>
</li>
</ul>
<p><em><em>El objectes de vida curta son aquells que són reclamants pel GC abans de deixar la Generació 0. Per evitar que aquest objecte es promocionin cap a generacions superiors hem de procurar seguir els següents principis:</em></em> <em><em><strong></strong></em></em></p>
<ul>
<li><em><em><strong>No referenciar objectes de vida curta des d&#8217;objectes de vida llarga</strong></em></em></li>
</ul>
<p><em><em>Un exemple típic es quan assignem un objecte local a un nivell de classe</em></em></p>
<p><em><em> Class Customer</em></em></p>
<p><em><em> Dim _lastOrder As Order</em></em></p>
<p><em><em> Sub insertOrder(ByVal ID As Integer, _</em></em></p>
<p><em><em> ByVal quantity As Integer, _</em></em></p>
<p><em><em> ByVal amount As Double, _</em></em></p>
<p><em><em> ByVal productID As Integer)</em></em></p>
<p><em><em> </em></em></p>
<p><em><em> Dim currentOrder As Order = New Order(ID, _</em></em></p>
<p><em><em> quantity, _</em></em></p>
<p><em><em> amount, _</em></em></p>
<p><em><em> productID)</em></em></p>
<p><em><em> currentOrder.insert()</em></em></p>
<p><em><em> Me._lastOrder = currentOrder</em></em></p>
<p><em><em> End Sub</em></em></p>
<p><em><em> End Class</em></em></p>
<p><em><em>S&#8217;ha d&#8217;evitar de fer aixó per que provoca un augment de les probabilitats del objecte de ser promocionat. S&#8217;hauri de fer de la següent manera</em></em></p>
<p><em><em> Class Customer</em></em></p>
<p><em><em> Dim _lastOrderID As Integer</em></em></p>
<p><em><em> Sub ProcessOrder(ByVal ID As Integer, _</em></em></p>
<p><em><em> ByVal quantity As Integer, _</em></em></p>
<p><em><em> ByVal amount As Double, _</em></em></p>
<p><em><em> ByVal productID As Integer)</em></em></p>
<p><em><em> &#8216;. . .</em></em></p>
<p><em><em> Me._lastOrderID = ID</em></em></p>
<p><em><em> &#8216;. . .</em></em></p>
<p><em><em> End Sub</em></em></p>
<p><em><em> End Class</em></em></p>
<p><em><em> </em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Evitar la implementació del mètode Finalize</strong></em></em></li>
</ul>
<p><em><em>Els objectes que tenen el mètode Finalize tenen moltes probabilitats de ser promocionats cap a una generació posterior per a facilitar la finalització.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Evitar que el objectes Finalitzables reverenciï&#8217;n rés</strong></em></em></li>
</ul>
<p><em><em>Els objectes referenciats per objectes amb mètode finalize podem ser promocionats de manera semblant a lo exposat al primer punt.</em></em></p>
<p><em><em> </em></em></p>
<ul>
<li>
<h4><em><em>Assignar a Null/Nothing les variables no necessàries abans d&#8217;una crida de llarga duració</em></em></h4>
</li>
</ul>
<p><em><em>Abans de quedar parats a un bloc de codi que ens pot tenir una estona hem d&#8217;assignar les variables membre a null/nothing per tal de que siguin recol·lectades.</em></em></p>
<p><em><em>Això s&#8217;aplica a qualsevol objecte que sigui estàtica o lèxicament accessible però que, actualment, no sigui necessari:</em></em></p>
<ul class="unIndentedList">
<li><em> <em>Si no necessites mes variables estàtiques a la teva classe, o altres classes, assigna-li null/nothing.</em></em></li>
<li><em> <em>Si es pot &#8220;podar&#8221; l&#8217;estat, també es una bona idea. Pot ser capaç de eliminar la major part de l&#8217;arbre avanç de la crida de llarga duració.</em></em></li>
<li><em> <em>Si hi ha cap objecte que es pugui disposar, assignar-li null.</em></em></li>
</ul>
<p><em><em>Les variables locals no s&#8217;han d&#8217;assignar a null/nothing per que el compilador JIT pot decidir estàticament que ja no es fa referència a la variable i que no hi ha necessitat d&#8217;assignar-la a null/nothing.</em></em></p>
<p><em><em> </em></em></p>
<ul>
<li>
<h4><em><em>Minimitzar les assignacions ocultes</em></em></h4>
</li>
</ul>
<p><em><em>S&#8217;ha d&#8217;anar amb comte amb les línees de codi aparentment senzilles ja que actualment poden  resultar en moltes assignacions. Per exemple, String.Split usa un delimitador per crear arrays de strings des d&#8217;una string inicial. Com a resultat un Split en un contexte de carrega pesada, com pot ser una ordenació, pot ser molt costos.</em></em></p>
<p><em><em>També s&#8217;ha d&#8217;anar amb comte amb l&#8217;operador += dins d&#8217;un bucle. El metodes de hashing i comparació també son llocs dolents on posar assignacions ja que solen ser cridades de forma reiterada.</em></em></p>
<ul>
<li>
<h4><em><em>Evitar o minimitzar l&#8217;ús de grafs complexes</em></em></h4>
</li>
</ul>
<p><em><em>S&#8217;ha d&#8217;evitar fer servir estructures de dades o objectes que continguin moltes referències a altres objectes. Son costoses de crear i impliquen més treball pel GC. Grafs simples tenen una major localitat i un menor codi a mantenir. Es un error comú fer els grafs massa genèrics.</em></em></p>
<p><em><em> </em></em></p>
<h3><em><em>Pautes per a Finalize i Dispose</em></em></h3>
<ul class="unIndentedList">
<li><em> <em><strong>Cridar el Close o el Dispose dels mètodes que ho suportin</strong></em></em></li>
</ul>
<p><em><em>Si una clase o recurs implementa el dispose es per un motiu, no només s&#8217;ha de deixar que caigui fora d&#8217;àmbit.</em></em></p>
<p><em><em>El elements més comuns que ho implementen són: SqlConnection, SqlDataReader, SqlTransaction, FileStream, BinaryWriter, StreamReader, TextReader, TextWriter, BinaryReader, TextWriter, Socket, UdpClient, TcpClient</em></em></p>
<p><em><em> </em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Fer servir using per assegurar que es cridi el Dispose</strong></em></em></li>
</ul>
<p><em><em>Així ens assegurem que encara que es doní una excepció es cridi el mètode dispose. Una opció igualment valida és ficar la cridar del dispose a un bloc finally.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>No implementar Finalize a menys que es requereixi</strong></em></em></li>
</ul>
<p><em><em>Explicat anteriorment.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Implementar Finalize només si sostenim recursos no gestionarts a través de crides client</strong></em></em></li>
</ul>
<p><em><em>Si la nostra clase té un metode que, per exemple, obre una conexió, recull unes dades, tanca la conexió y retorna les dades, no cal implementar Finalize. Peró si siposa d&#8217;un metodé &#8220;open&#8221; que obre una conexió i el métode d&#8217;agafar dades es independent llavors si que caldrà implementar-ho.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Moure les carregues del Finalize a les fulles dels grafs</strong></em></em></li>
</ul>
<p><em><em>Explicat anteriorment.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Si implementem Finalize, implementar IDisposable</strong></em></em></li>
</ul>
<p><em><em>Així es disposa d&#8217;un mètode per alliberar recursos de manera explicita, encara que de totes formes haurem d&#8217;implementar el finalize per que no podem assegurar que el codi que el crida executi el Dispose.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Si implementem Finalize i Dispose, fem servir el patró Dispose</strong></em></em></li>
</ul>
<p><em><em>Més informació a: <a href="http://msdn.microsoft.com/es-es/library/system.idisposable.aspx">http://msdn.microsoft.com/&#8230;../system.idisposable.aspx</a></em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Anular finalització al mètode dispose</strong></em></em></li>
</ul>
<p><em><em>L&#8217;ús del dispose te per finalitat alliberar el recursos el més aviat possible i evitar l&#8217;execució de dos cicles del GC per netejar l&#8217;objecte. Si no ho suprimim s&#8217;executarà de totes maneres.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Permetre cridar diversos cops el dispose</strong></em></em></li>
</ul>
<p><em><em>Subsegüents crides al dispose no han de provocar excepcions. Si seguim el patro de diseny proposat per Microsoft ja esta contemplat.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Cridar dispose a les classe base i al membres IDisposable</strong></em></em></li>
</ul>
<p><em><em>Si la nostra classe deriva duna classe que implementa el dispose, hem de garantir que al nostre dispose s&#8217;executa el dispose de la classe base.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Mantenir el codi dels finalitzadors simple per evitar bloquejos</strong></em></em></li>
</ul>
<p><em><em>S&#8217;ha d&#8217;evitar executar cap cosa que pugui bloquejar el procés, ja que TOTS el finalitzadors s&#8217;executen en un únic thread especialitat.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Faci el codi de neteja thread safe només si el tipus es thread safe</strong></em></em></li>
</ul>
<p><em><em>Si el nostre tipus es thread safe el nostre dispose també a de ser-ho.</em></em></p>
<p><em><em><em>(Nota: Thread Safe indica que es pot cridar alhora des de diversos llocs, especialment threads, sense que això pugui provocar cap problema.)</em></em></em></p>
<h3><em><em>Pautes per l&#8217;ús de threads</em></em></h3>
<p><em><em>Donarem unes pautes mínimes a considerar quan fem servir threads.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Minimitzar la creació de threads</strong></em></em></li>
</ul>
<p><em><em>Els threads fan servir tant recursos administrats com no administrat i son costosos de inicialitzar. Si spamejem threads de manera indiscriminada augmentem canvi de contexte al procesador. Per aixó es millor fer servir un pool de threads per així evitar el cost de inicialització. El següent codi mostra una forma de fer servir el pool de threads.</em></em></p>
<p><em><em> </em></em></p>
<p><em><em>C#</em></em></p>
<p><em><em><em>WaitCallback methodTarget=new WaitCallback(myClass.UpdateCache); </em> </em></em></p>
<p><em><em><em>ThreadPool.QueueUserWorkItem( methodTarget );<br />
</em>Visual Basic</em></em></p>
<p><em><em><em>Dim methodTarget As WaitCallback=New WaitCallback(MyClass.UpdateCache)</em></em></em></p>
<p><em><em><em>ThreadPool.QueueUserWorkItem(methodTarget)</em></em></em></p>
<p><em><em> </em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>Usar timers per programar tasques periòdiques</strong></em></em></li>
</ul>
<p><em><em>Ens permetrà programar tasques de manera periòdica que s&#8217;executaran a un thread del pool de forma automàtica amb un resultat òptim en quant a rendiment.</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>No fer servir Thread.Abort</strong></em></em></li>
</ul>
<p><em><em>Això llença una excepció i no es fa de forma immediata. Per esperar a que un thread hagi terminat es pot fer servir Thread.Join</em></em></p>
<ul class="unIndentedList">
<li><em> <em><strong>No fer servir Thread.Suspend . Resume ni .Pause</strong></em></em></li>
</ul>
<p><em><em>So formes molt intrusives de controlar l&#8217;execució de threads que poden acabar en el penjat de les aplicacions. Per intentar controlar questes coses es millor jugar amb les prioritats de threads el lock(object), mutex, ManualResetEvent, AutoResetEvent and Monitor objects. Tots aquest  objectes dereven de WaitHandle que permet la sincronització entre threads de forma segura.</em></em></p>
<p><em><em><br />
</em></em></p>
<p><em><em><br />
</em></em></p>
<p><em><em><br />
</em></em></p>
<p><em><em><br />
</em><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://keltac.clangds.info/?feed=rss2&amp;p=26</wfw:commentRss>
		</item>
		<item>
		<title>Clases consultables desde Linq</title>
		<link>http://keltac.clangds.info/?p=10</link>
		<comments>http://keltac.clangds.info/?p=10#comments</comments>
		<pubDate>Sat, 17 Jan 2009 23:36:06 +0000</pubDate>
		<dc:creator>Keltac</dc:creator>
		
		<category><![CDATA[Programacíon]]></category>

		<category><![CDATA[Tecnología y Informática]]></category>

		<category><![CDATA[.Net]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Linq]]></category>

		<guid isPermaLink="false">http://keltac.clangds.info/wp/wordpress/?p=10</guid>
		<description><![CDATA[No se vosotros, pero a mí me da especial pereza cuando tengo que crear métodos para buscar determinados valores dentro de una colección de objetos, ya sé que los métodos de búsqueda vienen a ser siempre los mismos y la implementación no varía mucho de una vez a otra, pero cuando has de obtener ya [...]]]></description>
			<content:encoded><![CDATA[<p>No se vosotros, pero a mí me da especial pereza cuando tengo que crear métodos para buscar determinados valores dentro de una colección de objetos, ya sé que los métodos de búsqueda vienen a ser siempre los mismos y la implementación no varía mucho de una vez a otra, pero cuando has de obtener ya valores calculados o rangos de valores o combinaciones más perversas la cosa cambia. Para facilitarnos este trabajo tenemos linq y ahora explicaremos cómo construir nuestras clases para que puedan ser consultadas mediante linq.</p>
<p><span id="more-10"></span></p>
<p><em><strong>Nota:</strong> Este articulo lo redacte ya hace un tiempo para documentar un posible uso en el trabajo.</em></p>
<h4>La clase base</h4>
<p>Antes de nada debemos construir la clase que contendrá la información que almacenamos, para esta demos optaremos por la original clase persona, con los atributos nombre, apellidos, edad, dni y sexo.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="415" valign="top">class Persona {<br />
string _nombre;<br />
string _apellidos;<br />
int _edad;<br />
string _dni;<br />
int _sexo;</p>
<p>public string nombre {<br />
get { return _nombre; }<br />
set { _nombre = value; }<br />
}<br />
public string apellidos {<br />
get { return _apellidos; }<br />
set { _apellidos = value; }<br />
}<br />
public int edad {<br />
get { return _edad; }<br />
set { _edad = value; }<br />
}<br />
public string dni {<br />
get { return _dni; }<br />
set { _dni = value; }<br />
}<br />
public int sexo {<br />
get { return _sexo; }<br />
set { _sexo = value; }<br />
}<br />
}</td>
</tr>
</tbody>
</table>
<h4>Colección de objetos</h4>
<p>Ahora pasamos a la chicha, hemos de diseñar una clase que contenga la colección de objetos sobre los cuales queremos consultar. Para que linq pueda realizar consultas esta colección debe implementar el interface IEnumerable, este interface expone el IEnumerator interno que permite una iteración simple a través de los objetos que contiene la colección. Como se puede ver, también debemos implementar el interface IEnumerator dentro de la colección. Es importante ver que el IEnumerator se define <span style="text-decoration: underline;">dentro</span> de la clase colección no fuera, ya que ha de poder acceder a la colección de objetos, en nuestro caso conjuntoPersonas.</p>
<p>También hay que destacar que debemos implementar el interface con establecimiento inflexible de tipos, es decir que definimos que tipo de objeto contiene, &lt;Persona&gt;, si no se hiciera así Linq no sabría que propiedades tiene el objeto y no podría realizar las consultas. Además esta forma nos da una mayor seguridad de tipos y es más eficiente que las colecciones que nosotros creemos con establecimiento inflexible de tipos.</p>
<p>Veamos la clase y su implementación.</p>
<table border="1" cellspacing="0" cellpadding="0" width="503">
<tbody>
<tr>
<td width="501" valign="top">class Personal : IEnumerable&lt;Persona&gt;<br />
{<br />
private Persona[] conjuntoPersonas;<br />
public void add(Persona nuevaPersona)<br />
{<br />
int l;<br />
if (conjuntoPersonas == null)<br />
{<br />
conjuntoPersonas = new Persona[1];<br />
conjuntoPersonas[0] = nuevaPersona;<br />
l = 1;<br />
}<br />
else<br />
{<br />
l = conjuntoPersonas.Length;<br />
Persona[] _arr = new Persona[l+1];<br />
conjuntoPersonas.CopyTo(_arr, 0);<br />
_arr[l] = nuevaPersona;<br />
conjuntoPersonas = _arr;<br />
}<br />
}<br />
public IEnumerator&lt;Persona&gt; GetEnumerator()<br />
{<br />
return new PersonaEnumerator(conjuntoPersonas);<br />
}<br />
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()<br />
{<br />
return new PersonaEnumerator(conjuntoPersonas);<br />
}</p>
<p>private class PersonaEnumerator : IEnumerator&lt;Persona&gt;<br />
{<br />
private int position = -1;<br />
private Persona[] conjuntoPersonasEnumerator;<br />
public PersonaEnumerator(Persona[] grupo)<br />
{<br />
conjuntoPersonasEnumerator = grupo;<br />
}<br />
public bool MoveNext()<br />
{<br />
position++;<br />
if (position &lt; conjuntoPersonasEnumerator.Length)<br />
return true;<br />
else<br />
return false;<br />
}<br />
// Reset the enumeration by setting the position to -1<br />
public void Reset()<br />
{<br />
position = -1;<br />
}<br />
// Return the current object<br />
Object System.Collections.IEnumerator.Current<br />
{<br />
get { return conjuntoPersonasEnumerator[position]; }<br />
}<br />
public Persona Current<br />
{<br />
get { return conjuntoPersonasEnumerator[position]; }<br />
}</td>
</tr>
</tbody>
</table>
<p>Hay que fijarse que la funcion GetEnumerator del interface IEnumerable y la propiedad Current del IEnumerator están sobre cargadas, esto se debe a que para cumplir con el interface hace falta que estén implementadas para objetos genéricos y para el objeto específico, además en mis pruebas, cuando implementaba las funciones con objetos genéricos tenía que indicar toda la ruta hasta la función del interface para que no me diera error.</p>
<p><span style="text-decoration: underline;">GetEnumerator</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="765" valign="top">public IEnumerator&lt;Persona&gt; GetEnumerator() <em>(objeto específico)</em></td>
</tr>
<tr>
<td width="765" valign="top">System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() <em>(objeto genérico)</em></td>
</tr>
</tbody>
</table>
<p><em></em></p>
<p><span style="text-decoration: underline;">Current</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="599" valign="top">Object System.Collections.IEnumerator.Current <em>(objeto genérico)</em></td>
</tr>
<tr>
<td width="599" valign="top">public Persona Current <em>(objeto específico)</em></td>
</tr>
</tbody>
</table>
<p>Con esto ya tenemos nuestra clase conultable en Linq y podremos hacer consultas como por ejemplo, las persona con mas de 30 años:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="599" valign="top">var c = from ps in p where ps.edad &gt; 30 select ps;</td>
</tr>
</tbody>
</table>
<p>O la media de edad de cada sexo:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="1039" valign="top">
<p style="margin-right: 0px;" dir="ltr"><em>var res = from ps in p group ps by ps.sexo into ps2 select new {sexo = ps2.Key, avg = ps2.Average(c =&gt; c.edad)};</em></p>
</td>
</tr>
</tbody>
</table>
<h4>Comentarios</h4>
<p>La potencia del Linq la veremos sobre todo cuando dispongamos de diversas clases y hagamos joins entre ellas, simplificando mucho el proceso de cruzar las referencias.</p>
<p>Hemos de tener en cuenta que, para tareas sencillas, Linq no es optimo. Recorrer un array buscando un valor concreto, por ejemplo, es altamente optimizado por el compilador dando como resultado un procesos hasta 40 veces más rápido.</p>
<address><span style="color: #0000ff;"><a class="wp-caption" title="enlace proyecto de ejemplo" href="http://cid-df4b51af7d30ecaa.skydrive.live.com/embedrowdetail.aspx/P%c3%bablico/Desarrollo/Material%20Propio/ClaseConsultable.rar" target="_blank">descarga proyecto de ejemplo</a></span></address>
<p>P.D: No soy la persona que mejor se explica del mundo así que si algo no esta bien explicado o hace falta que le de otra vuelta decírmelo.</p>
]]></content:encoded>
			<wfw:commentRss>http://keltac.clangds.info/?feed=rss2&amp;p=10</wfw:commentRss>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://keltac.clangds.info/?p=1</link>
		<comments>http://keltac.clangds.info/?p=1#comments</comments>
		<pubDate>Sat, 17 Jan 2009 05:40:00 +0000</pubDate>
		<dc:creator>Keltac</dc:creator>
		
		<category><![CDATA[Varios]]></category>

		<guid isPermaLink="false">http://keltac.clangds.info/wp/wordpress/?p=1</guid>
		<description><![CDATA[Bienvenida]]></description>
			<content:encoded><![CDATA[<p>Bueno, como podéis ver he deicidio introducirme en el mundillo de blogs. Siempre he tenido curiosidad de saber si tendría la disciplina necesaria para mantener un blog durante cierto tiempo. La verdad es que casi todas las cosas que emprendo de esta índole acaban en el olvido. No se si esta tendrá mejor suerte que otras pero os invito a acompañarme en este experimento.</p>
<p>El blog no va tener una temática concreta, pero lo que es seguro es que serán cosas afines a mis gustos, pero ese es lo lógico ¿no?, así que sobre tecnología seguro que habrá bastante, videojuegos y programación mayoritariamente.</p>
<p>Deseadme suerte y bienvenidos.</p>
<p>Que la fuerza os acompañe!! (os había dicho que soy friki xD)</p>
]]></content:encoded>
			<wfw:commentRss>http://keltac.clangds.info/?feed=rss2&amp;p=1</wfw:commentRss>
		</item>
	</channel>
</rss>
