Mostrando las entradas con la etiqueta ruby. Mostrar todas las entradas
Mostrando las entradas con la etiqueta ruby. Mostrar todas las entradas

jueves, febrero 06, 2014

Reseña del libro "Learning Mongoid"

Hace unos días me invitaron de Packt Publishing a hacer la reseña de un libro y aún sin tener experiencia previa acepté.

Sin embargo, después de leer varias reseñas en sitios como Amazon y similares no quise seguir el mismo formato: leer de inicio a fin el libro y publicar mis comentarios.

En lugar de eso quiero hacerlo como un reporte de avance, cada capítulo leído compartir mis opiniones sobre el tema, como presentó la idea el autor, qué me parecieron los ejemplos del texto.

Así que a partir de hoy inicio la lectura de “Learning Mongoid” de Gautam Rege.
Espero me acompañen en esta lectura.

Finito.

Book Review: Learning Mongoid

A few days ago I was invited by Packt Publishing to publish a book review and even without prior experience I do accepted.

But after reading many book reviews in sites like Amazon I don't want to use the same format: read the book from beginning to end and then publish my comments.

What I want to do is to publish an advance report for each chapter I read and share my opinions about the subject, the way the author presented the idea, how much I liked the explanations or the code.

So, I’m beginning to read “Learning Mongoid” by Guatam Rege.

Hope you join me in this reading.

Finito.

martes, diciembre 28, 2010

Poor's Man Ruby Performance

Ya sé que existen muchos, tal vez cientos de evaluaciones y comparaciones del performance de las diferentes versiones e implementaciones de Ruby.

Muchas de ellas aplicadas con el mayor rigor científico que se pudiera exigir a algo tan trivial pero que al final siempre apantallan con sus gráficas y análisis.

En esta tarde de vacuidad, se me ocurrió hacer mi "Poor's Man Ruby Performace" chart solo pa'salir de dudas y jugar un poco con Rubinius, una implementación de Ruby que recientemente llegó a su versión 1.2.

En la gráfica comparo las siguientes versiones de Ruby:
  • Rubinius 1.2 via RVM
  • Ruby MRI 1.8.7-head via RVM
  • Ruby MRI 1.9.2-head via RVM
  • Ruby 1.9.2p136 via Brew
Todo esto corriendo en una MacBook Pro con 4GB de RAM y un Intel Core 2 Duo @ 2.2 GHz.

En la gráfica es obvio el interesante (y excelente) desempeño de Rubinius pero tiene el 'pero' de que la versión actual sigue implementando MRI 1.8.7. Yo ando de curioso ya con la versión 1.9.2 pero hasta el siguiente release se van a emparejar.

Antes de cerrar, les dejo la gráfica:



Y no, no es una inocentada.

Finito.

martes, octubre 20, 2009

WorkshopCamp Cd. de México

El BarCamp es una red internacional de "desconferencias" (eventos abiertos y participativos), cuyo contenido es provisto por los participantes. Se enfocan en aplicaciones web en estadios tempranos, tecnologías de código abierto y protocolos sociales. Sin embargo, este tipo de encuentros han ampliado su temática y actualmente incluyen eventos participativos y abiertos alrededor de temas sociales, artísticos, educativos... con fuertes componentes creativos e innovadores en los respectivos ámbitos.

WorkshopCamp será un evento con talleres con una duración de 3 horas impartidos por quien tenga algo que compartir y enseñar en un salón con temas orientados al diseño y desarrollo web.

Habrá dos turnos de talleres, el primero de 10 a 13 hrs y el segundo de 14 a 7 hrs.

El evento se llevará a cabo el próximo Domingo 25 de octubre 2009 en las instalaciones de Ked México, ubicadas en Av. Revolución No. 374, Col. San Pedro de los Pinos a una cuadra del metro San Pedro de los Pinos en la línea 7 del metro.

En lo particular me registré para participar exponiendo sobre el tema de "Behaviour Driven Development" dentro del track de ponencias de "México On Rails". Esta vertiente de desarrollo viene a completar mucho de lo expuesto en las metodologías ágiles en las cuales la interacción con el patrocinador del proyecto es indispensable. En el caso de BDD (por sus siglas en inglés) se tiene que resumir los requerimientos a aquellos que:
  • Protejan las ganancias
  • Incrementen las ganancias
  • Reduzcan los costos
De esta manera todos los participantes se enfocan en construir una aplicación que genera valor inmediato ya que refleja los procesos que realmente ayudan a salir adelanta a cualquier empresa u organización.

