Publicidad:
Terra
La Coctelera

Categoría: chorradas

Mis últimos meses con RoR

Después de unos cuantos meses de abandono de mi blog, me he propuesto con este post resumir lo que he hecho durante este tiempo, esperando no tardar tanto tiempo en volver a escribir alguna tontuna.

En ASPgems hemos estado organizando charlas de formación interna una vez al mes, abiertas a cualquiera que se quisiera apuntar, para contar/exponer materias de interes para nosotros. Y con estas charlas llego mi estreno, con una charla sobre testing de aplicaciones ruby/rails junto a mi compañero @jorgegorka, incluso hay un vídeo, en el canal de aspgems en vimeo. No fue nada espectular, no se podía esperar otra cosa si yo andaba ahí metido, después sobre todo de querer mostrar código en directo y abandonarlo a los 10 minutos :)  También hemos realizado alguna charla más informal al estilo "lightning talks" muy insperadoras de lo que esta por llegar...en la web

También durante este tiempo he estado revisando código de aquí y de allá, he liberado pequeños pedacitos de código en forma de plugins para aplicaciones tog: tog_activity y tog_wall para compensar todo el curro que se ha dado la gente de tog

He seguido apoyando mundo-pepino sobre todo después de una charla del madrid-rb sobre capybara de @porras que me empujo a actualizar mundo-pepino para que se pudieran utilizar las últimas versiones de cucumber y para que se pudiera utilizar capybara o webrat, y de aquí surgió la Paco's release gracias Nando! ;)

También participe en el Desafio Abredatos junto con: @eLafo, @jorgegorka y @leptom y bueno la verdad que lo pasamos genial creando DesenchufaTuCasa, viendo la formula 1 el domingo, zampandonos unas pizzas del dominos, vamos zampando toda la comida rápida que pudimos.

Y bueno también he tenido tiempo de participar en el pasado BugMash, he  entrado en la Rails Contributors, he estado en Amsterdam una semanita de vacaciones.

Y lo que viene seguro que es mejor, empezando la semana que viene con el viaje a la Euruko 2010

human_name and error_message_for controversy

Parace que nuestros amigos ActiveRecord::Base.human_name y ActionView::Base::Helpers.error_messages_for parece que no están en la misma onda o ola o como queráis. El método human_name intenta proporcionar un nombre más "humano" a nuestros modelos de active record y error_messages_for intenta proporcionarnos unos bonitos mensajes de error al intentar crear/editar nuestro modelo de active record.

Además error_messages_for tiene multitud de opciones que nos permiten definir enteramente el contenido de los mensajes, su estructura html y otras cosillas. Pero el problema viene cuando tratamos con los valores por defecto. Este método captura la variable de instancia a partir de su primer parámetro y debe obtener la variable options[object_name] de dicha variable si la opción object_name no es pasada como parámetro. Y aquí llegamos a la controversia, ¿Que clave de nuestros locale recuperamos para generar el object_name en caso de que no lo proporcione el programador?

Pues como suponéis error_messages_for no recupera la misma clave que human_name con lo que nos surge un problema.

 def error_messages_for(*params)
   options[:object_name] ||= params.first
   ...
     I18n.with_options :locale => options[:locale], :scope => [:activerecord, :errors, :template] do |locale|
       ...
       object_name = options[:object_name].to_s.gsub('_', ' ')
       object_name = I18n.t(object_name, :default => object_name, :scope => [:activerecord, :models], :count => 1)
       ...
     end
   ...
 end
 
 
 def human_name(options = {})
   defaults = self_and_descendants_from_active_record.map do |klass|
     :"#{klass.name.underscore}"
   end 
   defaults << self.name.humanize
   I18n.translate(defaults.shift, {:scope => [:activerecord, :models], :count => 1, :default => defaults}.merge(options))
 end
 

Pero ante la llegada inminente de Rails 3 o eso nos comentaba Yehuda en el grupo del core team se han puesto de acuerdo estos muchachos con la ayuda de ActiveModel y tenemos esto.

 module ActiveModel::Naming
   # Transform the model name into a more humane format, using I18n. By default,
   # it will underscore then humanize the class name (BlogPost.model_name.human #=> "Blog post").
   # Specify +options+ with additional translating options.
   def human(options={})
     # No nos interesa que clave recupera pero vemos que será la misma
     ...
   end
 end
 
 module ActionView
   module Helpers
     module ActiveModel
       
       def error_messages_for(*params)
         ...
         if object.class.respond_to?(:model_name)
           options[:object_name] ||= object.class.model_name.human.downcase
         end
         ...
       end
     end
   end
 end
 

Así por ahora solo nos queda esperar o pasarle a error_messages_for el parámetro object_name con le valor que necesitemos. Ciau

Mi Portátil Dell Studio 15" con remolinos rubiriscentes, eing

Han pasado ya bastantes días y no había contado algo que no será de utilidad a nadie, pero espero que puede ser de interes a alguna persona.

