Archive
Why I like JRuby
Some days ago Tom forwarded me an email from Mikael Lammentausta. Mikael found an issue with rmagick4j. Using this Mikael's script
-
require 'rubygems'
-
require 'gruff'
-
-
def basic_graph()
-
g = Gruff::Line.new
-
g.theme = {
-
:colors => ['#7F0099', '#2F85ED', '#2FED09','#EC962F'],
-
:marker_color => '#aaa',
-
:background_colors => ['#E8E8E8','#B9FD6C']
-
}
-
g.hide_title = true
-
-
g.legend_font_size = 12
-
g.marker_font_size = 16
-
g.hide_dots = false
-
-
return g
-
end
-
-
-
def bmi(params={})
-
g = basic_graph()
-
-
g.y_axis_label = 'BMI'
-
-
bmis = [24.3, 23.9, 23.7, 23.7, 23.6, 23.9, 23.6, 23.7, 23.4, 23.4, 23.4, 22.9]
-
-
g.data( 'BMI', bmis )
-
g.hide_legend = true
-
return g
-
end
-
-
-
g=bmi
-
g.write 'graph.jpg'
You get two different outputs.
As you may see, the numbers are wrong in JRuby... or not.
Looking at gruff code, I saw the problem was in the label method.
-
def label(value)
-
if (@spread.to_f % @marker_count.to_f == 0) || !@y_axis_increment.nil?
-
return value.to_i.to_s
-
end
-
if @spread> 10.0
-
sprintf("%0i", value)
-
elsif @spread>= 3.0
-
sprintf("%0.2f", value)
-
else
-
value.to_s
-
end
-
end
The problem can be found in line 10. With a right input, you can make
-
(@spread.to_f % @marker_count.to_f == 0) || !@y_axis_increment.nil?
false and have a @spread < 3.0. Then look at this code:
-
i = 23.599999999999998
-
puts i
In JRuby, you get what you expect 23.599999999999998 but, in MRI, you get 23.6. So, that was the problem. JRuby is more precise than MRI.
NOTE:
jruby 1.1.5 (ruby 1.8.6 patchlevel 114) (2008-11-03 rev 7996) [i386-java]
ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
Pililtriquis.
DÃcese de los recuerdos horteras tales como castañuelas, muñecas flamencas (con su inseparable toro) y collares de cuentas enormes.
ArtÃculo en honor a MarÃa.
Prometo que cuando me haya operado el otro ojo pondré algo más, pero de momento, con intentar medir las distancias, voy bien.
Trailer de Futurama.
SÃ, vuelve Futurama. Me he visto el trailer como cinco veces, y a por la sexta que voy.
Sólo un comentario.
A parte de que un personaje como la señora que escribió este texto es incapaz de herirme, sólo dedicarle este pequeño párrafo:
AlienÃgena se escribe con g. Seguramente no esté usted familiarizada con los los libros de ciencia ficción, o siquiera con los libros, a parte de los relatos breves (chiste fácil a partir de su nombre, por si no lo pilla aquà tiene un enlace que se lo clarificará).
Un saludo.
P.D. El teñirse no la ayudará (¿qué pasa? Yo también sé usar clichés).
Nación VampÃrica: Decadencia
Hoy he visto el último capÃtulo de la serie Blade que, curiosamente, cuanto menos sale el protagonista, mejor es el episodio. Bien, en este último episodio, levantan a un vampiro por el cuello y se ve cómo se... ¿ahoga? ¿Un vampiro ahogándose? ¿Cómo se va a ahogar un ser que no está vivo (aunque tampoco esté muerto)?
A parte de que la serie tiene un gran problema llamado Blade (sÃ, creo que es una de las pocas series donde el protagonista sobra, y de qué manera), la intriga de la polÃtica vampÃrica está bastante bien, aunque personalmente le hubiese metido un poco más (por supuesto, quitando a Blade y dejando como protagonista a Marcus, el malo malÃsimo).
Queer as Superman
Superman era gay; sÃ, señor. La demostración reside en el conocimiento popular (exactamente en el dicho los que se pelean, se desean) y en la mera observación. Bien es sabido que los grandes amores de Kal-El (a.k.a. Clark Kent a.k.a. Superman) hijo de Jor-El tenÃan como iniciales L.L. SÃ, es lo que estáis pensando. ¿Quién era el archienemigo de Kal-El (a.k.a. Clark Kent a.k.a. Superman) hijo de Jor-El?
Lex Luthor.