En el mundo Ruby y Ruby On Rails, se han desarrollado varias herramientas para apoyar las metodologías ágiles y BDD no es la excepción. El producto estrella en este caso es Cucumber, un framework para el soporte de los elementos del BDD. Se apoya en otro producto muy reconocido, RSpec, que permite el desarrollo de pruebas de una manera más natural y coloquial que por ejemplo Test::Unit, el framework estándar de Ruby y RoR.

Como sabemos que no todo mundo está familiarizado con Ruby y su medio ambiente, se incluirán charlas y talleres introductorios a Ruby, JRuby y una sesión de mejores prácticas.

El registro lo pueden realizar en WorkshopCamp Cd. de México.

¡Los esperamos!

Finito.

sábado, junio 06, 2009

Un día después

Como lo anuncié algunos días atrás, ayer se realizó el RubyCamp en el Instituto de Física de la UNAM en la misma línea de otros eventos estilo 'BarCamp' que se han venido haciendo recientemente y como tal concentra a gente innovadora y entusiasta de la tecnología, particularmente del lenguaje de programación Ruby y su 'killer app': Ruby on Rails.

Alex Juárez y su equipo de trabajo se encargaron del 99% del trabajo de organización del evento el cual incluyo una extensa lista de ponentes (/me incluido) que trataron una variedad de temas pero que nos dejaron con el ansía de seguir realizando eventos de este tipo donde escuchar experiencias e ideas de gente que usa estas herramientas para ganarse el pan y no solo bluffing mercadológico para vendernos algo.

Me parece que es necesario seguir ampliando los espacios para compartir experiencias y traer más material del tema en español. Comentaba en una oportunidad que si bien existen toneladas de información en inglés, es necesario crear nuestra base de conocimientos y compartirla, intercambiar dudas, preguntas, inquietudes sin temor a no obtener respuesta ni a una competencia desleal.

Me sigue inquietando el hecho de que seguimos protegiendo nuestros 'productitos' o 'sistemitas' más que a un niño pequeño e indefenso y por otra parte, en la edición de mayo-julio de la revista Software Guru viene una entrevista a Jorge Zavala que si bien no reconozco en algún ámbito dice algunas frases que me parecen bien ciertas,
  • "fail fast", si tienes una idea, enfréntala a la realidad, si es buena y funciona, invierte en ella sino continua con la siguiente.
  • Necesitas gente con mentes frescas antes que grandes recursos financieros.
  • Los negocios son para venderse, no quedarse toda la vida con ellos.

También hace referencia a los 'Super Happy Dev House' que se han venido realizando y en lo particular lo asocio con algunos de los eventos 'BarCamp' que han pasado. Hay gente que buscamos compartir lo que creemos bueno, nuestras experiencias y nuestras ambiciones y encontrar algunos otros con las mismas inquietudes, buscar una o más relaciones 'ganar-ganar' donde los beneficios se repartan entre los participantes.

Me quedé con un costal de ideas y un delicioso sabor de boca después de esta experiencia y sin lugar a dudas creo que este ha sido el mejor evento en lo que va del año. Realmente espero el siguiente para participar de nuevo y encontrar más personas participando, intercambiando experiencias y conocimiento.

Finito.

viernes, mayo 29, 2009

RubyCamp

El próximo viernes 5 de junio se realizará el evento RubyCamp en las instalaciones del IFUNAM. Como el nombre lo indica, la organización del evento cae en el formato de los Barcamps y las 'no-conferencias'. Se van a concentrar varios conocidos que trabajan activamente con Ruby  y con Ruby On Rails  dando breves pero sustanciosas pláticas pero también veo en la agenda del evento, gente nueva en la onda Ruby On Rails.

Así que se extiende la invitación a todos los lectores, más detalles los pueden encontrar en el sitio del evento , en la lista de correos  o simplemente síguenos en twitter .

Finito.

miércoles, octubre 22, 2008

Podcast con invitado especial: Yo :D

Hace más o menos un año Arturo Garrido, el rey del Twitter me platicó que había conocido unos cuates que traían unas ideas chidas sobre la web 2.0 y que andaban con la cosquilla de hacer un podcast sobre el tema. Eso fue la concepción inicial de Monólogos de la Cantina, el podcast de los retrosexuales y la web 2.0 en el que han ido desfilando una serie de protagonistas de estos tiempos digitales.

Mi gran sorpresa fue recibir una invitación de parte de ellos para platicar sobre Ruby On Rails, herramienta con la que he venido trabajando durante el último año y que en el podcast comparto mi experiencia y opiniones sobre el tema y algunos comentarios adicionales.

