Manual de iniciación al entorno Qt (c++) en debian whezzy

Hoy voy a explicar como instalar y configurar QtCreator en debian 6. Pero, ¿qué es Qt?

Qt es un framework de desarrollo rápido de aplicaciones de interfaz gráfica multiplataforma. Inicialmente creado para dispositivos basados en symbian, poco a poco se fue extendiendo a todas las plataformas. Hoy en día es posible compilar el mismo código tanto para una aplicación de escritorio, una tableta con windows o un smartphone android. Por eso es un framework muy interesante que cabe tener en cuenta.

Éste framework está hecho para programar en C++, pero su estilo recuerda a javascript.

Más información sobre Qt aquí.

Vamos ya con el tutorial de iniciación. Para éste tutorial solamente necesitamos unas nociones mínimas de programación en cualquier lenguaje y seguir los pasos uno a uno.

Voy a dar por sentado que tenemos debian 6 o ubuntu 10.04 instalado en el equipo, el mismo proceso puede servir para versiones más modernas, pero no lo he probado.

Primero tendremos que preparar el entorno de trabajo, para ello, instalamos el IDE de Qt, el QtCreator, que será la madre de todos nuestros proyectos.



Para ello iremos al centro de software y buscaremos simplemente QtCreator, dar a instalar. mientras se instala podemos echar un vistazo a ésta introducción en la documentación oficial de Qt.

Si estamos en debian, necesitaremos hacer un paso adicional. Recordamos que en debian sólo se instala lo que es absolutamente imprescindible, así que instalando QtCreator no entiende g++ como dependencia, lo instalamos a mano. Abrimos una terminal de root y ejecutamos:


aptitude install g++

Una vez hecho ésto, ya podemos iniciar el IDE:

Ahora ya casi podemos empezar a programar. Lo primero que haremos será crear un proyecto de ejemplo, para ello, pichar en Archivo->new file or project.


Seleccionamos la ruta que queremos utilizar para el nuevo proyecto y le ponemos nombre.


 

Seleccionamos el tipo de proyecto que vamos a crear, en éste caso Aplicación Qt4 con GUI.


Seleccionamos los módulos adicionales que vamos a usar en nuestra aplicación. Como es el primer proyecto, y además es un "hola mundo" no necesitaremos módulos adicionales. Conforme nuestros proyectos vayan cobrando complejidad iremos usando éstos módulos.



Por último, podemos dar nombre a los diferentes elementos básicos del programa. Hay que decir que el framework tiene separada la capa de vista de la capa controlador, lo que en la práctica significa que cuando diseñemos la interfza de usuario, no veremos código C++. 

La capa de vista se conecta con el controlador mediante "SLOTS". Los elementos que vayamos colocando en el interfaz gráfico generarán "SEÑALES". Un boton al ser pulsado generará una señal "clicked", ésta señal deberá ser recogida por un slot y el slot lo reenviará a un método de la clase del programa.

Al principio puede parecer un poco lío, pero ahora veremos que el IDE nos lo pone muy muy fácil ya que tiene automatizada la parte de creación de señales y slots.

Al hacer click en siguiente se abrirá la vista de diseño:


Haremos click en la izquierda, en "forms" "mainwindow". Ésta es nuestra ventana principal, puede haber más.  Añadiremos dos widgets, un Label, que llamaremos "labelPrueba" y un boton, que llamaremos "btnDecirHola".

Para ajustar las propiedades de los widgets que vayamos añadiendo, en la perte derecha inferior tenemos la lista de propiedades que podemos modificar. 

La jerarquía de objetos de Qt expone que todos los widgets extienden de QWidget y QWidget de QObject. Ésto significa en la práctica que habrá métodos, señales y propiedades comunes a casi todos los widgets, por ejemplo objectName (que desciende de QObject)

una vez añadidos y seteados los widgets, añadiremos las señales. Para ello simplemente seleccionamos el widget con el boton derecho y seleccionamos "goto slot"


Nos hará una lista de todas las señales que el widget es capaz de emitir. Seleccionaremos la señal "clicked". Automáticamente el IDE nos generará el código auxiliar necesario y nos llevará al sitio correcto para poder colocar el código. Añadiremos un código muy muy sencillo para éste ejemplo:


