Comunicación entre tu calculadora HP4x y GNU/Linux

— [ edit | raw ] migrated from node/275
Esta receta indica cómo tener comunicación entre GNU/Linux y la calculadora HP48/HP49G/HP49+

HPTALX

Este programita es muy parecido al "HP Connectivity Kit" y funciona razonablemente bien. Tiene soporte tanto para puerto serie como USB. Utiliza el protocolo Kermit, algo anticuado pero el único disponible para comunicarnos con la calculadora. Conforme vayáis utilizando el programa veréis que se atasca un poco y que, de vez en cuando, hay que reiniciar la conexión. Según he leído, son problemas del propio protocolo. Bien es cierto que las HP49 utilizan otro, además del Kermit, llamado Xmodem. Herramientas para dicho protocolo no he encontrado y sería una gran mejora para esta receta. Recomiendo que te bajes la última versión del programa en su página web. Es algo inestable, pero funciona bastante bien.

Instalación

hptalx es GPL y lo que te descargas es el código fuente. Antes de proceder con la instalación debes asegurarte de tener:
  • Librerías de desarrollo de GTK+2 (>=2.4)
  • Librerías de Glib2 (>=2.4)
  • C-Kermit (>= 8.0)
  • libxml (>=2.5)
Una vez tengamos lo anterior, el archivo descargado y descomprimido, sólo tenemos que ejecutar lo siguiente dentro del directorio:
$ ./configure && make && sudo make install

Probando...

Ejecutamos el programa:
$ hptalx
Para configurar el tipo de conexión que tiene nuesra calculadora lo podemos hacer en el menú File. Utilizar, después, "control+b" para conectar la calculadora al ordenador. OJO!!!! El servidor debe estar ejecutado en la calculadora y NO debe ser el Xmodem. Asegúrate que ejecutas el servidor de Kermit.

ATI Radeon 9600 en Debian GNU/Linux, con el driver privativo fglrx

— [ edit | raw ] migrated from node/272

Esta receta explica cómo instalar el driver fglrx en una Debian etch o sid

Usuario de Evolution harto de spam.

— [ edit | raw ] migrated from node/271
¿Usas Evolution y aún tienes Spam? ¿Quieres eliminarlo de una vez por todas? Bien... La verdad es que aún no lo he conseguido, pero estoy tras la pista. A ver si entre todos conseguimos quitarnos de enmedio el molesto spam.

Restringir secuencias "Control+Alt+..." en el servidor X

— [ edit | raw ] migrated from node/270
Esta receta pretende mostrar cómo deshabilitar las secuencias "control+alt" en el servidor gráfico X. Puede ser útil hacer esto en computadores que van a ser utilizados por el público en general y se requieren restricciones en el teclado para el buen funcionamiento del mismo.

Pena de muerte para los delitos contra la Propiedad Intelectual

— [ edit | raw ] migrated from node/269

No, no, tranquilo, el título de la noticia es ficticio, por el momento al menos. Sin embargo, cada día tengo más razones para pensar que no pasará mucho tiempo hasta que se haga realidad y lo veamos en un periódico de tirada nacional y/o televisión.

Depurar un programa (C, C++, ...)

— [ edit | raw ] migrated from node/267
Ante las preguntas realizadas por Oscar sobre el uso de GDB y problemas con el famoso "segmentation fault", me he decidido a hacer un pequeño manual de GDB y otras herramientas útiles para el depurado. Seguramente se me queden muchas cosas en el tintero, pero todos sabemos que las recetas no están cerradas cuando se publican. Se agradecerán todos los comentarios.

gdb

GDB o el GNU DeBugger, es el programa usado para depurar los programas en GNU/Linux. No es el único, pero sí uno de los más potentes, sobre todo para programas escritos en C y C++. Para poder utilizar todas sus características, será necesario que, durante la compilación, dejemos información de depurado en el ejecutable. Si estamos utilizando gcc o cc, esto se hace mediante la opción -ggdb. ¡Ya tenemos nuestro fichero preparado para ser depurado! Ahora basta utilizar la orden:
 $ gdb ejecutable
