Servidores de Internet con FreeBSD 8.3

Hola amigos.

Después de una larga ausencia estamos de regreso. Os prometo contenido seguido y con sustancia. Ya saben, de todo un poco.

Por el momento, he terminado una pequeña guía para los que se inician en FreeBSD. Este documento incluye desde la instalación, administración y configuración de servicios (DNS, HTTP, SMTP, POP, etc).

Saludos.

Servidores de Internet con FreeBSD 8.3

Tutorial Qt: Primeros pasos.

Después de un tiempo, al fin se ha bajado la carga de trabajo y puedo retomar mi blog. Comezaré un tutorial para programar con la librería Qt utilizando C++. Advierto que no soy un experto en Qt, apenas la acabo de tomar. Sin embargo, haré mi mejor esfuerzo por ser lo mas claro posible en cada ejemplo. Comenzamos con el programa “Hola mundo en Qt”.

Para simplicidad de los ejemplos, todo el código lo realizaré en un solo archivo (mezclando declaraciones de clase con implementación). Será responsabilidad del lector generar los archivos apropiados de cabecera e implementación para cada clase. Es necesario contar con un entorno de desarrollo básico para Linux. Si utilizas Debian o Ubuntu, puedes instalarlo con el siguiente comando:

# apt-get install build-essential

En este tutorial utilizaré la versión 4 de Qt. Se deberá contar con los paquetes de desarrollo para Qt4. Se recomienda consultar la documentación de tu distro para instalar los paquetes de desarrollo de Qt. Si utilizas Debian, puedes instalar los paquetes con el siguiente comando:

# apt-get install libqt4-dev qt4-dev-tools

Una vez cumplidos los requisitos, comencemos con el primer programa:

 1 #include <QApplication>
 2 #include <QtGui>
 3
 4 class Ventana : public QMainWindow
 5 {
 6 public:
 7         Ventana();
 8 };
 9
 10 Ventana::Ventana()
 11 {
 12         // Configurar el título de la ventana
 13         this->setWindowTitle("Hola mundo, Qt");
 14         // Configurar el tamaño
 15         this->setFixedSize(600, 400);
 16 }
 17
 18 int main(int argc, char* argv[])
 19 {
 20         QApplication programa(argc, argv);
 21         Ventana* ventana = new Ventana();
 22         ventana->show();
 23
 24         return programa.exec();
 25 }

Las líneas 1 y 2 incluyen archivos de cabecera necesarios para trabajar con las clases QApplication y QMainWindow.

La línea 4 crea una clase llamada Ventana. Esta clase hereda de la clase QMainWindow, la cual implementa una ventana principal de un programa Qt.

La línea 10 implementa el constructor de la clase Ventana. Afinamos detalles sobre la ventana utilizando los métodos setWindowTitle y setFixedSize para configurar el título y tamaño.

La línea 18 implementa la función main, la cual será el punto de entrada del programa. La función main recibirá 2 parámetros, el primero (argc) indicará la cantidad de parámetros asignados al programa en su ejecución. El segundo (argv) contiene los parámetros proporcionados al programa al momento de la ejecución. Aunque no vayamos a enviar parámetros al programa, es conveniente preparar el punto de entrada para recibirlos.

La línea 20 crea un objeto de la clase QApplication. Este tipo de objeto administra el control de flujo de la aplicación Qt y provee el ciclo de eventos (event loop) para la interfaz de usuario.

La línea 21  construye un objeto de la clase Ventana. Este tipo de objeto modela una ventana principal de una aplicación Qt. La siguiente línea hace visible la ventana.

La línea 24 llama al método exec del objeto programa. Este método inicia el administrador de eventos para la interfaz de usuario. Digamos que se queda en espera para interceptar y manejar todos los eventos provocados en la interfaz de usuario. Retorna al finalizar la interfaz de usuario gráfica.

Una vez escrito el programa, lo podemos compilar con la herramienta qmake. Esta herramienta nos generará los archivos Make necesarios para compilar la aplicación. En la terminal, nos ubicamos en el directorio donde se encuentran los archivos de código fuente:

$ qmake -project

Este comando creará un archivo de proyecto para la herramienta qmake. Después ejecutamos:

$ qmake

Este comando creará un archivo Make (Makefile) para compilar el programa utilizando las herramientas de desarrollo estándar para UNIX. Por último ejecutamos:

$ make

Este comando compilará la aplicación y si no hay errores, generará un ejecutable con el mismo nombre de la carpeta en donde están ubicados los archivos fuente. Si hay cambios en el código, típicamente basta con volver a ejecutar make para recompilar.

Qt LGPL

Leo en arstechnica que Qt 4.5 utilizará una licencia LGPL. Esto quiere decir que se podrá utilizar Qt para aplicaciones comerciales sin tener que pagar el costo de una licencia.

Tal vez esto no influya mucho para las aplicaciones libres que utilizan la librería. Actualmente Qt cuenta con un esquema de licenciamiento dual. El cual permite utilizar Qt sin pago de licencia para aplicaciones libres, pero no para aplicaciones comerciales.

