jueves, 25 de agosto de 2011

Borrando imágenes no usadas en un proyecto Rails

Para acabar el rediseño de un proyecto, estoy en la fase final de limpieza de código y me he encontrado que habían muchísimas imágenes antiguas que ya no se utilizan

En lugar de ir buscando una por una si se usaba, que me iba a llevar demasiado tiempo, he hecho un script en ruby que busca las imágenes no usadas y las borra de subversión:


images = Dir.glob('public/images/*')

images.each do |image|
  unless File.directory?(image)
    puts "Checking #{image}..."
    if IO.popen("ack-grep -1 -G '(app|public)' --ruby --html --css #{File.basename(image)}").eof?
      IO.popen("svn delete #{image}")
      puts " Deleted"
    end
  end
end

Es tan simple como buscar todas las imágenes del directorio images y aplicar sobre cada una de ellas un ack-grep que me busca en ficheros de ruby (.rb, .erb), html y css de los directorios app y public. El párametro -1 hace que al encontrar el primer resultado deje de buscar, con lo que conseguimos que vaya un poco más rápido.

Luego, sobre cada una de las imágenes no usadas hace un svn delete y ya solo nos queda revisar la lista de borrados para asegurarnos de todo ha ido bien y un commit al repo.

La modificación para que busque tambien en subdirectorios de images sería  usar 'public/images/**' como parametro en Dir.glob y igual de simple sería cambiarlo para que use git, cambiando la llamada del segundo IO.popen

Pues nada, aquí dejo el gist con el script para quien le pueda ser de utilidad.



viernes, 17 de junio de 2011

Euruko 2011 - Impresiones

Manteniendo la tradicción de contar mis impresiones de las conferencias a las que asisto, le toca el turno a Euruko, que fue en Berlín a final de Mayo (ya me vale tardar casi 3 semanas en escribirlo...)

Este año me han gustado bastante las charlas, más que el año pasado. De todas formas Euruko es una conferencia que nunca defrauda.

La organización fue magnífica, con una sala impresionante, la wi-fi más rápida y la pantalla más grande que nunca he visto en una conferencia. Y litros y litros de Club Mate para recuperarnos de las largas noches berlinesas.

Por criticarles algo, el infierno que supuso conseguir un ticket para asistir, y en la sala de conferencias se les olvidó que existe mundo aparte de los mac. La única forma de conectar un portátil era con DVI, y más de uno tuvo que hacer su lighting talk sólo hablada sin poder proyectarla.

Eso si, ese olvido nos proporcionó en una ligthing talk una extraña pareja en el escenario: un MacBook Air y Javi Ramírez :p

Por destacar 3 charlas:

* Para mi la estrella sin duda de este año fue Paolo Perotta y su magnífica charla sobre method missing

* Karel Minařík hablando sobre ElasticSearch y su gema Tire , que ahora mismo creo que son la mejor alternativa para usar Lucene desde ruby (los que esteis usando Solr vale la pena echarle un vistazo)

* Tambien destacaría la charla de wooga sobre escalar juegos en Facebook, con muy buenos consejos, y lo mejor, todos apoyados en datos reales y su experiencia.

Que destaque esas tres no quiere decir que fueran lo único interesante, y igual si lo escribiera dentro de unos meses eligiría otras. Hubo mucha variedad de temas, filosofía sobre patrones de diseño, eventos, concurrencia, javascript, procesado de imagen....

En definitiva, vale la pena dedicarle unas horitas a ver los vídeos cuando se publiquen.

Por último, parece que Arduino y Adhearsion se han hecho un hueco en muchas conferencias por la variedad de temática que ofrecen respecto al resto de charlas. Y de nuevo por criticar algo, al final todas las charlas que he visto de esos dos temas son muy parecidas, y me producen un sentimiento encontrado de 'como molan' y 'otro año más más de lo mismo'.

Agradecerle a ASPgems que me financiara el viaje y la estancia y nos vemos en Amsterdam en la última Euruko antes del fin del mundo....