y se nos abrirá la línea de órdenes de gdb (todo en modo texto, claro). Hay que tener en cuenta una cosa: cuando un programa falla, puede deberse a un error o bien a los efectos colaterales de un error. Me explico con un ejemplo: si tenemos un puntero no inicializado y le asignamos un valor, puede que dé error o puede que no (depende de dónde esté apuntando); por ello puede dar el problema más adelante (esto se conoce como el "Síndrome del puntero loco" entre los coleguitas :-D). Por ello, es interesante no pensar que gdb te dice "aquí está el problema", sino "el problema está por aquí", que es muy diferente.

Uso de GDB

gdb es bastante complejo, y sólo detallaré aquí los pasos iniciales para debugar el típico "hola mundo". Primero, cargaremos el ejecutable compilado con las opciones de debug "-ggdb":
 gdb ejecutable
Se nos inicia la línea de órdenes gdb. Lo primero, será poner un punto de ruptura ("Breakpoint"). Se puede poner en una línea determinada o bien en una función. Dado que nuestro programa "hola mundo" es pequeñín y no sabemos dónde pusimos el main, plantamos la ruptura en el propio main:
 gdb> br main
Y lo siguiente es ejecutar el programa:
 gdb> r
Así que se parará en la primera instrucción del main. Ahora podemos utilizar una serie de argumentos que explicaré brevemente:
  • p "print" imprime el valor de una variable.
  • d "display" igual que print, pero se muestran cada vez que pulsemos "s" o "n".
  • n "next" Continúa con la siguiente instrucción de la función actual
  • s "step" Continúa con la siguiente instrucción de la que se tiene información de depurado (si hay una llamada a función, entrará dentro).
  • c "continue" continúa la ejecución del programa.
  • h "help" muestra la ayuda

GNU/Emacs

GDB sólo es muy poco amigable, así que yo prefiero utilizarlo junto con GNU/Emacs. Gano dos cosas, principalmente: ver el código y coloreado del mismo. Para ello, basta con pulsa ESC+x (o M+x) y escribir la orden "gdb". Emacs nos pedirá el resto de la línea de órdenes, donde pondremos el nombre del ejecutable y del core (si es que existe). Cuando lo tengamos, nos aparecerá una pantalla tipo terminal igual que si hubiéramos iniciado gdb en una consola, pero cuando comencemos a trazar el código se nos dividirá la pantalla en dos, mostrando en el otro lado el código (con una flechita muy molona que nos cuenta por dónde vamos).

ddd

Aunque muchas veces uso Emacs con gdb, debo admitir que mi favorito es ddd. Su instalación es realmente compleja:
 # apt-get install ddd
Seguro que los de Windows lo tienen más fácil. Bien. El caso es que la pantalla se divide en tres partes (si no es así mira las opciones del menú "View") en las que tenemos, de arriba abajo: datos, código y terminal gdb. Precioso. Si cargamos un programa con opciones de debug ("-ggdb") podremos ver cómo se mueven los punteritos, cómo cambian las direcciones a las que apuntan, cómo se construyen las estructuras, ... Vamos, muchas cosas que nos cuentan pero no se ven ;) Y, a parte de los menús TK pseudo-molones, siempre tenemos la parte de abajo con un gdm normal. NOTA He observado un comportamiento extraño al pulsar con el ratón en la zona de datos o en la de GDB, ya que toma las teclas que pulses como entradas de la pantalla GDB, pero no funcionará el intro. Sin embargo, si pulsas directamente sobre la ventana de código, te funciona todo igual y el intro sí va. No me preguntéis porqué es así, pero ocurre. Seguramente esto sea así porque lo tenéis configurado de esta manera. Para solucionarlo, tenéis que ir a "Edit"->"Preferences", y en la pestaña "Startup" veréis que pone "Keyboard focus a)Point to Type b) Click to Type". Os podéis imaginar: seleccionáis si queréis que el foco se obtenga cuando el puntero del ratón está justo encima (bastante molesto) o os hace falta hacer click para dar el foco (molesto, pero no tanto).

COREs

Una gran ayuda frente a los "segmentation faults" son los archivos COREs. Te preguntarás dónde andan, claro :-D pues no andan por ningún sitio porque los tienes desactivados. Para activarlos, sólo tienes que hacer:
 $ ulimit -c unlimited
Cuando vuelvas a ejecutar el programa te pondrá "segmentation fault (core dumped)". Genial. Ahora ejecuta gdb de la siguiente manera:
 $ gdb ejecutable core
