<?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:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>blog - jordivillar.com</title>
    <link>http://jordivillar.com/blog</link>
    <description>jordivillar.com, desarrollador web</description>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/jordivillar" /><feedburner:info uri="jordivillar" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <title>Nieve en Barcelona</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/hUKmuiJ6504/14</link>
      <description>&lt;p&gt;Raro es que nieve en Barcelona pero más aún que cuaje de esta manera. Pero que se le va a hacer, nada que no se pueda solucionar con una guerra de bolas.&lt;/p&gt;
&lt;object width="600" height="450"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10008640&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ffffff&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=10008640&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=ffffff&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="450"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/hUKmuiJ6504" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/14</guid>
    <feedburner:origLink>http://jordivillar.com/posts/14</feedburner:origLink></item>
    <item>
      <title>Gestión de roles en Rails</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/WIXGgtxdh-A/13</link>
      <description>&lt;p&gt;Hasta ahora nunca me había topado con una aplicación que necesitara la gestión de roles de una manera exhaustiva -para algo más que el típico admin.&lt;/p&gt;

&lt;p&gt;Recopilando información me encontre con &lt;a href="http://github.com/stffn/declarative_authorization"&gt;declarative_authorization&lt;/a&gt; y es una maravilla en pocos pasos tienes un sistema de gestión de roles de lo más sencillo.&lt;/p&gt; 

&lt;p&gt;Como todo queda lo suficiente claro en su README, solo voy a añadir como podéis hacer para personalizar el mensaje de "No autorizado", ya que el por defecto no queda demasiado integrado en layout.&lt;/p&gt;

&lt;p&gt;Basta con añadir el siguiente método en vuestro ApplicationController:&lt;/p&gt;
&lt;pre name="code" class="ruby"&gt;#/app/controllers/application_controller.rb
protected
  def permission_denied
    flash[:error] = _("Sorry, you are not allowed to access that page.")
    redirect_back_or_default root_url
  end&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/WIXGgtxdh-A" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/13</guid>
    <feedburner:origLink>http://jordivillar.com/posts/13</feedburner:origLink></item>
    <item>
      <title>Desconectando</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/jlGuGJWBvzw/12</link>
      <description>&lt;p&gt;Todo el mundo sabe que no hay nada como cambiar un poco de aires y hacer un buen viaje para volver con las pilas recargadas, con ganas de hace mil cosas.&lt;/p&gt;
&lt;p&gt;Pero no es lo mismo saberlo que llevarlo a cabo, hace poco que he vuelto de un viaje de relax total a &lt;strong&gt;Cancún&lt;/strong&gt; y, sinceramente, dudo que haya algo que te haga olvidarte de tus obligaciones tan facilmente.&lt;/p&gt;
&lt;p&gt;Ahora solo queda volver a la realidad, ponerse las pilas y empezar a trabajar duro.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/jlGuGJWBvzw" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/12</guid>
    <feedburner:origLink>http://jordivillar.com/posts/12</feedburner:origLink></item>
    <item>
      <title>Un día más, un día menos</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/E_CJudyT_tg/11</link>
      <description>&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/E_CJudyT_tg" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/11</guid>
    <feedburner:origLink>http://jordivillar.com/posts/11</feedburner:origLink></item>
    <item>
      <title>MVC, haciendo el desarrollo fácil</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/eBqKWnTXwcc/10</link>
      <description>&lt;p&gt;Sinceramente, el primer &lt;strong&gt;framework MVC&lt;/strong&gt; que usé fue &lt;strong&gt;Ruby On Rails&lt;/strong&gt;. Dejando de banda el lenguaje en si, este tipo de &lt;strong&gt;frameworks&lt;/strong&gt; aceleran el desarrollo de cualquier web de manera increíble.&lt;/p&gt;
&lt;p&gt;Quizás la filosofía cuesta entenderla un poco, pero una vez te acostumbras a separar Modelo/Vista/Controlador no entiendes porque no lo has usado toda tu vida.&lt;/p&gt;
&lt;p&gt;El caso es que hasta el momento no había tenido que elegir un framework de estas características para un desarrollo en &lt;strong&gt;PHP&lt;/strong&gt;, había jugado bastante con &lt;a href="http://cakephp.org/" title="cakephp"&gt;CakePHP&lt;/a&gt; pero nada del otro mundo.&lt;/p&gt;
&lt;p&gt;Hoy me he visto obligado a tener que elegir uno para empezar a desarrollar una web, buscando he llegado a la conclusión de que los peces gordos del PHP son &lt;a href="http://framework.zend.com/" title="Zend Framework"&gt;Zend Framework&lt;/a&gt;, &lt;a href="http://www.symfony-project.org/" title="symfony | Web PHP Framework"&gt;Symfony&lt;/a&gt; y &lt;strong&gt;CakePHP&lt;/strong&gt;. Al ser un sitio sencillo, que podría cubrir perfectamente un Drupal -me niego a usar un &lt;strong&gt;CMS&lt;/strong&gt;- he elegido &lt;strong&gt;CakePHP&lt;/strong&gt;, curva de aprendizaje baja y fácil instalación.&lt;/p&gt;
&lt;p&gt;Por el momento, ningún problema, la comunidad es amplia y los pocos obstáculos que me he encontrado los he podido solucionar sin problemas.&lt;/p&gt;
&lt;p&gt;Este texto es solo un aviso, no os asustéis si veis más PHP de lo normal por aquí, no me he cambiado de bando, simplemente cumplo requisitos del cliente, &lt;em&gt;what else?&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/eBqKWnTXwcc" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/10</guid>
    <feedburner:origLink>http://jordivillar.com/posts/10</feedburner:origLink></item>
    <item>
      <title>Integrando Feedburner con tus feeds</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/ggU8PzP7IuI/9</link>
      <description>&lt;p&gt;&lt;a href="http://feedburner.com" title="feedburner"&gt;&lt;strong&gt;Feedburner&lt;/strong&gt;&lt;/a&gt; es una potente aplicación para gestionar tus feeds que pasó a manos de Google hace ya algún tiempo.&lt;/p&gt;