Una vez añadido el código, pulsaremos el boton "Play" en la parte inferior izquierda y ejecutaremos el programa. Si hubiera algún problema el programa no se ejecutaría y al pinchar en la barra de progreso nos llevaría a la lista de errores cometidos.

Por cierto, he añadido un bug en el código. A ver quien lo adivina...

A cuidarse!

Instalar Debian whezzy en Raspberry PI

Pues ya me ha llegado el raspberry pi. Tengo que decir que debo de haber sido afortunado, porque lo encargué y en dos semanitas de nada lo tenía en casa, en mi buzón.

Lo primero que hice cuando me llegó, fué comprar el kit básico para el raspberry pi, osea, memoria, alimentador y cable hdmi para conectarlo a mi televisor (mi monitor es VGA)

El aparato en cuestión: 41€
Alimentador usb: 3€
Cable HDMI: 6€
Memoria: 12,50€

Con éstos elementos ahora se necesita el sistema operativo. Nos podemos descargar una imágen de debian preparada para funcionar desde aquí

Una vez descargada, abrimos una terminal de root, insertamos la memoria SD en el equipo y:

cd /ruta/al/zip/descargado
unzip 2012-07-15-wheezy-raspbian.zip
dd if=2012-07-15-wheezy-raspbian.img of=/dev/mmcblk0



Y Esperamos a que termine. Mucho cuidado en éste paso, hay que hacerlo bien, y esperar a que termine y una vez que termine hay que asegurarse de que se ha copiado bien, para no tener sorpresas desagradables.

Tengo que confesar que éste mini-tutorial no me ha salido a la primera y he tenido que hacer éste paso varias veces, hasta descubrir que paraba la copia antes de llegar al final, concretamente en el momento de ejecutarse el automontaje de las unidades, así que si tenéis problemas en éste sentido, desactivad el automontaje de las unidades (en debian 6 con gnome 2.30)

gconftool-2 --type bool --set /apps/nautilus/preferences/media_automount false

Fuente: aqui (ver comentarios para información actualizada para ubuntu)

Luego con ponerlo de nuevo a true listo. Una vez copiado el asunto ya no tiene misterio. Se inserta la tarjeta en el Pi y se conecta todo:



En el primer arranque, sale un asistente de configuración. La primera opción interesante es agrandar la partición para llenar la memoria sobrante, lo tienen todo pensado.


La segunda opción interesante es configurar el teclado, especialmente útil para residentes en España :)


Yo personalmente después activé el ssh y el desktop. Debo confesar que la configuración de teclado falló, el timezone también y no puedo usar aptitude ni apt-get, pero creo que es culpa mía por que no copia bien a la primera.  Mañana iré a devolver la mierda de tarjeta SD.


Suerte!!!

Edito: Efectivamente mi memoria SD viene defectuosa, así que no era problema del automontaje.

Edito: Bueno, estoy editando el blog desde el navegador Midori, en el raspberry pi, asi que puedo decir que funciona bastante bien.

Instalar festival con voz en español en Debian 6

Voy a poner los pasos que he seguido para instalar festival en mi debiancito, con la voz española de Silvia, cortesía de la junta de andalucía.

festival es un sintetizador de voz, lo que significa que convertirá a voz todo el texto que vaya a procesar

El tutorial es tan sencillo y tan rápido que os va a parecer de broma, vamos a ello:

Abrir terminal de root.

# aptitude install festival
# wget http://forja.guadalinex.org/frs/download.php/154/festvox-sflpc16k_1.0-1_all.deb
# dpkg -i festvox-sflpc16k_1.0-1_all.deb

Si todo ha salido bien, podremos ejecutar:

# echo Hola, $USERNAME | festival --tts

Y escuchar un saludo con la voz de Silvia.

Os ha parecido largo? entonces vamos a añadir unos extras.

Si Queremos usar otras voces podemos bajarlas de aquí (forja de la junta de andalucía)

Para que coja los acentos y signos de puntuación podemos usar:

# echo Me compraría un camión y me iría a Maón | iconv -f utf-8 -t iso-8859-1|festival --tts

Ala pues!

Recuperar contraseña de root para MySQL server

Bueno, no es para "recuperar" es más bien para "volver a poner" la contraseña.



Los pasos son:

1-Apagar el servicio:

/etc/init.d/mysql stop

2-Iniciarlo de forma segura:

mysqld_safe --skip-grant-tables &

3-Conectarse y cambiar el password:

mysql -u root
UPDATE mysql.user SET Password=PASSWORD('root') WHERE User='root';
Flush Privileges;
exit

4-Reiniciar el servicio:

/etc/init.d/mysql restart
Y listo.


[Ubuntu 9.10] Instalar Netbeans con soporte para J2ME (y emulador)

Para instalar Netbeans en Ubuntu, nada más fácil. Id al centro de software de ubuntu y buscar "Netbeans".


Una vez instalado, hay que instalar los plugins "Mobility". Id al menu "Plugins" y en la pestaña "Avaiable plugins" seleccionar los dos plugins de mobility.




Una vez instalados los plugins, tenemos que instalar el "sun_java_wireless_toolkit" Será necesario para poder programar para dispositivos móviles. El paquete adjunta, entre otros, el emulador y los ejemplos de código necesarios para poder empezar. Pulsa aquí para descargarlo. Si el enlace no funciona, por favor, notifícalo.

Se descargará en formato binario, como viene siendo habitual. Le damos permiso de ejecución.





Después lo ejecutamos:


Entonces se abrirá la terminal y nos mostrará el contrato de licencia. Pulsamos la tecla "q" y se nos preguntará [yes|no]. Escribiremos "yes".

 



Nos preguntará si deseamos ecribir la ruta de acceso al interprete de java. Pulsamos 0. En ubuntu, la ruta que deberíamos incluir sería ésta:

/usr/lib/jvm/java-6-sun/bin/

 Después nos pedirá la ruta de instalación del paquete. Podemos dejarlo en

/home/usuario/wtk
 Seguidamente nos preguntará si queremos buscar actualizaciones del software. Podemos escribir "yes" o "no". Para finalizar la instalación, pulsaremos "0".




 Ahora, tenemos que añadir el pauqte en netbeans. Vamos al menú "Tools -> Java Platforms". Hacemos click en "Add platform".


Seleccionaremos la plataforma Java ME MIDP. Click en "Next".


 
Seleccionaremos el directorio donde instalamos el Wireless Toolkit. Hacemos click en aceptar y luego finalizamos el asistente.

Listo. Ahora ya podemos abrir un nuevo proyecto para MIDP. Si necesitas unas guías para empezar a programar para la plataforma, puedes empezar por éstos links:

Y como siempre, puedes contactar con nosotros en:

Ubuntu 9.04/9.10 y GRUB

Todo el mundo sabía que a mi pobre disco duro le quedaban días de vida, era un final anunciado, estaba claro, pero yo, en mi abnegada tozudería me resistía al cambio. Así que una vez hube obtenido un nuevo disco duro para mi portátil, me puse en faena.

¿Por qué os cuento todo ésto? Por que he tenido que formatear e instalar ubuntu (y M$ Window$$) desde cero, y me he encontrado con ciertos detalles que me han sorprendido.

Sé que siempre recomiendo instalar primero Window$$ y después ubuntu para no tener que volver a iniciar con el live cd y regenerar el grub, pero en casa del herrero cuchillo de palo. Y me encontré con un problema:

-Instalo Ubuntu
-Instalo Windows
-Entro con el Live CD de instalación
--Monto la partición de ubuntu en mnt:

sudo mount /dev/sda1 /mnt

-- Ejecuto el clásico:

sudo grub-install --root-directory=/mnt /dev/sda

--No Error reported.

--Reinicio el portátil. Hasta aquí todo normal, con la distribución Ubuntu 8.04 y anteriores ésto hubiera bastado. Pero no. Ubuntu inicia automáticamente y no me muestra la opción de iniciar con el otro sistema operativo.

Entro en mi nuevo ubuntu, busco el clásico fichero /boot/grub/menu.lst
No está. Investigo el árbol de /boot. No está. Lo único que encuentro es un fichero en /boot/grub/grub.cfg que contiene entradas parecidas al ya extinto menu.lst

En el mismo fichero se haya la clave:

Hay que ejecutar el mandato: grub-mkconfig. Más concretamente:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Y listo, se genera un nuevo fichero grub.cfg que sí detecta el cochambroso Window$$.

Tengo que decir que, de haber investigado un poquito antes de instalar a la brava, debería haber ejecutado ése mandato desde el Live CD inmediatamente después de hacer el grub-install.

Cualquier duda, podéis escribir a: ubuntulinuxafondo@googlegroups.com