lunes, 23 de enero de 2012

Aceleración gráfica en el Dell Vostro 3500 con nvidia GeForce 310M y Ubuntu 11.10

Este fin de semana he vuelto a reinstalar por enésima vez mi sistema operativo (con n tendiendo a gúgol). Y esta vez he decidido probar la versión de Ubuntu 11.10, que viene con Unity. No voy a contar qué es lo que me parece, porque no viene al caso en este post.

Lo que sí voy a contar es cómo, por fin y después de casi dos años, he conseguido tener aceleración gráfica en mi Dell Vostro 3500, y su tarjeta gráfica Nvidia GeForce 310M (from hell, añado yo). Quien sea el afortunado poseedor de dicha tarjeta gráfica, habrá podido comprobar en sus propias carnes lo frustrante que puede llegar a ser intentar instalar los drivers de nvidia para esta tarjeta en Ubuntu.

Pues como decía, el otro día que me puse a reinstalar el sitema operativo, y después de dejarlo niquelado, me dije a mí mismo: "como no tengo mejor que hacer con mi vida, ¿por qué no vuelvo a intentar instalar esta $#!* #@!*%& de tarjeta?"

Así que me puse a ello, instalé drivers, y demás y... ¡¡¡pantalla en negro!!! Por un momento dudé: no sabía si lo que estaba viendo en mi monitor era el futuro, o el alma de quien creó esta maldita tarjeta. Pero no, era lo de siempre: una alegoría a la facilidad que tengo para cargarme sistemas operativos recién instalados.

En fin, volví a restaurar el archivo de configuración de las X y, como no soy casi cabezón, me di otra oportunidad y navegué y navegué en la web hasta que di con el post de un tipo que decía... ¡que había podido activar la aceleración 3D en el mismo ordenador que el mío utilizando para ello un proyecto llamado bumblebee!

No me lo podía creer, así que me puse manos a la obra.

Antes de seguir, y para evitar el estrés conocido clínicamente como estrés qué-pasará-estoy-super-nervioso-quiero-ver-otro-capítulo-de-Lost-que-en-éste-seguro-que-me-resuelven-algún-misterio, quiero avisar a los lectores interesados que conseguí tener aceleración 3D, pero sólo para aplicaciones, no para el entorno de escritorio. No me echéis la culpa a mí, echádsela a los gobiernos, a las agencias de rating o a Mourinho, que yo sólo soy el mensajero.

Así que, como decía, estos fueron los pasos que seguí, y que también se pueden consultar aquí:
Primero añadí el ppa de bumblebee

sudo apt-add-repository ppa:bumblebee/stable

Eliminé los drivers de nvidia que tenía instalados en el sistema.

sudo apt-get purge nvidia-current

Añadí el siguiente ppa

sudo add-apt-repository ppa:ubuntu-x-swat/x-updates

Actualizé apt-get

sudo apt-get update

Instalé bumblebee

sudo apt-get install bumblebee

Añadí mi usuario al grupo bumblebee

sudo usermod -a -G bumblebee elafo

Reinicié las X y comprobé que todo había ido bien ejecutando

glxspheres

Esto hará que veamos unas esferas y unos resultados de rendimiento

optirun glxspheres

Esto hará que veamos las mismas esferas que antes, pero con mejor rendimiento.

Así pues, cuando necesitemos aceleración 3D, basta con ejecutar lo que necesitemos anteponiendo el comando optirun

Por último, si queremos tener aceleración 3D para aplicaciones en 32 bits (por ejemplo wine), y nuestro SO es de 64 bits, tendremos que instalar los siguientes paquetes

sudo apt-get install virtualgl-libs:386
sudo apt-get install virtualgl-libs:i386

Con esto ya tenemos la posibilidad de tener aceleración 3D. La pega de esto, es que no puedes utilizar aceleración 3D en máquinas virtuales, ni tienes disponible la aceleración 3D para tu entorno de escritorio. Así que habrá que seguir investigando para tener la aceleración en todas las facetas de nuestra vida.
Empujen fuerte, caballeros. Pero ya veremos quién empuja más tiempo. -- Arthur Wellesley

viernes, 20 de enero de 2012

RVM: LoadError (no such file to load -- openssl)

Hoy he tenido que reinstalar mi Ubuntu (versión 11.10) y al instalar una nueva versión de ruby (1.9.2) con RVM he tenido problemas para instalar la gema ruby-debug-base19.

En concreto me daba este error, que ya había visto muchas otras veces, pero del que nunca recuerdo su solución:

LoadError (no such file to load — openssl)


Bien, pues lo que pasaba es que había instalado esta versión de ruby antes de instalar los requisitos para esta gema, a saber, libssl-dev, openssl, libssl y compañía.

¿Cómo lo he solucionado? Pues en mi caso, que soy más vago que un político en agosto, he optado por desinstalar dicha versión de ruby y volverla a instalar.

A ver si la siguiente vez que tenga que reinstalar el SO (apuesto a que no más allá de tres meses) me acuerdo de hacerlo bien a la primera

La política es el arte de buscar problemas, encontrarlos, hacer un diagnostico falso y aplicar después los remedios equivocados. -- Groucho Marx

jueves, 12 de enero de 2012

Ordenando por el día actual en una relación has_many con thinking sphinx y rails

Mi último problema con thinking sphinx ha sido el siguiente:

Presentación

Tengo un modelo al que llamaremos, en un alarde de originalidad, A.

Dicho modelo, tiene una relación tipo has_many con otro modelo que, para no destrozar el flow, llamaremos B. Este modelo B, tiene un campo de tipo date llamado turn_date (aquí, el lector avezado, habrá podido intuir que el campo turn_date, representa la fecha de un turno.)

Lo que quiero es realizar una búsqueda con thinking sphinx, de forma que los elementos de A que tengan algún turno en el día actual me aparezcan primero.

Nudo

Para entendernos más fácilmente pongamos un ejemplo concreto: estamos haciendo una web donde se muestran los turnos de los hospitales en Cataluña para que, en el caso de que sufras un infarto, puedas saber a cuál tienes que ir (no vaya a ser que llegues media hora antes del cierre y no te puedan atender).

Así, pues tendríamos los modelos Hospital, y HospitalTurn


Lo que queremos es mostrar los resultados de una búsqueda, de forma que los hospitales que presten servicio en el día actual aparezcan primero.

Bien, ¿cómo hacemos esto?

Suponiendo que tenemos thinking sphinx configurado (y funcionando) habría que crear un atributo que represente si un hospital tiene algún turno que coincida con el día de hoy.


De esta forma hemos creado un atributo que valdrá 1 si existe un turno de guardia para este día, o 0 en caso contrario.

Desenlace

Ahora para realizar una búsqueda y ordenar por el criterio que queremos, es decir, mostrar primero los hospitales que dan servicio hoy, bastaría con hacer:


Y ya por último, sólo nos quedaría asegurarnos, por medio de un cron de que cada día a las 00:00 se reindexa nuestro bienamado sphinx... y, por supuesto, esperar no sufrir ningún infarto a partir de las 17:00 en Tarragona.

Créditos

Gracias a Javier Ramirez, que es el que me dio la solución a este problema.

Ahora con internet los niños se te educan solos. -- Hommer J. Simpson