Input gallinas = output gallinas

Lo que pasa por la red y por mi mundo

Modo debug en el Nexus 4

Tras mis 3 semanas de espera (que si no, dice google que no mola tanto), recibí mi Nexus 4. Mola un montón y estoy muy contento con él, aunque creo que debería haber pedido el de 16Gb.

A lo que voy, me dispongo a depurar con el eclipse y no funciona; busco como activar el modo de depuración y no encuentro nada, hasta que decido buscar en google (cerramos el círculo) y encuentro esta web que dice cómo hacerse root de tu Nexus 4. Además nos cuentan cómo habilitar el modo de desarrollador y activar el modo depuración por USB.

  1. Poner tu Nexus 4 en modo desarrollador: Ajustes - Información del Teléfono - Número de compilacfión (Pulsar 7 veces)
  2. Activar depuración por USB: Ajustes - Opciones de desarrollo - Depuración USB

C++ backwards compatibility

(autotools.sh)

Si estás desarrollando en C++ utilizando una versión muy moderna del compilador, cuando ejecutas tu código en versiones más antiguas de linux (normalmente puede pasar en servidores que por estabilidad suelen estar menos actualizados) puedes encontrarte con errores de este tipo:

bin/blabla: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by bin/blabla)
bin/blabla: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by bin/blabla)

Esto ocurre porque el código compilado utiliza versiones más modernas de la librería estándar. Si te encuentras en esta situación pensarás "vaya faena" o "voy a tener que compilar mi código con un compilador más antiguo, vaya faena...". Lo cierto es que una solución podría ser esa, compilar y generar tu binario con un compilador más antiguo.

Aunque hay otra forma más fácil, que consiste en especificar la versión del Application binary interface que nuestra máquina destino (la que se supone que tiene una versión más antigua del compilador y librerías estándar) puede manejar (o entender), esto se hace utilizando el flag de compilación (CXXFLAGS) -fabi-version=n.

En el caso que me he encontrado, tenía como máquina de compilación gcc (GCC) 4.4.6 y de ejecución gcc (GCC) 4.1.2 y me ha sido suficiente con poner la versión 3. Aquí puedes encontrar información sobre la compatibilidad entre versiones de gcc y sus librerías estándar:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# si utilizamos autotools como herramienta de construcción 
# es suficiente con especificarlo en la varible CXXFLAGS
./configure CXXFLAGS=-fabi-version=3

# si no, en el makefile 
make CXXFLAGS="-fabi-version=3" clean all

#o directamente en el compilador, 
# que es el que realmente recibe este parámetro
g++ -fabi-version=3 main.cpp 

Depurar librería generada con libtool

(debug.sh)

Trabajando con libtool (pertenece a autotools), cuando intentemos depurar un ejecutable que utilice una librería generada con esta herramienta, es posible que nos encontremos con el siguiente error:
Partimos de que el binario tests-mylib utiliza la librería generada con libtool libmylib.so.

$ gdb ./tests-mylib 
"tests-mylib": not in executable format: File format not recognized
Aunque lo hayamos compilado con -g.

Esto es porque estamos intentando ejecutar un script generado por libtool, que hace de envoltura sobre el programa real, facilitando la ejecución de éste.

Esta información la he sacado de http://www.gnu.org/software/libtool/manual/libtool.html#Debugging-executables.

1
libtool --mode=execute gdb tests-mylib

Crear un acceso directo en Gnome Shell

(gnome-shortcut.sh)

Llevo utilizando Gnome (3) Shell casi desde que salió y debo ser de los pocos a los que les gusta. Aunque soy consciente que tiene muchos fallos y limitaciones, las van solventando y poco a poco se va convirtiendo un escritorio más completo y estable.

Una de las cosas que no me gusta es la forma de añadir un acceso directo a un fichero o programa al menú, no es nada intuitiva, abajo os pego el comando.

1
gnome-desktop-item-edit ~/.local/share/applications/ --create-new

My Own HTPC

Me he cansado de los portátiles por varias razones:

  • Comprar uno con Windows preinstalado (para no utilizarlo). Ya sé que hay algunos que vienen con distribuciones linux, pero hay poca oferta y salen casi más caros que los que vienen con Windows. Simplemente, no me entra en la cabeza comprar uno con un sistema operativo, pagar por el sistema operativo y no utilizarlo.
  • Malas experiencias con configuraciones de los portátiles. Me parece totalmente inaceptable que empresas como Dell (marca de mi último portátil) vendan configuraciones poco probadas, que con un uso intensivo hacen que se calienten demasiado, hasta el punto de apagarse. En mi caso Dell Studio 1557 (buscar en google dell 1557 overheating), simplemente montaba una placa base con un chip ATI soldado muy cerca del procesador (i7 720QM) y el disipador no daba abasto. Intenté cambiar el portátil y simplemente me cambiaron el disipador por otro mejor, pero tampoco fue suficiente. Llegado a este punto, solo te queda comerte tu portátil con patatas.
  • Si se rompe algo, o quieres ampliarlo, es un poco complicado y puedes tardar bastante tiempo. En mi portátil puede resultar fácil cambiar la RAM, aunque para cambiar el disipador hay que desmontarlo completamente.

El caso es que el final, después de mirar y dar vueltas, creo que he comprado algo que se ajusta a lo que quiero. Aquí está el enlace de mi compra, con los gastos de envío y todo queda alrededor de unos 560€. Además tendréis que comprar un teclado y un ratón.

Chenbro PC783 250W. Mini-ITX73,54 €
CPU Intel Core i5-3570K205,63 €
MSI Z77IA-E53140,66 €
Samsung 840 SSD Series 120GB SATA3 Basic Kit92,00 €
Memoria CORSAIR CML8GX3M2A1600C9 -DDR3 2x4GB C938,25 €
ARCTIC Silver 57,85 €
Ver configuración.

Lo tengo hace un par de semanas, estoy muy contento:

  • La temperatura de la cpu suele rondar estar alrededor de los 40 ºC con un uso normal.
  • Tengo instalado Fedora 17 Gnome de 64bits, normalmente prefiero Archlinux, pero la verdad es que la instalación de Fedora es mucho más sencilla, sobre todo si se quiere utilizar el arranque UEFI.
  • Se enciende un muy pocos segundos, no lo he cronometrado, cuando lo haga lo pongo.

Licencia Creative Commons