Si no les gusta el tema, pueden buscar otros episodios en los que seguramente encontrarán algún tema de su interés y quien sabe.. a lo mejor también ingresan a las filas de los retrosexuales :P

Un agradecimiento enorme al crew de Monólogos de la Cantina @omendoza, @_kuro y por supuesto, @arturogarrido.

Finito

lunes, diciembre 24, 2007

Instalando Ruby on Rails en Mac OS X

Con la llegada de la nueva laptop, tuve que reinstalar mucho del ambiente que ya tenía configurado en el otro equipo y que para ser honestos, hasta se me había olvidado el "como"; así que esta vez lo voy a poner en blanco y negro.

Brevemente comenté acerca de MacPorts, una iniciativa que provee de un ambiente fácil de usar para compilar, instalar y actualizar paquetes de software desde la línea de comandos. Es como varios de los ambientes Linux (apt-get, emerge), se descarga el código fuente y mediante una serie de scripts se compila, instala y ¡listo, a usarse!. El sitio web de MacPorts se puede encontrar en http://www.macports.org y ahí existe una guía detallada para su instalación. Algo que no se debe omitir es la instalación de la paquetería adicional de XCode ya que entre los programas instalados se encuentra gcc, el compilador C que es indispensable para el correcto funcionamiento de MacPorts.

Mac OS X 10.4 (Tiger) viene de fábrica con Ruby 1.8.2 pero como es obvio no es la versión más reciente del lenguaje. En cambio con MacPorts estoy instalando la versión 1.8.6-p110 y además compilada específicamente para mi máquina. Ya teniendo instalado MacPorts solo se teclea la siguiente línea de comandos:

$ sudo port install ruby

Y MacPorts se encarga de descargar, configurar e instalar Ruby.

Lo siguiente es tener RubyGem, el administrador de paquetes o "gemas"; para  su instalación hacemos lo siguiente:

$ sudo port install rb-rubygems

Y esperamos pacientemente durante la descarga, configuración, compilación e instalación del software. 

La versión de rubygems que trae MacPorts no es la más reciente así que también actualizamos este paquete, pero ahora por medio del mismo rubygem, para esto usamos la siguiente línea de comandos:

$ sudo gem update --system

Si vamos a utilizar sqlite3 como base de datos, es necesario instalar las bibliotecas para conectarnos directamente, esto lo hacemos de la siguiente manera:

$ sudo gem install sqlite3-ruby

Finalmente, podemos instalar Rails usando el siguiente comando:

$ sudo gem install rails --include-dependencies

Podemos especificar la versión a instalar mediante el switch --version, el caso específico para instalar la versión 1.2.6 es como en la siguiente línea:

$ sudo gem install rails --version "= 1.2.6"  --include-dependencies

¡Y con esto tenemos un ambiente Rails listo para desarrollar! 

Finito.

domingo, diciembre 02, 2007

Instalando Rails + sqlite3 en Windows XP

Ayer en la mañana tuve la ocurrencia de revisar la PC de la casa. No es un equipo reciente, baste decir que lo armé circa 2003 sin embargo es el equipo de batalla de mis hijos. Navegan, escuchan música y ocasionalmente juegan, obviamente el hacer tareas es su tarea más socorrida.

Pues bien, este equipo con todo y sus limitaciones alguna vez me sirvió para trabajar y ahora se me ocurrió actualizarlo al ambiente de desarrollo que utilizo. Pero para tal efecto se me ocurrió utilizar sqlite3 en lugar de cualquier otro RDBMS. Los pasos fueron los siguientes:

  • Descargar e instalar Ruby.
  • Descargar, extraer e instalar RubyGems.
    • C:\ruby-gem-0.95> ruby setup.rb
  • Actualizar las gem's instaladas.
    • C:\> gem update
  • Descargar sqlite3, extraerlo en un directorio y agregar ese directorio al PATH.
  • Instalar la gem sqlite3-ruby
    • C:\> gem install sqlite3-ruby
  • Instalar Rails
    • C:\> gem install rails --include-dependencies
  • Presto!
    • C:\> rails --database=sqlite3 demo
Finito.

lunes, noviembre 19, 2007

Configuración de Rails y SQL Server

La naturaleza multiplataforma de Ruby On Rails nos demanda adecuarnos a todos los ambientes de ejecución disponibles aún y cuando estos no sigan la filosofía del software libre.