&lt;p&gt;Integrarla en cualquier CMS como &lt;strong&gt;Wordpress&lt;/strong&gt; es de lo más sencillo, ya que hay plugins para hacerlo.&lt;/p&gt;
&lt;p&gt;Pero si está en una aplicación Rails -como es el caso de este blog- la manera más sencilla de hacerlo es configurando tu servidor, si tienes acceso, o atacando directamente desde el controlador.&lt;/p&gt;
&lt;p&gt;Lo que hay que hacer es redireccionar a todos los usuarios al feed de &lt;strong&gt;Feedburner&lt;/strong&gt;, excepto si el que entra es este último para recoger nuestro RSS.&lt;/p&gt;
&lt;p&gt;Como el daemon de &lt;strong&gt;Feedburner&lt;/strong&gt; entra con un UserAgent especial, la manera más simple de realizar esto es la siguiente:&lt;/p&gt;
&lt;pre name="code" class="ruby"&gt;def feed        
  unless request.env['HTTP_USER_AGENT'] =~ /feedburner/i 
    redirect_to 'http://feeds.feedburner.com/jordivillar'    
  else
    @posts = Post.find(:all,
                       :order =&gt; 'created_at DESC',
                       :conditions =&gt; 'published = true')
    render :layout =&gt; false
  end
end&lt;/pre&gt;
&lt;p&gt;Y de esta forma ya tenéis vuestro sitio listo, para que todos los lectores del feed, pasen a través de &lt;strong&gt;Feedburner&lt;/strong&gt; y contabilizarlos en las estadísticas.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/ggU8PzP7IuI" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/9</guid>
    <feedburner:origLink>http://jordivillar.com/posts/9</feedburner:origLink></item>
    <item>
      <title>Arround the world</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/tf06DIuzQoY/8</link>
      <description>&lt;p&gt;Está claro, a la mayoría nos gusta viajar. Y para quien no lo sepa, yo no soy una excepción.&lt;/p&gt;
&lt;p&gt;El mes de diciembre tuve la suerte de poder viajar a &lt;strong&gt;Londres&lt;/strong&gt; y a &lt;strong&gt;Dublín&lt;/strong&gt;, por suerte antes de los temporales.&lt;/p&gt;
&lt;p&gt;Ciudades que tienen su encanto y que cualquiera debería visitar, ya sea por el simple hecho de recorrer mundo o para desconectar de la rutina. Pero una cosa que clara, ninguna de estas ciudades son comparables con la sensación que produce visitar &lt;strong&gt;Berlín&lt;/strong&gt; o &lt;strong&gt;Amsterdam&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Ahora que vuelvo a estar en casa, espero poder volver a cuidar de un blog personal como se lo merece y no tenerlo abandonado como está pasando últimamente.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/tf06DIuzQoY" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/8</guid>
    <feedburner:origLink>http://jordivillar.com/posts/8</feedburner:origLink></item>
    <item>
      <title>Tiempo para soñar</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/_NoMFw0SneE/7</link>
      <description>&lt;p&gt;Para proyectos personales siempre se saca tiempo de donde sea y esta no es una excepción.&lt;/p&gt;
&lt;p&gt;Creo que es una buena idea y si tenemos suerte puede que llegue a ser algo grande.&lt;/p&gt;
&lt;p&gt;Tiempo al tiempo, como mínimo estoy aprendiendo bastante sobre Ruby on Rails y con eso, de momento, me conformo.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/_NoMFw0SneE" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/7</guid>
    <feedburner:origLink>http://jordivillar.com/posts/7</feedburner:origLink></item>
    <item>
      <title>Facebook Connect en Rails</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/PWsqNi1dQZ8/6</link>
      <description>&lt;p&gt;&lt;a href="http://developers.facebook.com/connect.php"&gt;Facebook Connect&lt;/a&gt; es la API que Facebook pone a la disposición de todos los desarrolladores para poder conectar la red social con cualquier aplicación, ya sea de internet o de escritorio.&lt;/p&gt;
