Friday, October 8, 2010

Ruby 2.0

Matz Matsumoto estará en San Francisco y en Silicon Valley la semana entrante, presentando "Ruby 2.0".

Otros de los temas que estará abordando serán la aplicación de Ruby en los campos de embedded, cloud computing, y supercomputación.

Referencia:
http://www.investfk.com/

Ubuntu 10.10

La nueva versión de Ubuntu, 10.10 saldrá dentro de ...


The next version of Ubuntu is coming soon


Referencia:
http://www.Ubuntu.com

Sunday, September 5, 2010

Ruby 1.9.2

Acaba de salir Ruby 1.9.2.

Ruby 1.9.2 es compatible con 1.9.1, excepto algunos cambios:

* Muchos métodos nuevos;
* Nuevo socket API (mejor soporte para IPv6)
* Nuevos cifrados
* clase Random que soporta varios generadores de números aleatorios
* Time ha sido reimplementado. Ya no tiene problema con el año 2038.
* algunas mejoras a regexp.
* $: ya no incluye el directorio corriente.
* dl ha sido reimplementado encima de libffi.
* nueva biblioteca psych que envuelve a libyaml. Se puede usar en vez de syck.

Ruby 1.9.2 pasa 99% de RubySpec.

Ruby 1.9 tiene 4 Niveles de soporte:

* Soporte para:
* Debian GNU/Linux 5.0 on IA32.
* Buen esfuerzo para:
* mswin32, x64-mswin64, mingw32
* MacOS X 10.5 (Intel) and 10.6
* FreeBSD 6 and later (amd64, IA32)
* Solaris 10
* Symbian OS
* No verificado para:
* Otras distribuciones Linux
* Otras versiones de MacOS X.
* cygwin
* AIX 5
* Otros sistemas compatibles con POSIX
* BeOS (Haiku)
* No soporta:
* Otros sistemas



Referencia:
"Ruby 1.9.2 is released", en la pagina oficial de Ruby

Monday, June 28, 2010

Ruby 1.8.7

Acaban de lanzar la versión 1.8.7-p299 de Ruby.
Es una versión de mantenimiento que corrige varios errores. Leer el ChangeLog.

Referencias:
http://www.ruby-lang.org/en/

Monday, June 14, 2010

Rails 3.0 RC

Hola amigos,

Esta notica para darles gracias a todos los que han estado leyendo el blog, y también a los que me han enviado comentarios positivos sobre el libro. Bueno saber que las pocas ideas que comparto por este medio sirven para ayudar a alguien al otro lado del mundo.

Hemos estado por acá un poco distraídos con el Mundial de Fútbol, así que pido disculpas, pues he tenido el blog un poco descuidado.

Lo último que acabo de leer es que Rails 3.0 RC (Release Candidate) está por salir en cuestión de días, así que os invito a estar pendientes.

El enlace de Rails es:
http://rubyonrails.org/

No os preocupéis, que Ruby sigue siendo nuestro lenguaje favorito. Los comentarios por esta parte del mundo son que "Ruby y Rails hacen ver a Java como un legado del pasado, algo así como recordamos cariñosamente a COBOL". :-) Definitivamente, Ruby y Rails son herramientas para construir el futuro.

Tuesday, March 9, 2010

Conferencia Ruby Nation

La conferencia RubyNation tomará lugar en Abril 9-10, en Reston, Virgina, y contará con la participación de Dave Thomas, y otros presentadores. Entre los temas a discutir está Rails 3.0 ... todo el mundo está hablando sobre Rails 3.0, en estos días.

Referencias:
RubyNation, sitio oficial
Agenda

Gráficos con Ruby y SVG

Hace un tiempo me puse a jugar con las diferentes formas de hacer gráficos en Ruby. Una de ellas es usando el paquete Tcl/tk, para pintar sobre un canvas en una ventana. Otra forma más interesante que descubrí después, fue por medio del lenguaje SVG. Se escribe un programa en Ruby que genere un archivo en formato SVG, y cuando este se abre con el browser, se puede apreciar un gráfico.