Un ambiente que se va a presentar muy comunmente es Windows y SQL Server.

Entonces he aquí la receta sencilla y probada para soportar SQL Server dentro de Rails.

Primero, habrá que descargarse la gem ruby-dbi desde http://rubyforge.org/projects/ruby-dbi . ruby-dbi es un mecanismo de acceso a datos inspirado en Perl::DBI. En la gem viene incluido el soporte a varias bases de datos y durante el proceso de instalación se selecciona cuales se van a soportar.

La descarga es un archivo .tar el cual se expande en un directorio desde el cual ejecutamos las siguientes instrucciones:


# primero configuramos el ambiente para usar ActiveX Data Objects (depende de win32ole)
c:\>ruby setup.rb config --with=dbi,dbd_ado

# la llamada de siempre
c:\>ruby setup.rb setup

# finalmente la instalación
c:\>ruby setup.rb install


Con esto ya tenemos la capacidad de acceder a SQL Server desde Ruby. Ahora falta configurar SQL Server para que permita conexiones mediante usuario/contraseña. Para esto configuramos el modo de autenticación "mixed" dentro de las propiedades de seguridad del servidor.

A continuación se crean el login de SQL Server y la base de datos asociando el login como dbo de la base recién creada y se crea el proyecto rails como de costumbre.


c:\>rails proyecto


Después se actualizan los datos del archivo config/database.yml


development:
  adapter: sqlserver
  database: database_development
  username: user
  password: password
  host: .\SQLEXPRESS


Esta configuración funciona con las versiones 2000 y 2005 de SQL Server. La diferencia que he encontrado es el manejo de valores nulos en columnas de tipo integer. En SQL Server 2005 sustituye los valores nulos con ceros mientras que en la versión 2000 funciona correctamente.

Finito.

sábado, noviembre 17, 2007

Desarrollo multiplataforma

Actualmente estoy desarrollando una aplicación web con Rails. Lo curioso del caso son los ambientes que manejo: desarrollo, pruebas locales y servidor de prueba.

El equipo de desarrollo como imaginarán es mi laptop, el ambiente de pruebas locales es mi laptop con otro sistema operativo y el servidor de prueba está más cercano a lo que será el ambiente de producción. En la tabla a continuación muestro los detalles































Ambiente Características OS DB Server Ruby/Rails versions
Desarrollo MacBook Core 2 Duo/2GB RAM Mac OS X 10.4 (Tiger) sqlite3 1.8.6/1.2.5
Pruebas Locales MacBook Core 2 Duo/2GB RAM Microsoft Windows XP Professional SP2 SQL Server 2005 Express 1.8.6/1.2.5
Servidor Pruebas HP Xeon 2.0 GHZ x 4 Windows 2000 Advanced Server SQL Server 2000 Enterprise Edition 1.8.6/1.2.5


El soporte a SQL Server en Windows es algo laborioso de configurar (prometo detallarlo en otro post) y algo que llama mucho la atención es el diferente comportamiento de SQL Server entre sus dos versiones, 2000 y 2005. En SQL Server 2005, todos los campos enteros aún y cuando se defina el valor por defecto como null siempre aparecen con un valor '0'. En SQL Server 2000, si dices null aparace null. Tal cual.

Fuera de eso y de las obvias configuraciones el código de la aplicación es el mismo.

Por cuestiones desconocidas para mí (y creo que para el admin del servidor también) el desempeño del servidor es terriblemente malo. En los logs de Rails se registra un cálculo aproximado de peticiones que se pueden atender según el equipo en el que estamos ejecutando. En mi laptop este número varia entre 13 y 15 peticiones por segundo. En el servidor de prueba hay valores tan bajos como 4 peticiones por segundo. Espero que el ambiente de producción esté mejor operado.

Finito.

viernes, agosto 24, 2007

La verda' no se puede ocultar

Hace rato posteé sobre el video de Rails vs. .NET, me pareció bueno pero lo que viene a continuación es simplemente..... ¡¡¡GENIAL!!!

Me encanta la última escena.




Finito.

martes, agosto 14, 2007

Misterio sin resolver

Entre mis feeds de hoy me encontré este post que refiere a este otro. ¿Cuál es la gracia? Se trata del código fuente de la página principal de Facebook (según su dicho).

Independientemente de esta situación, me parece el clásico ejemplo PHP: ininteligible, aburrido y extremadamente "verbal".

