<?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>Sr. Ssruno&#039;s Blog</title>
	<atom:link href="http://crystalblood.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://crystalblood.wordpress.com</link>
	<description>Developing from the heart of South America</description>
	<lastBuildDate>Wed, 16 Nov 2011 12:14:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='crystalblood.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Sr. Ssruno&#039;s Blog</title>
		<link>http://crystalblood.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://crystalblood.wordpress.com/osd.xml" title="Sr. Ssruno&#039;s Blog" />
	<atom:link rel='hub' href='http://crystalblood.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Plugin wp-weather en español para el WordPress mediante algunos tweaks/hacks (weather.com)</title>
		<link>http://crystalblood.wordpress.com/2010/05/07/plugin-wp-weather-en-espanol-para-el-wordpress-mediante-algunos-tweakshacks-weather-com/</link>
		<comments>http://crystalblood.wordpress.com/2010/05/07/plugin-wp-weather-en-espanol-para-el-wordpress-mediante-algunos-tweakshacks-weather-com/#comments</comments>
		<pubDate>Fri, 07 May 2010 20:43:14 +0000</pubDate>
		<dc:creator>CrystalBlood</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[castellano]]></category>
		<category><![CDATA[clima]]></category>
		<category><![CDATA[español]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[localización]]></category>
		<category><![CDATA[localization]]></category>
		<category><![CDATA[mo]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[po]]></category>
		<category><![CDATA[poedit]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[spanish]]></category>
		<category><![CDATA[tweak]]></category>
		<category><![CDATA[weather]]></category>
		<category><![CDATA[weather.com]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wp-weather]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[xoap]]></category>

		<guid isPermaLink="false">http://crystalblood.wordpress.com/?p=67</guid>
		<description><![CDATA[Plugin utilizado wp-weather (v0.3.8). Todo esto hubiese sido más fácil si en la petición X/SOAP, se pudiese especificar el idioma, que si figura en el retorno con el valor en_US, pero como no encontré la forma, veremos como hacer (the hard way). Como el plugin soporta localization, mediante archivos *.PO y *.MO podemos usar el [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=67&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Plugin utilizado <a href="http://wordpress.org/extend/plugins/wp-weather/">wp-weather</a> (v0.3.8).</p>
<p>Todo esto hubiese sido más fácil si en la petición X/SOAP, se pudiese especificar el idioma, que si figura en el retorno con el valor en_US, pero como no encontré la forma, veremos como hacer (the hard way).</p>
<p>Como el plugin soporta <strong>localization</strong>, mediante archivos *.PO y *.MO podemos usar el <a href="http://www.poedit.net/">Poedit</a> para modificar el archivo <code>wp-weather-en_US.po</code> cambiándole lo que se necesite, y luego salvarlo como <code>wp-weather-<span style="color:#008080;">es_ES</span>.po</code>, compilamos para obtener el archivo *.MO, ambos archivos deben estar en el mismo directorio &#8220;<code>wp-content/plugins/wp-weather/localization</code>&#8220;, la carga de estos archivos será automático ya que la configuración local del wordpress está en español pero con esto no logramos la traducción de los estados del clima, hasta aquí apenas modificamos algunos títulos estáticos, para más información sobre los archivos *.PO y *.MO en este <a href="http://codex.wordpress.org/Translating_WordPress">enlace</a>.</p>
<p>Aquí podemos ver los códigos correspondientes para los <a href="http://developer.yahoo.com/weather/#codes">estados del clima</a>, en está misma página podemos ver una muestra de la respuesta RSS (forecastrss), pero estaremos más interesados en la respuesta XML, que obtendremos de esta URL mediante el plugin:</p>
<blockquote><p>http://xoap.weather.com/weather/local/<span style="color:#ff0000;">[</span>LOCATION_ID<span style="color:#ff0000;">]</span>?cc=*&amp;dayf=<span style="color:#ff0000;">[</span>FORECAST_LENGTH<span style="color:#ff0000;">]</span>&amp;prod=xoap&amp;par=<span style="color:#ff0000;">[</span>PARTNER_ID<span style="color:#ff0000;">]</span>&amp;key=<span style="color:#ff0000;">[</span>LICENSE_KEY<span style="color:#ff0000;">]</span>&amp;link=xoap&amp;unit=<span style="color:#ff0000;">[</span>FORECAST_UNIT<span style="color:#ff0000;">]</span></p></blockquote>
<p>Para obtener el partner_id y la license_key debemos estar suscritos a weather.com, podemos bajar el SDK <a href="http://download.weather.com/web/xml/sdk.zip">[Download]</a>, para entender mejor los parámetros.</p>
<p>Ok, ahora veamos el output XML que obtenemos del X/SOAP, podemos acceder al XML directamente desde la petición X/SOAP, o accedemos al campo <code>xml_data</code> de la tabla llamada <code>wp_weatherxml</code> que es creada por el plugin, estaremos trabajando particularmente con los tags cc (current condition) y dayf (day forecast), aquí una porción de la estructura:</p>
<p><pre class="brush: xml; highlight: [2,6];">
&lt;cc&gt;
 &lt;lsup&gt;5/6/10 10:00 AM Local Time&lt;/lsup&gt;
 &lt;obst&gt;Asuncion, PARAGUAY&lt;/obst&gt;
 &lt;tmp&gt;25&lt;/tmp&gt;&lt;flik&gt;26&lt;/flik&gt;
 &lt;t&gt;Mostly Cloudy&lt;/t&gt;
 &lt;icon&gt;28&lt;/icon&gt;
 &lt;bar&gt;&lt;r&gt;1011.9&lt;/r&gt;&lt;d&gt;steady&lt;/d&gt;&lt;/bar&gt;
 &lt;wind&gt;&lt;s&gt;14&lt;/s&gt;&lt;gust&gt;N/A&lt;/gust&gt;&lt;d&gt;30&lt;/d&gt;&lt;t&gt;NNE&lt;/t&gt;&lt;/wind&gt;
 &lt;hmid&gt;69&lt;/hmid&gt;&lt;vis&gt;10.0&lt;/vis&gt;&lt;uv&gt;&lt;i&gt;3&lt;/i&gt;&lt;t&gt;Moderate&lt;/t&gt;&lt;/uv&gt;&lt;dewp&gt;19&lt;/dewp&gt;
 &lt;moon&gt;&lt;icon&gt;22&lt;/icon&gt;&lt;t&gt;Last Quarter&lt;/t&gt;&lt;/moon&gt;
 &lt;/cc&gt;
</pre></p>
<p>Fijémonos en la linea 6, el código del tag &#8220;icono&#8221; coincide con el código que vimos en la <a href="http://developer.yahoo.com/weather/#codes">lista</a>, en esta oportunidad dice &#8220;Mostly Cloudy&#8221;, es el código del estado del clima que lo cambiaremos a &#8220;Muy Nublado&#8221;, por ende el tag  lo utilizaremos como artificio lógico para representar los estados del clima en español, y en la linea 2, más adelante convertiremos la fecha a un formato localizado.</p>
<p>En el archivo <code>plugins/wp-weather/wp-weather.php</code> después de la función <span style="color:#800000;">parseSimpleXml</span>(<span style="color:#008080;">$xml</span>, <span style="color:#008080;">$location_id</span>) copiaremos el siguiente código que lo obtuve de <a href="http://vida.danguer.com/2008/09/27/ejemplo-de-api-de-yahoo-weather/">aquí</a>:</p>
<p><pre class="brush: php;">
	$mensajes = array(
		0 =&gt; 'Tornado',
		1 =&gt; 'Tormenta Tropical',
		2 =&gt; 'Huracán',
		3 =&gt; 'Tormentas El&amp;eacute;ctricas Severas',
		4 =&gt; 'Tormentas El&amp;eacute;ctricas',
		5 =&gt; 'Lluvia y Nieve',
		6 =&gt; 'Lluvia y Aguanieve',
		7 =&gt; 'Nieve y Aguanieve',
		8 =&gt; 'Llovizna congelada',
		9 =&gt; 'Llovizna',
		10 =&gt; 'Lluvia congelada',
		11 =&gt; 'Lluvia',
		12 =&gt; 'Lluvia',
		13 =&gt; 'R&amp;aacute;fagas de Nieve',
		14 =&gt; 'Nevada ligera',
		15 =&gt; 'Nieve con viento',
		16 =&gt; 'Nieve',
		17 =&gt; 'Granizo',
		18 =&gt; 'Aguanieve',
		19 =&gt; 'Polvo',
		20 =&gt; 'Neblina',
		21 =&gt; 'Niebla ligera',
		22 =&gt; 'Humoso', //Mi traducción sugerida
		23 =&gt; 'Vendaval',
		24 =&gt; 'Con viento',
		25 =&gt; 'Helado',
		26 =&gt; 'Nublado',
		27 =&gt; 'Muy nublado (noche)',
		28 =&gt; 'Muy nublado (dia)',
		29 =&gt; 'Parcialmente nublado (noche)',
		30 =&gt; 'Parcialmente nublado (dia)',
		31 =&gt; 'Despejado (noche)',
		32 =&gt; 'Soleado',
		33 =&gt; 'Despejado (noche)',
		34 =&gt; 'Despejado (dia)',
		35 =&gt; 'Lluvia y Granizo',
		36 =&gt; 'Caluroso',
		37 =&gt; 'Tormentas el&amp;eacute;ctricas aisladas',
		38 =&gt; 'Tormentas el&amp;eacute;ctricas dispersas',
		39 =&gt; 'Tormentas el&amp;eacute;ctricas dispersas',
		40 =&gt; 'Lluvia dispersa',
		41 =&gt; 'Nieve densa',
		42 =&gt; 'Nieve y lluvia dispersas',
		43 =&gt; 'Nieve densa',
		44 =&gt; 'Parcialmente nublado',
		45 =&gt; 'Tormentas el&amp;eacute;ctricas',
		46 =&gt; 'Nieve',
		47 =&gt; 'Tormentas el&amp;eacute;ctricas aisladas',
		3200 =&gt; 'No disponible',
	);
</pre></p>
<p>Aquí se encuentra una porción del código fuente original (v0.3.8) que sufrirá modificaciones:</p>
<p><pre class="brush: php; collapse: true; light: false; toolbar: true; wrap-lines: false;">
		$day_forecast = $xml-&gt;dayf;

		$htmlstring = '';
		$htmlstring .= '&lt;div class=&quot;weather_info&quot;&gt;';
		$htmlstring .= '&lt;p&gt;&lt;a href=&quot;http://www.weather.com/weather/local/' . $xml-&gt;loc[id] .'&quot; title=&quot;';
		$htmlstring .= __('Forecast for ', 'wp-weather').$day_forecast-&gt;day[t] . ', ' . $day_forecast-&gt;day[dt].'&quot;&gt;';
		$htmlstring .= $day_forecast-&gt;day[t] . &quot;, &quot; . $day_forecast-&gt;day[dt];
		$htmlstring .= '&lt;/a&gt;';
		$htmlstring .= '&lt;br /&gt;'.$xml-&gt;cc-&gt;t.'&lt;br/&gt;';
		$htmlstring .= __('Currently: ', 'wp-weather').'&lt;strong&gt;';
		$htmlstring .= $xml-&gt;cc-&gt;tmp.'˚'.$xml-&gt;head-&gt;ut.'&lt;/strong&gt;&lt;br/&gt;';
		$htmlstring .= __('Feels Like: ', 'wp-weather').$xml-&gt;cc-&gt;flik.'˚ '.$xml-&gt;head-&gt;ut.'&lt;br/&gt;';
		$htmlstring .= '&lt;strong&gt;'.__('Hi: ', 'wp-weather') . $day_forecast-&gt;day[0]-&gt;hi . '˚, ';
		$htmlstring .= __('Lo: ', 'wp-weather') . $day_forecast-&gt;day[0]-&gt;low . '˚&lt;/strong&gt;&lt;br/&gt;';

		if ( (bool) $this-&gt;settings['show_wind']) {
			$htmlstring .= __('Wind: ', 'wp-weather'). $xml-&gt;cc-&gt;wind-&gt;s.', '.__('Gust: ', 'wp-weather');
			$htmlstring .= $xml-&gt;cc-&gt;wind-&gt;gust.' MPH &lt;br/&gt;';
			$htmlstring .= __('Wind Direction: ', 'wp-weather').$xml-&gt;cc-&gt;wind-&gt;t;
			$htmlstring .= ' ('.$xml-&gt;cc-&gt;wind-&gt;d.') &lt;br/&gt;';
		}

		$htmlstring .= '&lt;img border=&quot;0&quot; src=&quot;'. get_bloginfo(wpurl).'/wp-content/plugins/wp-weather/images/'.$image_dimensions.'/'.$xml-&gt;cc-&gt;icon.'.png&quot; alt=&quot;'.$xml-&gt;cc-&gt;t.'&quot; /&gt;&lt;/p&gt;';

		if ((bool)$this-&gt;settings['show_tonight']) {
			$htmlstring .= '&lt;p&gt;'.__('Tonight: ', 'wp-weather').$day_forecast-&gt;day[0]-&gt;low.'˚&lt;br/&gt;';
			$htmlstring .= __('Sunset: ', 'wp-weather'). $day_forecast-&gt;day[0]-&gt;suns.'&lt;br/&gt;';
			$htmlstring .= __('Moon Phase: ', 'wp-weather'). $xml-&gt;cc-&gt;moon-&gt;t.'&lt;br/&gt;';
			$htmlstring .= '&lt;img border=&quot;0&quot; src=&quot;'. get_bloginfo(wpurl).'/wp-content/plugins/wp-weather/images/'.$image_dimensions.'/'.$day_forecast-&gt;day[0]-&gt;part[1]-&gt;icon.'.png&quot; alt=&quot;'.$day_forecast-&gt;day[0]-&gt;part[1]-&gt;t.'&quot; /&gt;&lt;br/&gt;';
			$htmlstring .= '&lt;/p&gt;';
		}

		if (sizeof($day_forecast-&gt;day) &gt; 1) {
			foreach($day_forecast-&gt;day as $day)	{
				if ($day[d] == &quot;0&quot;)
					continue;
				$htmlstring .= '&lt;p&gt;';
				$htmlstring .= '&lt;i&gt;'.$day[t] . ', ' . $day[dt].'&lt;/i&gt;&lt;br/&gt;';
				$htmlstring .= '&lt;strong&gt;'.__('Hi: ', 'wp-weather') . $day-&gt;hi . '˚, ';
				$htmlstring .= __('Lo: ', 'wp-weather') . $day-&gt;low . '˚&lt;/strong&gt;&lt;br/&gt;';
				if ( (bool) $this-&gt;settings['show_wind']) {
					$htmlstring .= __('Wind: ', 'wp-weather'). $day-&gt;part[0]-&gt;wind-&gt;s.', '.__('Gust: ', 'wp-weather');
					$htmlstring .= $day-&gt;part[0]-&gt;wind-&gt;gust.' MPH &lt;br/&gt;';
					$htmlstring .= __('Wind Direction: ', 'wp-weather').$day-&gt;part[0]-&gt;wind-&gt;t;
					$htmlstring .= ' ('.$day-&gt;part[0]-&gt;wind-&gt;d.') &lt;br/&gt;';
				}
				$htmlstring .= '&lt;img border=&quot;0&quot; src=&quot;'. get_bloginfo(wpurl).'/wp-content/plugins/wp-weather/images/'.$image_dimensions.'/'.$day-&gt;part[0]-&gt;icon.'.png&quot; alt=&quot;'.$day-&gt;part[0]-&gt;t.'&quot; /&gt;';
				$htmlstring .= '&lt;/p&gt;';
			}
		}

		$htmlstring .= '&lt;p class=&quot;weather_info&quot;&gt;'.__('weather feed courtesy of ', 'wp-weather').'&lt;a href=&quot;http://www.weather.com/?prod=xoap&amp;amp;par=' . $this-&gt;settings['partner_id'] . '&quot; title=&quot;weather.com&quot;&gt;weather.com&lt;/a&gt; - '.__('thanks', 'wp-weather').'!&lt;/p&gt;';
		$htmlstring .= '&lt;/div&gt;';
		return $htmlstring;
</pre></p>
<p>El cambio consiste específicamente en sustituir las lineas de código con acceso directo de la estructura XML:</p>
<p><pre class="brush: php; light: true;">$htmlstring .= __('Forecast for ', 'wp-weather').$day_forecast-&gt;day[t] . ', ' . $day_forecast-&gt;day[dt].'&quot;&gt;';</pre></p>
<p>por la siguiente linea:</p>
<p><pre class="brush: php; light: true;">$htmlstring .= __('Forecast for ', 'wp-weather'). date_i18n('l, j F', strtotime($day_forecast-&gt;lsup)) .'&quot;&gt;';</pre></p>
<p>En donde la función <a href="http://codex.wordpress.org/Function_Reference/date_i18n">date_i18n</a>, desempeña su protagonismo recuperando la fecha en formato localizado, en base al TimeStamp, es decir, convierte &#8220;Thursday, May 6&#8243; a &#8220;Jueves, 6 Mayo&#8221;.</p>
<p>Y lo más importante el estado del clima:</p>
<p><pre class="brush: php; light: true;">$htmlstring .= '&lt;br /&gt;'.$xml-&gt;cc-&gt;t.'&lt;br/&gt;';</pre></p>
<p>Lo cambiamos por:</p>
<p><pre class="brush: php; light: true;">$htmlstring .= '&lt;br /&gt;'.$mensajes[(int)$xml-&gt;cc-&gt;icon].'&lt;br/&gt;';</pre></p>
<p>Se realiza un Cast al valor &#8220;icon&#8221;, para que se comporte como indice del vector <span style="color:#008080;">$mensajes</span>.</p>
<p>Código fuente final modificado:<br />
<pre class="brush: php; collapse: true; highlight: [7,8,10,38]; light: false; toolbar: true; wrap-lines: false;">
$day_forecast = $xml-&gt;dayf;

		$htmlstring = '';

		$htmlstring .= '&lt;div class=&quot;weather_info&quot;&gt;';
		$htmlstring .= '&lt;p&gt;&lt;a href=&quot;http://www.weather.com/weather/local/' . $xml-&gt;loc[id] .'&quot; title=&quot;';
		$htmlstring .= __('Forecast for ', 'wp-weather'). date_i18n('l, j F', strtotime($day_forecast-&gt;lsup)) .'&quot;&gt;';
		$htmlstring .= date_i18n('l, j F', strtotime($day_forecast-&gt;lsup));
		$htmlstring .= '&lt;/a&gt;';
		$htmlstring .= '&lt;br /&gt;'.$mensajes[(int)$xml-&gt;cc-&gt;icon].'&lt;br/&gt;';
		$htmlstring .= __('Currently: ', 'wp-weather').'&lt;strong&gt;';
		$htmlstring .= $xml-&gt;cc-&gt;tmp.'˚'.$xml-&gt;head-&gt;ut.'&lt;/strong&gt;&lt;br/&gt;';
		$htmlstring .= __('Feels Like: ', 'wp-weather').$xml-&gt;cc-&gt;flik.'˚ '.$xml-&gt;head-&gt;ut.'&lt;br/&gt;';
		$htmlstring .= '&lt;strong&gt;'.__('Hi: ', 'wp-weather') . $day_forecast-&gt;day[0]-&gt;hi . '˚, ';
		$htmlstring .= __('Lo: ', 'wp-weather') . $day_forecast-&gt;day[0]-&gt;low . '˚&lt;/strong&gt;&lt;br/&gt;';
		if ( (bool) $this-&gt;settings['show_wind']) {
			$htmlstring .= __('Wind: ', 'wp-weather'). $xml-&gt;cc-&gt;wind-&gt;s.', '.__('Gust: ', 'wp-weather');
			$htmlstring .= $xml-&gt;cc-&gt;wind-&gt;gust.' MPH &lt;br/&gt;';
			$htmlstring .= __('Wind Direction: ', 'wp-weather').$xml-&gt;cc-&gt;wind-&gt;t;
			$htmlstring .= ' ('.$xml-&gt;cc-&gt;wind-&gt;d.') &lt;br/&gt;';
		}

		$htmlstring .= '&lt;img border=&quot;0&quot; src=&quot;'. get_bloginfo(wpurl).'/wp-content/plugins/wp-weather/images/'.$image_dimensions.'/'.$xml-&gt;cc-&gt;icon.'.png&quot; alt=&quot;'.$xml-&gt;cc-&gt;t.'&quot; /&gt;&lt;/p&gt;';

		if ((bool)$this-&gt;settings['show_tonight']) {
			$htmlstring .= '&lt;p&gt;'.__('Tonight: ', 'wp-weather').$day_forecast-&gt;day[0]-&gt;low.'˚&lt;br/&gt;';
			$htmlstring .= __('Sunset: ', 'wp-weather'). $day_forecast-&gt;day[0]-&gt;suns.'&lt;br/&gt;';
			$htmlstring .= __('Moon Phase: ', 'wp-weather'). $xml-&gt;cc-&gt;moon-&gt;t.'&lt;br/&gt;';
			$htmlstring .= '&lt;img border=&quot;0&quot; src=&quot;'. get_bloginfo(wpurl).'/wp-content/plugins/wp-weather/images/'.$image_dimensions.'/'.$day_forecast-&gt;day[0]-&gt;part[1]-&gt;icon.'.png&quot; alt=&quot;'.$day_forecast-&gt;day[0]-&gt;part[1]-&gt;t.'&quot; /&gt;&lt;br/&gt;';
			$htmlstring .= '&lt;/p&gt;';
		}

		if (sizeof($day_forecast-&gt;day) &gt; 1) {
			foreach($day_forecast-&gt;day as $day)	{
				if ($day[d] == &quot;0&quot;)
					continue;
				$htmlstring .= '&lt;p&gt;';
				$htmlstring .= '&lt;i&gt;'. date_i18n('l', strtotime($day[t])) . ', ' . date_i18n('j F', strtotime($day[dt])) . '&lt;/i&gt;&lt;br/&gt;';
				$htmlstring .= '&lt;strong&gt;'.__('Hi: ', 'wp-weather') . $day-&gt;hi . '˚, ';
				$htmlstring .= __('Lo: ', 'wp-weather') . $day-&gt;low . '˚&lt;/strong&gt;&lt;br/&gt;';

				if ( (bool) $this-&gt;settings['show_wind']) {
					$htmlstring .= __('Wind: ', 'wp-weather'). $day-&gt;part[0]-&gt;wind-&gt;s.', '.__('Gust: ', 'wp-weather');
					$htmlstring .= $day-&gt;part[0]-&gt;wind-&gt;gust.' MPH &lt;br/&gt;';
					$htmlstring .= __('Wind Direction: ', 'wp-weather').$day-&gt;part[0]-&gt;wind-&gt;t;
					$htmlstring .= ' ('.$day-&gt;part[0]-&gt;wind-&gt;d.') &lt;br/&gt;';
				}
				$htmlstring .= '&lt;img border=&quot;0&quot; src=&quot;'. get_bloginfo(wpurl).'/wp-content/plugins/wp-weather/images/'.$image_dimensions.'/'.$day-&gt;part[0]-&gt;icon.'.png&quot; alt=&quot;'.$day-&gt;part[0]-&gt;t.'&quot; /&gt;';
				$htmlstring .= '&lt;/p&gt;';
			}
		}

		$htmlstring .= '&lt;p class=&quot;weather_info&quot;&gt;'.__('weather feed courtesy of ', 'wp-weather').'&lt;a href=&quot;http://www.weather.com/?prod=xoap&amp;amp;par=' . $this-&gt;settings['partner_id'] . '&quot; title=&quot;weather.com&quot;&gt;weather.com&lt;/a&gt; - '.__('thanks', 'wp-weather').'!&lt;/p&gt;';
		$htmlstring .= '&lt;/div&gt;';
		return $htmlstring;
</pre></p>
<p>Screenshot:</p>
<p><a href="http://crystalblood.files.wordpress.com/2010/05/wp-weather-hack.jpg"><img src="http://crystalblood.files.wordpress.com/2010/05/wp-weather-hack.jpg?w=88&#038;h=150" alt="" title="wp-weather-hack" width="88" height="150" class="alignnone size-thumbnail wp-image-125" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/crystalblood.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/crystalblood.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/crystalblood.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/crystalblood.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/crystalblood.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/crystalblood.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/crystalblood.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/crystalblood.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/crystalblood.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/crystalblood.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/crystalblood.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/crystalblood.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/crystalblood.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/crystalblood.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=67&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://crystalblood.wordpress.com/2010/05/07/plugin-wp-weather-en-espanol-para-el-wordpress-mediante-algunos-tweakshacks-weather-com/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23699d2d4abf590d1c6b951dca77c72c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">CrystalBlood</media:title>
		</media:content>

		<media:content url="http://crystalblood.files.wordpress.com/2010/05/wp-weather-hack.jpg?w=88" medium="image">
			<media:title type="html">wp-weather-hack</media:title>
		</media:content>
	</item>
		<item>
		<title>Notificar el cambio de IP público dinámico (Copaco) a un E-Mail</title>
		<link>http://crystalblood.wordpress.com/2010/04/27/notificar-el-cambio-de-ip-publico-dinamico-copaco-a-un-e-mail/</link>
		<comments>http://crystalblood.wordpress.com/2010/04/27/notificar-el-cambio-de-ip-publico-dinamico-copaco-a-un-e-mail/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 21:14:01 +0000</pubDate>
		<dc:creator>CrystalBlood</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[como]]></category>
		<category><![CDATA[copaco]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[notificar]]></category>
		<category><![CDATA[pública]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5-cli]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://crystalblood.wordpress.com/?p=34</guid>
		<description><![CDATA[De forma predeterminada Copaco brinda una IP pública dinámica a sus clientes, siempre que sepamos cual es la IP, podremos acceder a distintos servicios que estén disponibles en la PC, pero si casualmente te encontrás en un lugar remoto, y el IP ya no es el mismo (principalmente cuando se reinicia el modem, o se corta la energía eléctrica), no hay mucho que hacer, aquí veremos una forma de notificar el cambio de IP, mediante un E-Mail.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=34&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>De forma predeterminada Copaco brinda una IP pública dinámica a sus clientes, siempre que sepamos cual es la IP, podremos acceder a distintos servicios que estén disponibles en la PC, pero si casualmente te encontrás en un lugar remoto, y el IP ya no es el mismo (principalmente cuando se reinicia el modem, o se corta la energía eléctrica), no hay mucho que hacer, aquí veremos una forma de notificar el cambio de IP, mediante un E-Mail.</p>
<p>Hay <span style="text-decoration:underline;">varias formas</span> de realizar este objetivo, aquí presento una alternativa, una manera más sencilla aun es hacerlo en Ruby con la Gema Pony.</p>
<p><strong>Necesitamos:</strong></p>
<ol>
<li><strong><span style="color:#800000;">curl</span></strong> (Obtiene un archivo usando HTTP, instalar con cualquier paquete)</li>
<li><strong><span style="color:#800000;">php5-cli</span></strong> (Interprete de lineas de comando, instalar con cualquier paquete)</li>
<li>Los archivos <span style="color:#800000;"><strong>class.phpmailer.php</strong></span> y <span style="color:#800000;"><strong>class.smtp.php</strong></span> (Generalmente se encuentra en<strong> /usr/share/php/libphp-phpmailer</strong>)</li>
</ol>
<p>Tenemos dos opciones para averiguar nuestra IP:</p>
<ul>
<li>http://checkip.dyndns.org/</li>
<li>http://whatismyip.org/</li>
</ul>
<p>Estas URL&#8217;s nos devuelven la IP de la PC en donde estamos.</p>
<p><strong>Funcionalidad:</strong></p>
<p>En resumen, ejecutamos un script PHP en el Cron cada media hora, si el IP es distinto al último IP revisado, quiere decir que es un IP nuevo, lo almacena en un archivo <strong>ip_DB</strong>, y lo envía por mail a las personas correspondientes, si el IP no es nuevo, termina el programa, de esta manera estaremos seguros de contar con la dirección IP actual en nuestro buzón de correo.</p>
<p><pre class="brush: php;">
&lt;?php
require('/home/fulanito/cronjobs/ipmailer/class.phpmailer.php');
require('/home/fulanito/cronjobs/ipmailer/class.smtp.php');

$db_ip = &quot;/home/fulanito/cronjobs/ipmailer/ip_DB&quot;;
$ip_nuevo = shell_exec(&quot;curl -s 208.78.70.70|sed -e 's/.*Dirección IP Actual: //' -e 's/&lt;.*$//'&quot;); //http://checkip.dyndns.org/
$ip_viejo = shell_exec(&quot;tail -n 1 $db_ip&quot;);

  if ($ip_nuevo == $ip_viejo){
    exit();
  }
  else { //Son diferentes, almacena el IP nuevo
    $fp = fopen($db_ip, 'a');
    fwrite($fp,$ip_nuevo);
    fclose($fp);
  }

$mail = new PHPMailer(); //Sin el parametro TRUE
$mail-&gt;IsSMTP(); //Diciendole a la Clase que usaremos SMTP

try {
  $mail-&gt;SMTPAuth   = true; //Habilitamos la autenticación SMTP
  $mail-&gt;Host       = &quot;smtp.copaco.com.py&quot;; //Fijamos el servidor SMTP
  $mail-&gt;Port       = 25; //Fijamos el puerto SMTP
  $mail-&gt;Username   = &quot;fulanito@click.com.py&quot;; //El nombre de la cuenta SMTP
  $mail-&gt;Password   = &quot;xxxxx&quot;; //La contraseña SMTP
  $mail-&gt;AddReplyTo('fulanito@click.com.py', 'Fulano');

  //Aquí van las cuentas que deseo notificar con el IP nuevo
  $mail-&gt;AddAddress('usuario@dominio.com', 'Usuario');
  $mail-&gt;AddAddress('otrousuario@otrodominio.com', 'Otro Usuario');

  $mail-&gt;SetFrom('fulanito@click.com.py', 'Fulano');
  $mail-&gt;AddReplyTo('fulanito@click.com.py', 'Fulano');
  $mail-&gt;Subject = 'IP de la PC';
  $mail-&gt;AltBody = ''; //Opcional - MsgHTML creará un texto de alternativa si no puede enviar como HTML

  //Aquí se podría enviar en formato de html, pero simplemente enviamos el IP nuevo en texto plano.
  //  $mail-&gt;MsgHTML(file_get_contents('contents.html'));
  $mail-&gt;MsgHTML($ip_nuevo);
  $mail-&gt;Send();
  echo &quot;Mensaje enviado OK\n&quot;; //Sin notificación
} catch (phpmailerException $e) {
  echo $e-&gt;errorMessage(); //Error del PHPMailer
} catch (Exception $e) {
  echo $e-&gt;getMessage(); //Error de cualquier otra cosa
}
?&gt;
</pre></p>
<p>Como podemos ver, son 3 archivos que están en el mismo directorio, el archivo ip_DB que se comporta como una mini base de datos, el archivo en cuestión que codificamos (lo llamaremos: mailer.php), y las dos Clases que están en php.</p>
<p>Ahora veremos para ponerlo en el Cron, escribimos en la consola, como root o como otro usuario:</p>
<p><pre class="brush: plain; light: true;">
crontab -e
</pre></p>
<p>Quedaría algo así:</p>
<p><pre class="brush: plain; light: true;">
# m h  dom mon dow   command
*/30 * * * * /usr/bin/php5 /home/fulanito/cronjobs/ipmailer/mailer.php
</pre></p>
<p>Si no funciona, depuramos el cron mediante el siguiente código:</p>
<p><pre class="brush: plain; light: true;">
# m h  dom mon dow   command
*/30 * * * * /usr/bin/php5 /home/fulanito/cronjobs/ipmailer/mailer.php &gt; /home/fulanito/cronjobs/ipmailer/errores.log
</pre></p>
<p>De esta manera arrojará los errores al archivo <strong>errores.log</strong></p>
<p>Saludos!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/crystalblood.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/crystalblood.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/crystalblood.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/crystalblood.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/crystalblood.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/crystalblood.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/crystalblood.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/crystalblood.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/crystalblood.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/crystalblood.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/crystalblood.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/crystalblood.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/crystalblood.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/crystalblood.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=34&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://crystalblood.wordpress.com/2010/04/27/notificar-el-cambio-de-ip-publico-dinamico-copaco-a-un-e-mail/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23699d2d4abf590d1c6b951dca77c72c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">CrystalBlood</media:title>
		</media:content>
	</item>
		<item>
		<title>Como abrir una URL desde un archivo php</title>
		<link>http://crystalblood.wordpress.com/2010/04/26/como-abrir-una-url-desde-un-archivo-php/</link>
		<comments>http://crystalblood.wordpress.com/2010/04/26/como-abrir-una-url-desde-un-archivo-php/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 21:18:21 +0000</pubDate>
		<dc:creator>CrystalBlood</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[como]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[redireccionar]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://crystalblood.wordpress.com/?p=38</guid>
		<description><![CDATA[El problema consistía en cambiar las URL's de una página toda desarrollada en flash, en donde sus enlaces apuntan a archivos php, como no puedo cambiar el archivo flash, tuve que hacer un pequeño artificio, copié el siguiente código al principio del archivo php que era llamado desde el archivo flash<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=38&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>El problema consistía en cambiar las URL&#8217;s de una página toda desarrollada en flash, en donde sus enlaces apuntan a archivos php, como no puedo cambiar el archivo flash, tuve que hacer un pequeño artificio, copié el siguiente código al principio del archivo php que era llamado desde el archivo flash:</p>
<p><pre class="brush: php; light: true;">
header(&quot;Location: laotrapagina.php&quot;);
exit();
</pre></p>
<p>De esta manera se redirecciona a cualquier otra parte, en donde <strong>laotrapagina.php</strong> puede sustituirse por cualquier URL, no necesarimente deben ser archivos locales; al final el código exit() para que no ejecute las sentencias siguientes.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/crystalblood.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/crystalblood.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/crystalblood.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/crystalblood.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/crystalblood.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/crystalblood.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/crystalblood.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/crystalblood.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/crystalblood.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/crystalblood.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/crystalblood.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/crystalblood.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/crystalblood.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/crystalblood.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=38&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://crystalblood.wordpress.com/2010/04/26/como-abrir-una-url-desde-un-archivo-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23699d2d4abf590d1c6b951dca77c72c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">CrystalBlood</media:title>
		</media:content>
	</item>
		<item>
		<title>Recursos del segundo día del Taller!</title>
		<link>http://crystalblood.wordpress.com/2008/09/25/recursos-del-segundo-dia-del-taller/</link>
		<comments>http://crystalblood.wordpress.com/2008/09/25/recursos-del-segundo-dia-del-taller/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 18:32:42 +0000</pubDate>
		<dc:creator>CrystalBlood</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[asuncion]]></category>
		<category><![CDATA[bruno duarte]]></category>
		<category><![CDATA[charla]]></category>
		<category><![CDATA[conferencia]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[emilio blanco]]></category>
		<category><![CDATA[etyc]]></category>
		<category><![CDATA[facultad politecnica]]></category>
		<category><![CDATA[fpuna]]></category>
		<category><![CDATA[paraguay]]></category>
		<category><![CDATA[primer dia]]></category>
		<category><![CDATA[programacion web]]></category>
		<category><![CDATA[ror]]></category>
		<category><![CDATA[san lorenzo]]></category>
		<category><![CDATA[taller]]></category>
		<category><![CDATA[universidad nacional]]></category>
		<category><![CDATA[universidad nacional de asuncion]]></category>

		<guid isPermaLink="false">http://crystalblood.wordpress.com/?p=31</guid>
		<description><![CDATA[En el segundo día estuvimos viendo&#8230; La estructura del Framework. En que consiste el &#8220;Agile Software Development&#8221; (Manifiesto ágil). El concepto MVC (Modelo Vista Controlador). Las Convenciones. Los &#8220;Generators&#8221;. Que es un Rake?. Las Gemas (Gems). Un pequeño proyecto. Les dejo la diapositiva utilizada! Links: Diapositiva :: Taller de Ruby On Rails Martes 23 de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=31&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En el segundo día estuvimos viendo&#8230;</p>
<ul>
<li><strong>La estructura del Framework.</strong></li>
<li><strong>En que consiste el &#8220;Agile Software Development&#8221; (Manifiesto ágil).</strong></li>
<li><strong>El concepto MVC (Modelo Vista Controlador).</strong></li>
<li><strong>Las Convenciones.</strong></li>
<li><strong>Los &#8220;Generators&#8221;.</strong></li>
<li><strong>Que es un Rake?.</strong></li>
<li><strong>Las Gemas (Gems).<br />
</strong></li>
<li><strong>Un pequeño proyecto.</strong></li>
</ul>
<p>Les dejo la diapositiva utilizada!</p>
<p>Links:</p>
<ul>
<li><a href="http://filego.net/DOVTEFH2XPUE/Taller_de_Ruby_on_Rails_ETyC_Martes_23_Septiembre_2008.ppt.html" target="_blank">Diapositiva :: Taller de Ruby On Rails Martes 23 de Septiembre 2008</a></li>
<li><a href="http://rapidshare.com/files/148354294/Taller_de_Ruby_on_Rails_ETyC_Martes_23_Septiembre_2008.ppt.html" target="_blank">Diapositiva :: Taller de Ruby On Rails Martes 23 de Septiembre 2008</a></li>
<li><a href="http://files3.com/a37" target="_blank">Diapositiva :: Taller de Ruby On Rails Martes 23 de Septiembre 2008</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/crystalblood.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/crystalblood.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/crystalblood.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/crystalblood.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/crystalblood.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/crystalblood.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/crystalblood.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/crystalblood.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/crystalblood.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/crystalblood.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/crystalblood.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/crystalblood.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/crystalblood.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/crystalblood.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=31&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://crystalblood.wordpress.com/2008/09/25/recursos-del-segundo-dia-del-taller/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23699d2d4abf590d1c6b951dca77c72c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">CrystalBlood</media:title>
		</media:content>
	</item>
		<item>
		<title>Recursos del primer día del Taller!</title>
		<link>http://crystalblood.wordpress.com/2008/09/23/recursos-del-primer-dia-del-taller/</link>
		<comments>http://crystalblood.wordpress.com/2008/09/23/recursos-del-primer-dia-del-taller/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 05:13:54 +0000</pubDate>
		<dc:creator>CrystalBlood</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[asuncion]]></category>
		<category><![CDATA[bruno duarte]]></category>
		<category><![CDATA[charla]]></category>
		<category><![CDATA[conferencia]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[emilio blanco]]></category>
		<category><![CDATA[etyc]]></category>
		<category><![CDATA[facultad politecnica]]></category>
		<category><![CDATA[fpuna]]></category>
		<category><![CDATA[paraguay]]></category>
		<category><![CDATA[primer dia]]></category>
		<category><![CDATA[programacion web]]></category>
		<category><![CDATA[ror]]></category>
		<category><![CDATA[san lorenzo]]></category>
		<category><![CDATA[taller]]></category>
		<category><![CDATA[universidad nacional]]></category>
		<category><![CDATA[universidad nacional de asuncion]]></category>

		<guid isPermaLink="false">http://crystalblood.wordpress.com/?p=21</guid>
		<description><![CDATA[Para sorpresa de muchos, estuvieron nada más y nada menos que 40 personas inscriptas en un solo día!!! Gracias a todos por participar y hacer de la jornada autentica con sus preguntas! Aquí les dejo la diapositiva que utilizamos el primer día! Links: Diapositiva :: Taller de Ruby On Rails Lunes 22 Septiembre 2008 Diapositiva [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=21&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Para sorpresa de muchos, estuvieron nada más y nada menos que 40 personas inscriptas en un solo día!!!</p>
<p>Gracias a todos por participar y hacer de la jornada autentica con sus preguntas!</p>
<p>Aquí les dejo la diapositiva que utilizamos el primer día!</p>
<p>Links:</p>
<ul>
<li> <a href="http://filego.net/3Y8M3T8I4V89/Taller_de_Ruby_on_Rails_ETyC_22septiembre2008.ppt.html" target="_blank">Diapositiva :: Taller de Ruby On Rails Lunes 22 Septiembre 2008</a></li>
<li><a href="http://rapidshare.com/files/147611367/Taller_de_Ruby_on_Rails_ETyC_22septiembre2008.ppt.html" target="_blank">Diapositiva :: Taller de Ruby On Rails Lunes 22 Septiembre 2008</a></li>
<li><a href="http://files3.com/a36" target="_blank">Diapositiva :: Taller de Ruby On Rails Lunes 22 Septiembre 2008</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/crystalblood.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/crystalblood.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/crystalblood.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/crystalblood.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/crystalblood.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/crystalblood.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/crystalblood.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/crystalblood.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/crystalblood.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/crystalblood.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/crystalblood.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/crystalblood.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/crystalblood.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/crystalblood.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=21&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://crystalblood.wordpress.com/2008/09/23/recursos-del-primer-dia-del-taller/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23699d2d4abf590d1c6b951dca77c72c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">CrystalBlood</media:title>
		</media:content>
	</item>
		<item>
		<title>Taller de Ruby On Rails :: ETyC 2008 :: FP-UNA</title>
		<link>http://crystalblood.wordpress.com/2008/09/22/taller-de-ruby-on-rails-etyc-2008-fp-una/</link>
		<comments>http://crystalblood.wordpress.com/2008/09/22/taller-de-ruby-on-rails-etyc-2008-fp-una/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 04:30:18 +0000</pubDate>
		<dc:creator>CrystalBlood</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[asuncion]]></category>
		<category><![CDATA[bruno duarte]]></category>
		<category><![CDATA[charla]]></category>
		<category><![CDATA[conferencia]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[emilio blanco]]></category>
		<category><![CDATA[etyc]]></category>
		<category><![CDATA[facultad politecnica]]></category>
		<category><![CDATA[fpuna]]></category>
		<category><![CDATA[paraguay]]></category>
		<category><![CDATA[programacion web]]></category>
		<category><![CDATA[ror]]></category>
		<category><![CDATA[san lorenzo]]></category>
		<category><![CDATA[taller]]></category>
		<category><![CDATA[universidad nacional]]></category>
		<category><![CDATA[universidad nacional de asuncion]]></category>

		<guid isPermaLink="false">http://crystalblood.wordpress.com/?p=8</guid>
		<description><![CDATA[Se realizará un Taller de Ruby On Rails Gratuito en la ETyC (http://www.pol.una.py/etyc) que consiste en la Exposicion Tecnológica y Científica (22 al 26 de septiembre) que se realiza anualmente en la Facultad Politécnica. Ruby on Rails, también conocido como RoR o Rails es un framework de aplicaciones web de código abierto escrito en el [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=8&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Se realizará un Taller de Ruby On Rails Gratuito en la ETyC (<a href="http://www.pol.una.py/etyc" target="_blank">http://www.pol.una.py/etyc</a>) que consiste en la Exposicion Tecnológica y Científica (22 al 26 de septiembre) que se realiza anualmente en la Facultad Politécnica.</p>
<blockquote><p><span style="color:#333399;"><em>Ruby on Rails, también conocido como RoR o Rails es un framework de aplicaciones web de código abierto escrito en el lenguaje de programación Ruby, siguiendo el paradigma de la arquitectura Modelo Vista Controlador (MVC). Trata de combinar la simplicidad con la posibilidad de desarrollar aplicaciones del mundo real escribiendo menos código que con otros frameworks y con un mínimo de configuración. El lenguaje de programación Ruby permite la metaprogramación, de la cual Rails hace uso, lo que resulta en una sintaxis que muchos de sus usuarios encuentran muy legible.</em></span><br />
<span style="color:#ff0000;"><span style="color:#800000;">URL:</span><strong> </strong></span><a title="http://es.wikipedia.org/wiki/Ruby_on_rails" href="http://es.wikipedia.org/wiki/Ruby_on_rails" target="_blank">http://es.wikipedia.org/wiki/Ruby_on_rails</a></p></blockquote>
<p>El Taller de Ruby On Rails será desde este lunes 22 al jueves 25 de septiembre desde las 19:00hs hasta las 20:00hs. en el Stand de Programación, aula B58 segundo piso.</p>
<p><span style="color:#ff0000;">Los interesados por favor enviar un E-Mail a <a href="mailto:dotech@dotech.com.py" target="_blank">dotech@dotech.com.py</a> a modo de inscripción, se expedirán certificados de asistencia.</span></p>
<p>Los Disertantes serán:</p>
<div style="margin-left:40px;">
<ul>
<li><strong>Bruno Duarte &#8211; Programador<br />
</strong></li>
<li><strong>Emilio Blanco &#8211; Gerente General de DoTech Software [<a href="http://www.dotech.com.py/" target="_blank">www.dotech.com.py</a>]</strong></li>
</ul>
</div>
<p>Un vistazo de lo que se estará tratando este lunes arrancando con el lenguaje de programación Ruby:</p>
<ul>
<li><strong>Clases y Objetos</strong>
<ul>
<li>Variables: locales, instancia, globales, self.</li>
<li>Visibilidad  de metodos: Private, Public, Protected.</li>
<li>Constructores</li>
<li>Como  instanciar.</li>
<li>Metodos</li>
<li>Como pasar parametros</li>
<li>Como devolver datos</li>
</ul>
</li>
<li><strong>Tipos  de  Datos</strong>
<ul>
<li>Integers</li>
<li>Strings</li>
<li>Simbols</li>
<li>Constantes</li>
<li>Array&#8217;s</li>
<li>Hash&#8217;s</li>
</ul>
</li>
<li><strong>Condiciones  y Flujo de Programa</strong>
<ul>
<li>Condiciones if, case, unless</li>
<li>Ciclos: for, each,  while</li>
<li>Bloques de Codigo</li>
<li>Operaciones</li>
<li>Concatenaciones</li>
<li>Aritmetica</li>
</ul>
</li>
</ul>
<p>Te esperamos!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/crystalblood.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/crystalblood.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/crystalblood.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/crystalblood.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/crystalblood.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/crystalblood.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/crystalblood.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/crystalblood.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/crystalblood.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/crystalblood.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/crystalblood.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/crystalblood.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/crystalblood.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/crystalblood.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=8&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://crystalblood.wordpress.com/2008/09/22/taller-de-ruby-on-rails-etyc-2008-fp-una/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23699d2d4abf590d1c6b951dca77c72c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">CrystalBlood</media:title>
		</media:content>
	</item>
		<item>
		<title>Instalar Ruby on Rails desde cero en Windows</title>
		<link>http://crystalblood.wordpress.com/2008/06/12/instalar-ruby-on-rails-desde-cero-en-windows/</link>
		<comments>http://crystalblood.wordpress.com/2008/06/12/instalar-ruby-on-rails-desde-cero-en-windows/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 18:55:01 +0000</pubDate>
		<dc:creator>CrystalBlood</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Install]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://crystalblood.wordpress.com/?p=4</guid>
		<description><![CDATA[Es recomendable instalarlo en un sistema operativo basado en Unix para el desarrollo, pero también podemos hacerlo en Windows! aparte se necesita un servidor Web y una base de datos pero hablaremos de esto luego. Existe una solución llamada &#8220;Instant Rails&#8221; que contiene el Ruby, Rails, Apache y el MySQL todo pre-configurado, solo tenemos que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=4&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Es recomendable instalarlo en un sistema operativo basado en Unix para el desarrollo, pero también podemos hacerlo en Windows! aparte se necesita un servidor Web y una base de datos pero hablaremos de esto luego.</p>
<p>Existe una solución llamada &#8220;<strong>Instant Rails</strong>&#8221; que contiene el Ruby, Rails, Apache y el MySQL todo pre-configurado, solo tenemos que decirle un directorio y correrlo, así de fácil.</p>
<p>Para más información pueden ver en:</p>
<p><a title="http://instantrails.rubyforge.org/wiki/wiki.pl?Instant_Rails" href="http://instantrails.rubyforge.org/wiki/wiki.pl?Instant_Rails" target="_blank">http://instantrails.rubyforge.org/wiki/wiki.pl?Instant_Rails</a></p>
<p>Esa es una manera pero en esta oportunidad no estaremos adentrándonos en esa forma, lo instalaremos de forma manual.</p>
<p>Vamos a la página: <a title="http://rubyforge.org/projects/rubyinstaller/" href="http://rubyforge.org/projects/rubyinstaller/" target="_blank">http://rubyforge.org/projects/rubyinstaller/</a></p>
<p>En donde podremos bajar el &#8220;<em>One-Click Installer &#8211; Windows</em>&#8221; actualmente la versión 1.8.6-26 hasta la fecha, que nos instalará propiamente Ruby con una serie de librerías, herramientas y lo más interesante el &#8220;RubyGems&#8221; que es un Standard para publicar y administrar librerías de terceros, se comporta de manera similar al gestor de paquetes en Linux (repositorios).</p>
<p>Terminada la instalación abrimos la línea de comandos del Windows y escribimos:</p>
<blockquote>
<pre>gem update --system</pre>
</blockquote>
<p>Esto actualizará nuestro RubyGems a la última versión, actualmente 1.1.1</p>
<p>Una vez instalado el Ruby y con ayuda del RubyGems, podemos proceder a instalar el Framework Rails que se trata de una &#8220;gema&#8221;, nuevamente en la línea de comandos escribimos:</p>
<blockquote>
<pre>gem install rails</pre>
</blockquote>
<p>Esta línea instalará la última versión del Rails, actualmente la 2.1 lanzada el 31 de mayo, con sus dependencias.</p>
<p>y después? nada.. ya está! así de fácil! ahora necesitamos un servidor Web y una base de datos T_T como sabrán, instalar el apache es complicado y se complica más si queremos relacionarle una base de datos como MySQL, para nuestra comodidad existe XAMMP.</p>
<p><a title="http://www.apachefriends.org/es/xampp.html" href="http://www.apachefriends.org/es/xampp.html" target="_blank">http://www.apachefriends.org/es/xampp.html</a></p>
<p>Consiste en un paquete que trae pre-configurado el Apache y el MySQL entre otras cosas, con un mínimo de configuración ya estaremos a punto para correr las aplicaciones.</p>
<p>Ahh.. una sugerencia, en vez de estar editando sus archivos en un editor de texto como el Notepad++ esta la alternativa del <strong>RadRails</strong> que es un entorno basado en el Aptana Studio (Eclipse).</p>
<p>Más información en: <a title="http://www.aptana.com/rails/" href="http://www.aptana.com/rails/" target="_blank">http://www.aptana.com/rails/</a></p>
<p>Usen Linux!!! y si les gustó, dejen un mensaje! <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/crystalblood.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/crystalblood.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/crystalblood.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/crystalblood.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/crystalblood.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/crystalblood.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/crystalblood.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/crystalblood.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/crystalblood.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/crystalblood.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/crystalblood.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/crystalblood.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/crystalblood.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/crystalblood.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/crystalblood.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/crystalblood.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=crystalblood.wordpress.com&amp;blog=3747983&amp;post=4&amp;subd=crystalblood&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://crystalblood.wordpress.com/2008/06/12/instalar-ruby-on-rails-desde-cero-en-windows/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23699d2d4abf590d1c6b951dca77c72c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">CrystalBlood</media:title>
		</media:content>
	</item>
	</channel>
</rss>