Creo que esto es positivo, LGPL impulsará la adopción de Qt para todo tipo de aplicaciones. Lo cual, indirectamente beneficia al software libre. A pesar de que soy “Gnomero” de corazón, estoy muy contento por la decisión de Nokia en cuanto a la licencia de la librería.

Fuente.

Sitio oficial de Qt.

FreeBSD 7.1

http://www.freebsd.org/releases/7.1R/announce.html

OMG!! OMG!! OMG!!

Laptop nueva

Tuve que realizar cambio de laptop debido a que se dañó la tarjeta madre de mi antigua hp (pavillion dv6000). He adquirido una Vaio VGN-NR250FE.

Laptop Vaio (1)

Laptop Vaio (2)

Las caracteríscas de la máquina son suficientes para mis necesidades actuales. Procesador Intel Core 2 Duo, 2GB de RAM y 200GB de disco duro. El equipo venía de fábrica con Vista, ahora le he instalado Debian Lenny (testing). Sorprendentemente, casi todo el hardware funcionó sin muchos problemas. El video (Intel X3100) es soportado con aceleración 3D, a continuación dejo el archivo de configuración que estoy utilizando:

Section    "Module"
    Load    "dbe"
EndSection

Section "InputDevice"
    Identifier    "Generic Keyboard"
    Driver        "kbd"
    Option        "XkbRules"    "xorg"
    Option        "XkbModel"    "pc105"
    Option        "XkbLayout"    "latam"
EndSection
Section "InputDevice"
    Identifier    "Configured Mouse"
    Driver        "mouse"
EndSection
Section "Device"
    Identifier    "Intel Corporation Mobile 945GM/GMS, 943/GML Express Integrated Graphics Controller"
    Driver        "intel"
    Option        "XAANoOffscreenPixmaps"     "True"
    Option        "RenderAccel"    "true"
    Option        "AllowGLXWithComposite"    "true"
    Option        "UseFBDev"    "true"
    Option        "AccelMethod"    "XAA"
    Option        "DRI"    "true"
EndSection
Section "Monitor"
    Identifier    "Configured Monitor"
EndSection
Section "Screen"
    Identifier    "Default Screen"
    Monitor        "Configured Monitor"
    Option        "AddARGBGLXVisuals"    "True"
EndSection
Section    "Extensions"
    Option    "Composite"    "Enable"
EndSection

El sonido, puertos USB y tarjeta Ethernet, son soportados sin necesidad de configuraciones extra. Para la tarjeta inalámbrica, solo tuve que instalar el paquete firmware-iwlwifi:

# apt-get install firmware-iwlwifi

Mis comentarios acerca de Fedora 10

Tengo que comentar que la experiencia con Fedora 10 es altamente gratificante.  La versión que actualmente uso es Fedora 10 (x86_64).

Algunos de los puntos mas destacados:

  • El desempeño de firefox es muy fluído. Aún así con muchas pestañas abiertas y múltiples plugins.
  • El arranque del sistema operativo. Poco mas de 30 segundos.
  • El reproductor multimedia (totem) no “casca” para nada a la hora de reproducir un video. Descarga automáticamente los códecs necesarios para abrir un determinado archivo. Esta función ya estaba disponible en versiones anteriores. Sin embargo, me ocurría que a la hora de que totem intentara descargar un códec, fallaba con mucha frecuencia.
  • Yum está notablemente mejorado en cuanto a velocidad y resolución de dependencias.
  • En cuanto al aspecto visual, algunos toques aquí y allá con respecto a las versiones anteriores. Se sigue conservando el estilo que caracteriza a la distro.
  • El disco de instalación es liviano y la instalación es rapidísima. En mi equipo tomó poco menos de 10 minutos.

Una felicitación a toda la comunidad de Fedora. Han entregado un producto con mucha calidad. Por supuesto, la gente de Fedora no ha hecho todo. También felicito a todos aquellos que directa o indirectamente hacen posible las aplicaciones que son incluídas en la distro.

PC nueva

2 años con mi estación de trabajo Athlon 64.  Esos años estuvieron llenos de momentos gratos de aprendizaje, trabajo y diversión. Ha llegado el momento de renovar mi PC de escritorio.  Después de algunos problemas y debates internos acerca de los componentes, decidí comprar lo siguiente:

  • Procesador AMD Athlon 64 X2 5000+ (soy fan de AMD).
  • Tarjeta madre Asus M2N-MX SE Plus.
  • Memoria DDR2 de 2GB.

A eso le incluímos un gabinete y el resto de las piezas ya las tenía (disco duro, tarjeta de video y lector DVD).

PC nueva (1)

El resultado es gratificante. A este equipo le he montado Fedora 10 (64 bits) y cumple todas mis necesidades computacionales para una estación de trabajo. Vale la pena indicar que la tarjeta madre se lleva muy bien con Linux, la red y el sonido funcionan sin problemas. Al video integrado (nvidia) solo le instalé el módulo correspondiente al kernel y listo.

He aquí el trabajo final:

PC nueva (2)