My Writings. My Thoughts.

Un par de revistas gratuitas para los rubyistas y raileros

// Junio 25th, 2009 // No Comments » // libros y revistas, programación, recomendaciones

rubyist

Ahora que he regresado de lleno al desarrollo de aplicaciones web, rondando por ahí me encontré un par de revistas con técnicas de programación, artículos y consejos para los fanáticos de Ruby y Rails.

La versión en PDF es gratuita en ambos casos, y pueden obtener la versión impresa por una módica cantidad (aprox. $9 USD).
Denles una leída, no pierden nada y pueden aprender mucho. ;)

Enlace a: the Rubyist
Enlace a: Rails Magazine

Cómo instalar Java en Ubuntu 9.04 Jaunty Jackalope

// Junio 24th, 2009 // No Comments » // linux

logo-ubuntu-2.jpg

Para instalar Java, el kit de desarrollo y el plugin para Firefox introduce la siguiente línea en una terminal:

1
sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-plugin sun-java6-fonts

50 fuentes gratuitas estilo grunge

// Junio 24th, 2009 // No Comments » // arte & diseño

fuentes

Aquí les dejo un enlace hacia un artículo que presenta 50 tipografías del estilo grunge — es decir, opuesto a lo fashion, jeje.
Ocupé una de ellas para hacer el nuevo logo del blog. :)

50 Most Extreme Free Grunge Fonts

Zen bits

// Junio 23rd, 2009 // No Comments » // zen

zen

“En la mente del principiante hay muchas posibilidades; en la del experto hay pocas.”

Zen mind, beginner’s mind
Shunryu Suzuki

Cómo generar la documentación de Ruby y Rails de manera local

// Junio 22nd, 2009 // No Comments » // programación

ruby.jpg

Es difícil quitarse el hábito de consultar la documentación en línea, por lo regular ando siempre conectado a internet y se me hace muy fácil escribir en Google algo como rails doc o ruby doc, dar clic y comenzar a buscar lo que necesito en la documentación.

Recientemente me vi en la necesidad de poder acceder de manera local a la documentación de Rails y de Ruby — además de que la velocidad no se compara. :)

La documentación de Rails

Para generar la documentación de Rails tecleamos lo siguiente:

1
2
3
4
5
rails temp_app
cd temp_app
rake rails:freeze:gems
rake doc:rails
rake rails:unfreeze

Lo que hacemos es generar una aplicación temporal, después congelamos las gemas de Rails en la aplicación de ejemplo, y a continuación generamos la documentación.
El último paso se usa para descongelar las gemas en nuestra aplicación de ejemplo (aunque también podemos sólo borrar el directorio de la aplicación después de mover la documentación de ahí).

Si tienes Apache instalado en tu Ubuntu, entonces mueve la documentación a tu directorio web y elimina la aplicación de ejemplo con:

1
2
3
4
sudo mkdir /var/www/docs
sudo mv doc/api /var/www/docs/rails
cd ..
rm -rf temp_app

Ahora puedes accesarla desde:
http://localhost/docs/rails

La documentación de Ruby

Para generar la documentación de Ruby teclea lo siguiente:

1
2
cd /usr/lib/ruby/1.8
sudo rdoc -o /var/www/docs/ruby

Ahora puedes accesarla desde:
http://localhost/docs/ruby

Depredado en

Rails Documentation

Instalar FileZilla en Ubuntu 9.04

// Junio 19th, 2009 // 2 Comments » // linux

logo-ubuntu-2.jpg

Si al tratar de instalar el FileZilla en Ubuntu 9.04 te sale un mensaje que dice:

Cliente FTP FileZilla no puede instalarse en un equipo como el suyo (i386)

O bien la aplicación requiere funciones hardware especiales, o bien el vendedor ha decidido no soportar los equipos de las características del suyo.

La solución es simple, instálalo desde la línea de comandos con apt-get:

1
sudo apt-get install filezilla

¡Listo! :)

Convertir un número a palabras con Ruby

// Junio 19th, 2009 // 1 Comment » // programación

lobo_tuerto.png

Hace poco necesitaba escribir una cantidad usando palabras, así que me di una vuelta por internet para ver si algún alma caritativa había publicado alguna implementación en Ruby.

En este otro blog y también en este me encontré con una solución, pero revisando el código fuente se puede ver que tiene un problema:

12000000000.to_words
=> "doce mil "

Con mi programa:

numero_a_palabras(12000000000)
=> "doce mil millones"

