asterisco y doble asterisco en bash (sobre globbing)

En mi cabeza tenía que asterisco|wildcard(“*”) significaba en los patrones “cero o más caracteres” y poner dos asteriscos(“**”) era la leche en temas de ficheros, hacía un barrido por los directorios y subdirectorios, pero no me funcionaba (en algún momento de mi vida eso me funcionó).

Buscando por ahí encontré que Bash nos ofrece shopt (shell options) para modificar el comportamiento de nuestras terminales y que tenía que activar “globstar”:

shopt -s globstar

Al dejarlo ir a dejar esa opción fija en mi .bashrc para la posteridad vi en mi ordenador, con Ubuntu, que ya estaba pero comentado:

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
# shopt -s globstar

Saludotes

Instalando Database Test Suite

El proyecto Database Test Suite[1] nos da unas herramientas para hacer pruebas de carga de nuestros sistemas gestores de bases de datos y poder optimizarlos. Los benchmarks de Database Test Suite  son parecidos a los de TPC[2].Los tipos de benchmark que hay definidos con su explicación y su equivalencia con los definidos en TPC[2],  los puedes encontrar aquí[3]. Pero la realidad es que si quieres probar MySQL sólo puedes usar el benchmark dbt-2 (database test 2)[4], PostgreSQL está soportado en todos los tests y en otros sapdb y SQLite.

La última versión es la 0.40 y es del 2007 pero si miras el repositorio verás que sigue activo.

Continue reading

Clonar una máquina virtual

Virtualbox nos permite clonar las imágenes que tenemos en nuestro host. De esta manera podemos aprovechar repetidamente imágenes que tengan todo instalado y configurado, o que estén impolutas.

Para clonar las imágenes dentro del mismo host solo necesitamos ejecutar el siguiente comando:

VBoxManage clonevdi Ubuntu-server-10.04.2/Ubuntu-server-10.04.2.vdi clone-ubuntu-server/clone-ubuntu-server-10.04.2.vdi

Siendo el primer parámetro la imagen original y el segundo el destino de la imagen clon.

 

Si la imagen que clonas es Ubuntu y la red no funciona, ejecuta este comando:

$ sudo rm /etc/udev/rules.d/70-persistent-net.rules

Eliminamos ese fichero porque allí está asociada la tarjeta de red virtual(de la imagen original) a la interfaz de red y al clonar ya no le cuadra :-)

 

Saludos

Acelerando nuestra test suite (exprimiendo nuestros cores)

Estoy trabajando en un proyecto en el que la mayor parte de los tests deben correr con Capybara+selenium lo que hace que cada ejecución de la test suite se haga eterna. En la búsqueda de mi felicidad(a.k.a. acelerar la batería de pruebas) probé diferentes drivers headless (celerity, zombie.js, akephalos y envjs) pero todos me fallaban por una cosa u otra, así que nada mi gozo en un pozo.

Dándole vueltas al tema me acordé de la gema Specjour[1], del colega Sandro(Hashrocket), que ejecutaba los tests de manera distribuida por la red y que podías usar en modo local. Como la aplicación no es precisamente sencilla y specjour funciona distribuyendo la aplicación rápidamente caí en que no era la mejor opción pero me dio el puntero hacia parallel_tests[2].

Esta gema tiene un funcionamiento más sencillo, se dedica a ejecutar cada spec/feature en un environment propio. Siguiendo las instrucciones de la gema y adaptándola a mi aplicación ya tenía la batería de tests corriendo como una exhalación y a los 8 cores de mi cpu echando humo.

Extra-ball:

No se a vosotros pero a mi eso de que me abra varios firefox por la pantalla, tocar alguno sin querer y hacer que el test pete no me mola nada. En Mac puedes decirle donde se debe abrir la aplicación X, los usuarios de Gnome también lo podemos hacer con Devil’s pie[3] fácilmente. Para ello instalamos devilspie y gdevilspie (aplicación y frontend), creamos el fichero ~/.devilspie/firefox.ds con el siguiente contenido:

 

; This rule move Firefox to viewport 4 (the last one in my desktop)
( if
( begin
( is ( application_name ) “Firefox” )
)
( begin
( set_viewport 4 )
)
)


Tenéis más ejemplos de Devil’s pie[4] o podéis hacer vuestras cosillas con gdevilspie fácilmente.


Salud y buenos alimentos!


[1] Specjour: https://github.com/sandro/specjour

[2] Parallel_tests: https://github.com/grosser/parallel_tests

[3] Devil’s pie: http://burtonini.com/blog/computers/devilspie/

[4] Ejemplos de Devil’s pie: http://foosel.org/linux/devilspie