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

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.

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.

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.

miércoles, agosto 22, 2007

Uno de muchas

En este post tengo que agregar varias, varias notas.

Para la gente con la que tengo contacto más directo, principalmente por twitter esto ya no es noticia: ahora soy el flamante propietario de una Apple Macbook :P ¡Lo hice!

Ha sido una experiencia bastante rica, un ambiente agradable, un desempeño excelente y un ambiente familiar, después de todo en el fondo se trata de una variante de *nix. El único problema ha sido AirPort. Nomás no puedo configurarlo con los pinchis modems 2wire. Sucks.

Lo primero fue configurar un ambiente de desarrollo para lo cual me apoyé en los MacPorts, sin ahondar en detalles es un tipo de emerge: get code, compile, install. Easy, easy. Aún así me costó trabajo generar un ambiente para compilar Mono, cosa que conseguí hasta hoy.

Otra cosa agradable fue que resolvieron un bug que levanté en Mono, más detalles en mi blog hermano PartnerApi.

En la parte de las malas nuevas, mi ponencia fue rechazada en el EnLi ¡buaaa! ni modos :( (Sí quería ir).

Otra mala noticia es que pasó menos tiempo en línea gracias a los errores de Hellmex. Me suspendieron el servicio de banda ancha y teléfono por el desmadre que traen con el contrato desde que cambiamos de domicilio. Nomás pa'que le midan: el recibo con el nuevo número sigue llegando al domicilio anterior :S

Y pus bueno, sigo en el underground con Operación PyME. Ahora se me ha clavado la loca idea de desarrollar (bueno, seguir desarrollando) un framework que usé hace un par de años derivado de CSLA.NET y además una serie de Helpers muy similares a los famosos ApplicationBlocks; ya estaré posteando más detalles.

Finito.