<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Flasheves</title>
	
	<link>http://www.flasheves.com</link>
	<description>programacion, analisis , diseño</description>
	<lastBuildDate>Sat, 07 Jan 2012 00:53:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Flasheves" /><feedburner:info uri="flasheves" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Rails en un entorno de producción con Nginx + Passenger</title>
		<link>http://feedproxy.google.com/~r/Flasheves/~3/b5NTd4OSYVE/</link>
		<comments>http://www.flasheves.com/rails-en-un-entorno-de-produccion-con-nginx-passenger/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 00:50:46 +0000</pubDate>
		<dc:creator>eveevans</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.flasheves.com/?p=776</guid>
		<description><![CDATA[Guía para instalar Rails en un entorno de producción, utilizando Nginx como proxy de Passenger para desplegar aplicaciones Rails bajo Ruby 1.9.2]]></description>
			<content:encoded><![CDATA[<p>En otro post escribí sobre<a title="Instalar Rails en un entorno de produccion con RVM + Passenger + Apache" href="http://www.flasheves.com/instalar-rails-en-un-entorno-de-produccion-con-rvm-passenger-apache/"> como instalar Rails sobre RVM + Passenger + Apache</a>, está vez lo haré con otro entorno, se trata de Nginx, como servidor proxy, y Passenger, quien realmente se encargará de desplegar la aplicación, en vez de usar RVM usaré directamente Ruby 1.9.2 (compilado desde la fuente) y el servidor será CentOS 5. Asumiendo que tenemos un servidor recién instalado y acceso como <strong>root </strong>, iniciemos que hay mucho por abordar:</p>
<h2>1. Instalación de paquetes</h2>
<p>Actualizamos el Sistema Operativo (en mi caso use Centos 5.3 y necesitaba actualizarlo a la última rama del 5, es decir el 5.7)</p>
<p><pre class="brush: bash; title: ;">su -c &#8216;yum update&#8217;</pre></p>
<p>Podemos comprobar la versión con un</p>
<p><pre class="brush: bash; title: ;">cat /etc/redhat_release</pre></p>
<p>Los repositorios de CentOS 5 no están muy actualizados, así que si queremos trabajar con últimas versiones (o versiones específicas) necesitaremos compilar algunas cosas.</p>
<p>Paquetes necesarios para compilar</p>
<p><pre class="brush: bash; title: ;">yum groupinstall &#8216;Development Tools&#8217;</pre></p>
<p>Cabeceras C para que Ruby se compile con soporte para OpenSSL</p>
<p><pre class="brush: bash; title: ;">yum install openssl-devel</pre></p>
<p>Cabeceras de CURL, se ocuparán para que Passenger tenga soporte SSL</p>
<p><pre class="brush: bash; title: ;">yum install curl-devel</pre></p>
<p>Ngingx necesita PCRE  (Perl Compatible Regular Expressions) para su módulo rewrite</p>
<p><pre class="brush: bash; title: ;">yum install pcre-devel</pre></p>
<p>* Cabeceras para Sqlite (no es necesario si ocupamos otra base de datos que no es Sqlite , la cual viene por defecto con Rails en entorno de desarrollo)</p>
<p><pre class="brush: bash; title: ;">yum install sqlite-devel</pre></p>
<h2>2. Instalación de Ruby</h2>
<p>CentOS 5 tiene en los repositorios Ruby 1.8, pero como sabemos <a href="http://www.ruby-lang.org/en/news/2011/10/06/plans-for-1-8-7/">pronto acabará su soporte en favor de Ruby 1.9</a>, entre otros motivos, por tal razón instalaremos Ruby 1.9.2 (versión estable hasta este momento).</p>
<p>Descargamos Ruby 1.9.2 y compilamos</p>
<p><pre class="brush: bash; title: ;">wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.9.2-p290.tar.gz
tar zxvf ruby-1.9.2-p290.tar.gz
cd ruby-1.9.2
./configure
make
sudo make install
cd ..</pre></p>
<h2>3. Instalación de Gem</h2>
<p>Descagamos e instalamos Gem</p>
<p><pre class="brush: bash; title: ;">wget http://rubyforge.org/frs/download.php/75573/rubygems-1.8.12.tgz
tar zxvf rubygems-1.8.12.tgz
cd rubygems-1.8.12
sudo ruby setup.rb
gem update</pre></p>
<h2>4. Instalación de Passenger</h2>
<p><pre class="brush: bash; title: ;">gem install passenger</pre></p>
<h2>5. Instalación de Nginx</h2>
<p>A diferencia de  Apache, hacer que Passenger funcione con Nginx no es tan simple como cargar un módulo, lo que tenemos que hacer es compilar Nginx con soporte para Passenger. Para esto Passenger tiene un asistente de instalación para Nginx:</p>
<p><pre class="brush: bash; title: ;">passenger-install-nginx-module</pre></p>
<p><img class="aligncenter size-full wp-image-817" title="nginx passenger" src="http://www.flasheves.com/wp-content/uploads/2012/01/a01.jpg" alt="" width="618" height="314" /></p>
<p>La opción 1 es mas más conveniente, sin embargo no usa la última versión de Nginx, y en caso de que queramos usar la última versión (o alguna en específico) deberemos bajar la fuente y usar la opción 2.</p>
<p>Cancelamos el asistente y bajamos la ultima versión de Nginx, luego descomprimimos</p>
<p><pre class="brush: bash; title: ;"> wget http://nginx.org/download/nginx-1.0.11.tar.gz
tar zxvf nginx-1.0.11.tar.gz</pre></p>
<p><em>*Es importante anotar la dirección de la carpeta donde se descomprimió Nginx, en mi caso <strong>/root/nginx-1.0.11</strong></em></p>
<p>Ahora si corremos el asistente de Passenger  utilizando la opción 2 y completamos los datos solicitados (entre ellos la ruta de la carpeta descomprimida de Nginx)</p>
<p><pre class="brush: bash; title: ;">passenger-install-nginx-module</pre></p>
<p><img class="aligncenter size-full wp-image-819" title="nginx passenger install" src="http://www.flasheves.com/wp-content/uploads/2012/01/a02.jpg" alt="" width="618" height="700" /></p>
<p>Por defecto Nginx se instalará en <strong>/opt/nginx</strong>, pero eso lo podemos cambiar en el asistente. Ahora por comodidad crearemos los script para administrar Nginx como servicio:</p>
<p><pre class="brush: bash; title: ;">wget http://library.linode.com/assets/662-init-rpm.sh
mv init-rpm.sh /etc/rc.d/init.d/nginx
chmod +x /etc/rc.d/init.d/nginx
chkconfig --add nginx
chkconfig --level 2345 nginx on </pre></p>
<p>Una breve descripción de lo usado allá arriba:</p>
<p><strong>Línea 1:</strong> bajamos un script muy útil de <a href="www.linode.com/">linode</a> que usaremos para la administración de Nginx<br />
<strong> Línea 2:</strong> movemos el script donde los demás servicios<br />
<strong> Línea 4:</strong> agregamos el servicio para ser manejado por chkconfig, el cual se encargará de revisar que cuente con los comandos de start y kill en cada uno de los niveles de ejecución.<br />
<strong> Línea 5:</strong> indicamos que Nginx iniciará  en los niveles de ejecucion 2,3,4,5</p>
<p>Ahora iniciamos Nging (con soporte para Passenger) como cualquier servicio:</p>
<p><pre class="brush: bash; title: ;">/etc/init.d/nginx start</pre></p>
<p>Podemos comprobar los servicios corriendo:</p>
<h2><pre class="brush: bash; title: ;">chkconfig &#8211;list</pre></p>
<p><img class="aligncenter size-full wp-image-825" title="chkconfig --list" src="http://www.flasheves.com/wp-content/uploads/2012/01/a03.jpg" alt="" width="618" height="488" /><br />
6. Instalar Rails</h2>
<p>Ya casi terminamos, ahora solo instalamos Rails, y creamos una aplicación de prueba para comprobar</p>
<p><pre class="brush: bash; title: ;">gem install rails</pre></p>
<p><pre class="brush: bash; title: ;"> cd /opt/nginx/html
rails new prueba</pre></p>
<h2>7. Configurar Nginx y Passenger</h2>
<p>Configuramos Nginx y Passenger para correr nuestra aplicación, para esto editamos y creamos una nueva entrada en <strong>/opt/nginx/conf/nginx.conf</strong></p>
<p><pre class="brush: bash; title: ;">server {
listen          80;
server_name     www.aqui-tu-dominio.com;  #Dominio
root            /opt/nginx/html/prueba/public; #Ruta de la app (apuntar a public)
passenger_enabled on; #Para que passenger haga el despliegue
error_log    /opt/nginx/html/siac/log/error.log;
access_log    /opt/nginx/html/siac/log/access.log;
}</pre></p>
<p>Finalmente reiniciamos Nginx para que hagan efecto los cambios</p>
<p><pre class="brush: bash; title: ;">/etc/init.d/nginx restart</pre></p>
<p>Y Listo, ya tenemos nuestra aplicación Rails corriendo con Nginx y Passenger sobre Ruby 1.9.2 en CenOS 5</p>
<h2>Pasos Opcionales</h2>
<p>*Dependiendo  de la base de datos que usará tu aplicación te dejo los script para instalar MySQL y SQLite</p>
<p><strong>Instalación de MySQL desde los repositorios</strong></p>
<p><pre class="brush: bash; title: ;">yum install mysql
yum install mysql-server
yum install mysql-devel
/etc/init.d/mysqld start</pre></p>
<p><strong>Instalación de SQLite compilado</strong></p>
<p><pre class="brush: bash; title: ;">wget http://www.sqlite.org/sqlite-autoconf-3070900.tar.gz
tar zxvf sqlite-autoconf-3070900.tar.gz
cd sqlite-autoconf-3070900
./configure
make
make install</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flasheves.com/rails-en-un-entorno-de-produccion-con-nginx-passenger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.flasheves.com/rails-en-un-entorno-de-produccion-con-nginx-passenger/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rails-en-un-entorno-de-produccion-con-nginx-passenger</feedburner:origLink></item>
		<item>
		<title>Instalar Rails en un entorno de produccion con RVM + Passenger + Apache</title>
		<link>http://feedproxy.google.com/~r/Flasheves/~3/QsB6SKMB0bo/</link>
		<comments>http://www.flasheves.com/instalar-rails-en-un-entorno-de-produccion-con-rvm-passenger-apache/#comments</comments>
		<pubDate>Fri, 27 May 2011 23:29:55 +0000</pubDate>
		<dc:creator>eveevans</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rvm]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.flasheves.com/?p=689</guid>
		<description><![CDATA[Guía para instalar Rails en un entorno de producción, utilizando Apache como proxy de Passenger para desplegar la aplicación y RVM para manejar diferentes entornos de gemas.]]></description>
			<content:encoded><![CDATA[<p>Usualmente cuando trabajamos con nuestra aplicación <a href="http://rubyonrails.org/" target="_blank">Ruby on Rails </a>en desarrollo usamos <a href="http://en.wikipedia.org/wiki/WEBrick">WEBrick</a> , sin embargo, cuando toca publicarlo en un servidor de producción con usuarios reales y conexiones concurrentes tenemos que pensar en otras alternativas. <a href="http://www.modrails.com/" target="_blank">Passenger</a> en conjunto con <a href="http://httpd.apache.org/" target="_blank">Apache</a> se han convertido en  una muy buena opción para desplegar aplicaciones web basadas en Ruby, y si  a esto le sumamos la versatilidad de <a href="https://rvm.beginrescueend.com/" target="_blank">RVM</a> para encapsular gemas (<a href="http://www.flasheves.com/aislar-aplicaciones-de-rails-con-ruby-version-manager-rvm/" target="_blank">del cual escribí en otro post</a>) tendremos un entorno muy completo para lanzar aplicaciones hechas con Rails. Esta guía pretende abordar los puntos claves para configurar ese entorno, cabe mencionar que la instalación se realizó en un servidor Debian:</p>
<h2>1. Instalar Apache<em> </em></h2>
<p>Probablemente esta parte ya la tengas lista. Si no lo instalamos, en Ubuntu o Debian debería ser tan sencillo como:</p>
<p><pre class="brush: plain; title: ;">sudo aptitude install apache2</pre></p>
<h2>2. Instalar RVM</h2>
<p>RVM servirá para aislar las gemas de la aplicación, además de instar Ruby en caso que aun no lo tengamos. Para su instalación puedes <a href="https://rvm.beginrescueend.com/rvm/install/" target="_blank">ver la guía en el sitio oficial</a> o <a href="http://www.flasheves.com/aislar-aplicaciones-de-rails-con-ruby-version-manager-rvm/" target="_blank">seguir esta pequeña guía que escribí</a>. Ten en cuenta<a href="https://rvm.beginrescueend.com/rvm/prerequisites/" target="_blank"> las dependencias que necesitarás</a> tener instaladas en tu servidor.</p>
<p>Para comprobar que RVM se ha instalado puede escribir en la consola:<em><strong> type rvm | head -1</strong></em> si devuelve <em><strong>rvm is a function</strong></em> entonces todo bien, si no revisa <a href="https://rvm.beginrescueend.com/rvm/install/" target="_blank">un poco aquí</a> los problemas más comunes y sus soluciones.</p>
<h2>3. Instalar Ruby a través de RVM</h2>
<p>Si ya tienes instalado Ruby no hay problema, puedes usar esa versión, si no igualmente puedes instalar la versión que quieras a través de RVM.</p>
<p>Para ejemplificar instalaremos la versión 1.8.7 de Ruby y lo dejaremos como versión por defecto del sistema, para esto escribimos en la consola:</p>
<p><pre class="brush: plain; title: ;">rvm install 1.8.7 --default</pre></p>
<p><em>*Al momento de escribir esto aún no hay una solución práctica para que Passenger pueda correr diferentes versiones de Ruby en RVM simultaneamente. Así que deberías usar una misma versión de Ruby para trabajar con todas tus aplicaciones.</em></p>
<h2>4. Instalar gema passenger</h2>
<p>En RVM existe un compartimiento global que puede ser usado por todos gemset que creemos. Es decir, todas las gemas puestas ahí estarán disponibles por cada gemset. Este gemset existe por defecto, y siguiendo con el ejemplo anterior (Ruby 1.8.7) podemos acceder a el de la siguiente forma:</p>
<p><pre class="brush: plain; title: ;">rvm 1.8.7@global</pre></p>
<p>y una vez dentro de ese contenedor, procedemos a instalar Passenger como gema global</p>
<p><pre class="brush: plain; title: ;">gem install passenger</pre></p>
<h2>5. Instalar Passenger como módulo de Apache</h2>
<p>Passenger está disponible tanto para Apache, como para Ngix. En este caso para instalarlo sobre Apache usaremos:</p>
<p><pre class="brush: plain; title: ;">passenger-install-apache2-module</pre></p>
<p>Una vez ejecutado el comando, nos aparecerá un asistente para guiarnos en la revisión de dependencias ,instalación y configuración de Passenger.</p>
<p><a rel="attachment wp-att-708" href="http://www.flasheves.com/instalar-rails-en-un-entorno-de-produccion-con-rvm-passenger-apache/passenger-1/"><img class="aligncenter size-full wp-image-708" title="instalacion de passenger" src="http://www.flasheves.com/wp-content/uploads/2011/05/passenger-1.png" alt="" width="618" height="279" /></a><a rel="attachment wp-att-709" href="http://www.flasheves.com/instalar-rails-en-un-entorno-de-produccion-con-rvm-passenger-apache/passenger-2/"><img class="aligncenter size-full wp-image-709" title="configuracion de passenger" src="http://www.flasheves.com/wp-content/uploads/2011/05/passenger-2.png" alt="" width="618" height="375" /></a></p>
<p>Para más información <a href="http://www.modrails.com/documentation/Users%20guide%20Apache.html" target="_blank">aquí la documentación oficial</a>.</p>
<h2>6. Configurar Apache para que corra Ruby y Passenger a través de RVM</h2>
<p>Una vez finalizada la instalación anterior (passenger-install-apache2-module), luego de varias lineas de compilación e instalación,  la consola imprimirá 3 lineas necesarias para la configuración de Apache:</p>
<p><a rel="attachment wp-att-716" href="http://www.flasheves.com/instalar-rails-en-un-entorno-de-produccion-con-rvm-passenger-apache/passenger-3/"><img class="aligncenter size-full wp-image-716" title="passenger-apache" src="http://www.flasheves.com/wp-content/uploads/2011/05/passenger-3.png" alt="" width="618" height="230" /></a>Copiar esas líneas y ponerlas en el archivo de configuración de Apache. En Ubuntu/Debian el archivo está en <strong>/etc/apache2/apache2.conf</strong></p>
<p>Solo resta reiniciar Apache y ya tendrá soporte para Passenger :) <strong><br />
</strong></p>
<h2>7. Instalar Rails</h2>
<p>A este punto, el servidor está listo para la implementación de las aplicaciones en Rails, de esta forma el siguiente  paso es configurar el sitio/proyecto bajo todo el entorno que previamente hicimos. La idea base es que cada aplicación corra dentro de su propio contenedor de gemas.</p>
<h4>7.1. Crear el contendor:</h4>
<p><pre class="brush: plain; title: ;">rvm gemset create contenedor</pre></p>
<h4>7.2. Iniciar en el intérprete y contenedor de gemas</h4>
<p><pre class="brush: plain; title: ;">rvm 1.8.7@contenedor</pre></p>
<h4>7.3. Instalar Rails</h4>
<p><pre class="brush: plain; title: ;">gem install rails</pre></p>
<p><em>*Lo más seguro es que no te interese instalar la documentación de las gemas, así que te recomiendo instalar rails con los parámetros <strong>no-rdoc</strong> , <strong>no-ri</strong></em></p>
<h2>8. Configurar Aplicación</h2>
<h4>8.1 Crear/Migrar proyecto</h4>
<p>En el directorio donde queremos poner nuestra aplicación (por lo general <strong>/var/www/</strong> ): Creamos una nueva aplicación Rails con el comando <strong>rails new proyecto</strong> (en caso de ser Rails 3 lo que hayamos instalado) o copiamos el proyecto que queremos migrar.</p>
<p><strong>8.2 Configurar Virtual Host de Apache</strong></p>
<p>Si vamos a tener varios sitios corriendo en el mismo servidor, es recomendable configurar Virtual Host de Apache. En el caso de Debian/Ubuntu , esas configuraciones están en: <strong>/etc/apache2/sites-enabled</strong> (pero se habilitan en <strong>/etc/apache2/apache2.conf</strong> ). Podemos configurar la entrada por defecto <strong>000-default</strong> o crear una nueva. Básicamente las configuraciones son:</p>
<p><pre class="brush: bash; title: ;">&lt;VirtualHost *:80&gt;
  ServerName www.nombredelsitio.com
  DocumentRoot /tu_aplicacion/public    # &lt;-- Confirmar que apunte al directorio 'public'
  &lt;Directory /tu_aplicacion/public&gt;
  AllowOverride all              # &lt;-- Cambiar , por defecto viene en none
  Options -MultiViews            # &lt;-- cambiar, MultiViews deben estar desabilitadas
  &lt;/Directory&gt;
 &lt;/VirtualHost&gt;</pre></p>
<h4>8.3 Configurar rutas</h4>
<p>Lo siguiente es decirle a tu aplicación como y donde encontrar las gemas y versión de Ruby que usará Passenger ( Esto es necesario por que lo estamos haciendo a través de RVM), la información detallada está en la documentación de RVM &gt; <a href="https://rvm.beginrescueend.com/integration/passenger/" target="_blank">Intergación con Passenger</a>, pero básicamente es:</p>
<p><strong>8.3.1. Crear un archivo .rvmrc</strong></p>
<p>Creamos un archivo llamado &#8220;<strong>.rvmrc</strong>&#8221; en la raiz del proyecto, para indicar  las rutas de Ruby y contenedor de gemas que utilizamos con RVM, (esto es por cada proyecto). Para esto, corremos en la consola el comando</p>
<p><pre class="brush: plain; title: ;">rvm use 1.8.7@contenedor --rvmrc --create</pre></p>
<p><em>*Recuerda cambiar la versión del intérprete y contenedor que usas.</em></p>
<h4>8.3.2. Crear archivo setup_load_paths.rb</h4>
<p>Finalmente en la carpeta<strong> /config/</strong> del proyecto de Rails  crear un archivo llamado <strong>setup_load_paths.rb,</strong> En el caso del ejemplo utilizando Rails 3, el contenido del archivo seria:</p>
<p><pre class="brush: ruby; title: ;">if ENV['MY_RUBY_HOME'] &amp;&amp; ENV['MY_RUBY_HOME'].include?('rvm')
 begin
 rvm_path     = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
 rvm_lib_path = File.join(rvm_path, 'lib')
 $LOAD_PATH.unshift rvm_lib_path
 require 'rvm'
 RVM.use_from_path! File.dirname(File.dirname(__FILE__))
 rescue LoadError
 # RVM is unavailable at this point.
 raise &quot;RVM ruby lib is currently unavailable.&quot;
 end
end

ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
require 'bundler/setup'</pre></p>
<p>En el caso de ser Rails 2, el contenido del archivo sería</p>
<p><pre class="brush: ruby; title: ;">if ENV['MY_RUBY_HOME'] &amp;&amp; ENV['MY_RUBY_HOME'].include?('rvm')
 begin
 rvm_path     = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
 rvm_lib_path = File.join(rvm_path, 'lib')
 $LOAD_PATH.unshift rvm_lib_path
 require 'rvm'
 RVM.use_from_path! File.dirname(File.dirname(__FILE__))
 rescue LoadError
 # RVM is unavailable at this point.
 raise &quot;RVM ruby lib is currently unavailable.&quot;
 end
end</pre></p>
<p>Para más información sobre la integración de Passenger con RVM esta<a href="https://rvm.beginrescueend.com/integration/passenger/" target="_blank"> la documentación oficial </a>y  el artículo <a href="http://blog.ninjahideout.com/posts/the-path-to-better-rvm-and-passenger-integration" target="_blank">The Path to Better RVM &amp; Passenger Integration</a> de donde se tomo parte de las mejoras para RVM y Passenger.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flasheves.com/instalar-rails-en-un-entorno-de-produccion-con-rvm-passenger-apache/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.flasheves.com/instalar-rails-en-un-entorno-de-produccion-con-rvm-passenger-apache/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=instalar-rails-en-un-entorno-de-produccion-con-rvm-passenger-apache</feedburner:origLink></item>
		<item>
		<title>Aislar aplicaciones de Rails con Ruby Version Manager RVM</title>
		<link>http://feedproxy.google.com/~r/Flasheves/~3/Px-wl58qBak/</link>
		<comments>http://www.flasheves.com/aislar-aplicaciones-de-rails-con-ruby-version-manager-rvm/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 16:38:39 +0000</pubDate>
		<dc:creator>eveevans</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rvm]]></category>

		<guid isPermaLink="false">http://www.flasheves.com/?p=397</guid>
		<description><![CDATA[Guía para la instalación y uso de Ruby Version Manager RVM para aislar aplicaciones de Rails ]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-637" title="portadarvm" src="http://www.flasheves.com/wp-content/uploads/2011/02/portadarvm.jpg" alt="" width="618" height="155" /></p>
<p>Con la recien salida de Rails 3, se introdujeron bastantes cambios y obviamente actualizaciones de las gemas bases.Si instalamos Rails 3 (y sus dependencias) en la misma computadora en que tenemos aplicaciones corriendo bajo alguna versión anterior de Rails, probablemente tengamos problemas, con las aplicaciones viejas, por conflictos entre gemas (en caso que no hayamos utilizado <a href="http://gembundler.com/" target="_blank">Bundler </a>o congelado la aplicación)</p>
<p>Para solucionar estos inconvenientes existe <a href="http://rvm.beginrescueend.com/" target="_blank">Ruby Version Manager</a> (a partir de aquí simplemente <strong>RVM</strong>). La idea es que tengamos ambientes aislados en los que cada uno pueda tener su propia versión de Ruby y gemas instaladas, de esta manera podemos probar nuestra aplicación en varios escenarios y/o tener aplicaciones con requerimientos diferentes corriendo sin conflictos.</p>
<h2>A Instalar RVM!</h2>
<h4>1. Instalar RVM</h4>
<p>Primero, lo primero: La manera más práctica de instalarlo es mediante sus repositorios</p>
<p><pre class="brush: plain; title: ;">mkdir -p ~/.rvm/src/ &amp;&amp; cd ~/.rvm/src &amp;&amp; rm -rf ./rvm/ &amp;&amp; git clone --depth 1 git://github.com/wayneeseguin/rvm.git &amp;&amp; cd rvm &amp;&amp; ./install</pre></p>
<p>Ya les dije que necesitamos tener <a href="http://es.wikipedia.org/wiki/Git" target="_blank">git</a>?, mmm si necesitamos <a href="http://es.wikipedia.org/wiki/Git" target="_blank">git</a>, y configurar algunas variables en el path. Algo como:</p>
<p><pre class="brush: plain; title: ;">$ source ~/.rvm/scripts/rvm</pre></p>
<p>O de manera definitiva modificando el  <strong>.bash_profile</strong></p>
<p><pre class="brush: plain; title: ;">[[ -s &quot;$HOME/.rvm/scripts/rvm&quot; ]] &amp;&amp; . &quot;$HOME/.rvm/scripts/rvm&quot;  # This loads RVM into a shell session.</pre></p>
<p>Para más información y solución de problemas sobre la instalación <a href="http://rvm.beginrescueend.com/rvm/install/" target="_blank">aquí la documentación oficial</a> , tranquilo, esta es la parte más problemática luego todo va sobre rieles ;).</p>
<h4>2. Instalar versión Ruby</h4>
<p>Una vez que ya este corriendo RVM, vamos a instalar la versión de Ruby que queremos.<br />
(Nota: Necesitamos <a href="http://www.openssl.org/" target="_blank">openssl</a>)</p>
<p>Si por ejemplo queremos instalar Rails 3 corriendo sobre Ruby 1.9.2, primero tenemos que instalar Ruby 1.9.2 (lógico? xD)</p>
<p><pre class="brush: plain; title: ;">$ rvm install 1.9.2 --with-openssl-dir=/usr/local </pre></p>
<h4><span style="font-weight: normal;">Esperamos que se descargue, se configure, compile, e  instale &#8230;.</span></p>
<p><span style="font-weight: normal;"><a rel="attachment wp-att-620" href="http://www.flasheves.com/aislar-aplicaciones-de-rails-con-ruby-version-manager-rvm/rvm1/"><img class="aligncenter size-full wp-image-620" title="rvm1" src="http://www.flasheves.com/wp-content/uploads/2011/02/rvm1.jpg" alt="" width="618" height="123" /></a><br />
</span></h4>
<h4>3. Crear el sandbox de gemas</h4>
<p><span style="font-weight: normal;">Ya tenemos el intérprete, ahora necesitamos las gemas. Por tal razón creamos un contenedor donde estarán aprisionadas y no podran salir!</span></p>
<p><pre class="brush: plain; title: ;">rvm gemset create contenedor1</pre></p>
<h4>4. Iniciar en el intérprete y contenedor de gemas deseado<pre class="brush: plain; title: ;">rvm 1.9.2@contenedor1</pre></h4>
<p>Listo, ya estamos corriendo ruby 1.9.2 en un contendor aislado. Verificando&#8230;</p>
<p><a rel="attachment wp-att-621" href="http://www.flasheves.com/aislar-aplicaciones-de-rails-con-ruby-version-manager-rvm/rvm2/"><img class="aligncenter size-full wp-image-621" title="rvm2" src="http://www.flasheves.com/wp-content/uploads/2011/02/rvm2.jpg" alt="" width="618" height="157" /></a></p>
<p>Todo bien, y solo falta instalar Rails:</p>
<p><pre class="brush: plain; title: ;">gem install rails</pre></p>
<h4><span style="font-weight: normal;"><strong>6. Volver al modo normal</strong></span></h4>
<p><span style="font-weight: normal;">Si ya estamos aburridos de jugar con nuestra aplicación, o queremos volver a los programas instalados en nuestra computadora (fuera de todo contenedor) lo hacemos con:</span></p>
<p><pre class="brush: plain; title: ;">rvm system</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flasheves.com/aislar-aplicaciones-de-rails-con-ruby-version-manager-rvm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.flasheves.com/aislar-aplicaciones-de-rails-con-ruby-version-manager-rvm/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=aislar-aplicaciones-de-rails-con-ruby-version-manager-rvm</feedburner:origLink></item>
		<item>
		<title>Plugin de WordPress para mostrar entradas por categoria dentro de un Widget</title>
		<link>http://feedproxy.google.com/~r/Flasheves/~3/cUr9t9RC8ak/</link>
		<comments>http://www.flasheves.com/ev-widget-post/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 22:34:12 +0000</pubDate>
		<dc:creator>eveevans</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[proyectos]]></category>

		<guid isPermaLink="false">http://www.flasheves.com/?p=547</guid>
		<description><![CDATA[Plugin de Wordpress para crear módulo personalizado de entradas de una categoria]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-558" href="http://www.flasheves.com/ev-widget-post/ev-widget-post-2/"><img class="aligncenter size-full wp-image-558" title="ev-widget-post" src="http://www.flasheves.com/wp-content/uploads/2011/01/ev-widget-post.jpg" alt="" width="618" height="155" /></a></p>
<p>Para recientes proyectos escribí un plugin que le diera la libertad al usuario de poder cambiar elementos en portada,  como pensé que sería útil lo envié a <a href="http://wordpress.org/extend/plugins/" target="_blank">directorio de plugins de WordPress</a> , lo aceptaron  y aquí esta una reseña del plugin :</p>
<p><a href="http://wordpress.org/extend/plugins/ev-widget-post/" target="_blank">http://wordpress.org/extend/plugins/ev-widget-post/</a></p>
<h2>Funcionamiento</h2>
<p><img class="alignright size-full wp-image-584" style="border: 0pt none;" title="widget post wordpress" src="http://www.flasheves.com/wp-content/uploads/2011/01/screenshot-12.jpg" alt="" />Una vez instalado el plugin, te agregará en las opciones de Widget, un nuevo módulo llamado &#8220;<strong><span style="text-decoration: underline;">EV Widget Post</span></strong>&#8221; , lo arrastras como cualquier Widget a la posición deseada y completas las opciones:</p>
<ul>
<li><strong>Title</strong>: Título del Widget</li>
<li><strong>Category</strong>: Se mostrarán las entradas de la categoría que escojas</li>
<li><strong>Order by</strong>: Modo de ordenamiento, aleatorio o por fecha</li>
<li><strong>How many post</strong>: Número de entradas a mostrar</li>
<li><strong>Show excerpt</strong>: Si habilitas la opción se mostrará el extracto</li>
<li><strong>Show thumbnail:</strong> Si habilitas la opción se mostrarán las miniaturas</li>
<li><strong>Thumbnail size:</strong> Tamaño de la miniatura</li>
<li><strong>Enable secondary format:</strong> Habilita un segundo formato para entradas ( con mismas opciones q la principal)</li>
<li><strong>Show *See More* lin</strong>k: Si habilitas la opción aparecerá al final del widget un enlace a la categoría escogida</li>
</ul>
<h2>FAQ</h2>
<h4>¿De dónde toma las imágenes?</h4>
<p>La imagen la toma del elemento definido en &#8220;Usar como imagen destacada&#8221; en las opciones de la entrada. Para esto es necesario tener habilitada la opcion <a href="http://codex.wordpress.org/Function_Reference/the_post_thumbnail" target="_blank">the_post_thumbnail</a> en tu tema.</p>
<h4>¿Dónde cambio el tamaño de las imágenes?</h4>
<p>Los tamaños de la imagen están definidas por los parámetros establecidos en las opciones de Multimedia de  WordPress.  Por defecto estos tamaños son:</p>
<ul>
<li>thumbnail 150px x 150px max</li>
<li>medium 300px x 300px max</li>
<li>large 640px x 640px max</li>
</ul>
<h4>¿Cómo cambio los estilos?</h4>
<p>Puedes definir tus propios estilos en el archivo style.css de tu tema, El widget genera sus propias definiciones de clase ( puedes verlo usando herramientas como Firebug, Web Inspector, Dragonfly, o similares). Por ejemplo si quieres cambiar el tamaño del título, puedes definir una regla como: h3.ev-widget-post-tittle {font-size:16px;}</p>
<h2>Donar</h2>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input name="cmd" type="hidden" value="_s-xclick" />
<input name="encrypted" type="hidden" value="-----BEGIN PKCS7-----MIIHPwYJKoZIhvcNAQcEoIIHMDCCBywCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYAU7TQSNIavGzk/KWXqrQtAE8/z42l64uhFylTMOjbkOPUamcuMazyTpoT678jw2SVT7ieqnvuHbsOApNdpZEITRgWUnhM3SSOClmUnDG/0c/5K8LUHUx91RoZl192YGGriZw+pIhQ8xXMKT/hRoN02z1z2lUE/H+wY9ELVYkI5gjELMAkGBSsOAwIaBQAwgbwGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIXDVwx1wVMeqAgZhnys9uFcHrS0WgRMYuTwDfWpra4BAmBcb2pWbcLljW0DIlJKc0UD2fRVSax5S8b1XvZJUaCZVm6cUKkZFFRAv4oA8TaymM6WJ9zlWQTq7JuQ0TA2u4hGZwZzFGlLa6XNG/qzSFzt1Yx3K5vJuINQaSEm7LJS9TP94JOwqxCjKpp6+ZQEM00NhsCpLIY1YbJ/LL3LcLtzRUPqCCA4cwggODMIIC7KADAgECAgEAMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTAeFw0wNDAyMTMxMDEzMTVaFw0zNTAyMTMxMDEzMTVaMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUdO3fxEzEtcnI7ZKZL412XvZPugoni7i7D7prCe0AtaHTc97CYgm7NsAtJyxNLixmhLV8pyIEaiHXWAh8fPKW+R017+EmXrr9EaquPmsVvTywAAE1PMNOKqo2kl4Gxiz9zZqIajOm1fZGWcGS0f5JQ2kBqNbvbg2/Za+GJ/qwUCAwEAAaOB7jCB6zAdBgNVHQ4EFgQUlp98u8ZvF71ZP1LXChvsENZklGswgbsGA1UdIwSBszCBsIAUlp98u8ZvF71ZP1LXChvsENZklGuhgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAgV86VpqAWuXvX6Oro4qJ1tYVIT5DgWpE692Ag422H7yRIr/9j/iKG4Thia/Oflx4TdL+IFJBAyPK9v6zZNZtBgPBynXb048hsP16l2vi0k5Q2JKiPDsEfBhGI+HnxLXEaUWAcVfCsQFvd2A1sxRr67ip5y2wwBelUecP3AjJ+YcxggGaMIIBlgIBATCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTExMDIwMTIxMDExOVowIwYJKoZIhvcNAQkEMRYEFKGzQzHFU2Sthb18pi+1qG9/SjH9MA0GCSqGSIb3DQEBAQUABIGAum5ebI2tL/E7H6jxec3zBvUgNN92iepSie7xHWJ+G4lZHLq4E4icczkum/r43HBWacAY+w6SzCxg9S0GJ0QvGcuRJ7+pDagkCit3yQs8pP11y7JPURjZrOKC+jA/PjIk+VXKiaz0f49IiKGwXzoP+tV7Q5GuzLsgM7BsRJ/HKu0=-----END PKCS7----- " />
<input alt="PayPal - The safer, easier way to pay online!" name="submit" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" type="image" /> <img src="https://www.paypal.com/es_XC/i/scr/pixel.gif" border="0" alt="" width="1" height="1" /></form>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> </form>
]]></content:encoded>
			<wfw:commentRss>http://www.flasheves.com/ev-widget-post/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		<feedburner:origLink>http://www.flasheves.com/ev-widget-post/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ev-widget-post</feedburner:origLink></item>
		<item>
		<title>Google Maps + Geolocalizacion</title>
		<link>http://feedproxy.google.com/~r/Flasheves/~3/HoXG4w1m444/</link>
		<comments>http://www.flasheves.com/google-maps-geolocalizacion/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 18:10:24 +0000</pubDate>
		<dc:creator>eveevans</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[geolocalizacion]]></category>
		<category><![CDATA[google maps]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://www.flasheves.com/?p=381</guid>
		<description><![CDATA[Guía para el uso básico de la API de Google Maps y las herramientas de Geolocalización]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-483" href="http://www.flasheves.com/google-maps-geolocalizacion/geolocalizacion/"><img class="aligncenter size-full wp-image-483" title="geolocalizacion" src="http://www.flasheves.com/wp-content/uploads/2010/12/geolocalizacion.jpg" alt="" width="618" height="155" /></a></p>
<p>Con la salida de la <a href="http://code.google.com/apis/maps/documentation/javascript/" target="_blank">versión 3 de la API de Google Maps</a> (para javascript) no se necesitan más API keys para trabajar sobre los mapas de Google, y la verdad han mejorado bastante la manera de tratar con ellos.</p>
<p>De manera sencilla, para hacer una invocación de un mapa necesitaremos:</p>
<ul>
<li>La librería javascript de Google Maps</li>
<li>Un espacio donde dejaremos caer el mapa (un <strong>div</strong> o realmente cualquier declaración<a href="http://www.w3.org/TR/html4/struct/global.html#h-7.5.3" target="_blank"> tipo bloque </a>)</li>
<li>El script que hagamos para invocar el mapa y agregarle interactividad</li>
</ul>
<p>Reuniendo estos elementos nos queda algo así:</p>
<p><pre class="brush: xml; title: ;">﻿﻿﻿&lt;html&gt;
 &lt;head&gt;
 &lt;!-- Invocar la libreria de Google Maps--&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.google.com/maps/api/js?sensor=false&quot;&gt;&lt;/script&gt;

 &lt;!-- Script donde creamos el mapa y agregamos interactividad--&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;
 function dibujar_mapa() {
 var centro = new google.maps.LatLng(12.129334, -86.266365); // Coordenadas del centro del mapa
 var opciones = { // parametros del mapa
 zoom: 12, // Zoom, puede ir desde 1 a 18
 center: centro, // definimos el centro (que previamente fue establecido en la variable latlng)
 mapTypeId: google.maps.MapTypeId.ROADMAP // Tipo de Mapa
 };
 var map = new google.maps.Map(document.getElementById(&quot;mapa&quot;),opciones); // Hacemos que el mapa se dibuje en la el elemento #mapa
}
 &lt;/script&gt;
 &lt;/head&gt;
 &lt;body onload=&quot;dibujar_mapa()&quot;&gt; &lt;!-- Cuando cargue el sitio dibujar mapa --&gt;
 &lt;div id=&quot;mapa&quot; style=&quot;width:100%; height:100%&quot;&gt;&lt;/div&gt;
 &lt;/body&gt;
&lt;/html&gt;</pre></p>
<p><a href="http://www.flasheves.com/wp-content/uploads/2010/12/ex0.html" target="_blank">Ver Ejemplo</a></p>
<p>Si queremos agregar algún punto, agregaríamos al script anterior, lo siguiente:</p>
<p><pre class="brush: jscript; title: ;">﻿var marcador = new google.maps.Marker();
 marcador.setPosition(centro);
 marcador.setMap(map);</pre></p>
<p><a href="http://www.flasheves.com/wp-content/uploads/2010/12/ej2.html" target="_blank">﻿Ver Ejemplo</a></p>
<h2>Geolocalización</h2>
<p>Ahora la parte de la <a href="http://es.wikipedia.org/wiki/Georreferenciaci%C3%B3n" target="_blank">Geolocalización</a>, basicamente consiste en obtener tu dirección IP y basado en eso recopilar información sobre los puntos de acceso  cercanos para proporcionarte una aproximación de tu ubicación. En las versiones recientes de los navegadores modernos ya podemos contar con esta característica.</p>
<p>Para trazar nuestra posición tenemos que ubicar en el centro del mapa nuestra posición para luego dibujarla.</p>
<p><pre class="brush: jscript; title: ;">function getUsersLocation() {
 if (navigator.geolocation) { // Preguntar si el navegador soporta geolocalizacion
 navigator.geolocation.getCurrentPosition(function(position) {//obtener nuestra posicion
 var pos = new google.maps.LatLng(position.coords.latitude,
 position.coords.longitude);
 map.panTo(pos); //Mover el mapa hasta la nueva posicion geolocalizada
 }, function() {
 // En caso de no encontrar la ubicacion hacer algo
 });
 }
}</pre></p>
<p>Momento de mezclar todo:</p>
<p><pre class="brush: jscript; title: ;">&lt;html&gt;
 &lt;head&gt;
 &lt;title&gt; Flasheves - Experimento de Geolocalizacion con javascript &lt;/title&gt;
 &lt;style type=&quot;text/css&quot;&gt;
 html, body {
 height: 100%;
 margin: 0;
 }

 #map {
 height: 100%;
 }
 &lt;/style&gt;
 &lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.google.com/maps/api/js?sensor=false&quot;&gt;&lt;/script&gt;

 &lt;script type=&quot;text/javascript&quot;&gt;
 function init() {
 if (navigator.geolocation) {
 navigator.geolocation.getCurrentPosition(function(position) {
 var pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
 var marcador = new google.maps.Marker();

 var map = new google.maps.Map(document.getElementById('map'), {
 zoom: 14,
 center: pos,
 mapTypeId: google.maps.MapTypeId.ROADMAP
 });

 marcador.setPosition(pos);
 marcador.setMap(map)

 }, function() {
 alert(&quot;nel pastel, su navegador tiene que soportar Geolocalizacion&quot;);
 });
 }
 }

 google.maps.event.addDomListener(window, 'load', init);

 &lt;/script&gt;

 &lt;/head&gt;
 &lt;body&gt;
 &lt;div id=&quot;map&quot;&gt;&lt;/div&gt;
 &lt;/body&gt;
&lt;/html&gt;</pre></p>
<p><a href="http://www.flasheves.com/experimentos/ex1.html" target="_blank">Ver Ejemplo</a></p>
<p>Creo que el código se entiende por si mismo, a grandes rasgos lo que hace es:</p>
<ul>
<li>Llamar las librería necesaria para Google Maps</li>
<li>Crear el espacio para dibujar el mapa</li>
<li>En caso que el navegador soporte geolocalización &gt; obtener nuestra posición</li>
<li>Dibujar el mapa tal como lo hicimos en el primero ejemplo, con la diferencia que esta vez trazará como centro nuestra posición</li>
<li>En caso nuestro navegador no soporte geolocalización mostrar un mensaje</li>
</ul>
<p>La geolocalización cada vez tiene más presencia, ya hemos visto ejemplos como <a href="http://foursquare.com/" target="_blank">Foursquare</a>, Google Places, <a href="http://www.facebook.com/places/" target="_blank">Facebook Places </a>, sacando más provecho aún con la ola de nuevos dispositivos con <a href="http://en.wikipedia.org/wiki/Global_Positioning_System" target="_blank">GPS</a>. Así mismo  se podrían crear iniciativas locales, para terminar les dejo los enlaces de La <a href="http://code.google.com/apis/maps/documentation/javascript/" target="_blank">documentación oficial de Google Maps</a> y esta<a href="http://oa-samples.googlecode.com/svn/trunk/presentations/devfest-2010/buenosaires/talks/maps-api-v3.html" target="_blank"> muy buena presentación</a> expuesta en el Google Dev Fest.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flasheves.com/google-maps-geolocalizacion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.flasheves.com/google-maps-geolocalizacion/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=google-maps-geolocalizacion</feedburner:origLink></item>
		<item>
		<title>Debug para Ruby en NetBeans</title>
		<link>http://feedproxy.google.com/~r/Flasheves/~3/dOxjnnf8CDA/</link>
		<comments>http://www.flasheves.com/debug-para-ruby-en-netbeans/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 23:02:19 +0000</pubDate>
		<dc:creator>eveevans</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.flasheves.com/?p=398</guid>
		<description><![CDATA[Guía  para hacer debugging de Ruby (y de paso Rails) en Netbeans]]></description>
			<content:encoded><![CDATA[<p>Las herramientas de <a href="http://en.wikipedia.org/wiki/Debugging" target="_blank">Debugging</a> son especialmente útiles para depurar y evitar  errores en nuestras aplicaciones (o en su defecto disminurlos). Si bien siempre podemos hacer un dump (o <a href="http://ruby-doc.org/core/classes/Object.html#M000360" target="_blank">inspect</a>) de las varibales, con herramientas de debugging el trabajo se vuelve  más  ágil y controlado.</p>
<p>Por un lado, podemos instalar la gema <a href="http://rubygems.org/gems/ruby-debug" target="_blank">ruby-debug</a>, la cual nos permitirá debuggear nuestras aplicaciones (tanto en un <a href="http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado" target="_blank">IDE</a> como fuera de el)</p>
<p><pre class="brush: plain; title: ;"> sudo gem install ruby-debug </pre></p>
<p>Con la gema anterior ya podemos hacer debug, sin embargo para <a href="http://netbeans.org/features/ruby/index.html" target="_blank">NetBeans</a> y Eclipse  está la gema <a href="http://rubygems.org/gems/ruby-debug-ide" target="_blank">ruby-debug-ide</a> la cual es más rápida y tiene mejor soporte. Asi bien, la instalamos :)</p>
<p><pre class="brush: plain; title: ;"> sudo gem install ruby-debug-ide </pre></p>
<p>Listo, ahora abrimos nuestro proyecto con NetBeans e iniciamos el servidor en modo debug</p>
<p><a rel="attachment wp-att-412" href="http://www.flasheves.com/debug-para-ruby-en-netbeans/netbeans01/"></a><a rel="attachment wp-att-420" href="http://www.flasheves.com/debug-para-ruby-en-netbeans/netbeans03/"><img class="aligncenter size-full wp-image-420" title="netbeans03" src="http://www.flasheves.com/wp-content/uploads/2010/11/netbeans03.jpg" alt="" width="620" height="100" /></a></p>
<p>Eso es todo &gt; ahora podemos empezar a debuggear, definir <a href="http://en.wikipedia.org/wiki/Breakpoint" target="_blank">Break Point</a>, ver el estado de las varibales (y expresiones), ver los <a href="http://en.wikipedia.org/wiki/Call_stack" target="_blank">Call Stack</a>, entre otros.</p>
<p><a rel="attachment wp-att-417" href="http://www.flasheves.com/debug-para-ruby-en-netbeans/netbeans02/"><img class="aligncenter size-full wp-image-417" title="netbeans02" src="http://www.flasheves.com/wp-content/uploads/2010/11/netbeans02.jpg" alt="" width="620" height="400" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flasheves.com/debug-para-ruby-en-netbeans/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.flasheves.com/debug-para-ruby-en-netbeans/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=debug-para-ruby-en-netbeans</feedburner:origLink></item>
		<item>
		<title>Ruby on Rails sobre Google App Engine</title>
		<link>http://feedproxy.google.com/~r/Flasheves/~3/EqTUIEmwQjg/</link>
		<comments>http://www.flasheves.com/ruby-on-rails-sobre-google-app-engine/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 19:06:12 +0000</pubDate>
		<dc:creator>eveevans</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[app engine]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.flasheves.com/?p=339</guid>
		<description><![CDATA[Guía para instalar Ruby on Rails sobre Google App Engine]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/appengine/" target="_blank">Google App Engine</a>, es una plataforma que ofrece <a href="http://www.google.com" target="_blank">Google</a> para hospedar aplicaciones web bajo su infraestructura (incluyendo su manejador de base de datos <a href="http://en.wikipedia.org/wiki/BigTable" target="_blank">BigTable</a>). De momento tienen soporte para <a href="http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Python" target="_blank">Python</a> , <a href="http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Java" target="_blank">Java</a> y se espera que la cantidad de lenguajes vaya incrementando. Sin embargo gracias a <a href="http://en.wikipedia.org/wiki/JRuby" target="_blank">JRuby</a> y el proyecto <a href="http://code.google.com/p/appengine-jruby/" target="_blank">no oficial de JRuby sobre el App Engine</a> ya es posible correr también <a href="http://www.ruby-lang.org/en/" target="_blank">Ruby</a>.</p>
<p>Revisando un poco por <a href="http://gist.github.com/486250" target="_blank">ahi</a> me encuentro con que es posible configurar el App Engine para que funcione con  <a href="http://rubyonrails.org/" target="_blank">Ruby on Rails</a>, a continuación detallo los pasos para lograrlo.<span style="color: #999999;"> Por cierto los pasos son para una instalación en Unix (ya que uso Ubuntu :) para trabajar en RoR, por que lo he usado en Windows y es muy inestable)</span></p>
<ol>
<li>Para empezar necesitas tener habilidato el servicio de App Engines  en tu cuenta de Google (y crear una aplicación),  tener instalado en tu computador ruby 1.8.7 o mayor (aunque he leido que desde  ruby 1.8.4 funciona) y <a href="http://rubygems.org/" target="_blank">gem.</a></li>
<li>Instalar la gem de Google App Engine:<br />
<pre class="brush: plain; title: ;"> sudo gem install google-appengine </pre></li>
<li>El App Engine ya soporta el beta de Rails 3.  Sin embargo <a href="https://rails.lighthouseapp.com/projects/8994/milestones/74033-30-rc" target="_blank">como aún se no está disponible el release estable</a>, (aún esta en RC1) te recomiendo usar la última rama el 2. que es Rails 2.3.8<br />
<pre class="brush: plain; title: ;">sudo gem install rails -v &quot;2.3.8&quot; </pre></li>
<li>Como App Engine usa <a href="http://en.wikipedia.org/wiki/BigTable" target="_blank">BigTable</a> para almacenar la información necesitaremos las siguientes gemas<br />
<pre class="brush: plain; title: ;"> sudo gem install rails_dm_datastore
 sudo gem install activerecord-nulldb-adapter</pre></li>
<li>Una aplicación RoR base con algunas configuraciones propias de Google para funcionar, deben descargar el archivo  <a href="http://appengine-jruby.googlecode.com/hg/demos/rails2/rails238_appengine.rb" target="_blank">http://appengine-jruby.googlecode.com/hg/demos/rails2/rails238_appengine.rb</a></li>
<li>Ahora solo deberas correr el archivo que descargaste para hacer la aplicación base:<br />
<pre class="brush: plain; title: ;">ruby rails238_appengine.rb </pre></li>
<li>Modificar el archivo app.yaml para que coinsida con tu aplicación en App Engine<br />
<pre class="brush: plain; title: ;">application: ID-DE-TU-APLICACION
version: 1
runtime: jruby
...
</pre></li>
<li>Listo, ahora puedes subir tu aplicación RoR en App Engine con el comando.<br />
<pre class="brush: plain; title: ;"> ruby script/publish.sh </pre></li>
</ol>
<p><a rel="attachment wp-att-355" href="http://www.flasheves.com/ruby-on-rails-sobre-google-app-engine/ror1/"><img class="aligncenter size-full wp-image-355" title="ror1" src="http://www.flasheves.com/wp-content/uploads/2010/08/ror1.jpg" alt="" width="620" height="400" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flasheves.com/ruby-on-rails-sobre-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.flasheves.com/ruby-on-rails-sobre-google-app-engine/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ruby-on-rails-sobre-google-app-engine</feedburner:origLink></item>
		<item>
		<title>Mantener ULR de WordPress de localhost al servidor de producción</title>
		<link>http://feedproxy.google.com/~r/Flasheves/~3/wKXhUGKCOzI/</link>
		<comments>http://www.flasheves.com/guid-intactos-mediante-hosts/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 00:17:04 +0000</pubDate>
		<dc:creator>eveevans</dc:creator>
				<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[dominio]]></category>
		<category><![CDATA[guid]]></category>
		<category><![CDATA[hosts]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://www.flasheves.com/?p=315</guid>
		<description><![CDATA[Cómo mantener las URLs y GUIDS de Wordpress trabajadas en localhost sin tener que cambiarlas en el servidor de producción mediante el archivo hosts]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-328" href="http://www.flasheves.com/guid-intactos-mediante-hosts/mysqleve/"><img title="mysql" src="http://www.flasheves.com/wp-content/uploads/2010/08/mysqleve.jpg" alt="" width="618" height="155" /></a></p>
<p>Cuando trabajamos con <a href="http://wordpress.org/" target="_blank">WordPress </a>en localhost se almacenan referencias de imágenes y otras opciones de configuración; con nuestro dominio local (ej: http://localhost/sitiodeprueba) que posteriormente debemos actualizar para que direccionen a nuestro dominio real (ej: http://www.dominioreal.com).</p>
<p><a href="http://www.onextrapixel.com/2010/01/30/13-useful-wordpress-sql-queries-you-wish-you-knew-earlier/" target="_blank">Aquí hay un listado de consultas sql</a> que puedes generar para corregir los registros y que dirijan al nuevo dominio. Sin embargo mi recomendación es que cuando inicies tu proyecto, configures el archivo hosts para que el dominio final del sitio este configurado con tu localhost, de esta manera una vez que publiques la página en el servidor de producción no tengas que cambiar las URLs  y GUID almacenados en la base de datos.</p>
<p>Para esto primero debes abrir el archivo hosts:<br />
Si usas Windows este archivo debería esta en <em><strong>C:\Windows\System32\drivers\etc\hosts</strong></em><br />
En las distribuciones de Linux esta en<strong> </strong><em><strong>/etc/hosts</strong></em><br />
Y en los  Mac OS en <em><strong>/private/etc/hosts</strong></em></p>
<p>En el debes insertar en una linea nueva la correspondencia dominio-dirección IP. Como lo que queremos es que el dominio haga referencia a nuestro localhost quedaria algo como:</p>
<p>127.0.0.1      dominioreal.com<br />
127.0.0.1       www.dominioreal.com</p>
<p>Guardamos y listo, ya podemos trabajar de manera local usando el dominio final. Recordemos que una vez configurados los DNS con nuestro proveedor deberemos eliminar esa directiva local para que veamos realmente los cambios en el sitio publicado en el servidor de producción.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flasheves.com/guid-intactos-mediante-hosts/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.flasheves.com/guid-intactos-mediante-hosts/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=guid-intactos-mediante-hosts</feedburner:origLink></item>
		<item>
		<title>Plugin de WordPress para ocultar post en portada</title>
		<link>http://feedproxy.google.com/~r/Flasheves/~3/ILHxDrFHqsM/</link>
		<comments>http://www.flasheves.com/plugin-de-wordpress-para-ocultar-post-en-portada/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 22:26:25 +0000</pubDate>
		<dc:creator>eveevans</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.flasheves.com/?p=284</guid>
		<description><![CDATA[Plugin de Wordpress para omitir del home los post con las etiquetas que se especifiquen ]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-287" href="http://www.flasheves.com/plugin-de-wordpress-para-ocultar-post-en-portada/etiqueta-no-inicio-p/"><img title="etiqueta-no-inicio-p" src="../wp-content/uploads/2010/03/etiqueta-no-inicio-p.jpg" alt="" width="618" height="155" /></a></p>
<p><a href="http://github.com/eveevans/no-etiqueta-inicio" target="_blank">no-etiqueta-inicio</a> es un plugin para <a href="http://www.wordpress.org" target="_blank">WordPress</a> que te permitirá eliminar de la portada (home) los post (entradas) con las etiquetas que especifiques.</p>
<p>Nace por un requerimiento en un proyecto, pero si a alguien le sirve (muy probablemente te sea útil!) <a href="http://github.com/eveevans/no-etiqueta-inicio" target="_blank">aqui esta.</a></p>
<h2><a rel="attachment wp-att-292" href="http://www.flasheves.com/plugin-de-wordpress-para-ocultar-post-en-portada/etiqueta-no-inicio02/"><img class="size-full wp-image-292 alignright" title="etiqueta-no-inicio02" src="http://www.flasheves.com/wp-content/uploads/2010/03/etiqueta-no-inicio02.jpg" alt="" width="163" height="414" /></a>Funcionamiento:</h2>
<p>En el panel &#8220;<span style="color: #008080;">No Etiquetas</span>&#8220;  ingresas el nombre de las etiquetas (separados por coma) de los post que no quieres que aparescan en portada.</p>
<p>Si por ejemplo escribes &#8220;<span style="color: #008080;"><em>viajes, otros</em></span>&#8220;  todos los post que posean esas etiquetas desaparecerán del home, pero si estarán disponibles en las vistas de categorias, etiquetas y otras páginas.</p>
<h2>Instalación:</h2>
<ol>
<li>Descargas el plugin <a href="http://github.com/eveevans/no-etiqueta-inicio/downloads" target="_blank">aqui</a></li>
<li>Descomprimes los archivos</li>
<li>Subes la carpeta  &#8216;no-etiqueta-inicio&#8217;  al directorio de plugin de tu WordPress  &#8216;/wp-content/plugins/&#8217;</li>
<li>Activas el plugin a través del menú &#8216;Plugins&#8217; de WordPress</li>
</ol>
<p><a href="http://github.com/eveevans/no-etiqueta-inicio">Fuente del Plugin en GitHub</a><br />
<a href="http://github.com/downloads/eveevans/no-etiqueta-inicio/no-etiqueta-inicio.rar">Descargar Plugin</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flasheves.com/plugin-de-wordpress-para-ocultar-post-en-portada/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.flasheves.com/plugin-de-wordpress-para-ocultar-post-en-portada/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=plugin-de-wordpress-para-ocultar-post-en-portada</feedburner:origLink></item>
		<item>
		<title>WebService sobre tipo de cambio dólar – córdoba del BCN Nicaragua</title>
		<link>http://feedproxy.google.com/~r/Flasheves/~3/qYbc3ivHujM/</link>
		<comments>http://www.flasheves.com/webservice-sobre-tipo-de-cambio-dolar-cordoba-del-bcn-nicaragua/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 19:13:05 +0000</pubDate>
		<dc:creator>eveevans</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Utilidades]]></category>
		<category><![CDATA[WebService]]></category>
		<category><![CDATA[bcn]]></category>

		<guid isPermaLink="false">http://www.flasheves.com/?p=200</guid>
		<description><![CDATA[Revisión de un Webservice que nos permite obtener el tipo de cambio oficial ( dolar cordoba ) , basados en los datos del Banco Central de Nicaragua, BCN]]></description>
			<content:encoded><![CDATA[<p><img title="dolar" src="../wp-content/uploads/2010/02/dolar.jpg" alt="" width="618" height="155" /></p>
<p>Un tiempo atrás estaba buscando un <a href="http://es.wikipedia.org/wiki/Servicio_web">WebService </a>para obtener el tipo de cambio de dólar &#8211; córdoba, todos inexactos. Y el único lugar para encontrar el cambio oficial es en la página del <a href="http://www.bcn.gob.ni/">Banco Central de Nicaragua </a>sin embargo la única manera de obtenerlo era mediante una<a href="http://www.bcn.gob.ni/estadisticas/mercado_cambios/tipo_cambio/cambio/tipcamb10/avisos/avisofebrero10.htm"> tabla horrible</a> que actualizan mensualmente.</p>
<p>
<script type="text/javascript">
jQuery(document).ready(function(){		
	$.getScript('http://www.flasheves.com/wp-content/uploads/js/jquery.jsonp-1.1.3.min.js', function() {
				   jQuery.jsonp({				 				 
				              url: "http://www.elpueblopresidente.com/servicios/wsmoneda.php?dia&formato=json",
				              callbackParameter: "callback",
				                    success: function(datos) {  						
							$("#tpcambio").text(datos.tipodecambioni[0].cambio.valor+" NIO x USD");
				                    },
				                    error: function() {
				                    }
				   });		
	 });
});
		
</script>
</p>
<p>De esta manera construí un pequeño WebService para que cualquier persona que necesite estos datos en una aplicación, los pueda usar de manera transparente (y estándar). A continuación los detalles del WebService:</p>
<p><em><strong>Tipo de WebService:</strong></em> REST</p>
<p><em><strong>URL:</strong></em> <a href="http://www.elpueblopresidente.com/servicios/wsmoneda.php?">http://www.elpueblopresidente.com/servicios/wsmoneda.php?</a></p>
<p><strong>Parámetros:</strong></p>
<p><em><strong>dia:</strong></em> [Entero]</p>
<p><span class="pequeno14"> Número para identificar el día en que se quiere el tipo de cambio. Si no se pasa parámetros toma el dia actual.</span></p>
<p><strong><em>mes:</em></strong> [Entero]</p>
<p><span class="pequeno14">Número para identificar el mes que se quiere el tipo de cambio. Por defecto toma el mes actual<br />
</span></p>
<p><em><strong>ano:</strong></em> [Entero]</p>
<p><span class="pequeno14">Número para identificar el año que se quiere el tipo de cambio. Por defecto toma el año actual<br />
</span></p>
<p><em><strong>formato: </strong></em> [Cadena] xml  / json / jsonvalido</p>
<p><span class="pequeno14">Cadena para definir el formato de salida del servicio web, &#8220;<span style="text-decoration: underline;">xml</span>&#8221; por defecto, &#8220;<span style="text-decoration: underline;">jsonvalido</span>&#8221; para json válido, y &#8220;<span style="text-decoration: underline;">json</span>&#8221; para salida json contenido entre paréntesis &#8220;( )&#8221;  <span class="pequeno14" style="color: #888888;">*Necesario por algunos framework javascript.</span></span></p>
<p><em><strong>limite: </strong></em>[Entero]</p>
<p><span class="pequeno14">Número para definir la cantidad de registros consecutivos a partir la fecha especificada.<br />
</span></p>
<h2>Ejemplos de uso:</h2>
<p><a href="http://www.elpueblopresidente.com/servicios/wsmoneda.php">http://www.elpueblopresidente.com/servicios/wsmoneda.php</a></p>
<p><a href="http://www.elpueblopresidente.com/servicios/wsmoneda.php?dia">http://www.elpueblopresidente.com/servicios/wsmoneda.php?dia</a></p>
<p><a href="http://www.elpueblopresidente.com/servicios/wsmoneda.php?dia=15&amp;mes=9&amp;ano=2009">http://www.elpueblopresidente.com/servicios/wsmoneda.php?dia=15&amp;mes=9&amp;ano=2009</a></p>
<p><a href="http://www.elpueblopresidente.com/servicios/wsmoneda.php?formato=json">http://www.elpueblopresidente.com/servicios/wsmoneda.php?formato=json</a></p>
<p><a href="http://www.elpueblopresidente.com/servicios/wsmoneda.php?formato=jsonvalido">http://www.elpueblopresidente.com/servicios/wsmoneda.php?formato=jsonvalido</a></p>
<p><a href="http://www.elpueblopresidente.com/servicios/wsmoneda.php?limite=7">http://www.elpueblopresidente.com/servicios/wsmoneda.php?limite=7</a></p>
<h6><span style="color: #888888;"><em>* El WebService no tiene una definición WSDL</em></span></h6>
<p><em> </em></p>
<h6><span style="color: #888888;"><em>*</em><em>* La información del WebService es obtenida a partir de la tabla de tipo de cambio que actualiza el <a href="http://www.bcn.gob.ni/">www.bcn.gob.ni</a> mensualmente,mediante un robot que parsea los datos y los ingresa una base de datos ( fuera de BCN )</em></span></h6>
]]></content:encoded>
			<wfw:commentRss>http://www.flasheves.com/webservice-sobre-tipo-de-cambio-dolar-cordoba-del-bcn-nicaragua/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		<feedburner:origLink>http://www.flasheves.com/webservice-sobre-tipo-de-cambio-dolar-cordoba-del-bcn-nicaragua/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=webservice-sobre-tipo-de-cambio-dolar-cordoba-del-bcn-nicaragua</feedburner:origLink></item>
	</channel>
</rss><!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->

