Página de Archivo 2

Libro de FreeBSD

Me encuentro escribiendo un pequeño conjunto de “recetas” para servidores FreeBSD. El título de la obra es “Servidores de Internet con FreeBSD“. Ya tengo casi todo terminado. Conforme tenga algo de tiempo libre estaré actualizando el libro. El sitio web es provisional por lo que pudiera tener alguna caída de vez en cuando.

http://fenix.homeunix.org/freebsd/

WxWidgets

He comenzado a experimentar con esta librería.

Un poco de fondo: WxWidgets es un conjunto de librerías para construir interfaces de usuario gráficas en aplicaciones de escritorio. La librería ofrece soporte para C++ de manera nativa. Sin embargo, hay enlaces para .NET, Java, Python y otros lenguajes. La licencia es libre (GPL2). Tiene ya varios años de estar disponibles en las distros mas populares, sin embargo, no le había puesto atención como programador hasta ahora. Ofrece soporte para Linux, Windows, Mac y BSD.

Para instalar los paquetes de desarrollo de la librería en Debian (posiblemente sea igual para Ubuntu):

# apt-get install libwxbase2.8-dev libwxgtk2.8-dev wx2.8-headers

Con estas librerías ya podemos comenzar a crear aplicaciones basadas en WxWidgets.

Puedes utilizar NetBeans, Eclipse, Emacs, Vi, Nano o tu editor favorito para escribir el código. Existe un entorno de desarrollo “oficial” para WxWidgets llamado Code::Blocks.

El programa mas básico en C++ para comenzar con WxWidgets (dibuja una ventana vacía en la pantalla):

#include "wx/wx.h"

class Programa : public wxApp
{
    public:
        virtual bool OnInit();   
};

class Ventana : public wxFrame
{
    public:
        Ventana(const wxString& titulo);
};

DECLARE_APP(Programa)
IMPLEMENT_APP(Programa)

bool Programa::OnInit()
{
    Ventana *v = new Ventana(wxT("Hola mundo"));
    v->Show(true);

    return true;
}

Ventana::Ventana(const wxString& titulo)
    : wxFrame(NULL, wxID_ANY, titulo)
{

}

Ya sé que se debe separar en varios archivos. Para mantener simplicidad lo dejaremos así por esta vez.

Para compilar:

$ g++ programa.cpp -o programa `wx-config --cppflags --libs`

