<?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>Jesús Navarrete</title>
	
	<link>http://www.jenaiz.com</link>
	<description>jenaiz.com</description>
	<lastBuildDate>Thu, 14 Jan 2010 12:00:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/jenaiz" /><feedburner:info uri="jenaiz" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Extraño error de Passenger por RubyGems</title>
		<link>http://feedproxy.google.com/~r/jenaiz/~3/hsPdA6Rr0Dw/</link>
		<comments>http://www.jenaiz.com/2009/07/23/extrano-error-de-passenger-por-rubygems/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 22:52:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[ror]]></category>
		<category><![CDATA[rubygems]]></category>

		<guid isPermaLink="false">http://blog.jenaiz.com/?p=333</guid>
		<description><![CDATA[Intentando configurar  un entorno multistage en dreamhost para un proyecto personal y tras haber logrado el despliegue para mi configuración de staging, al comprobar la aplicación descubro que Passenger me da un error. Dado que según él no es un error de aplicación, me recomienda comprobar los logs del servidor web, para ver la [...]]]></description>
			<content:encoded><![CDATA[<p>Intentando configurar  un entorno multistage en <a href="http://www.dreamhost.com">dreamhost</a> para un proyecto personal y tras haber logrado el despliegue para mi configuración de staging, al comprobar la aplicación descubro que <a href="http://www.modrails.com/">Passenger</a> me da un error. Dado que según él no es un error de aplicación, me recomienda comprobar los logs del servidor web, para ver la traza del mismo.</p>
<p>Por si os sirve de ayuda, en <a href="http://blog.dreamhosters.com/kbase/index.cgi?area=400">dreamhost los logs del servidor</a>, se encuentran en:</p>
<blockquote><p>/home/username/logs/yourdomain.com/http.#####/access.log<br />
/home/username/logs/yourdomain.com/http.#####/error.log</p></blockquote>
<p>Los tenía localizados, pero no lograba ver nada en <em>error.log</em>, y en <em>access.log</em> sólo veía mis peticiones, lo normal.</p>
<p>Hace tiempo que no actualizo el servidor, y pensaba continuamente en los posibles errores que podría haber con respecto a versiones de gemas utilizadas, por lo que después de redesplegar varias veces intentando reajustar, seguía sin lograr ver la traza del error.</p>
<p>Tras comparar con mi instalación en local, decido buscar a fondo en el servidor, compruebo versiones de gemas, configuración, tenía cambios importantes con respecto a una versión anterior, a parte de estar utilizando una versión mucho más reciente de <a href="http://www.rubyonrails.org">Rails</a>, pero seguía sin funcionar y sin ver nada en las trazas. Cierto es que tenía algunas cosillas que no estaban del todo bien, y que gracias a esto he ido corrigiendo, pero nada que apuntase en la dirección del erro. Así que ejecuto un simple:</p>
<blockquote><p>rake -T</p></blockquote>
<p>si todo funciona bien con los plugins y las gemas, me dará el listado de tareas, simple; y he aquí que localizo la fuente del error! La versión de <a href="http://rubygems.org">RubyGems</a> es demasiado antigua para esta versión de Rails, la verdad es que las trazas inexistentes no han sido de gran ayuda para ver este error <img src='http://www.jenaiz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Mi versión era la 1.2.0 y se requería mínimo la 1.3.</p>
<p>Decidido a solucionarlo, intento actualizar, un simple:</p>
<blockquote><p>gem update &#8211;system</p></blockquote>
<p>&#8230; no soluciona nada, dado que responde con un:</p>
<blockquote><p>Nothing to Update</p></blockquote>
<p>Así que probamos la siguiente opción:</p>
<blockquote><p>gem install rubygems-update<br />
update_rubygems</p></blockquote>
<p>El problema es que ya de partida la instalación de rubygems-update, versión 1.3.5, arroja unos errores, aparentemente no preocupantes al terminar de instalarse, sin embargo al intentar ejecutar el segundo comando, nos da un error, siento no haber anotado la traza.</p>
<p>Navegando en internet, descubro que dicha versión tiene ese problema, que está anotado en los foros, pero que no ha sido resuelto, y la recomendación es: instalación manual; ante esto me han entrado las dudas y la simple pereza. Si actualizaba, ¿existirían problemas con mis gemas instaladas en mi directorio personal? Tendría que reinstalarlo todo, en principio suponía que no, pero no estaba del todo seguro, cuando sin embargo me he acordado de algo.</p>
<p>En las últimas versiones de <a href="http://rubygems.org">RubyGems</a>, si no antepones <strong>sudo</strong>, al comando de instalación, la copia se hace en la home del usuario que instala y todo funciona sin problemas, para él. Así que me he decidido por quitar todas las configuraciones que existían en mis ficheros acerca del mi propia instalación de <a href="http://rubygems.org">RubyGems</a> y he logrado comprobar que los chicos de <a href="http://www.dreamhost.com">dreamhost</a> ya habían actualizado a la última versión. Así que ni corto ni perezoso he pasado de actualizar manualmente mi copia, y eso sí, continuaré utilizando mi instalación de gemas en mi cuenta de usuario, así podré controlar que gemas instalo y que versiones, dado que no siempre he encontrado las gemas que necesitaba instaladas, es por esto por lo que empezó todo (&#8230;y por no poder ejecutar <em>sudo</em> <img src='http://www.jenaiz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2009/07/23/extrano-error-de-passenger-por-rubygems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jenaiz.com/2009/07/23/extrano-error-de-passenger-por-rubygems/</feedburner:origLink></item>
		<item>
		<title>Migración total del sistema</title>
		<link>http://feedproxy.google.com/~r/jenaiz/~3/3vYY_n8inE4/</link>
		<comments>http://www.jenaiz.com/2009/06/01/migracion-total-del-sistema/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 18:21:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.jenaiz.com/?p=326</guid>
		<description><![CDATA[Para todos aquellos que seguís este blog, y continuáis ahí después de la última actualización&#8230; decir que se va a realizar una migración total del sistema, esto es: servidor, sistema de blog, actualización de los feeds y un pequeño cambio en el dominio.
Los cambios:
- El sistema de gestión del blog, hasta ahora serendipity, deja de [...]]]></description>
			<content:encoded><![CDATA[<p>Para todos aquellos que seguís este blog, y continuáis ahí después de la última actualización&#8230; decir que se va a realizar una migración total del sistema, esto es: servidor, sistema de blog, actualización de los feeds y un pequeño cambio en el dominio.</p>
<p>Los cambios:</p>
<p>- El sistema de gestión del blog, hasta ahora <a href="http://www.s9y.org">serendipity</a>, deja de ser el alma del blog y pasamos a <a href="http://www.wordpress.com">Wordpress</a>. Todos los datos, las imágenes, etc. han sido migrados ya.</p>
<p>- Los feeds. Con respecto a esto hace tiempo que empezé a utiliar feedburner, pero tras la compra por parte de google, he migrado la cuenta tal como me recomendaba el sistema y a partir de ahora hay una nueva dirección:</p>
<p><a href="http://feeds2.feedburner.com/jenaiz">http://feeds2.feedburner.com/jenaiz</a></p>
<p>aunque según cuentan el sistema redireccionará automáticamente a los antiguos. Os recomendaría pasaros a la nueva dirección.</p>
<p>- El dominio, un pequeño cambio. La dirección del blog ahora colgará de:</p>
<p><a href="http://blog.jenaiz.com">http://blog.jenaiz.com</a></p>
<p>así el dominio general dará cabida a otras cosillas que iréis viendo.</p>
<p>- Cambiamos de servidor, nos pasamos a utilizar el servicio de dreamhost a ver que tal resulta.</p>
<p>Golpes de tambor&#8230;.</p>
<p>- Habrá un nuevo diseño, que espero os guste más que el actual. Un poco más moderno, y con colores que permitirán leer los post con mejor contraste.</p>
<p>Sólo decir que la gestión del dominio cambiará también de servidores, por lo que puede que existan algunos problemas en 24 &#8211; 48 horas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2009/06/01/migracion-total-del-sistema/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jenaiz.com/2009/06/01/migracion-total-del-sistema/</feedburner:origLink></item>
		<item>
		<title>Instanciar clase desde String en Ruby</title>
		<link>http://feedproxy.google.com/~r/jenaiz/~3/VWpgQrxDpLw/</link>
		<comments>http://www.jenaiz.com/2008/11/26/instanciar-clase-desde-string-en-ruby/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 10:13:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[instanciar]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=84</guid>
		<description><![CDATA[Investigando un poco el comportamiento de acts_as_scribe, me surgió la necesidad de instanciar un clase conociendo el nombre de la misma. Algo que en java conocía como se realizaba:
Object o = Class.forName("className").newInstance()
lo curioso es que vi que no necesitaba esta solución, que mi problema era otro  , sin embargo la curiosidad pudo más que [...]]]></description>
			<content:encoded><![CDATA[<p>Investigando un poco el comportamiento de <a href="http://github.com/linkingpaths/acts_as_scribe/tree/master">acts_as_scribe</a>, me surgió la necesidad de instanciar un clase conociendo el nombre de la misma. Algo que en java conocía como se realizaba:</p>
<pre name="code" class="java">Object o = Class.forName("className").newInstance()</pre>
<p>lo curioso es que vi que no necesitaba esta solución, que mi problema era otro <img src='http://www.jenaiz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , sin embargo la curiosidad pudo más que la necesidad.</p>
<p>Esperaba utilizar para ello la misma clase: <a href="http://www.ruby-doc.org/core/classes/Class.html">Class</a>, sin embargo descubrí que no podía hacerlo así. En Ruby el camino es distinto. Un post en <a href="http://stackoverflow.com/questions/157480/dynamically-instantiate-a-ruby-class-similar-to-java">stackoverflow</a> me llevó a encontrar una solución múltiple, aquí las distintas posibilidades:</p>
<pre name="code" class="ruby">Object::const_get('String').new()

class_name = 'String'
eval(class_name).new

Module.const_get('Array').new</pre>
<p>Y un helper:</p>
<pre name="code" class="ruby">"String".constantize.new</pre>
<p><strong>Module.const_get</strong> no funciona con clases anidadas en módulos, digamos que no admite la sintaxis Admin::Folder, debido a que sólo reconoce sintaxis válidas para dar nombre a una constante.</p>
<p><strong>eval</strong>, por el contrario sí permite nombres de clases con namespaces, aunque sufrimos un decrimento en el rendimiento.</p>
<p>Podríamos comprobar el rendimiento de todas ellas con un simple script:</p>
<pre name="code" class="ruby">#class_instanciation.rb
#!/usr/bin/env ruby
#
#  Created by  on 2008-11-24.

require 'benchmark'
require 'qualified_const_get'

n = 1000000

Benchmark.bmbm(10) do |rpt|
rpt.report("simple") do
n.times {Array.new}
end

rpt.report("Object::const_get") do
n.times {Object::const_get('Array').new()}
end

rpt.report("Kernel.const_get") do
n.times {Kernel.const_get('Array').new}
end

rpt.report("Kernel.qualified_const_get") do
n.times {Kernel.qualified_const_get('Array').new}
end

rpt.report("eval") do
n.times {eval('Array').new}
end

# no funciona!!
#rpt.report("eval") do
#  n.times {"String".constantize.new}
#end
end</pre>
<pre name="code" class="ruby">#qualified_const_get.rb
module Kernel
def qualified_const_get(str)
path = str.to_s.split('::')
from_root = path[0].empty?
if from_root
from_root = []
path = path[1..-1]
else
start_ns = ((Class === self)||(Module === self)) ? self : self.class
from_root = start_ns.to_s.split('::')
end
until from_root.empty?
begin
return (from_root+path).inject(Object) { |ns,name| ns.const_get(name) }
rescue NameError
from_root.delete_at(-1)
end
end
path.inject(Object) { |ns,name| ns.const_get(name) }
end
end</pre>
<p>Los resultados obtenidos los podéis ver en la siguiente gráfica:</p>
<p><img src="http://farm4.static.flickr.com/3218/3061040154_93fb9041dd.jpg" alt="" /></p>
<p>en ella podemos apreciar que si utilizamos <strong>const_get</strong> se tarda aproximadamente 2 veces más que con la creación normal; que el uso de <strong>eval</strong> nos hace emplear 5 veces más tiempo y que sin duda la implementación de <strong>qualified_const_get</strong> no es nada buena, dado que nos hace emplear unos 10sg! osea unas 15 veces más.</p>
<p>La recomendación sería utilizar <strong>const_get</strong> siempre que se pueda, es decir mientras nuestra clase no tenga namespaces y <strong>eval</strong> cuando no quede más remedio. El caso de <strong>qualified_const_get</strong>, me parece poco apropiado para cualquier caso.</p>
<p>Por otro lado, el caso de <strong>constantize</strong>, no terminó de funcionar, por lo que es imposible compararlo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2008/11/26/instanciar-clase-desde-string-en-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jenaiz.com/2008/11/26/instanciar-clase-desde-string-en-ruby/</feedburner:origLink></item>
		<item>
		<title>Rails 2.2 liberado</title>
		<link>http://feedproxy.google.com/~r/jenaiz/~3/D7fU2bPSyIA/</link>
		<comments>http://www.jenaiz.com/2008/11/24/rails-22-liberado/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 17:55:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=81</guid>
		<description><![CDATA[Desde el viernes pasado tenemos disponible la versión 2.2 de Rails, por lo que ya podemos disfrutar de innumerables características que llevábamos tiempo viendo en el Edge de Rails.
Algunas de las características que me han llamado más la atención por el uso inmediato que voy a hacer de ellas o por su potencial futuro:
- Internacionalización [...]]]></description>
			<content:encoded><![CDATA[<p>Desde el <a href="http://weblog.rubyonrails.org/2008/11/21/rails-2-2-i18n-http-validators-thread-safety-jruby-1-9-compatibility-docs">viernes pasado</a> tenemos disponible la versión 2.2 de Rails, por lo que ya podemos disfrutar de innumerables características que llevábamos tiempo viendo en el <a href="http://wiki.rubyonrails.org/rails/pages/EdgeRails">Edge de Rails</a>.</p>
<p>Algunas de las características que me han llamado más la atención por el uso inmediato que voy a hacer de ellas o por su potencial futuro:</p>
<p>- <strong>Internacionalización i18n.</strong> Aún existiendo numerosas opciones para <a href="http://wiki.rubyonrails.org/rails/pages/Internationalization">internacionalización</a> (tal como gettext, globalize, etc), sin duda es una de las características que más se le echaban en falta a Rails desde hacía tiempo. Nosotros en <a href="http://www.toghq.com/">Tog</a> habíamos empezado a internacionalizar utilizando esta característica que estaba disponible en el <a href="http://wiki.rubyonrails.org/rails/pages/EdgeRails">Edge</a>.</p>
<p>- <strong>Compatibilidad con Ruby 1.9 y con JRuby.</strong> Mucho es el trabajo que se ha realizado para utilizar las nuevas características del lenguaje mejorando el rendimiento y adaptándose a la nueva versión de Ruby.</p>
<p>- <strong>Documentación.</strong> En este sentido caben destacar las <a href="http://guides.rubyonrails.org/">guías</a>, donde se está realizando una labor de documentación increíble. Aquí podemos apuntar un nombre de alguien que a todos os sonará por su labor: <a href="http://advogato.org/person/fxn/diary.html">Xavier Noria</a>. Sin duda uno de los puntitos para haber sido elegido <a href="http://www.flickr.com/photos/svet/3034624246">personaje Rails 2008</a> <img src='http://www.jenaiz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>- <strong>Mejoras en HTTP.</strong> Soporte de <em>ETag</em> y <em>Last-Modified</em> que responderán con una respuesta vacía si la página no ha cambiado.</p>
<p>- <strong>Thread Safety.</strong> Threads en rails; sin duda un tema complejo, para el cual os recomiendo leer una <a href="http://blog.headius.com/2008/08/qa-what-thread-safe-rails-means.html">explicación</a> realizada por <a href="http://blog.headius.com/">Charles Nutter</a>.</p>
<p>- <strong>Migraciones transaccionales.</strong> Desde ahora los errores producidos en una migración harán que la migración no se ejecute, como hasta ahora, pero también que quede registrado todo el proceso de la misma como inválido, restableciendo el estado de la base de datos a la migración anterior.</p>
<p>- <strong>Pool de conexiones.</strong> Podemos manejar un <em>pool de conexiones</em> para conectarnos con la base de datos, fácilmente configurable en nuestro <em>database.yml</em>.</p>
<p>- <strong>Resources con acciones específicas.</strong> Hasta ahora cuando creabas los <strong>resources</strong> automáticamente para un modelo se creaban las 7 acciones por defecto: <em>index</em>, <em>show</em>, <em>create</em>, <em>new</em>, <em>edit</em>, <em>update</em> y <em>destroy</em>. Sin embargo esto tiene un gasto de memoria extra y crea una lógica que en ocasiones no tienes porqué usar, por lo que ahora puedes seleccionar cuales te interesan:</p>
<pre name="code" class="ruby">map.resources :articles, <img src='http://www.jenaiz.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> nly =&gt; [:index, :show]</pre>
<p>- <strong>Action Mailer:</strong> Ahora dispone de soporte para <em>layouts</em>; tal como el resto de nuestras vistas.</p>
<p>- Se incluye también soporte para cuentas de <strong>Gmail</strong>, aunque esto requiere de la versión 1.8.7 de ruby.</p>
<p>Existen más características e información ampliada de todo lo aquí mostrado en la <a href="http://guides.rubyonrails.org/2_2_release_notes.html">nota publicada</a> de esta <em>release</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2008/11/24/rails-22-liberado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jenaiz.com/2008/11/24/rails-22-liberado/</feedburner:origLink></item>
		<item>
		<title>Reflexión tras la Conferencia Rails</title>
		<link>http://feedproxy.google.com/~r/jenaiz/~3/oNAnNdj1Y2M/</link>
		<comments>http://www.jenaiz.com/2008/11/19/reflexia%c2%b3n-tras-la-conferencia-rails/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 10:27:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[conferencia rails]]></category>
		<category><![CDATA[ror]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=83</guid>
		<description><![CDATA[A finales de la semana pasada, se celebró en Madrid la Conferencia Rails 2008, tal como os comenté, estuve allí conociendo gente, intercambiando opiniones y descubriendo lo que se está haciendo con Rails.
Este año he podido disfrutar asistiendo ambos días, además he disfrutado como más me hubiese gustado hacerlo siempre. Dado que desde hace un [...]]]></description>
			<content:encoded><![CDATA[<p>A finales de la semana pasada, se celebró en Madrid la <a href="http://www.conferenciarails.org/">Conferencia Rails 2008</a>, tal como os comenté, estuve allí conociendo gente, intercambiando opiniones y descubriendo lo que se está haciendo con Rails.</p>
<p>Este año he podido disfrutar asistiendo ambos días, además he disfrutado como más me hubiese gustado hacerlo siempre. Dado que desde hace un tiempo he estado trabajando más intensamente con Rails, y este ha sido el primer evento relacionado con el tema al que he podido asistir, eso si no contamos el <a href="http://www.toghq.com/info/event20081009">evento de Tog</a> en octubre <img src='http://www.jenaiz.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Como es habitual, aporto mi pequeña gota de feedback y como también es normal, no lo haré de todas las charlas, sino de aquellas que más me impactaron o que por una causa u otra más <em>recuerdos</em> han dejado en mi. Para los que se queden con ganas de más, les recuerdo que la organización grabó las charlas y que seguramente pronto estarán disponibles los vídeos como en otras ocasiones.</p>
<p><strong>Apertura y keynote por <a href="http://www.hashref.com/">fxn</a>.</strong> Una manera de abrir la conferencia singular, con referencias a hechos que originaron cambios. Personas que fueron contra corriente, con formas de pensar y/o hacer diferentes&#8230; Somos reacios al cambio, somos <em>animales</em> de costumbres y nos cuesta aceptar algo nuevo, pero cuando el cambio es llevado a cabo, cuando nos dejamos embaucar por lo extraño, sin duda disfrutamos como niños. Rails sin dudarlo es una <a href="http://www.amazon.com/Tipping-Point-Little-Things-Difference/dp/0316346624">pequeña cosa que ha hecho una gran diferencia</a>. Frameworks hay muchos, intentos de hacerlo de otra forma también, pero corrientes como la que vivimos no han habido tantas. Lo que más me maravilla de esta comunidad es que muchos hemos llegado a ella con experiencia sobre otras, con lecciones aprendidas a fuego y veo cosas que me gustan bastante.</p>
<p><strong>Caso de éxito: &#8220;Tog: Open Web, Social Networks y cintas de video&#8221;.</strong> Una explicación de la visión sobre los objetos sociales y sobre lo que una red social debería crearse. Intentando mostrar el aporte que <a href="http://www.toghq.com/">Tog</a> podría hacer con respecto a crear una red social. No sé si fue la charla, si oir a Aitor en estado catarroso o si definitivamente <a href="http://www.toghq.com/">Tog</a> tiene el tirón que parece. El caso es que el último día las votaciones de mejor proyecto del año 2008 recayó sobre él XD, y eso que fue liberado a ¡finales de septiembre! La verdad es que el trabajo detrás de esta primera inflexión que supuso la liberación del código se remonta a bastantes meses atrás. Antes hubo pruebas, proyectos, afinamiento de ideas y tras todo eso la creación de lo que ahora mismo es. Todo ello entorno a la idea que nos mueve de los objetos sociales y su valor.</p>
<p><strong>Rails HOT or NOT.</strong> Os recomiendo verla en video <img src='http://www.jenaiz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . No había utilizado todos los plugins que se comentaron, en ocasiones no podía decir nada malo por uno de ellos, pero sin duda descubrí opciones, opiniones en base a experiencias y espero pronto leer las conclusiones en la lista de <a href="http://lists.simplelogica.net/mailman/listinfo/ror-es">ror-es</a>; además de invertir algo de tiempo en cacharrear con alguno de ellos.</p>
<p><strong>Speed dating.</strong> Un experimento que pudo hacer que nos relacionásemos <em>gente con proyectos en busca de gente</em> y <em>gente en busca de proyectos</em>, aunque tubo un mayor aporte de empresas que buscaban personal para contratar que lo yo personalmente hubiese querido encontrar. Aún así, una grata experiencia.</p>
<p><strong>Caso de éxito: &#8220;b5map: Maps on Rails&#8221;.</strong> La verdad es que ya conocía la web desde hacía tiempo, conozco Aitor por sus post en <a href="http://www.jaiku.com">jaiku</a>, pero desconocía las <strong>tiranteces</strong> que parece haber entre los ayuntamientos. Algo que me llamó mucho la atención, fue descubrir que el proyecto se había llevado a cabo aunando a freelances y pequeñas empresas, algo loable viniendo de una administración pública.</p>
<p><strong>Keynote por Obie.</strong> Una forma de ver el mundo laboral y empresarial diferente a lo que se ve en este país. Sin duda oír hablar a <a href="http://obiefernandez.com/">Obie</a> diciendo que son buenos desarrollando, que les gusta y que eso es a lo que se dedican y es lo que le transmiten a sus clientes; lo cual despertó algún comentario en los asistentes, dada la comparación con lo que vivimos aquí en España. Aplicación de <a href="http://en.wikipedia.org/wiki/Pair_programming">Pair Programming</a> todo el tiempo, un ambiente laboral agradable, invitaciones a personas destacadas dentro del mundo de la programación para que interaccionen con la gente que trabaja en <a href="http://www.hashrocket.com/">Hashrocket</a>, etc etc. Fue agradable de escuchar y creo que sería increíble trabajar en esos ambientes (al lado de la playa <img src='http://www.jenaiz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) y de con esas premisas. Aunque sin duda mi conclusión actual es que no estamos tan lejos de conseguirlo, y que la nueva cultura de empresas pequeñas haciendo software creada entorno a Rails, podría llevarnos a eso.</p>
<p>Por comentar, me queda por ver a fondo la charla de <a href="http://www.eparreno.com/">Emili Parreño</a> sobre ActiveRecord, echarle un vistazo a <a href="http://francescesplugas.com/pages/typus">Typus</a>, probar <a href="http://aws.amazon.com/ec2/">EC2 de Amazon</a>, hacerse con uno de los aparatos que vimos en: <strong>Hardware Hacking en Ruby y casi en Rails</strong> para <em>iluminar los deploys</em> y definitivamente: hacer <a href="http://rubyhoedown2008.confreaks.com/05-bryan-liles-lightning-talk-tatft-test-all-the-f-in-time.html">TAFT</a> <img src='http://www.jenaiz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2008/11/19/reflexia%c2%b3n-tras-la-conferencia-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jenaiz.com/2008/11/19/reflexia%c2%b3n-tras-la-conferencia-rails/</feedburner:origLink></item>
		<item>
		<title>En la conferencia Rails</title>
		<link>http://feedproxy.google.com/~r/jenaiz/~3/mPkiPT6I8yI/</link>
		<comments>http://www.jenaiz.com/2008/11/14/en-la-conferencia-rails/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 14:03:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[conferencia rails]]></category>
		<category><![CDATA[evento]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=82</guid>
		<description><![CDATA[Desde ayer estoy disfrutando de lo que se está viendo en la conferencia rails; por tercer año consecutivo se está celebrando en Madrid y por primera vez para mi puedo asistir.
En breve mi feedback de la misma.
Si alguno estáis por allí y aún no nos hemos visto, no dudéis soy tímido pero no muerdo  [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-101" title="Asistente a la Conferencia Rails 2008" src="http://farm4.static.flickr.com/3475/3775389988_d17188850b.jpg" alt="Asistente a la Conferencia Rails 2008" width="110" height="66" />Desde ayer estoy disfrutando de lo que se está viendo en la conferencia rails; por tercer año consecutivo se está celebrando en Madrid y por primera vez para mi puedo asistir.</p>
<p>En breve mi feedback de la misma.</p>
<p>Si alguno estáis por allí y aún no nos hemos visto, no dudéis soy tímido pero no muerdo <img src='http://www.jenaiz.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2008/11/14/en-la-conferencia-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jenaiz.com/2008/11/14/en-la-conferencia-rails/</feedburner:origLink></item>
		<item>
		<title>Internship 2008 y flatee.com</title>
		<link>http://feedproxy.google.com/~r/jenaiz/~3/BaWbwaunUAA/</link>
		<comments>http://www.jenaiz.com/2008/10/03/internship-2008-y-flateecom/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 09:00:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[flatee]]></category>
		<category><![CDATA[internship]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=79</guid>
		<description><![CDATA[A poco de iniciar mi actividad como freelance, comenzamos un proyecto para aprender los entresijos de rails y a la vez enfrentarnos a otro tipo de problemas que no tenían que ver tanto con programación. Como recordaréis estoy hablando de flatee.com.
Pues bien, he de anunciar que el Internship se ha dado por clausurado y el [...]]]></description>
			<content:encoded><![CDATA[<p>A poco de iniciar mi actividad como freelance, comenzamos un proyecto para aprender los entresijos de rails y a la vez enfrentarnos a otro tipo de problemas que no tenían que ver tanto con programación. Como recordaréis estoy hablando de <a href="http://www.jenaiz.com/index.php?/archives/135-El-comienzo-de-un-nuevo-proyecto-flatee.com.html">flatee.com</a>.</p>
<p>Pues bien, he de anunciar que el <a href="http://weblog.linkingpaths.com/2008/06/02/linking-internship-2008/">Internship</a> se ha dado por clausurado y el resultado no ha sido nada alentador.</p>
<p>La verdad es que se juntaron varias cosas, como ya <a href="http://weblog.linkingpaths.com/2008/10/03/decepcion-con-el-linking-internship-2008/trackback/">apuntan</a> en el blog de Linking. Una vez más se ha evidenciado <strong>la importancia de la dedicación total</strong>, es difícil que un proyecto propio o sideproject se convierta en una realidad cuando el tiempo empleado para ello es muy limitado.</p>
<p>Creo sinceramente que el momento en el tiempo no fue el mejor (verano); que se junto con el comienzo de nuestra nueva actividad; que quizás es bastante cierto que faltó algo de presión por tener un entregable; que nuestra dedicación no era completa y se juntó con otras actividades que colapsaron nuestro día a día; y quizás otros factores que no soy capaz de ver en este momento. Todo esto suena a <em>excusas explicatorias</em>, pero nada más lejos; lo importante es el análisis de lo ocurrido y sacar conclusiones, para aprender de la experiencia.</p>
<p>Para mi es un trago amargo pensar en el resultado, no se puede decir que de la experiencia no haya sacado nada, pues no estaría diciendo la verdad. Sin embargo he querido concluir totalmente con ello y en principio dado que no podía comprometerme una vez más y mentirme a mi mismo y a mis compañeros sobre el tiempo real que podría dedicar, he decicido <em>no continuar activamente</em> con el proyecto. No descarto volver a hacer más cosas en el proyecto, pero a día de hoy no tengo la certeza suficiente de cuánto puedo dedicarme a él.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2008/10/03/internship-2008-y-flateecom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jenaiz.com/2008/10/03/internship-2008-y-flateecom/</feedburner:origLink></item>
		<item>
		<title>Una red social para desarrolladores: debug_mode=ON</title>
		<link>http://feedproxy.google.com/~r/jenaiz/~3/rWpZAOJ-SCE/</link>
		<comments>http://www.jenaiz.com/2008/10/02/una-red-social-para-desarrolladores-debug_modeon/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 12:45:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[desarrolladores]]></category>
		<category><![CDATA[redes sociales]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=78</guid>
		<description><![CDATA[La verdad es que estos días he estado bastante en silencio, pero más por falta de tiempo que otra cosa, me disculpo, y empiezo por noticias que alegran nuestro trabajo. Hace un par de semanas fue lanzado debug_mode=ON, un portal para desarrolladores, que pretende crear una red social entorno a los mismos.
La idea quizás tiene [...]]]></description>
			<content:encoded><![CDATA[<p>La verdad es que estos días he estado bastante en silencio, pero más por falta de tiempo que otra cosa, me disculpo, y empiezo por noticias que alegran nuestro trabajo. Hace un par de semanas fue lanzado <a href="http://www.debugmodeon.com/">debug_mode=ON</a>, un portal para desarrolladores, que pretende crear una red social entorno a los mismos.</p>
<p>La idea quizás tiene bastantes alicientes aunque a mi me gustaría destacar un par de ellos:</p>
<p>- Una página de referencia <em>independiente</em> del lenguaje, del sistema, de la plataforma&#8230; da igual si eres programador o administrador o como ellos mismos dicen <em>informático en general</em>, <strong>todos tienen cabida en el mismo espacio</strong>.</p>
<p>- Un lugar donde escribir artículos puede darte beneficios, pues debug_mode=ON ha optado por que los obtengas, basta con que añadas tu código de <a href="https://www.google.com/adsense/login/en_US/">Google Adsense</a> y listo.</p>
<p>El hecho de que me haya retrasado con el post, ha tenido un efecto curioso, porque he podido intercambiar impresiones con alguno de los miembros del proyecto, en concreto con <a href="http://www.gimenete.net">Alberto Gimeno</a>. La verdad es que la idea ha tenido repercusión en algunos medios, tales como: <a href="http://barrapunto.com/articles/08/09/22/224258.shtml">barrapunto</a>, <a href="http://www.javahispano.org/contenidos/es/debug_modeon_nueva_red_social_de_programadores_en_espanol/">javaHispano</a> y algún otro, lo cual ha hecho más <em>emocionante</em> el arranque inicial.</p>
<p>La tecnología utilizada, para los que aún no lo hayáis adivinado es <a href="http://code.google.com/appengine/">Google App Engine</a>, lo cual ha sido enriquecedor a un punto y ha traido algún quebradero de cabeza que otro, dado que han tenido que superar bastantes <a href="http://groups.google.com/group/google-appengine/browse_thread/thread/6ff62bbb2ee9f373?hl=en&amp;pli=1">problemas de over quota</a> en los momentos iniciales, aunque lo <a href="http://www.debugmodeon.com/item/45851/como-resolvimos-los-problemas-de-carga">superaron</a>. Como curiosidad, coincidiendo con el <a href="http://code.google.com/intl/es_ALL/events/developerday/2008/home.html">Google Developer Day</a>, que se celebró en Madrid el pasado día 25 de septiembre (al que en el último momento no puede asistir) tuvieron la oportunidad de charlar con los ingenieros de Google sobre la herramienta de Google y sobre la página, además de poder enseñársela a algunas personas que asistieron al evento.</p>
<p>Desde aquí desearles mucha suerte y fuerzas para tirar de la idea.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2008/10/02/una-red-social-para-desarrolladores-debug_modeon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.jenaiz.com/2008/10/02/una-red-social-para-desarrolladores-debug_modeon/</feedburner:origLink></item>
		<item>
		<title>Nube de tags</title>
		<link>http://feedproxy.google.com/~r/jenaiz/~3/GiEYbHOeDro/</link>
		<comments>http://www.jenaiz.com/2008/09/15/nube-de-tags/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 08:00:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[ror]]></category>
		<category><![CDATA[tags]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=74</guid>
		<description><![CDATA[El otro día cuando hablábamos de poder taggear modelos, os puse el ejemplo de las nubes de tags que vemos en innumerables ocasiones, sin embargo sólo avanzamos hasta disponer de un modelo tageable.
Ahora os voy a mostrar cómo se podría construir la nube de tags partiendo de lo que hicimos.
Lo primero, es que nuestra aplicación [...]]]></description>
			<content:encoded><![CDATA[<p>El otro día cuando hablábamos de poder taggear modelos, os puse el ejemplo de las nubes de tags que vemos en innumerables ocasiones, sin embargo sólo avanzamos hasta disponer de un modelo tageable.</p>
<p>Ahora os voy a mostrar cómo se podría construir la nube de tags partiendo de lo que <a href="http://www.jenaiz.com/index.php?/archives/144-Como-anadir-tags-a-nuestros-modelos.html#comments">hicimos</a>.</p>
<p>Lo primero, es que nuestra aplicación necesita utilizar un método llamado tag_cloud, que es el que se va a encargar de pintar la nube de tags, para ello hacemos que nuestro AplicationHelper incluya el helper que contiene el método:</p>
<pre name="code" class="ruby">module ApplicationHelper
  include TagsHelper
end</pre>
<p>Nos basta con añadir esto al helper del controlador concreto, pero dada la implementación del plugin creo que querréis crear más nubes de tags para otros modelos, por lo que he preferido tener disponible estos métodos para toda la aplicación.</p>
<p>Ahora Necesitamos cargar en nuestro controlador lo que va a ser mostrado en la vista:</p>
<pre name="code" class="ruby">@tags = Entry.tag_counts</pre>
<p>Y por último nos vamos a la vista y añadimos la nube de tags:</p>
<pre name="code" class="ruby">&lt;% tag_cloud @tags, %w(css1 css2 css3 css4 css5) do |tag, css_class| %&gt;
    &lt;%= link_to tag.name, { :action =&gt; :tag, :id =&gt; tag.name }, :class =&gt; css_class %&gt;
  &lt;% end %&gt;</pre>
<p>para que esta pueda tener el efecto adecuado, necestitáis definir los siguiente estilos en la vista:</p>
<pre name="code" class="css">.css1 { font-size: 1.0em; }
.css2 { font-size: 1.4em; }
.css3 { font-size: 1.6em; }
.css4 { font-size: 1.8em; }
.css5 { font-size: 2em; }</pre>
<p>estos deberíais adaptarlos en tamaño según vuestro diseño, ¿sencillo verdad?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2008/09/15/nube-de-tags/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.jenaiz.com/2008/09/15/nube-de-tags/</feedburner:origLink></item>
		<item>
		<title>Cómo añadir tags a nuestros modelos</title>
		<link>http://feedproxy.google.com/~r/jenaiz/~3/2tUNq-5qfxA/</link>
		<comments>http://www.jenaiz.com/2008/09/13/ca%c2%b3mo-aa%c2%b1adir-tags-a-nuestros-modelos/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 15:45:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[ror]]></category>
		<category><![CDATA[tags]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=73</guid>
		<description><![CDATA[Estoy seguro que más de una vez habéis visto nubes de tags en variedad de sitios webs, a la vez que las habéis utilizado, pues bien, existe un plugin en rails que puede haceros las delicias, para poder tagear cualquier modelo con el que estéis trabajando.
La historia de este plugin, es que David Heinemeier Hansson [...]]]></description>
			<content:encoded><![CDATA[<p>Estoy seguro que más de una vez habéis visto nubes de tags en variedad de sitios webs, a la vez que las habéis utilizado, pues bien, existe un plugin en rails que puede haceros las delicias, para poder tagear cualquier modelo con el que estéis trabajando.</p>
<p>La historia de este plugin, es que <a href="www.loudthinking.com/ ">David Heinemeier Hansson</a> creó un plugin para poder poner tags a sus modelos, llamado: <a href="http://wiki.rubyonrails.org/rails/pages/Acts+As+Taggable+Plugin">acts_as_taggable,</a> sin embargo alguien decidió hacerle unos añadidos para convertirlo en más actual, haciendo que el nuevo plugin tuviese:</p>
<blockquote><p>[...] extras such as tests, smarter tag assignment, and tag cloud calculations.</p></blockquote>
<p>Este nuevo plugin recibió el nombre de <a href="http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids">acts_as_taggable_on_steroids</a> y es obra de Jonathan Viney.</p>
<p>Para instalarlo, nuestro primer paso debe ser:</p>
<blockquote><p>script/plugin install http://svn.viney.net.nz/things/rails/plugins/acts_as_taggable_on_steroids</p></blockquote>
<p>Tras esto, debemos generar una migración para poder crear la tablas en las que se guardaran los datos:</p>
<blockquote><p>script/generate acts_as_taggable_migration</p></blockquote>
<p>Esto nos genera:</p>
<blockquote><p>004_acts_as_taggable_migration.rb</p></blockquote>
<p>el número no tiene porqué coincidir con el vuestro; aplicamos la migración:</p>
<blockquote><p>rake db:migrate</p></blockquote>
<p>Y ahora ya sólo nos queda hacer que nuestro controlador sea <em>tageable</em>:</p>
<pre name="code" class="ruby">class Entry &lt; ActiveRecord::Base
  acts_as_taggable
end</pre>
<p>Para añadir tags en el formulario de edición o en el de creación de nuestro modelo concreto, en nuestro caso: entries/new.html.erb y entries/edit.html.erb, basta con la siguiente línea de código:</p>
<pre name="code" class="ruby">&lt;%= f.text_field :tag_list %&gt;</pre>
<p>así nuestras entradas utilizarán tags y se guardarán.</p>
<p>Nuestro modelo cuenta con una serie de métodos para jugar con tags. Uno que debéis esperar, al ver como he llamado al <em>text_field</em> de los tags, es sin duda:</p>
<pre name="code" class="ruby">entry.tag_list = "ruby, rails"
entry.save</pre>
<p>Con él añadimos los tags a entry, tras grabarlo.</p>
<p>Podemos añadir a una lista ya existente:</p>
<pre name="code" class="ruby">entry.tag_list.add("languages", "article")</pre>
<p>borrar una etiqueta concreta:</p>
<pre name="code" class="ruby">entry.tag_list.remove("ruby")</pre>
<p>Podemos encontrar las entradas taggeadas con unas determinadas tags:</p>
<pre name="code" class="ruby">Entry.find_tagged_with('ruby, rails')</pre>
<p>Esto nos traera objetos que contenga cualquiera de las dos tags, si queremos que contengan las dos o más, tenemos que usar match_all.</p>
<pre name="code" class="ruby">Entry.find_tagged_with('ruby, rails', :match_all =&gt; true)</pre>
<p>Por defecto el delimitador es una coma, si deseamos cambiarlo, también tenemos esa opción:</p>
<pre name="code" class="ruby">TagList.delimiter = " "</pre>
<p>añadido al config/environment.rb, quedaría cambiado el delimitador.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2008/09/13/ca%c2%b3mo-aa%c2%b1adir-tags-a-nuestros-modelos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.jenaiz.com/2008/09/13/ca%c2%b3mo-aa%c2%b1adir-tags-a-nuestros-modelos/</feedburner:origLink></item>
	</channel>
</rss>