sábado, 2 de abril de 2011

Instalando Ubuntu en Vostro 3500


Actualización 10/12: He creado una entrada complementaria a ésta explicando las novedades en la instalación en Ubuntu 12.04 
http://diec123.blogspot.com.es/2012/09/instalando-ubuntu-en-vostro-3500-parte-2.html


Hace un par de meses cambié mi Dell Inspiron 6400, al que después de 4 años ya le tocaba descansar un poco, por un Dell Vostro 3500. Iba a poner un link a las especificaciones, pero veo que ya no lo venden y ahora está el Dell 3550, que es muy similar pero la tarjeta gráfica en lugar de ser nVidia GeForce es una ATI Radeon.

Lo primero que hice al encenderlo despues de ver que funcionaba con el Windows 7 de serie, fue instalar Ubuntu 10.10.

Tengo un par de compañeros de oficina que tienen ubuntu 32bits en este mismo ordenador, pero yo he probado con el de 64bits a ver que tal funciona.


Estos son los problemas que me he encontrado con el portátil:

Wi-Fi
La wi-fi conecta sin problemas, pero la conexión a internet no va todo lo rápida que debería ir (conectando directamente por cable al router me da 50Mbps y por wi-fi nunca me daba más de 7 o 8 Mbps). Además iwconfig siempre me daba como Bit Rate 1Mbps, así que me puse a investigar un poco...


Según las especificaciones del ordenador es una Dell Wireless 1501 (802.11b/g/n), pero según donde miraba me decía que es una Broadcom 4727 o una Broadcom 4313

$ dmesg | grep Wireless
[    8.954673] eth1: Broadcom BCM4727 802.11 Hybrid Wireless Controller 5.60.48.36

$ lspci -nn| grep Network
12:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11b/g LP-PHY [14e4:4727] (rev 01)


En la web de Broadcom aclaré ese lío de nombres, la respuesta está en el readme.txt del driver. Dell 1501 es el nombre que le da Dell a la tarjeta, que realmente es una Broadcom 4313 y el 4727 es el vendor id. Al ejecutar lspci con la opción -nn muestra el id del fabricante (14e4) y de la tarjeta (4727).


En ese mismo readme.txt en la sección 'what's new' hay varios cambios que afectan a esta tarjeta que no están en el driver que instala ubuntu por defecto, así que me descargué el driver, compilé y instalé siguiendo las instrucciones.

Con el nuevo driver ha subido bastante la velocidad de conexión y iwconfig ya da la velocidad de conexión real. Problema resuelto.


Tarjeta gráfica

Este ordenador lleva una tarjeta gráfica híbrida, por lo que parece cuando hace falta poca potencia gráfica o en modo de bajo consumo utiliza sólo la tarjeta integrada y cuando se necesita toda la potencia utiliza la nVidia.

$ lspci |grep VGA
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 18)
01:00.0 VGA compatible controller: nVidia Corporation GT218 [GeForce 310M] (rev a2)



pero el driver de nVidia no se lleva bien con ubuntu, y al instalarlo se queda frito el entorno gráfico

Hay un error abierto en launchpad

https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers/+bug/643895

Pero los últimos drivers siguen sin funcionar bien, así que seguiremos esperando....

Además da un error de la tarjeta integrada al arrancar:

$ dmesg |grep intel
...
[    7.382308] intel ips 0000:00:1f.6: failed to get i915 symbols, graphics turbo disabled
...

Y tambien hay un error abierto en launchpad que dicen en los comentarios que se soluciona con la última versión del kernel

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/651104

Y para acabar de liarla, hay algún error más en el log de arranque

$ dmesg |grep Graphics
[   12.717458] agpgart-intel 0000:00:00.0: Intel HD Graphics Chipset
[   13.011187] [drm] MTRR allocation failed.  Graphics performance may suffer.