Cuidado con las comillas inversas (`).

Conclusión

WxWidgets te puede ayudar a crear aplicaciones multiplataforma. La parte negativa es que hay que recompilar en cada familia de sistema operativo que quieras correr la aplicación. Sin embargo, debido a que es una librería nativa, tenemos un muy buen desempeño. La licencia y los enlaces que ofrece para que utilices tu lenguaje favorito la hacen una muy buena opción para proyectos de software.

Enlaces de interés:

http://www.wxwidgets.org/

http://www.codeblocks.org/

El Wiki de WxWidgets

Regresaré con ejemplos mas completos de la librería.

Fotos de conferencia en la UAT (Nuevo Laredo)

El pasado martes 23 de septiembre estuve dando una pequeña charla sobre Linux. El título de la charla fué: Linux, la plataforma del futuro. El evento estuvo dirigido a los estudiantes de la carrera de licenciatura en informática de la Facultad de Comercio, Administración y Ciencias Sociales de la Universidad Autónoma de Tamaulipas en la ciudad de Nuevo Laredo. Fueron alrededor de 50 asistentes.

Aquí algunas fotos del evento:

Guía básica de Zypper (gestor de paquetes de OpenSuSE)

OpenSuSE cuenta con Yast, herramienta que nos permite gestionar los paquetes de manera gráfica y en línea de comandos. Sin embargo, por experiencia les puedo decir que si tu equipo no cuenta con muchos recursos; la experiencia con Yast puede ser algo lenta. Esto nos lleva a la necesidad de aprender a manejar la herramienta de gestión de paquetes de manera directa en OpenSuSE: zypper. Iré colocando algunos ejemplos de sus usos mas comunes en esta entrada. Si alguien tiene alguna necesidad en particular, siéntanse libres de publicar un comentario y agregaré las aportaciones a esta guía.

Antes que nada, zypper funciona en la terminal y deberá ser ejecutado con privilegios de root. Bien, comencemos.

Listar los repositorios disponibles:

# zypper lr

Añadir un repositorio adicional:

# zypper ar http://algunaurl.org/archivo.repo

Actualizar todos los repositorios:

# zypper ref

Actualizar un repositorio.

# zypper ref [número de repositorio]

Los números de repositorios se pueden obtener listando los repositorios disponibles (parámetro lr).

Por defecto, los repositorios añadidos estarán configurados para que cada vez que se utilicen se actualicen. Si tenemos una conexión lenta, esto puede ocasionar retardos al instalar aplicaciones. Si se desea deshabilitar la actualización automática de un repositorio:

# zypper mr --no-refresh [número de repositorio]

Buscar un paquete en los repositorios:

# zypper search [nombre del paquete]

Instalar un paquete:

# zypper install [nombre del paquete]

Eliminar un paquete:

# zypper remove [nombre del paquete]

Obtener una lista de actualizaciones disponibles:

# zypper lu

Actualizar un paquete:

# zypper update -t package [nombre del paquete]

Instalar todos los parches disponibles:

# zypper up

Obtener información acerca de un paquete:

# zypper info [nombre del paquete]

Enlaces de interés:

Repositorio de paquetes de Yast.

Scanner HP Photosmart C4440

Acabo de adquirir un multifuncional C4440. Mas que nada lo que me interesa es el scanner. Bien, lo conecto en mi estación de trabajo (OpenSuSE 11.0). La instalación de la impresora fué tan simple como proporcionar mi contraseña de root y Yast2 se encargó de todo lo demás. El verdadero problema fué que el scanner no fué detectado. Después de un buen rato de investigación, la solución fué descargame del sitio oficial la versión mas reciente de HPLIP; que es un conjunto de drivers para impresoras y multifuncionales de la marca HP.

Nunca había hecho la instalación de HPLIP fuera de los paquetes proporcionados por la distribución en que estuviera trabajando. Tengo que decir que me ha sorprendido la calidad del software en su formato de instalador automático.

1. Descargar el instalador automático de HPLIP.

2. Proporcionarle permisos de ejecución.

$ chmod 755 hplip-2.8.7.run

3. Ejecutar el instalador automático (el instalador pedirá la contraseña de root a su debido tiempo).

$ ./hplip-2.8.7.run

De ahí solo seguir las instrucciones en pantalla y al poco tiempo tendrás el scanner listo y funcionando con Xsane.

Nota: Es preciso tener una conexión a internet activa al momento de la ejecución del instalador.

OpenJDK en Debian Lenny

Esta noticia ha hecho mi día. De acuerdo a este artículo, OpenJDK (la implementación libre de la plataforma Java) ha entrado en Debian Lenny (Debian testing).  No me pude resistir y esto fué lo que hice para ver si era cierto:

# apt-get update
# apt-cache search openjdk
icepick - java toolchain built from OpenJDK sources
icepick-gcj - java toolchain built from OpenJDK sources (native library)
openjdk-6-dbg - Java runtime based on OpenJDK (debugging symbols)
openjdk-6-demo - Java runtime based on OpenJDK (demos and examples)
openjdk-6-doc - OpenJDK Development Kit (JDK) documentation
openjdk-6-jdk - OpenJDK Development Kit (JDK)
openjdk-6-jre - OpenJDK Java runtime, using Hotspot JIT
openjdk-6-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-6-jre-lib - OpenJDK Java runtime (architecture independent libraries)
openjdk-6-source - OpenJDK Development Kit (JDK) source files

Esto confirma que OpenJDK está vivita y coleando en Debian. Ahora vamos a instalarla.

# apt-get install openjdk-6-jdk

Y después de 76 megas de descarga tenemos:

$ java -version
java version "1.6.0_0"
OpenJDK  Runtime Environment (build 1.6.0_0-b11)
OpenJDK Server VM (build 1.6.0_0-b11, mixed mode)

Ahora vamos a crear un programa de prueba:

import javax.swing.*;

public class Prueba {
    public static void main(String[] args) {
        JFrame ventana = new JFrame("Probando OpenJDK");
        ventana.setSize(250, 250);
        ventana.add(new JLabel("OpenJDK en Debian Lenny!!"));
        ventana.setVisible(true);
    }
}

Compilamos:

$ javac Prueba.java

Ejecutamos:

$ java Prueba

El agujero de seguridad en DNS

Desde hace unas semanas se ha comentado mucho acerca de un agujero de seguridad en la mayoría de las implementaciones de DNS (servidores DNS). Según mi investigación, el agujero podría llegar a hacerte creer que entras a www.tubancofavorito.com cuando en realidad estás entrando a un sitio de dudosa procedencia.

He encontrado un artículo en Linux Journal donde se explica la vulnerabilidad en detalle y de una manera muy clara.

En el podcast de Security Now No. 157 se discute una posible solución. Ésta consiste en aumentar el número de bits disponibles para la identificación de una petición DNS. En realidad es un hack, pero por lo que escuché tiene mucho sentido. La solución se basa en combinar caracteres mayúsculos y minúsculos en las peticiones DNS (wWw.AlgUNaWeb.AbC). Los caracteres mayúsculos o minúsculos son indiferentes para los servidores DNS raíz pero pudieran ayudar a agregar números de identificación a las peticiones DNS haciendo sumamente complicado el envenenamiento de servidores DNS.

Instalando un servidor SAMBA en Debian

En esta ocasión explicaré cómo crear tu propio servidor SAMBA en un computador corriendo Debian. Esta guía ha sido realizada en Debian testing (Lenny). Sin embargo, deberá funcionar sin problemas para otras versiones de Debian (y quizá Ubuntu también).

¿Qué es SAMBA? Es una implementación del protocolo CIFS. El cual es utilizado por el sistema operativo Windows para compartir recursos a través de una red. Con Samba, podemos compartir recursos a otros equipos en una red. Los clientes podrán ser máquinas corriendo alguna versión de Linux, UNIX, Mac OS o Windows.

¿Comenzamos?

1. Buscar si el paquete samba está disponible en la caché de paquetes:

# apt-cache search samba
samba - a LanManager-like file and printer server for Unix

2. Para instalar el servidor SAMBA, ejecutar el siguiente comando:

# apt-get install samba

3. Editar el archivo de configuración de SAMBA:

# nano /etc/samba/smb.conf

Buscar la siguiente línea:

workgroup = ALGO

En esta línea se configura el grupo de trabajo (tal y como lo hacemos en equipos Windows).

4. Refinar la configuración de directorios de usuario compartidos. Por defecto, SAMBA comparte los directorios de usuario del equipo. Esto es deseable la mayoría de las veces. Las opciones de configuración pueden encontrarse en el archivo de configuración SAMBA (/etc/samba/smb.conf) en la directiva llamada [homes]. A continuación se muestra un ejemplo en el que se comparten los directorios de usuario y se dan permisos de escritura sobre ellos.

[homes]
   comment = Directorios de usuarios
   browseable = yes
   public = yes
   writable = yes

5. Reiniciar servidor para hacer efectivos los cambios:

# /etc/init.d/samba restart

6. Crear usuarios a los cuales se les permitirá usar este servidor SAMBA. Es necesario crear cuentas de usuario SAMBA, típicamente serán las mismas cuentas de usuario que ya existan en el equipo. Ejemplo:

# smbpasswd -a usuario

Listo. Con estos pasos puedes comenzar a utilizar el servicio. Una cosa final a señalar es el hecho de que SAMBA utiliza los siguientes puertos:

137/udp
137/tcp
138/udp
138/tcp
139/udp
139/tcp

Solo ajustar el cortafuegos del servidor y permitir el tráfico a esos puertos.

¡Hasta la próxima!

Google code “bannea” a MPL (Mozilla Public License)

Leo aquí que en el OSCON (O’ Rreilly Open Source Convention) Chris DiBona anuncia que Google Code no permitirá licenciar proyectos bajo la licencia MPL (Mozilla Public License). Las razones no son claras. En mi opinión esto se trata de que Google quiere evitar la proliferación de licencias libres y mantener solo unas cuantas.

Artículo

JavaFX (Versión preliminar) liberada

Sun ha liberado una versión preliminar de JavaFX. Esta plataforma viene a competir con Flex de Adobe y Silverlight de Microsoft. En lo personal me agrada el hecho de que tanto el compilador y parte de las librerías gráficas son liberadas bajo GPL 2.0. Creo que la idea de Sun será liberar la plataforma por completo de la mima manera en que lo hizo con Java (openJDK).

¿La parte mala?

Intento descargar el SDK y me llevo la grata sorpresa de que solo hay versión para Windows y Mac OS. Mi entusiasmo se ha ido por la borda con el pequeño detalle de que no tengo una versión del SDK para mi sistema operativo.

Esperemos que en breve tengamos una versión para Linux.

Les dejo estos enlaces:

OpenJFX

Sitio oficial de JavaFX

Blog de JavaFX

« Entradas anterioresEntradas siguientes »