Archivo de la categoría: Software Libre

Installing scipy in a Python virtual environment

Using virtualenv to create different python environments is a common practice while working in multiple projects. In addition, it may happen that we don’t have root access (i.e. admin rights) in the machine that we are using. Virtual environments are also quite useful in such situations. However, some python packages require extra dependencies that are not straightforward to install.

Installing scipy in a virtual environment should be initially quite straightforward:

python virtualenv.py myVE
source myVE/bin/activate
pip install scipy

However, during the installation of scipy I found the following three problems that took me several hours to solve. Here I share the solutions that worked for me in case they can be useful for someone else (specially myself in the future).

ImportError: libatlas.so.3: cannot open shared object file: No such file or directory
This error appears even having Atlas library properly installed. Apparently, it’s an error that only happens with numpy 1.9.2 in a virtual environment as I found in a small comment in Stack Overflow. The solution is to install the previous version:

pip install numpy==1.9.1

error: library dfftpack has Fortran sources but no Fortran compiler found
Despite my system had 3 different versions of gfortran, none of them were found by the installer. The solution is to create a symbolic link and then include it in your PATH variable.

ln -s /usr/bin/gfortran-4.7 ~/bin/gfortran
export PATH=$PATH:~/bin

ImportError: libopenblas.so.0: cannot open shared object file: No such file or directory
In this case, OpenBLAS library was not installed in the system, so the solution was to compile and install it manually. You can get the sources in the OpenBLAS website and then follow the installation guide.

make
make PREFIX=~/openblas install
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/openblas/lib
export PATH=$PATH:~/openblas/bin

Installing OpenLDAP in a Webfaction server

There are several forum threads regarding problems with the installation of OpenLDAP. The main issue that I faced has been the compatibility with Berkley DB libraries. I found in this site that the required version of Berkley DB for compiling OpenLDAP is 4.8. The steps for the installation are described below.

Once the Berkley DB library is installed, we can proceed to install OpenLDAP indicating the correct paths.

Finally, if we want to install also python-ldap library using pip we will find that the installation fails. For solving this issue, we have to indicate where OpenLDAP is located. If we are using a virtual environment (if not, you should!), we have to edit the following lines in the file $YOUR_VIRTUALENV_FOLDER/build/python-ldap/setup.cfg as explained by eikonomega.

I hope you find this post useful. Beware that installation steps may vary depending on your linux server and software versions.

Saving and loading tasks in MOA

MOA (Massive Online Analysis) is a great opensource and free software for data stream mining. If you are an enthusiastic of machine learning, classification or clustering, you should try it.

You can work with MOA using the GUI, as well as the command line interface via Java. If you are using the graphical interface, you can’t save and load previous tasks. Because of this, i have done some modifications in order to make my work easy.

As you can see in the image, I have add a couple of buttons to the interface:

  • Save Log: create a log file with the strings of the tasks previously executed (you can select one or more from the task list).
  • Set task manually: load a panel in which you can write the command of the task to run (for example, you can copy and paste a task from a previous log file).

The patch for moa.gui.TaskManagerPanel class is available in pastebin.

Visor de archivos MDB en Linux

Hace unos años escribí un post sobre cómo convertir un archivo MDB a ODB, pero desafortunadamente no funciona con la última versión de LibreOffice.

Por suerte, existe un software para GNU/Linux llamado mdbtools, que contiene una serie de utilidades para consultar las bases de datos MDB (de Microsoft Access), así como exportación a CSV.

La instalación se puede hacer en Ubuntu/Debian y similares instalando el paquete mdbtools de los repositorios, que provee los siguientes ejecutables:

mdb-array     mdb-header    mdb-parsecsv  mdb-schema    mdb-tables
mdb-export    mdb-hexdump   mdb-prop      mdb-sql       mdb-ver

Si preferimos usar una interfaz gráfica, basta con instalar el paquete mdbtools-gmdb y luego ejecutar

gmdb2 fichero.mdb

winetricks: utilidad imprescindible para wine

Si habéis usado wine alguna vez para ejecutar alguna aplicación que sólo está disponible para Windows, es posible que no os haya funcionado a la primera. Esto es debido a que hay ciertas aplicaciones que necesitan otras librerías para ejecutarse correctamente.

Si bien en la web oficial de wine, describen a winetricks como “un script rápido y sucio”, es bastante útil y sencillo de utilizar.

Para descargarlo, abrir un terminal y ejecutar:

wget http://winetricks.org/winetricks 

Si tenéis Ubuntu, podéis descargarlo de un repositorio:

sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo aptitude update
sudo aptitude install winetricks

Una vez, descargado, ejecutadlo y os aparecerá una interfaz gráfica donde permite escoger qué aplicaciones o librerías queréis instalar. No sé porqué, pero a través de esta interfaz no aparecen todas las opciones disponibles. Para ver un listado completo, ejecutad en la terminal:

sh winetricks list-download

Para instalar cualquier cosa, escribid simplemente el nombre de la aplicación. Por ejemplo, si queremos instalar Spotify y el framework .NET 3.5:

sh winetricks spotify dotnet35

.

Sigue leyendo

boxee-miso: first steps

Some months ago, Miso team announced that they will be release an API. If you don’t know, Miso is a social platform for sharing your media activities (something like Foursquare but for tv shows and movies). So, a few days ago, this API was released and I registered an application named boxee-miso. My goal is have a nice way to integrate Miso into Boxee fabulous interface. If you haven’t Boxee, don’t wait to download it!

The first thing I did was looking for the code which paint the “share” window in Boxee. I’m using MacOS X, so I found it in

/Applications/Boxee.app/Contents/Resources/Boxee/skin/boxee/720p/boxee_share.xml

. This XML file has a lot of elements, but what we need is to paint a button for checking in our Miso account. I add a new item (the middle one) like you can see in the next code:

I still don’t know what is the purpose of “controlid” param, but the others is quite easy to understand. The key of problem is to use well the “onclick” param. Fortunately, Boxee is based in XBMC, and I could found good documentation in this wiki. So we will use RunScript in order to execute a python script which will receive some params (like name of the show, season or episode).

The image specified by “thumb” param is stored in

/Applications/Boxee.app/Contents/Resources/Boxee/skin/boxee/media/icons/miso_top_logo.png

.

Thanks to all of this, I have reached write some content in the Boxee log using the script test.py specified in the “onclick” param. Now, I am working with the OAuth authentication of Miso API. I will keep you informed.

Extensiones útiles para MediaWiki

Estoy trabajando con Esteban Romero para migrar Descuadrando a MediaWiki, ya que actualmente funciona con DokuWiki. Por si no lo sabéis, MediaWiki es un software para wikis libre (GPL) y es el que usa Wikipedia.

La puesta en marcha de un sistema MediaWiki es bastante más compleja que con DokuWiki, pero a largo plazo tiene mucha más flexibilidad y muchas extensiones (plugins) que permiten ampliar funcionalidades. En este post os voy a enumerar las que estamos usado en Descuadrando.

  • reCAPTCHA: permite la integración de un captcha en el registro de usuarios.
  • SelectCategoryTagCloud: añade una nube de categorías en la creación de un post, para que sea más sencillo seleccionar una.
  • Widgets: permite añadir multitud de widgets a nuestras páginas.
  • ParserFunctions: permite añadir sintaxis más compleja como sentencias if o switch.
  • ExpandTemplates: similar a la anterior, pero con otro tipo de expresiones. Especialmente útil para plantillas.
  • InputBox: permite añadir formularios a las páginas.
  • AntiBot: bot para evitar spam y otras técnicas maliciosas.
  • UsabilityInitiative: proporciona mejoras de usabilidad, sobre todo en el editor.
  • ImageMap: permite crear image maps, es decir, una imagen con diferentes enlaces definidos por coordenadas.
  • StubManager: framework necesario para otras extensiones.
  • ImageLink: permite insertar imágenes con enlaces y añadirles ciertos atributos.
  • Cite: permite crear notas a pie de página.
  • CategoryTree: permite ver las categorías de forma jerarquizada.

En cada uno de los enlaces a la página de MediaWiki explican como se instalan cada una. Para la mayoría basta con subir los archivos al directorio “extensions” y luego añadir una línea al fichero LocalSettings.php.

Mostrar metadatos de música, imágenes y pdf en Nautilus

Intentando organizar un poco los artículos en PDF que tengo, me he dado cuenta que sería útil poder visualizar el autor y el título del mismo en el navegador de archivos de Gnome (Nautilus).

Buscando en Google he encontrado que ya existía algo similar, pero que solo servía para música e imágenes. Es una extensión que se llama nautilus-columns (hebra en Ubuntu Forums). Al ver que estaba hecha en python me he puesto a modificarla para añadirle soporte de PDFs. No ha resultado muy complicado gracias a la librería pyPdf.

Podéis descargar el script en http://pastebin.com/WxspTtvL

Son necesarias las siguientes dependencias:

# apt-get install python-nautilus python-mutagen python-pyexiv2 \
python-kaa-metadata libnautilus-extension1 python-pypdf

Una vez instalado, tenéis que activar los campos Title y Artist, para mostrar el título y el autor, respectivamente.

Editado: si usáis Ubuntu, podéis descargar la extensión con esta nueva modificación desde el repositorio oficial.


$ sudo add-apt-repository ppa:nilarimogard/webupd8
$ sudo apt-get update
$ sudo apt-get install nautilus-columns
$ nautilus -q