Así que sin más, les comparto mi implementación. :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
def numero_a_palabras(numero)
  de_tres_en_tres = numero.to_s.reverse.scan(/\d{1,3}/).map{|n| n.reverse.to_i}
 
  millones = [
    {true => nil, false => nil},
    {true => 'millón', false => 'millones'},
    {true => "billón", false => "billones"},
    {true => "trillón", false => "trillones"}
  ]
 
  centena_anterior = 0
  palabras = de_tres_en_tres.map_with_index do |numeros,contador|
    if contador%2 == 0
      centena_anterior = numeros
      [centena_a_palabras(numeros), millones[contador/2][numeros==1]].compact if numeros > 0
    elsif centena_anterior == 0
      [centena_a_palabras(numeros), "mil", millones[contador/2][false]].compact if numeros > 0
    else
      [centena_a_palabras(numeros), "mil"] if numeros > 0
    end
  end
 
  palabras.compact.reverse.join(' ')
end
 
def centena_a_palabras(numero)
  especiales = {
    11 => 'once', 12 => 'doce', 13 => 'trece', 14 => 'catorce', 15 => 'quince',
    10 => 'diez', 20 => 'veinte', 100 => 'cien'
  }
  if especiales.has_key?(numero)
    return especiales[numero]
  end
 
  centenas = [nil, 'ciento', 'doscientos', 'trescientos', 'cuatrocientos', 'quinientos', 'seiscientos', 'setecientos', 'ochocientos', 'novecientos']
  decenas = [nil, 'dieci', 'veinti', 'treinta', 'cuarenta', 'cincuenta', 'sesenta', 'setenta', 'ochenta', 'noventa']
  unidades = [nil, 'un', 'dos', 'tres', 'cuatro', 'cinco', 'seis', 'siete', 'ocho', 'nueve']
 
  centena, decena, unidad = numero.to_s.rjust(3,'0').scan(/\d/).map{|i| i.to_i}
 
  palabras = []
  palabras < < centenas[centena]
 
  if especiales.has_key?(decena*10 + unidad)
    palabras << especiales[decena*10 + unidad]
  else
    tmp = "#{decenas[decena]}#{' y ' if decena > 2 && unidad > 0}#{unidades[unidad]}"
    palabras < < (tmp.blank? ? nil : tmp)
  end
 
  palabras.compact.join(' ')
end

Si encuentras algún error en el programa, anótalo en un comentario abajo.

Para los que quieran conocer un poco más acerca de la solución de éste problema, continuen leyendo.

Continue Reading

Kiwi!

// Junio 19th, 2009 // No Comments » // videos

A ver que les parece esta historia…

¿No creen que es hora de comenzar a plantar árboles?

Un nuevo comienzo

// Junio 18th, 2009 // 2 Comments » // andanzas

lobo_tuerto

Bueno, estos han sido días de cambio para mí. Y para celebrar y continuar con ellos acabo de instalar el Ubuntu 9.04, que cabe mencionar está a todísima madre jeje.

La interfaz está bastante suave, la respuesta visual es inmediata, ya no tiene esa sensación de lentitud que veía en la 8.10. Y el tiempo de arranque ¡ufff! Jaja, ¿necesitan más? :D
¡Pruébenlo!

También he decidido tomar partido entre vi e Emacs, aprenderé primero Emacs. A pesar de que NetBeans me agrada mucho, no puedo soportar más que se apendeje tanto cuando trata de mostrarte las sugerencias para seleccionar algún método.

Entre mis propósitos también se encuentra el volverme más ducho en la terminal de Linux. Hay tantas herramientas para la terminal (FTP, ssh, IRC, feeds, editores, etc) que emparejados con screen te pueden volver increíblemente productivo.
Además ya tiene un rato que tenía intenciones de entrarle a algún editor poderoso y creo que el momento ha llegado (aunque argumentan por ahí que Emacs no es realmente un editor, sino algo más grande que entre sus monerías, edita texto).

Ya veremos, y ya les iré comentando que tal me va. ;)

Little Wheel

// Junio 17th, 2009 // No Comments » // juegos, recomendaciones

little-wheel

Me encanta esa sensación que te da el experimentar un juego bien pulido, lleno de pequeños detalles sólo para tu deleite personal.

Little Wheel es un juego de resolver acertijos sencillos y directos. Con una atmósfera bien cuidada y un diseño impecable. Es verdaderamente encantador.
Diría que es especial para jugarse en una tarde de Viernes a la hora de la comida. :)
¡Jugar Little Wheel!

Depredado en

Rock, Paper, Shotgun

FireStats icon Con la potencia de FireStats