&lt;p&gt;Se usa principalmente para que cualquier usuario se pueda loguear en tu aplicación si que haga falta el molesto proceso de registro. Para adaptarla a una nueva aplicación que estoy creando usé un &lt;a href="http://www.madebymany.co.uk/tutorial-for-restful_authentication-on-rails-with-facebook-connect-in-15-minutes-00523"&gt;tutorial donde te explica como adaptarlo a Restful Authentication&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Una vez adaptado todo, un usuario cualquiera puede resgistrarse a la antigua o loguearse usando Facebook Connect, incluso usando las dos maneras conservando el mismo usuario.&lt;/p&gt;
&lt;p&gt;Eso si, si ya tienes tu aplicación montada habrá usuarios sin el email_hash, un campo usado para comparar el email del usuario de tu aplicación con el de Facebook.&lt;/p&gt;
&lt;p&gt;Pero esto no es un problema, solo hace falta pasar una tarea rake para que actualice ese campo a todos los usuarios y así puedan usar las dos maneras de login sin problemas.&lt;/p&gt;
&lt;pre name="code" class="ruby"&gt;namespace :user do
  desc "This task will register all the not facebook registered users"
  task :register_at_fb =&gt; :environment do
    cont = 0
    usuarios = User.find(:all, 
                         :conditions =&gt; 'email_hash IS NULL', 
                         :order =&gt; 'id DESC')
    usuarios.each{ |u|
          puts "Registering at facebook #{u.email}...."
          begin
            u.register_user_to_fb
            puts "#{u.email_hash}"
          rescue
            puts "ERROR!"
          end
          cont += 1
          puts "(#{cont} / #{usuarios.size})"
        }
  end
end&lt;/pre&gt;
&lt;p&gt;&lt;small&gt;Código de Jorge Díaz, desarrollador de &lt;a href="http://fresqui.com"&gt;Fresqui&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Después de esto no tenéis excusa para permitir que los nuevos usuarios accedan a vuestros sitios de una manera más fácil y rápida.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/PWsqNi1dQZ8" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/6</guid>
    <feedburner:origLink>http://jordivillar.com/posts/6</feedburner:origLink></item>
    <item>
      <title>Mejor que en casa</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/KoiipRfZ5RI/5</link>
      <description>&lt;p&gt;Todos estamos hartos de ver las oficinas de Google, Tuenti y demás empresas modernas. Con áreas de trabajo grandes y acogedoras, grandes salas de descanso, sillones para relajarse, videojuegos, billares, futbolines...&lt;/p&gt;
&lt;p&gt;No entiendo como no todas las empresas se han dado cuenta de que un empleado contento produce más y mejor, algo que conseguirían con horarios flexibles y una par de salas donde relajarse durante el horario de trabajo.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.fulldhamaal.com/image-gallery/a-tour-to-facebook-office-21659.htm" title="oficinas facebook"&gt;Más imágenes&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/KoiipRfZ5RI" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/5</guid>
    <feedburner:origLink>http://jordivillar.com/posts/5</feedburner:origLink></item>
    <item>
      <title>Tu gran salto</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/eYfBx-ZOIbA/2</link>
      <description>&lt;p&gt;Supongo que cualquier desarrollador web pasa por este dulce momento, el momento en el que una web que tu desarrollas pasa a recibir una gran cantidad de visitas.&lt;/p&gt;
&lt;p&gt;Es el sueño y a la vez la pesadilla de cualquiera, algo hecho por ti lo visitan miles de personas al día, tu trabajo es admirado pero también criticado. El más mínimo fallo en la confección del sitio puede tumbar el servidor o incluso dejar un agujero para que cualquiera desmantele tu pequeña obra de arte.&lt;/p&gt;
&lt;p&gt;Yo lo he conseguido, he dado el salto. Después de estar unos años desarrollando webs que como mucho recibían cien mil usuarios al mes he pasado a recibirlos en un día.&lt;/p&gt;
&lt;p&gt;La situación da algo de vértigo pero es gratificante saber que tu trabajo sirve de algo...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/eYfBx-ZOIbA" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/2</guid>
    <feedburner:origLink>http://jordivillar.com/posts/2</feedburner:origLink></item>
    <item>
      <title>Bienvenidos</title>
      <link>http://feedproxy.google.com/~r/jordivillar/~3/ihP6lz-ZEY0/1</link>
      <description>&lt;p&gt;Empiezo este blog como espacio donde ir comentando curiosidades que vaya descubriendo/creando en mi vida laboral como desarrollador web.&lt;/p&gt;
&lt;p&gt;Para ello he creado este sitio en Ruby on Rails con el administrador Typus por detrás que facilita mucho el trabajo y la gestión del contenido.&lt;/p&gt;
&lt;p&gt;Aún faltan añadir muchas características como comentarios en el blog, tags, una portada con un contenido decente, CV... pero espero que esté disponible en breve.&lt;/p&gt;
&lt;p&gt;Espero que todo vaya bien y siga adelante durante mucho tiempo.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/jordivillar/~4/ihP6lz-ZEY0" height="1" width="1"/&gt;</description>
      <guid isPermaLink="false">http://jordivillar.com/posts/1</guid>
    <feedburner:origLink>http://jordivillar.com/posts/1</feedburner:origLink></item>
  </channel>
</rss>