Así que por ahora he decidido no darle más vueltas a la tarjeta y esperar a ver si se soluciona. Será por todos estos problemas por lo que han cambiado de nVidia a ATI en el nuevo modelo???


Lector de huellas

Tiene integrado un lector de huellas que en windows funciona sin problemas, pero que ubuntu no lo reconoce:

$ lsusb
Bus 001 Device 004: ID 138a:0008 DigitalPersona, Inc



Actualizando la lista de Ids, al menos se entera de que es un lector de huellas

$ sudo update-usbids
$ lsusb
Bus 001 Device 004: ID 138a:0008 Validity Sensors, Inc. VFS300 Fingeprint Reader


Instalé fingerprint-gui desde ppa a ver si lo reconoce

$ sudo add-apt-repository ppa:fingerprint/fingerprint-gui
$ sudo apt-get install fingerprint-gui

pero no reconoce el lector, y de nuevo en launchpad encontramos otro error abierto


https://bugs.launchpad.net/ubuntu/+source/linux/+bug/285089

Por lo que dicen, parcheando y compilando la última versión de libfprint funciona, pero todavía no lo he probado.



Ventilador
Otro problema que me he encontrado es el ventilador, que una vez que arranca, ya no para nunca. No es un ruido insoportable y en un ambiente de oficina ni se nota, pero estando en casa si que se nota.

Con Dellfand se puede modificar la velocidad del ventilador en función de la temperatura, que parece que tiene 3 estados (parado, velocidad lenta y velocidad rápida).

Al ejecutarlo detecta la temperatura y la velocidad del ventilador, pero no es capaz de actualizarla. En el ejemplo intenta actualizar del estado 2 al 0 pero le da error

$ sudo ./dellfand 0 5 45 50 55
Fan 0 Status 2->0 Speed 138000 CPU Temp 42C
dellfand: warning: set fan 0 status to 0 last cycle, it's now 2 (BIOS interference ?)
Fan 0 Status 2->0 Speed 138000 CPU Temp 42C
Fan 0 Status 2->0 Speed 138000 CPU Temp 45C


Así que conviviremos con el ventilador por ahora...

He encontrado muchas quejas por foros, pero ninguna solución. Gracias a Mr. Anónimo (ver comentarios) he resuelto el problema


Se debe instalar i8kutils (la descripción del paquete es 'utilities for Dell Inspiron and Latitude laptops' pero funciona sin problemas en mi Vostro), y i8kfan nos va a permitir cambiar la velocidad del ventilador.

Para que funcione hay que cargar el módulo (y añadirlo en /etc/modules para que lo cargue al arrancar)

sudo modprobe i8k

i8kfan admite 2 parámetros (para controlar 2 ventiladores), como este ordenador sólo tiene un ventilador, le pasamos -1 en el primer parámetro y en el segundo parámetro la velocidad (0, 1 o 2), aunque el 0 no funciona y en pocos segundos pasa al 2 (parece que la bios no permite pararlo).

i8kfan -1 1

Y por último añadimos un par de alarmas en el sensors applet tal y como está explicado perfectamente en los comentarios.

Actualización 07-08-2011:  samsagax explica en los comentarios como monitorizar automáticamente con i8kmon sin necesidad de definir las alarmas. Gracias!



En resumen podría parecer que es un desastre de ordenador, igual es que soy muy sufrido, pero la verdad es que estoy bastante contento con él y seguiré comprando Dell a pesar de todos estos problemas :)

martes, 18 de enero de 2011

Sobre la (in)competencia médica...

Aunque este blog normalmente sólo escribo de cosas técnicas, este tema me apetece explicarselo a la humanidad (bueno, a la infinitesima parte de la humanidad que lea esta entrada, que con lo larga que es será muy infinitesimal...)

La historia empieza hace 15 ó 20 años, ya no recuerdo la fecha. Empecé a tener molestias en la articulación del femur con la cadera cuando me sentaba en mala postura o cuando forzaba más de la cuenta. Una vez la molestia fue a más y después de andar unos días cojo decidí ir al médico.