y puedes ver dónde cascó exactamente con la orden de gdb "whereis", que te mostrará la pila. Acuérdate de volver a quitar el límite de los cores o te ocuparán espacio en el disco duro (y no poco):
 $ ulimit -c 0

Más información

  • Páginas "man" de gdb, ddd, ...

Manos libres Bluetooth con GNU/Linux

— [ edit | raw ] migrated from node/266
Una de las aplicaciones más útiles a realizar con los móviles Bluetooth es poder atender una llamada mediante el micrófono y los altavoces del PC o portátil. Lo que vulgarmente se denomina un "manos libres". En esta receta vamos a configurar nuestro GNU/Linux para poder ser utilizado de esta forma.

Compilando el servicio

Lo primero que hay que reconocer es que el servicio está un poco verde y no va a sonar todo lo bien que esperais, con paciencia y buceando en el código supongo que se puede ajustar, pero eso, simplemente supongo.. Bueno, lo primero que hay que hacer es bajarse el servicio handsfree de su página web. Básicamente hay que seguir las instrucciones de la página web para compilar el servicio y como pre-requisitos :
  • Tener instalada la pila bluez y las herramientas asociadas. En la anterior receta ya se daban unas nociones básicas de cómo usar estas herramientas.
  • Tenemos que tener instalado las librerias de desarrollo. En debian el paquete es libbluetooth1-dev.
  • Otra cosa a tener correctamente configurado es el sistema alsa así como sus librerías de desarrollo (libsound2-dev) para el tema del sonido.
La aplicacion handsfree viene con un Makefile por lo que salvo errores de librerias y rutas con un simple make deberíais tener el servicio compilado.

Ejecutando el servicio

Bueno, ahora viene la parte de ejecución del servicio, lo primero es asociar el móvil con el PC, generalmente te pedirá el pin. Este paso no es necesario y siempre puedes introducir el pin cada vez que uses el servicio, pero vamos, lo más cómodo es asociarlo (bluez-pin es la herramienta para gestionar los PIN desde la parte del PC). A continuación es necesario añadir dos servicios al registro de servicios del PC, el serial port y el handsfree. Esto se realiza con sdptool, por lo tanto:
felix#:sdptool add SP
felix#:sdptool add HF
A continuación ejecutamos el servicio con:
felix#:./handsfree ADDR 3
ADDR es la dirección de tu móvil y 3 el canal del handsfree. Para ver cuales son tus parámetros lo mejor es realizar un escaneo:
felix:hcitool scan
Scanning ...
        00:15:A0:42:34:8D       Nokia 6680
En cuanto al canal, pues mostrar todos los servicios de tu móvil y fijarnos en el canal (Channel) con:
felix:~# sdptool browse 00:15:A0:42:34:8D

Browsing 00:15:A0:42:34:8D ...

...todos los servicios
y ya esta todo, en teoría cuando recibas una llamada descuelgas y se escucha por los altavoces y hablas por el micro. Eso si, como dije al principio y dependiendo de la tarjeta de sonido puede sonar como los teleñecos :-). Es posible descolgar mediante comandos AT directamente desde el PC y utilizando el propio programa. Con esto y un poquito de shell puedes tener tu GNU/Linux siempre listo para atender llamadas. un saludo

Hacer backup de tu correo en Gmail

— [ edit | raw ] migrated from node/265

Imagina que de pronto se estropea tu disco duro, o tu portátil. Imagina que evolution deja de funcionar y no puedes leer tu correo. ¿Qué? ¿Te da un pasmo, como a mi? Esta receta te ayudará a configurar tu correo de manera que lo recibas todo por duplicado, tanto en la UCLM como en Gmail. El de la UCLM lo leerás como es habitual, pero si un día te encuentras sin poder acceder a tu correo, o lo borras por error (sí, también me pasó a mi :( ). O estás en casa de un amigo y quieres leer tu correo, ahí está Gmail para ayudarte.

Descargar videos de YouTube para verlos 'offline'

— [ edit | raw ] migrated from node/264
Hola a todos: Hace tiempo que llevo buscando la manera de bajarme los videos de YouTube pero al fin he encontrado una forma de hacerlo. No sé si será la mejor, pero yo la explico por si le puede ayudar a alguien. Lo primero es tener instalado firefox (creo que todo el mundo lo utiliza ;-)), y sino mal asunto.