Mi punto de vista sobre un lenguaje siempre nace la capacidad de 1) representar un modelo de dominio y 2) el esfuerzo para representar éste. A lo largo de ya algunos años he conocido y trabajado con dos modelos para construir software, con n lenguajes y en n plataformas. En cualquier caso he ido saltando de lenguaje conforme apareció otro que me representara una ventaja sobre el actual tomando como referencia los numerales anteriores.

En concreto, con PHP no se obtiene ventaja de uno u otro aspecto. Y cuando volteo y me encuentro con RoR, simplemente se afirma mi punto de vista y aumenta mi duda ¿cómo es que PHP llegó a tener la difusión que goza actualmente?

Finito.

lunes, julio 23, 2007

IronRuby para todos

John Lam, ha hecho publica la primera liberación de IronRuby.


Soporta la integración con las bibliotecas estándar de .NET, para usarlas se debe incluir lo siguiente:
require 'mscorlib'
require 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

Tomar nota en que se está especificando el nombre calificado del assembly.

También se pueden usar clases aún sin haberlas incluido, como sigue:

Window = System::Windows::Forms::Window
Han hecho comparaciones contra Ruby 1.8.6 y reportan al menos un desempeño equiparable en relación a las bibliotecas, en las llamadas a métodos dicen ser más rápidos. Sin embargo, parece ser que hay algunos problemas de desempeño cuando se levantan excepciones.

Considero este anuncio importante desde el momento en que mostraron Silverlight lo acompañaron de un demo de IronRuby. Hace unos meses, Scott Hanselman comentaba acerca del distanciamiento de Microsoft y los Alpha Geeks. No sé si esta liberación es bluffing para recuperar Alpha Geeks o realmente Microsoft tiene interés en Ruby.

Finito.

domingo, julio 22, 2007

Compilando paquetes en Ubuntu

Una de las cosas que más me interesa de Gentoo, es la adaptabilidad al host. Esto es, al compilar cada paquete en el host, este queda lo más afinado posible. Pero.... sigo teniendo en mi laptop Ubuntu.

Algo que me irritaba de pequeña pero constante manera era ver en la terminal el siguiente mensaje:

$ ruby -v
ruby [i486-linux]

Así que para probar esto de la compilada de paquetes de código fuente, mi primera víctima fue Ruby.

¿Cómo hacerle?

De inicio hice un directorio para guardar ahí todo lo relacionado:

~/src/ruby

a continuación descargué los paquetes de código fuente. Si bien aparecen decenas de paquetes lib*-ruby, realmente solo me fuí por el núcleo.

apt-get source ruby1.8 irb1.8 rdoc1.8

luego, en el directorio donde se encuentra el código, iniciar la venerable secuencia de configurar..

configure --prefix={your prefix} --enable-pthread --enable-install-doc --enable-shared

... construir ...
make

...y probar

make check

et voilà, c'est fini!

sudo make install

ahora al probar de nuevo

$ ruby -v
ruby 1.8.5 (2006-08-25) [i686-linux]

¡Correcto! Ahora ¿qué sigue? ¿será la próxima víctima el kernel?

Finito.

viernes, julio 20, 2007

Otro script con Ruby

Y heme aquí, otra vez dándole al scripting con Ruby.

Ahora la tarea encomendada fue convertir un archivo CSV a un simple archivo XML.

Esto es de aquí:

20117252110,11.103.2.14
020126252110,11.102.2.24
020201052151,172.16.47.14
020301022151,11.44.2.14
020401052151,11.43.2.14
...


hasta acá:

<ruteo>
<ruta>
<clave_presupuestal>20117252110</clave_presupuestal>
<direccion_ip>11.103.2.14</direccion_ip>
</ruta>
</ruteo>


Entonces ¿qué hice? Lo primero fue recurrir a un par de libros. La biblia de Ruby: Programming Ruby y Enterprise Integration with Ruby. Además de encontrar en línea la documentación de la biblioteca estándar en ruby-doc.org. Así encontré felizmente que como todo lenguaje que se precie de ser moderno, la biblioteca estándar viene con clases para manejar XML. Dado... ¡a tirar código!


# traemos el conjunto de clases para el manejo de XML
require 'rexml/document'

# vamos a crea rutas
class Ruta
# esto es increible, con este método se crean las propiedades de lectura/escritura
attr_accessor :direccion_ip, :clave_presupuestal

# el constructor
def initialize(clave_presupuestal, direccion_ip)
@clave_presupuestal = clave_presupuestal
@direccion_ip = direccion_ip
end

# el método que hace la chamba
def to_xml
ruta = REXML::Element.new('ruta')

