<div id='error'>
			<p class='wpdberror'><strong>WordPress database error:</strong> [Table &#039;wp_ivr.wp_post2cat&#039; doesn&#039;t exist]<br />
			<code>SELECT post_id, category_id FROM wp_post2cat WHERE post_id IN (75,74,73,71,69,68,66,65,64,59)</code></p>
			</div><?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.4" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Mi viaje en tren</title>
	<link>http://entren.ivanyvenian.com</link>
	<description>Viajando con RoR desde México hasta...</description>
	<pubDate>Wed, 20 Feb 2008 22:52:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<item>
		<title>Parche para Rails: Rutas predeterminadas en español</title>
		<link>http://entren.ivanyvenian.com/parche-para-rails-rutas-predeterminadas-en-espanol/</link>
		<comments>http://entren.ivanyvenian.com/parche-para-rails-rutas-predeterminadas-en-espanol/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 22:52:45 +0000</pubDate>
		<dc:creator>viajero</dc:creator>
		<div id='error'>
			<p class='wpdberror'><strong>WordPress database error:</strong> [Table &#039;wp_ivr.wp_post2cat&#039; doesn&#039;t exist]<br />
			<code>SELECT post_id, category_id FROM wp_post2cat WHERE post_id IN (75)</code></p>
			</div>
		<guid isPermaLink="false">http://entren.ivanyvenian.com/parche-para-rails-rutas-predeterminadas-en-espanol/</guid>
		<description><![CDATA[Hace poco en Rails edge agregaron la opción de crear rutas para recursos con nombre de controlador y ruta del controlador distintas. Me explico mejor así:
[ruby]
map.resources :messages, :as => &#8216;mensajes&#8217;
# Antes para obtener algo similar hacias esto (y esto no creaba una ruta &#8220;RESTful&#8221;):
map.connect &#8216;mensajes/:id/:action&#8217;, :controller => &#8216;messages&#8217;
[/ruby]
Esto te permite tener rutas como /mensajes/&#8230; en [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco en Rails edge agregaron la opción de crear rutas para recursos con nombre de controlador y ruta del controlador distintas. Me explico mejor así:</p>
<p>[ruby]<br />
map.resources :messages, :as => &#8216;mensajes&#8217;<br />
# Antes para obtener algo similar hacias esto (y esto no creaba una ruta &#8220;RESTful&#8221;):<br />
map.connect &#8216;mensajes/:id/:action&#8217;, :controller => &#8216;messages&#8217;<br />
[/ruby]</p>
<p>Esto te permite tener rutas como /mensajes/&#8230; en lugar de /messages/&#8230; y a la vez aprovechando métodos &#8220;RESTful&#8221;.</p>
<p>El problema ahora era que tendrias rutas como &#8220;/mensajes/new&#8221; y &#8220;/mensajes/edit&#8221;&#8230; eso no se ve muy bien.</p>
<p>Pregunte en la lista de Rails Core y me dijeron que podía crear un parche, y es lo que hice, pero ahora necesito que lo prueben y voten por el para que lo incluyan en Rails. Aquí esta el ticket:</p>
<p>&#8220;http://dev.rubyonrails.org/ticket/11181&#8243;:http://dev.rubyonrails.org/ticket/11181</p>
<p>Si no tienen inconvenientes, agregen un comentario con el texto &#8220;+1&#8243;.</p>
<p>Bueno, todavía ni he explicado como funciona. Al aplicar el parche, tienes dos opciones para cambiar los nombres de las rutas:</p>
<p>[ruby]<br />
# En environment.rb:<br />
config.action_controller.resources_path_names = { :new => &#8216;nuevo&#8217;, :edit => &#8216;editar&#8217; }</p>
<p># En routes.rb:<br />
map.resources :schools, :as => &#8216;escuelas&#8217;, :path_names => { :new => &#8216;nueva&#8217; }<br />
[/ruby]</p>
<p>Como vez, puedes definir los nombres predeterminados en environment.rb, pero luego puedes sobreescribirlos en tus rutas.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://entren.ivanyvenian.com/parche-para-rails-rutas-predeterminadas-en-espanol/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Script para abrir Konsole con pestañas para Rails</title>
		<link>http://entren.ivanyvenian.com/script-para-abrir-konsole-con-pestanas-para-rails/</link>
		<comments>http://entren.ivanyvenian.com/script-para-abrir-konsole-con-pestanas-para-rails/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 21:30:52 +0000</pubDate>
		<dc:creator>viajero</dc:creator>
		<div id='error'>
			<p class='wpdberror'><strong>WordPress database error:</strong> [Table &#039;wp_ivr.wp_post2cat&#039; doesn&#039;t exist]<br />
			<code>SELECT post_id, category_id FROM wp_post2cat WHERE post_id IN (74)</code></p>
			</div>
		<guid isPermaLink="false">http://entren.ivanyvenian.com/script-para-abrir-konsole-con-pestanas-para-rails/</guid>
		<description><![CDATA[Bueno, ya que voy encarrerado&#8230;
Esto lo dividí en 2 scripts porque si lo hago en uno, en mi máquina no me funciona (kGutsy x64)&#8230;
rails_konsole:
[code]
#!/bin/bash
PIDS=`pidof konsole`
konsole &#8211;script &#038;
ARGS=&#8221;"
for pid in $PIDS; do
  ARGS=&#8221;${ARGS} -o ${pid}&#8221;
done
PID=`pidof ${ARGS} konsole`
sleep 2
application=&#8221;Application&#8221;
if [ -n &#8220;$1&#8243; ]; then
  application=&#8221;$1&#8243;
fi
dcop konsole-${PID} session-1 renameSession $application
dcop konsole-${PID} konsole newSession
dcop konsole-${PID} session-2 renameSession [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno, ya que voy encarrerado&#8230;</p>
<p>Esto lo dividí en 2 scripts porque si lo hago en uno, en mi máquina no me funciona (kGutsy x64)&#8230;</p>
<p>rails_konsole:<br />
[code]<br />
#!/bin/bash<br />
PIDS=`pidof konsole`</p>
<p>konsole &#8211;script &#038;</p>
<p>ARGS=&#8221;"<br />
for pid in $PIDS; do<br />
  ARGS=&#8221;${ARGS} -o ${pid}&#8221;<br />
done<br />
PID=`pidof ${ARGS} konsole`</p>
<p>sleep 2</p>
<p>application=&#8221;Application&#8221;<br />
if [ -n &#8220;$1&#8243; ]; then<br />
  application=&#8221;$1&#8243;<br />
fi</p>
<p>dcop konsole-${PID} session-1 renameSession $application</p>
<p>dcop konsole-${PID} konsole newSession<br />
dcop konsole-${PID} session-2 renameSession Server</p>
<p>dcop konsole-${PID} konsole newSession<br />
dcop konsole-${PID} session-3 renameSession Console</p>
<p>dcop konsole-${PID} konsole newSession<br />
dcop konsole-${PID} session-4 renameSession AutoTest</p>
<p>rails_konsole_dcops $PID<br />
[/code]</p>
<p>rails_konsole_dcops:<br />
[code]<br />
#!/bin/bash<br />
dcop konsole-${1} konsole activateSession session-1</p>
<p>dcop konsole-${1} session-2 sendSession &#8220;ruby script/server&#8221;<br />
dcop konsole-${1} session-3 sendSession &#8220;ruby script/console&#8221;<br />
dcop konsole-${1} session-4 sendSession &#8220;autotest -rails&#8221;<br />
[/code]</p>
<p>Vaya, se ve horrible y hay un error. Asegúrate de copiar la versión de texto plano y cambiar el guión largo antes de &#8220;script&#8221; por dos guiones cortos&#8230; si ya se, que flojera.</p>
<p>Básicamente lo que hace es que al ejecutar &#8216;rails_konsole&#8217;, te abre una instancia de Konsole con cuatro pestañas, una libre, una ejecutando script/server, otra script/console, y la última para autotest (gem install zentest).</p>
<p>Esto lo ejecutas en el directorio de tu aplicación, y opcionalmente le pasas el nombre de tu aplicación como parámetro (rails_konsole MiApp) para que le de el nombre apropiado a la primer pestaña (para que no te confundas si tienes abiertos varios proyectos).
</p>
]]></content:encoded>
			<wfw:commentRSS>http://entren.ivanyvenian.com/script-para-abrir-konsole-con-pestanas-para-rails/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Plantilla NetBeans para controladores REST</title>
		<link>http://entren.ivanyvenian.com/plantilla-netbeans-para-controladores-rest/</link>
		<comments>http://entren.ivanyvenian.com/plantilla-netbeans-para-controladores-rest/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 21:21:06 +0000</pubDate>
		<dc:creator>viajero</dc:creator>
		<div id='error'>
			<p class='wpdberror'><strong>WordPress database error:</strong> [Table &#039;wp_ivr.wp_post2cat&#039; doesn&#039;t exist]<br />
			<code>SELECT post_id, category_id FROM wp_post2cat WHERE post_id IN (73)</code></p>
			</div>
		<guid isPermaLink="false">http://entren.ivanyvenian.com/plantilla-netbeans-para-controladores-rest/</guid>
		<description><![CDATA[¿A que creyeron que estaba muerto? Pues no&#8230; Esto de tener un trabajo y aparte mantener un blog me parecia mucho más fácil antes de iniciarlo&#8230;
En fin, les paso una plantilla para NetBeans que sirve para generar una serie de acciones REST estándar. Tu solo necesitas introducir dos variables y el nombre del modelo.
La idea [...]]]></description>
			<content:encoded><![CDATA[<p>¿A que creyeron que estaba muerto? Pues no&#8230; Esto de tener un trabajo y aparte mantener un blog me parecia mucho más fácil antes de iniciarlo&#8230;</p>
<p>En fin, les paso una plantilla para NetBeans que sirve para generar una serie de acciones REST estándar. Tu solo necesitas introducir dos variables y el nombre del modelo.</p>
<p>La idea (y práctiamente todo el código) me la robe de &#8220;Softies on Rails&#8221;:http://www.softiesonrails.com/2007/12/14/textmate-snippet-for-restful-controller.</p>
<p>&#8220;Behold&#8221;:</p>
<p>[ruby]<br />
def index<br />
  @${items} = ${Model}.find :all</p>
<p>  respond_to do |format|<br />
    format.html # index.html.erb<br />
    format.xml  { render :xml => @${items} }<br />
  end<br />
end</p>
<p>def show<br />
  @${item} = ${Model}.find(params[:id])</p>
<p>  respond_to do |format|<br />
    format.html # show.html.erb<br />
    format.xml  { render :xml => @${item} }<br />
  end<br />
end</p>
<p>def new<br />
  @${item} = ${Model}.new</p>
<p>  respond_to do |format|<br />
    format.html # new.html.erb<br />
    format.xml  { render :xml => @${item} }<br />
  end<br />
end</p>
<p>def edit<br />
  @${item} = ${Model}.find(params[:id])<br />
end</p>
<p>def create<br />
  @${item} = ${Model}.new(params[:${item}])</p>
<p>  respond_to do |format|<br />
    if @${item}.save<br />
      flash[:notice] = &#8216;$2 was successfully created.&#8217;<br />
      format.html { redirect_to(@${item}) }<br />
      format.xml  { render :xml => @${item}, :status => :created, :location => @${item} }<br />
    else<br />
      format.html { render :action => &#8220;new&#8221; }<br />
      format.xml  { render :xml => @${item}.errors, :status => :unprocessable_entity }<br />
    end<br />
  end<br />
end</p>
<p>def update<br />
  @${item} = ${Model}.find(params[:id])</p>
<p>  respond_to do |format|<br />
    if @${item}.update_attributes(params[:${item}])<br />
      flash[:notice] = &#8216;${Model} was successfully updated.&#8217;<br />
      format.html { redirect_to(@${item}) }<br />
      format.xml  { head :ok }<br />
    else<br />
      format.html { render :action => &#8220;edit&#8221; }<br />
      format.xml  { render :xml => @${item}.errors, :status => :unprocessable_entity }<br />
    end<br />
  end<br />
end</p>
<p>def destroy<br />
  @${item} = ${Model}.find(params[:id])<br />
  @${item}.destroy</p>
<p>  respond_to do |format|<br />
    format.html { redirect_to(admin_${items}_url) }<br />
    format.xml  { head :ok }<br />
  end<br />
end<br />
[/ruby]</p>
<p>Por ahí le falta una arroba (@) en la acción &#8220;create&#8221;. Sí se la puse, pero ahi arriba no se porque no aparece. Consideralo un acertijo.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://entren.ivanyvenian.com/plantilla-netbeans-para-controladores-rest/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Documentando tu aplicación Rails</title>
		<link>http://entren.ivanyvenian.com/documentando-tu-aplicacion-rails/</link>
		<comments>http://entren.ivanyvenian.com/documentando-tu-aplicacion-rails/#comments</comments>
		<pubDate>Tue, 21 Aug 2007 23:20:07 +0000</pubDate>
		<dc:creator>viajero</dc:creator>
		<div id='error'>
			<p class='wpdberror'><strong>WordPress database error:</strong> [Table &#039;wp_ivr.wp_post2cat&#039; doesn&#039;t exist]<br />
			<code>SELECT post_id, category_id FROM wp_post2cat WHERE post_id IN (71)</code></p>
			</div>
		<guid isPermaLink="false">http://entren.ivanyvenian.com/documentando-tu-aplicacion-rails/</guid>
		<description><![CDATA[Hoy leí algo muy interesante para documentar mockups o diseños de interfase usando algo llamado &#8220;Documentos de Descripción del Diseño&#8221;:http://www.thinkvitamin.com/features/design/deliverables-that-work-design-description-documents (o algo así).
Me pareció muy interesante, y se me ocurrió implementarlo para documentar código fuente de Rails.
Creo que este tipo de documentación puede ser muy útil cuando estas desarrollando, o incluso para mostrar un prototipo [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy leí algo muy interesante para documentar mockups o diseños de interfase usando algo llamado &#8220;Documentos de Descripción del Diseño&#8221;:http://www.thinkvitamin.com/features/design/deliverables-that-work-design-description-documents (o algo así).</p>
<p>Me pareció muy interesante, y se me ocurrió implementarlo para documentar código fuente de Rails.</p>
<p>Creo que este tipo de documentación puede ser muy útil cuando estas desarrollando, o incluso para mostrar un prototipo al cliente, porque puede ver muy fácilmente que esperar que haga la aplicación en cada paso.</p>
<p>Escribí un crudo plugin para hacer esto, y su objetivo es documentar las acciones de los controladores. Espero esta imagen te lo explique mejor:</p>
<p><a class="imagelink" href="http://entren.ivanyvenian.com/wp-content/uploads/2007/08/rd3.png" title="Pantalla de panel RD3"><img id="image70" src="http://entren.ivanyvenian.com/wp-content/uploads/2007/08/rd3.thumbnail.png" alt="Pantalla de panel RD3" /></a></p>
<p>Ese panel aparece en todas las acciones que tienen documentación definida. En el ejemplo anterior podría ser así:</p>
<p>[ruby]<br />
class SesionesController < ApplicationController<br />
  # DD: Validar credenciales de usuario.<br />
  def iniciar_sesion<br />
    # DD: *Inicio de sesión:*<br />
    # # El usuario escribe su login y clave de acceso<br />
    # # El usuario da clic en el botón "Iniciar sesión"<br />
    # # El sistema válida la información. Si es correcta el usuario es llevado a su cuenta.<br />
    hacer_algo_util<br />
    # DD: *Errores:*<br />
    # p. *El usuario escribe un login incorrecto*<br />
    # # Se muestra un error en el campo de login<br />
    # DD: *El usuario escribe una clave incorrecta*<br />
    # # Se muestra un error en el campo de clave<br />
    mas_codigo_rails<br />
    etc<br />
  end<br />
end<br />
[/ruby]</p>
<p>El panel puedes arrastrarlo por la pantalla, "minimizarlo" (doble clic en el título), o cerrarlo por completo (X).</p>
<p>Escribí el plugin muy rápido, así que esta horrendo. Quiero escuchar opiniones antes de "embellecerlo". Notarán quienes tengan experiencia escribiendo "parsers" que yo no la tengo, así que una ayudadita no caería mal :-)</p>
<p>La instalación no es tan rápida como la de otros plugins, pero de momento creo que es suficiente. Primero baja "este archivo":/wp-content/uploads/2007/08/rd3.tar.gz y descomprimelo en la carpeta vendor/plugins. Dentro de *vendor/plugins/rd3/lib* encontrarás una hoja de estilo. *Copiala a public/stylesheets*.</p>
<p>Luego en el layout de cada controlador (o en el de la aplicación), agrega lo siguiente en la sección *"head"*:</p>
<p>[ruby]<br />
<%= stylesheet_link_tag 'rd3' %><br />
<%= javascript_include_tag :defaults %><br />
[/ruby]</p>
<p>Ahora escribe la documentación que quieras para tus controladores con la siguiente guía:</p>
<p>[ruby]<br />
class SesionesController < ApplicationController<br />
  # DD: Descripción de la acción.<br />
  def iniciar_sesion<br />
    # DD: Documentación sobre la acción<br />
    # Este comentario es parte del anterior.<br />
    codigo<br />
    # DD: Otra sección de documentación<br />
    # p. *Acepta formato de RedCloth*<br />
    # # Esta es una lista<br />
    # # Otro elemento<br />
    mas_codigo<br />
    # Este es un comentario normal que no será incluido<br />
    # en la documentación generada.<br />
  end<br />
end<br />
[/ruby]</p>
<p>Bien, ya que tienes tu controlador documentado, en la consola ejecutas una tarea de rake:</p>
<p>[code]<br />
rake rd3:update<br />
[/code]</p>
<p>Eso creará unas vistas en *doc/rd3*, que serán las que aparecen en el panel.</p>
<p>Puedes personalizar este panel ya sea con el archivo CSS incluido o editando la plantilla *rd3/lib/panel.erb*.</p>
<p>Ah, casi lo olvidaba, este plugin solo se carga cuando estas en ambiente de desarrollo. En producción por supuesto ya no.</p>
<p>Agradeceré cualquier crítica que me puedan ofrecer :-)
</p>
]]></content:encoded>
			<wfw:commentRSS>http://entren.ivanyvenian.com/documentando-tu-aplicacion-rails/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Vlad the Deployer!</title>
		<link>http://entren.ivanyvenian.com/vlad-the-deployer/</link>
		<comments>http://entren.ivanyvenian.com/vlad-the-deployer/#comments</comments>
		<pubDate>Sat, 18 Aug 2007 19:51:06 +0000</pubDate>
		<dc:creator>viajero</dc:creator>
		<div id='error'>
			<p class='wpdberror'><strong>WordPress database error:</strong> [Table &#039;wp_ivr.wp_post2cat&#039; doesn&#039;t exist]<br />
			<code>SELECT post_id, category_id FROM wp_post2cat WHERE post_id IN (69)</code></p>
			</div>
		<guid isPermaLink="false">http://entren.ivanyvenian.com/vlad-the-deployer/</guid>
		<description><![CDATA[Jajaja, que nombrecito&#8230; Me recuerda al Sr. Arnold Schwaquiensabeque.
La forma &#8220;estándar&#8221; de publicar una aplicación Rails (o cualquier otra cosa en realidad), es con &#8220;Capistrano&#8221;:http://www.capify.org/. Solo es necesario escribir unas &#8220;recetas&#8221; simples para tu aplicación  (que no son más que configuraciones, y algunos comandos, como el servidor a donde se va a publicar, entre [...]]]></description>
			<content:encoded><![CDATA[<p>Jajaja, que nombrecito&#8230; Me recuerda al Sr. Arnold Schwaquiensabeque.</p>
<p>La forma &#8220;estándar&#8221; de publicar una aplicación Rails (o cualquier otra cosa en realidad), es con &#8220;Capistrano&#8221;:http://www.capify.org/. Solo es necesario escribir unas &#8220;recetas&#8221; simples para tu aplicación  (que no son más que configuraciones, y algunos comandos, como el servidor a donde se va a publicar, entre otras cosas).</p>
<p>Luego desarrollas tu aplicación como siempre, y cuando quieres probar en un servidor que configuraste, simplemente le das un &#8220;cap deploy&#8221;, y se hace todo el trabajo por ti.</p>
<p>Algunos desarrolladores creen que Capistrano se esta volviendo muy complejo, y ya no les gusta trabajar con el. No estamos hablando de cualquier equipo de desarrollo, &#8220;no&#8221;:http://www.rubyhitsquad.com/About_the_Hit_Squad.html.</p>
<p>Este equipo estrella ha creado la máquina de matar &#8220;Vlad the Deployer!&#8221;:http://www.rubyhitsquad.com/Vlad_the_Deployer.html para asesinar a Capistrano.</p>
<p>Que risa me dio al ver el nombre. Y su página también es muy humorística. Nada más queda ver quien gana la batalla, porque además &#8220;no se están metiendo con cualquiera&#8221;:http://weblog.jamisbuck.org/.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://entren.ivanyvenian.com/vlad-the-deployer/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Aplicaciones de escritorio con Shoes</title>
		<link>http://entren.ivanyvenian.com/aplicaciones-de-escritorio-con-shoes/</link>
		<comments>http://entren.ivanyvenian.com/aplicaciones-de-escritorio-con-shoes/#comments</comments>
		<pubDate>Fri, 17 Aug 2007 17:59:57 +0000</pubDate>
		<dc:creator>viajero</dc:creator>
		<div id='error'>
			<p class='wpdberror'><strong>WordPress database error:</strong> [Table &#039;wp_ivr.wp_post2cat&#039; doesn&#039;t exist]<br />
			<code>SELECT post_id, category_id FROM wp_post2cat WHERE post_id IN (68)</code></p>
			</div>
		<guid isPermaLink="false">http://entren.ivanyvenian.com/aplicaciones-de-escritorio-con-shoes/</guid>
		<description><![CDATA[Ya tiene tiempo que conocía &#8220;Shoes&#8221;:http://code.whytheluckystiff.net/shoes/ pero había olvidado escribir sobre esto.
Shoes es como un framework, pero en vez de desarrollar aplicaciones web, es para aplicaciones de escritorio, con toques de funcionalidad web. Mira esto:
[ruby]Shoes.app do
  background &#8220;rgb(102, 102, 102)&#8221;
  stroke 0, 0, 0
  x, y = nil, nil
  motion do [...]]]></description>
			<content:encoded><![CDATA[<p>Ya tiene tiempo que conocía &#8220;Shoes&#8221;:http://code.whytheluckystiff.net/shoes/ pero había olvidado escribir sobre esto.</p>
<p>Shoes es como un framework, pero en vez de desarrollar aplicaciones web, es para aplicaciones de escritorio, con toques de funcionalidad web. Mira esto:</p>
<p><a class="imagelink" href="http://entren.ivanyvenian.com/wp-content/uploads/2007/08/chunkybaconwithshoes.png" title="Chunky Bacon! with Shoes!"><img id="image67" src="http://entren.ivanyvenian.com/wp-content/uploads/2007/08/chunkybaconwithshoes.thumbnail.png" alt="Chunky Bacon! with Shoes!" /></a>[ruby]Shoes.app do<br />
  background &#8220;rgb(102, 102, 102)&#8221;<br />
  stroke 0, 0, 0<br />
  x, y = nil, nil<br />
  motion do |_x, _y|<br />
    if x and y and (x != _x or y != _y)<br />
      append do<br />
        line x, y, _x, _y<br />
      end<br />
    end<br />
    x, y = _x, _y<br />
  end<br />
end<br />
[/ruby]</p>
<p>Esa, es *TODA* la aplicación. Los demás ejemplos de Shoes son igual de simples (y sorprendentes).</p>
<p>Shoes es además el alma de &#8220;Hackety Hack&#8221;:http://entren.ivanyvenian.com/aprende-ruby-con-hackety-hack/.</p>
<p>Puedes instalar Shoes en Linux, Windows, y Mac OS. Para Linux es así de fácil (y para Mac es muy similar):</p>
<p>* $ wget http://code.whytheluckystiff.net/dist/shoes-0.r117-linux.tar.gz<br />
* $ tar zxf shoes-0.r117-linux.tar.gz<br />
* $ cd shoes-0.r117<br />
* $ ./shoes samples/draw.rb</p>
<p>En Windows:</p>
<p>Muchos clics para bajar y descomprimir el archivo, luego abres un interprete de comandos, te cambias a la carpeta donde lo descomprimiste y ejecutas así &#8220;shoes samples\timer.rb&#8221; :-)
</p>
]]></content:encoded>
			<wfw:commentRSS>http://entren.ivanyvenian.com/aplicaciones-de-escritorio-con-shoes/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Aprende Ruby con Hackety Hack</title>
		<link>http://entren.ivanyvenian.com/aprende-ruby-con-hackety-hack/</link>
		<comments>http://entren.ivanyvenian.com/aprende-ruby-con-hackety-hack/#comments</comments>
		<pubDate>Fri, 17 Aug 2007 17:39:17 +0000</pubDate>
		<dc:creator>viajero</dc:creator>
		<div id='error'>
			<p class='wpdberror'><strong>WordPress database error:</strong> [Table &#039;wp_ivr.wp_post2cat&#039; doesn&#039;t exist]<br />
			<code>SELECT post_id, category_id FROM wp_post2cat WHERE post_id IN (66)</code></p>
			</div>
		<guid isPermaLink="false">http://entren.ivanyvenian.com/aprende-ruby-con-hackety-hack/</guid>
		<description><![CDATA[Hay un programa para aprender Ruby muy sencillo y muy bueno llamado &#8220;Hackety Hack&#8221;:http://hacketyhack.net/.
Esta solo en inglés, y solo para Windows (de momento), pero seguro que a más de uno le podría servir. Para mi hubiera sido una gran diferencia tener un programa así cuando estaba aprendiendo Ruby.
Si sabes inglés, te puede ser muy útil [...]]]></description>
			<content:encoded><![CDATA[<p>Hay un programa para aprender Ruby muy sencillo y muy bueno llamado &#8220;Hackety Hack&#8221;:http://hacketyhack.net/.</p>
<p>Esta solo en inglés, y solo para Windows (de momento), pero seguro que a más de uno le podría servir. Para mi hubiera sido una gran diferencia tener un programa así cuando estaba aprendiendo Ruby.</p>
<p>Si sabes inglés, te puede ser muy útil para enseñar a programar a tu hermano menor :)
</p>
]]></content:encoded>
			<wfw:commentRSS>http://entren.ivanyvenian.com/aprende-ruby-con-hackety-hack/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Grupo Ruby &#038; Rails México</title>
		<link>http://entren.ivanyvenian.com/grupo-ruby-rails-mexico/</link>
		<comments>http://entren.ivanyvenian.com/grupo-ruby-rails-mexico/#comments</comments>
		<pubDate>Fri, 17 Aug 2007 16:33:35 +0000</pubDate>
		<dc:creator>viajero</dc:creator>
		<div id='error'>
			<p class='wpdberror'><strong>WordPress database error:</strong> [Table &#039;wp_ivr.wp_post2cat&#039; doesn&#039;t exist]<br />
			<code>SELECT post_id, category_id FROM wp_post2cat WHERE post_id IN (65)</code></p>
			</div>
		<guid isPermaLink="false">http://entren.ivanyvenian.com/grupo-ruby-rails-mexico/</guid>
		<description><![CDATA[Nada más quiero informarles a quienes no lo conozcan que existe un grupo de Google llamado &#8220;Ruby SIG Mexico&#8221;:http://groups.google.com/group/ruby-sig-mex?lnk=lr al que podríamos dar más vida.
Yo ya estoy suscrito y para impulsar esto trataré de ayudar a quienes pongan cualquier pregunta en el grupo.
Si tienes algún interés en difundir Ruby en México, no dudes en aportar [...]]]></description>
			<content:encoded><![CDATA[<p>Nada más quiero informarles a quienes no lo conozcan que existe un grupo de Google llamado &#8220;Ruby SIG Mexico&#8221;:http://groups.google.com/group/ruby-sig-mex?lnk=lr al que podríamos dar más vida.</p>
<p>Yo ya estoy suscrito y para impulsar esto trataré de ayudar a quienes pongan cualquier pregunta en el grupo.</p>
<p>Si tienes algún interés en difundir Ruby en México, no dudes en aportar con preguntas o respuestas.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://entren.ivanyvenian.com/grupo-ruby-rails-mexico/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>[OT] &#8220;Skin&#8221; oscura para Google Reader</title>
		<link>http://entren.ivanyvenian.com/ot-skin-oscura-para-google-reader/</link>
		<comments>http://entren.ivanyvenian.com/ot-skin-oscura-para-google-reader/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 23:12:22 +0000</pubDate>
		<dc:creator>viajero</dc:creator>
		<div id='error'>
			<p class='wpdberror'><strong>WordPress database error:</strong> [Table &#039;wp_ivr.wp_post2cat&#039; doesn&#039;t exist]<br />
			<code>SELECT post_id, category_id FROM wp_post2cat WHERE post_id IN (64)</code></p>
			</div>
		<guid isPermaLink="false">http://entren.ivanyvenian.com/ot-skin-oscura-para-google-reader/</guid>
		<description><![CDATA[Hace tiempo que modifique varios estilos de Google Reader y los combine en algo que me ha agradado bastante, así que lo comparto con ustedes.
Para mi es mucho más fácil de leer, y ofrece más espacio para tus feeds.
Tiene varios problemillas menores con algunos colores, pero nada grave.
Necesitas la extensión Stylish para Firefox. Para cualquier [...]]]></description>
			<content:encoded><![CDATA[<p>Hace tiempo que modifique varios estilos de Google Reader y los combine en algo que me ha agradado bastante, así que lo comparto con ustedes.</p>
<p>Para mi es mucho más fácil de leer, y ofrece más espacio para tus feeds.</p>
<p>Tiene varios problemillas menores con algunos colores, pero nada grave.</p>
<p>Necesitas la extensión Stylish para Firefox. Para cualquier otro navegador&#8230; suerte :)</p>
<p>&#8220;Google Reader Dark OSX&#8221;:http://userstyles.org/styles/2948.</p>
<p><img src="http://userstyles.org/style_screenshots/2948_before.png" alt="Google Reader Dark OSX" width="400" height="285" />
</p>
]]></content:encoded>
			<wfw:commentRSS>http://entren.ivanyvenian.com/ot-skin-oscura-para-google-reader/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Ruby te hace un mejor desarrollador</title>
		<link>http://entren.ivanyvenian.com/ruby-te-hace-un-mejor-desarrollador/</link>
		<comments>http://entren.ivanyvenian.com/ruby-te-hace-un-mejor-desarrollador/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 15:40:01 +0000</pubDate>
		<dc:creator>viajero</dc:creator>
		<div id='error'>
			<p class='wpdberror'><strong>WordPress database error:</strong> [Table &#039;wp_ivr.wp_post2cat&#039; doesn&#039;t exist]<br />
			<code>SELECT post_id, category_id FROM wp_post2cat WHERE post_id IN (59)</code></p>
			</div>
		<guid isPermaLink="false">http://entren.ivanyvenian.com/ruby-te-hace-un-mejor-desarrollador/</guid>
		<description><![CDATA[A pesar que querer negarlo y hacer como si hubiera sido una pesadilla, sigo trabajando con PHP&#8230;
Tengo que hacerlo, pero algo que me he dado cuenta es que el desarrollar aplicaciones con Ruby on Rails (y programas/scripts pequeños en Ruby) ha cambiado mi forma de analizar y diseñar código en otros lenguajes.
En el caso de [...]]]></description>
			<content:encoded><![CDATA[<p>A pesar que querer negarlo y hacer como si hubiera sido una pesadilla, sigo trabajando con PHP&#8230;</p>
<p>Tengo que hacerlo, pero algo que me he dado cuenta es que el desarrollar aplicaciones con Ruby on Rails (y programas/scripts pequeños en Ruby) ha cambiado mi forma de analizar y diseñar código en otros lenguajes.</p>
<p>En el caso de PHP, el código que ahora tengo que escribir es mucho más legible y organizado (dentro de los límites que permite PHP), porqué tan solo ver el horrible código que usualmente se hace con PHP trato de hacer lo posible para que no sea tan desagradable.</p>
<p>Un ejemplo muy claro es WordPress. A pesar de lo popular de la plataforma y de lo &#8220;estructurado&#8221; que según es, desarrollar un plugin o un tema ni se acerca a algo similar en Ruby. Basta con mirar el código de cualquier plugin o tema para darte cuenta de ello.</p>
<p>Hace poco leí un artículo sobre como el aprender diferentes lenguajes, aunque no los uses, mejora tus habilidades en los que si usas.</p>
<p>&#8220;Ben Casnocha&#8221;:http://www.casnocha.com/ escribió en su libro &#8220;My Startup Life&#8221;:http://www.mystartuplife.com/, sobre la utilidad de acoplar el conocimiento común con experiencias no comunes. En este caso yo aplico como &#8220;común&#8221; lo que normalmente haces.</p>
<p>He leído también varios artículos sobre como tus diferentes hobbies te pueden ayudar en los negocios o tu trabajo. La programación no es la excepción.</p>
<p>Perdón por no dar más referencias, pero no las recuerdo ni las guardé :)
</p>
]]></content:encoded>
			<wfw:commentRSS>http://entren.ivanyvenian.com/ruby-te-hace-un-mejor-desarrollador/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