¿Por qué SVG?
* Porque es uno de los estándares de internet,
* porque se puede utilizar en aplicaciones cliente-servidor por internet,
* porque el nuevo HTML5 también tiene soporte para SVG, y,
* porque los nuevos browsers ya implementan soporte para HTML5 y SVG.

SVG es un lenguaje derivado de XML, declarativo, para hacer gráficos de vectores. Define primitivas para hacer líneas, rectángulos, elipses, círculos, etc, que se pueden utilizar para derivar gráficos complejos. Tiene también incluída la capacidad para hacer fills con efectos de luz y sombras (raster effects), texto, fonts, y animación.

Veamos un ejemplo sencillo:


<?xml version='1.0'?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 
  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>

<svg width='12cm' height='12cm' viewBox='0 0 1200 1200' 
  xmlns='http://www.w3.org/2000/svg' version='1.1'>

<desc>SVG creado con un programa en Ruby.</desc>

<rect x='1' y='1' width='800' height='800' 
  fill='none' stroke='blue' stroke-width='2'/>

<g stroke='green' transform=' scale(3)'>
  <line x1='50' y1='50' x2='50' y2='100' stroke-width='5'/>
  <line x1='50' y1='50' x2='75' y2='25' stroke-width='5'/>
  <line x1='50' y1='50' x2='100' y2='50' stroke-width='5'/>
  <line x1='50' y1='100' x2='100' y2='100' stroke-width='5'/>
  <line x1='75' y1='25' x2='100' y2='50' stroke-width='5'/>
  <line x1='100' y1='50' x2='100' y2='100' stroke-width='5'/>
  <text x='50' y='120' font-size='20' font-family='Verdana'>
    casa1
  </text>
</g>

<g stroke='blue' transform=' translate(200,0) scale(3)'>
  <line x1='50' y1='50' x2='50' y2='100' stroke-width='5'/>
  <line x1='50' y1='50' x2='75' y2='25' stroke-width='5'/>
  <line x1='50' y1='50' x2='100' y2='50' stroke-width='5'/>
  <line x1='50' y1='100' x2='100' y2='100' stroke-width='5'/>
  <line x1='75' y1='25' x2='100' y2='50' stroke-width='5'/>
  <line x1='100' y1='50' x2='100' y2='100' stroke-width='5'/>
  <text x='50' y='120' font-size='20' font-family='Verdana'>
    casa2
  </text>
</g>

<g stroke='red' transform=' translate(400,0) scale(3)'>
  <line x1='50' y1='50' x2='50' y2='100' stroke-width='5'/>
  <line x1='50' y1='50' x2='75' y2='25' stroke-width='5'/>
  <line x1='50' y1='50' x2='100' y2='50' stroke-width='5'/>
  <line x1='50' y1='100' x2='100' y2='100' stroke-width='5'/>
  <line x1='75' y1='25' x2='100' y2='50' stroke-width='5'/>
  <line x1='100' y1='50' x2='100' y2='100' stroke-width='5'/>
  <text x='50' y='120' font-size='20' font-family='Verdana'>
    casa3
  </text>
</g>

</svg>


En el ejemplo anterior se puede apreciar el uso de las primitivas <rect> para dibujar rectángulos, <line> para líneas, <text> para texto; y, <g> para agrupar primitivas bajo un mismo color. Notar también el uso de la propiedad 'transform' para mover y escalar los dibujos. Los lectores cuidadosos habrán notado que las coordenadas de las líneas de las tres "casas" son las mismas. La diferencia está en el uso de la propiedad 'transform'.

El resultado, cuando se ve este archivo con el browser es el siguiente:




Como se puede apreciar, no es difícil generar SVG desde Ruby. Con un poco de imaginación podemos generar gráficos más "sofisticados" tales como los siguientes:

La "Curva Dragón":




Epitrocoides:




Hipotrocoides:




Buscando, me encontré con estos otros módulos para hacer SVG con Ruby, pero no encontré suficiente información para iniciarme con ellos:
* RCairo
* Ruby/RSVG, parte de Ruby/GTK2 (?)
* SVG::Graph
* ruby-svg
* SVuGy

Referencias:
La especificación de SVG, en w3
Curva Dragón, en la wikipedia
Epitrocoides, en la wikipedia
Hipotrocoides, en la wikipedia