# creamos los elementos y les asignamos valor
# las @variables tienen alcance únicamente en esta clase
ruta.add_element('clave_presupuestal').add_text(@clave_presupuestal)
ruta.add_element('direccion_ip').add_text(@direccion_ip)

# regresamos el elemento XML que acabamos de crear
ruta
end

# solo para probar
def to_s
@direccion_ip + " " + @clave_presupuestal
end
end

class Ruteador

def initialize
# creamos el documento y el nodo raíz
@doc = REXML::Document.new
@ruteo = REXML::Element.new("ruteo")
end

def lee_informacion(nombre_archivo)
f = File.open(nombre_archivo, "r+")

# leemos el archivo línea x línea y lo guardamos
# en el array @lista cool!
@lista = f.readlines()
f.close
end

# este método hace la chamba
def convierte
# el arreglo con los datos convertidos desde CSV
@convertido = Array.new

# iterators! un regalo del cielo
# y code blocks!
@lista.each do |line|
# recortamos cada línea y la separamos entre cada coma ','
clave_presupuestal, direccion_ip = line.chomp.split(',')

# esto es simplemente hermoso
# agregamos al arreglo @convertido un nuevo objeto Ruta
# pero chequen: no 'add' method, use '<<' instead
@convertido << Ruta.new(clave_presupuestal, direccion_ip)
end
end

# ahora, a escupirlo....
def escribe_xml(nombre_archivo)

# otra vez iterators & code blocks <- this rulz!
@convertido.each do |entry|
# ¿recuerdadn Ruta.to_xml?
@ruteo.add_element(entry.to_xml)
end

# agregamos el nuevo objeto al documento
@doc.add_element(@ruteo)

# y a ponerlo por escrito
f = File.open(nombre_archivo, 'w+')

# esto también es chulo de bonito, chingao!
@doc.write(f, 0)
f.close
end
end

# a poner todo a trabajar
ruteo = Ruteador.new

ruteo.lee_informacion("rutas.csv")
ruteo.convierte
ruteo.escribe_xml("demo")


Finito.

miércoles, julio 04, 2007

Scripteando con Ruby

Hoy tuve que procesar un archivo de direcciones ip para contabilizar el número de conexiones desde cada dirección. Cosa simple ¿no?

Seguramente en las herramientas de todos los días (shell) lo hubiera conseguido en algunos minutos. Habrá quien lo resuelva en unas cuantas líneas de Perl, tal vez Python o whatever.

Sin embargo tuve la linda ocurrencia de hacerlo con Ruby. ¡¿Ruby?! ¿No solamente es para hacer aplicaciones web y frameworks? Pues no, creo que no.

Por alguna referencia encontré Everyday scripting with Ruby. No he comprado el libro pero el título me motivó para hacer esta prueba. ¿Puede ser Ruby un lenguaje que compita contra Perl? Muchos de los scripts de administración se construyen religiosamente con Perl o en mi caso mayormente con shell. Pero quisé probar Ruby en algo que no fuera el hype de Rails.

Realmente el problema es sencillito. Pero la experiencia es harto interesante. De inicio conseguir ayuda. ri es terriblemente práctico. Respuestas concisas, precisas y macizas. Luego la experiencia iterativa e interactiva. Vas ejecutando, encontrando errores y corrigiendo (al menos a este nivel de experiencia) lo cual es altamente ¿didáctico?. Aparece un error y corres a ri para confirmar si lo que quisiste hacer se puede. Te das cuenta del error, corriges y va de nuez.

Si bien existen pruebas unitarias, es un punto que lo veo más asociado a desarrollo de aplicaciones. En este momento no veo que tanta utilidad pudieran tener para los scripts de administración.

Fue padre. Si, lo acepto. Me tardé más tiempo de lo que requiere la tarea pero valió la pena. Voy a buscar la manera de hacerlo más seguido. De hecho, voy a solicitar que instalen Ruby en los Solaris. A ver si no se me paniquean. :D

Finito.

domingo, mayo 20, 2007

Ruby on Rails vs. PHP

No dejan de entretenerme. Lástima que hasta el siguiente lunes aparece el nuevo episodio.



Finito.

martes, mayo 15, 2007

Ruby vs. PHP: Sigue la mata dando

De la misma serie de videos promocionales de Ruby. Just watch it.




Finito.

lunes, mayo 14, 2007

Ruby vs. Java Parte II

Al mismo estilo de los comerciales de Apple, Mac vs PC, estos tipos se han aventado un videito bastante chulo.




Finito.