Me hicieron una radiografía y me dijeron que tenía calcificación en la cabeza del femur y que tomara un antiinflamatorio no esteroide, concretamente Airtal. Al cabo de una semana se me quitó el dolor y me quedé con la idea de que tenía un defecto de fábrica en la pierna.

A lo largo de estos años me ha ido molestando puntualmente y cuando iba a mayores me drograba un poco. Pero el problema apareció de nuevo en Enero del año pasado, en un intento fallido de aprender a esquiar, el primer día me molestó un poco la pierna, al segundo día andaba cojo y al tercer día cuando ya iba cojo de las dos piernas tuve que dejarlo.

Fui al médico de cabecera, le conté la historia y me dijo que debía ser una bursitis y me dio antiinflamatorios, al igual que n años antes, esta vez Enantyum. A la semana siguiente volví porque no se me acababa de curar y me dió la solución mágica 'toma pastillas otra semana más', así que le pedí que me mandara a un especialista, ya que me preocupaba tantos días andando cojo y me dieron hora para radiografía y para especialista mes y medio despues.

Un par de semanas despues empecé a correr un poco (uno de mis objetivos del 2010), y aunque eran entrenamientos muy cortos me empezó a molestar de nuevo la pierna.

El día que fui al especialista me estuvo haciendo giros para ver donde me dolía y me dijo que no veía nada, que podía ser una sinovitis (que bien, ya llevamos tres problemas, calcificación, bursitis y sinovitis) o otro nombre que no recuerdo, me mando otras dos radiografías y hasta que tuviera el resultado reposo y si me dolía ibuprofreno.

Al cabo de dos semanas volví al especialista, esta vez me tocó otro diferente, miró todas las radiografías y como ya no me dolía me dio la solución mágica:

'No veo ningún problema en las radiografías, si te duele al correr, búscate un deporte que no te duela, y si te duele, tómate enantyum o ibuprofeno'.

Ahí me di cuenta que llevaba más de dos meses perdiendo el tiempo para nada. Unos días después mi amiga Marta me recomendo una osteópata que conocía. Como no tenía nada que perder pedí hora, fuí con las radiografías y le explique mis penas.

Mirando las radiografías me dijo que en el fémur no veía nada y que lo único que veía era una vértebra mal puesta. Así que después de tres sesiones de masajes (la primera de las cuales me dejó hasta un morado en la espalda colocando la columna vertebral en su sitio) ya estaba perfectamente de la pierna, sin absolutamente ninguna molestía en ninguna postura, cosa que no me pasaba hacía años.

Volví a empezar a correr, y durante el año habré vuelto tres o cuatro veces más a darme masajes para recolocarme la espalda y con un pequeño problema de fascitis por no estirar lo suficiente

y para entrar al 2011 con buen pie, corrí la San Silvestre con unos compañeros de trabajo, tal y como contó Dani Mata en LoHagoPor.


Y despues de este rollo llega el momento de la reflexión ya que si le hubiera hecho caso a la última doctora que ví, habría dejado de correr cuando ahora estoy saliendo 2 o 3 veces a correr por semana sin problemas.

- ¿ Por qué los médicos lo arreglan todo recetando drogas ?
- ¿ Por qué son tan cuadriculados los médicos? a ninguno se le ocurrió buscar la causa real del problema en otro sitio, ¿no saben que el origen de un dolor no tiene que estar justo en el punto que duele?
- ¿ Por qué ninguno de los médicos me recomendó que me probara con un masaje? ¿Es que son profesiones enfrentadas? ¿Tienen miedo a que les quiten la clientela?
- ¿ Por qué ese aire de superioridad y esa prepotencia? si simplemente han estudiado una carrera que consiste en memorizar muchas cosas ...


Afortunadamente voy muy poco al médico, y espero que si algún día me toca ir por un problema grave de verdad, no por un simple dolor de pierna, encontrarme otro tipo de médicos, que seguro que debe haberlos....