Hace un par de semanas recibí mi nuevo portátil, concretamente un Dell Studio 15" con Blue Ray. Estuve barajando alguna otra opción un Mac Book Pro 15" pero su coste echa para atrás, prácticamente el doble de lo que me ha costado el Dell Studio, aunque realmente chulo. No opté por un Mac Book de 13" bastante más asequible de precio, porque quería un portátil lo suficientemente grande para trabajar con el a diario con Rails y no necesitaba transportarlo conmigo diariamente. Bueno de momento no a salido de mi casa desde que llegó de Polonia.

¿Por qué Dell en lugar de otras marcas como HP, Sony, Samsung, Toshiba?, principalmente por el hecho de que mi antiguo PC un Dell Dimension 8600, no me ha causado ningún problema relevante y puedo asegurar que le he dado mucho uso durante prácticamente 7 años. Tuve problemas con el lector de DVD y la grabadora de DVD, pero al estar en garantía no hubo problemas para el cambio de cada dispositivo por otro nuevo. El servicio técnico fue a mi casa a recoger el dispositivo estropeado y a llevarme el nuevo dispositivo. Supongo que habrá gente que reproche el hecho de que un producto falle en el período de garantía, pero no volvieron a fallar.

Después de las tan sabidas malas opiniones sobre Windows Vista, tenía claro que trabajaría con Ubuntu. Mantengo Vista y Media Direct y la partición del Recovery de Vista por si me hacen falta, en 85 GB del total de 320 GB del portátil. El resto esta dividido en una partición de intercambio (swap), la instalación de ubuntu, y una partición para la home y por último aproximadamente 100 GB en una partición de Datos, fundamentalmente para el contenido multimedia en NTFS y que será accesible también desde Ubuntu. Creo que espacio de sobra, sino para eso están los discos duros externos.

Cómo a partir de ahora dejaré de trabajar con una máquina virtual Ubuntu sobre un Windows XP para desarrollar en Rails, para pasar a trabajar directamente sobre Ubuntu he decidido añadir en Ubuntu el software equivalente o el mismo en algunos casos de los que venía utilizando en Windows XP, como Picassa, VLC, Songbird, etc... y estoy seguro que descubriré nuevo software que será de mucha utilizada. En Vista solo realizare las instalaciones necesarias o que no tengan su equivalente en Ubuntu, que no creo que sean muchas, aunque siempre podré utilizar Wine. También espero que el rendimiento mejore, ya que mi antiguo PC andaba algo justo al ejecutar una máquina virtual.

En cuanto al rendimiento del portátil por ahora estoy completamente satisfecho, sobre todo con el rendimiento de Ubuntu. Como nota decir que la instalación original de Vista empleaba 1:28 segundos en arrancar hasta que mostraba la pantalla de logon, por solo 28 segundos para el caso de Ubuntu.

Ahora para mejorar mi productividad con Rails, me queda pasarme a utilizar Vim y dejar de lado el ratón y mi buen amigo NetBeans con el que empece mi andadura con Rails.

Adios a mi antiguo PC

Hola a mi nuevo portátil

PD: hay que hacerle unas fotillos al cacharrito y explicar los remolinos rubiriscentes

He aquí los remolinos rubiriscentes

Comparte tu escritorio en http://www.deskography.org

QR-Code Generator

Después de encontrar esto de los QR-Codes, que desconocía totalmente, gracias a Edgar JS y sus elementos comportadis de Google Reader pues había que probarlo.

Primero el link al sitio donde se comentan QR-Coder qué son y para qué sirven

Y segundo mi primer QR-Code generado en http://qrcode.kaywa.com/

Arriba y Abajo

Bueno supongo que esto lo tendríamos que haber aprendido viendo barrio sesamo hace mucho mucho tiempo. Yo al menos creo que aprendí de esos ejemplos.

Pero claro en aquella época el uso del ordenador no estaba tan arraigado actualmente, y aunque ahora muchos jóvenes si utilizan el ordenador, la inmensa mayoría, no muchos de nuestros mayores están acostumbrados a utilizarlos.

He aquí el dímela entre arriba y abajo de nuevo sube a la palestra, espero que no solo me ocurra a mi lo que voy a contar.

Cuando los jóvenes navegamos por internet o tenemos un documento abierto que no se muestra entero en la pantalla y queremos ver la parte "inferior" del documento pensamos (si en ocasiones lo hemos hecho y q!) en bajar el documento ("me parece que aún no lo tengo claro"). Pero aquí la otra cara de la moneda cuando le enseño a mi padre el documento el dirá que suba. A que se refiere que coga la pantalla y la levante, que suba el documento para que en la pantalla aparezca la parte inferior del documento.

Si tengo la clave. Mi padre quiere que le suba el documento, pero nosotros sabemos que lo que tenemos que hacer es bajar la barra de scroll ("término demasiado confuso para los neófitos"). Aclarado.

En barrio sesamo explicaron bien los conceptos Arriba y Abajo, pero al aplicarlos hay que fijar un punto de referencia o de movimiento.

PD: No lo tengáis en cuenta