Resumen de la Conferencia Rails 2008

Sí, ya lo sé, ha pasado casi un mes. Este año no voy a hablar de las ponencias, simplemente os voy a pasar una serie de enlaces con información, imágenes y vídeos sobre la conferencia.

Web oficial de la Conferencia Rails
Vídeos de las ponencias
Grupo en Flickr
La Conferencia Rails 2008 en 37 imágenes
ScreenCast Isabelinos 2008: Enjuto Heinemeier

El material de mi ponencia “Optimización, rendimiento y escalabilidad en ActiveRecord” lo podéis encontrar en:

Presentación en Slideshare
Video de la ponencia

Euruko 2009: el 9 y 10 de mayo en Barcelona

Pues sí, ya tenemos fecha para la próxima Euruko, se celebrará en Barcelona el 9 y 10 de mayo en el Citilab.
De momento Matz nos ha confirmado su disponibilidad, así que es prácticamente seguro que va a venir.
Cualquier novedad que haya la iremos posteando en el blog de la Euruko 2009 y en la lista de correo.

Enlaces (1)

Creo que puede ser bueno compartir con vosotros algunos enlaces interesantes que voy encontrando, como hacen en otros blogs, ahí va la primera entrega.

Como le expliqué REST a mi esposa

Cómo hacer preguntas de manera inteligente

Ruby Tools Roundup

BuildingWebApps

CSS Systems for writing maintenable CSS

InfoQ

Ruby on Rails Rake tutorial

Bryan Liles - Test all the fucking time

La Conferencia Rails en 37 imágenes

unvlog.com/porras/2008/11/23/la-conferencia-rails-2008-37-imagenes

Autotest con Growl

Creamos un archivo en nuestro directorio de usuario llamado .autotest con el siguiente contenido:

require 'autotest/redgreen'
require 'autotest/html_report'
require 'autotest/menu'
module Autotest::Growl

  def self.growl msg, options={}
    salida = "growlnotify -n autotest --image \"#{options[:img]}\"  -p #{options[:pri]} -d #{rand(100)} -m \"#{msg}\" \"Tests\" #{options[:sticky]}"
    system salida
  end

  Autotest.add_hook :ran_command do |at|
    results = [at.results].flatten.join("\n")
    output = results.slice(/(\d+)\s+assertions?,\s*(\d+)\s+failures?,\s*(\d+)\s+errors?/)
    failures = $~[3].to_i + $~[2].to_i
    options = (failures > 0)? {:img=>"/Users/#{ENV["USER"]}/Library/Autotest/rails_fail.png", :pri => 0, :sticky => "" } : {:img => "/Users/#{ENV["USER"]}/Library/Autotest/rails_ok.png", :pri => 0,:sticky => "" }
    if output
      growl "#{output}", options
    end
  end
end

Aquí tenéis las imágenes que se tienen que copiar en ~/Libreria/Autotest

Fuente: Mabishu

Ponencia en la Conferencia Rails

Como la mayoría de los que seguís este blog sabéis, este jueves y viernes se celebra en Madrid la Conferencia Rails, la reunión anual de programadores y “forofos” Rails por excelencia. Este año una de las ponencias corre a mi cargo, concretamente la titulada “Optimización, rendimiento y escalabilidad en ActiveRecord“.

¡Nos vemos en Madrid!

Reduce el tamaño de tus javascripts con JSMin

Con el uso masivo de AJAX en las aplicaciones web, los archivos Javascript cada vez son más grandes debido al gran número de funciones que contienen. A la hora de cargar una página por primera vez, cuando aún no ha intervenido la caché sobre los archivos JS, el proceso puede ser extremadamente lento debido al gran tamaño de los archivos que tiene que descargar.

Para reducir el tamaño de los archivos JS disponemos de una aplicación llamada JSMin que elimina los espacios en blanco y los saltos de linea innecesarios, llegando a reducir el tamaño del archivo en algunos casos hasta la mitad.

Se puede descargar el código y compilarlo, bajar el ejecutable para Windows o bajarlo en diferentes lenguajes, entre los que se encuentra Ruby

AVISO: la conversión la hace sobre el archivo original, os recomiendo que guardéis una copia antes de aplicarle JSMin por si tuviérais que volver a modificarlo.

http://www.crockford.com/javascript/jsmin.html

Optimización: mejorando las consultas MySQL en Rails (I)

Rails es un gran framework, pero la magia y la ágilidad que te proporciona tiene un precio y no es otro que la velocidad y esto se deriva en problemas de escalabilidad. Para una aplicación con poco tráfico o incluso con un tráfico medio la manera de realizar las consultas en Rails nos puede ser suficiente, pero cuando nos encontramos con una aplicación que soporta un gran volumen de visitas o que maneja una gran cantidad de datos, las consultas “out of the box” a la base de datos se hacen cada vez más lentas hasta llegar a límites insostenibles.

Aquí tenéis algunos consejos para optimizar las consultas a la base de datos y conseguir aumentar considerablemente el redimiento de vuestra aplicación.
Read more »

Las 100 aplicaciones Rails con más tráfico

Se ha hablado mucho sobre si Ruby on Rails escala o no, sobretodo han hablado los detractores de Rails, intentando buscar argumentos para desacreditarlo.

Que una aplicación escale es la suma de muchos factores, y el más importante es el humano. No hay ni un solo lenguaje o framework que escale “out of the box”, hay que meterle mano y saber lo que haces. Por tanto que alguien argumente que Rails no está a la altura de otros lenguajes por que no escala, únicamente demuestra que no sabe demasiado de que habla o que critica por criticar.

Si detrás del desarrollo y puesta en marcha de la aplicación hay buenos profesionales que han optimizado el código, han definido la arquitectura de sistemas correcta y han tenido en cuenta los múltiples factores que afectan al rendimiento de una aplicación, dicha aplicación va a ser escalable esté hecha en el lenguaje o framework que sea: Rails, Java, PHP, Python…

Y para hechar por tierra las teorias de los que argumentan que Rails no escala, aquí os dejo un listado de las 100 aplicaciones hechas en Rails con más tráfico. Destacar que la primera, yellowpages.com, soporta 20 millones de visitas únicas al mes, ahí es nada.

http://rails100.pbwiki.com/Compete+Rankings

Instalar Git en Mac OS X Leopard

Mediante port la instalación resulta muy sencilla. Primero actualizamos port

sudo port selfupdate

y a continuación insalamos Git

sudo port install git-core

Una vez instalado podemos personalizarlo un poco

# Utilizar opendiff (FileMerge) para resolver los conflictos
git config --global merge.tool opendiff
# Ignorando archivos
git config --global core.excludesfile ~/.gitignore
touch               "$HOME/.gitignore"
echo '.DS_Store' >> "$HOME/.gitignore"
echo '._*'       >> "$HOME/.gitignore"
echo '.svn'      >> "$HOME/.gitignore"
echo '.hg'       >> "$HOME/.gitignore"

# Añadiendo alias
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch

# Un poco de color
git config --global color.ui auto