Linux Plus Magazine 030_Marzo 2007

84

Transcript of Linux Plus Magazine 030_Marzo 2007

Page 1: Linux Plus Magazine 030_Marzo 2007
Page 2: Linux Plus Magazine 030_Marzo 2007
Page 3: Linux Plus Magazine 030_Marzo 2007

a modo de introducción...¡No pierdas esta oportunidad!

3www.lpmagazine.org

Una de las ventajas en nuestra redacción es que trabajamos juntos (la sección española y la italiana) y tenemos la posibilidad de intercambiar nuestras opiniones y reírnos de las cosas divertidas, lo que nos ayuda mucho en nuestro trabajo. Una de las cosas que más

nos hizo reír últimamente fue el correo que recibió una de nuestras compañeras: un abogado la acusaba de enviarle fotos pornográficas. Lo vio su jefe (que es otro compañero nuestro) y le preguntó (en bro-ma) por qué enviaba sus fotos a la gente. Ella, que no se dio cuenta de que era una broma, gritó sobresaltada: "¡yo no le he enviado ninguna foto!". Luego resultó que fue una especie de virus y que lo recibieron muchas personas pero nosotros seguimos riéndonos cuando nos acordamos de este suceso y le repetimos a nuestra amiga que, por favor, no envíe sus fotos a nadie.

Lo mismo pasa con la cantidad incontable de SPAM que recibi-mos (a pesar de todas las barreras antispam que tenemos). Algunos son realmente curiosos: desde los referentes a viagra hasta las ofertas de hacerse más grandes algunas partes del cuerpo. Hace algún tiem-po estaba recibiendo tantos mails que me prometían perder mi grasa que pensé que a lo mejor era una indirecta a algo...

Viagra a precio más bajo

Pero hablando en serio, la mayoría de nosotros nos ponemos fu-riosos al recibir correo basura, puesto que el 99 por ciento son cosas absurdas que no nos interesan nada y sólo perdemos el tiempo en tirarlos. ¿De qué viene todo esto?, ¿por qué recibimos tanto SPAM? ¿Es posible protegernos contra él? En este número de Linux+ vamos a observar los mecanismos de SPAM de cerca, porque cuanto más sabemos de ellos más posibilidad tenemos de evitarlo.

Otro tema que quería abordar y que es mucho más serio, es el de proyectos Linux orientados a la ayuda a la gente en todo el mundo. Hace algún tiempo hemos escrito sobre el proyecto One Laptop Per Child (Un laptop por niño) cuyo fin es entregar un laptop a cada niño del mundo, sobre todo en los países subdesarrollados donde el acceso a la tecnología es más difícil. En este número de Linux+ hablamos con Eduardo Silva, que es uno de los programadores de OLPC y que nos cuenta en qué consiste este proyecto y cuáles son sus experiencias relacionadas con él.

Espero que lo paséis muy bien leyendo este número y si un día os llega un SPAM titulado <<Linux+ es la mejor revista en el mun-do!!!>> no lo tiréis a la basura. ¡Buena lectura y hasta la próxima!

Paulina PyrowiczRedactora Jefe de Linux+

si un día os llega un SPAM titulado <<Linux+ es la mejor revista en el mundo!!!>> no lo tiréis a la basura...

Page 4: Linux Plus Magazine 030_Marzo 2007

4 Linux+ 3/2007

Índice

5www.lpmagazine.org

En este número

FedoraDiego Rivero Montes

UbuntuFrancisco J. Carazo Gil

MandrivaJuan Gamez

SuseEsteban Negri

NoticiasAlex Sandoval

14 18

16 19

17

descripción de DVD's

6 Descripción de DVD’s Paulina PyrowiczEste mes os presentamos los DVD's con las distribuciones SuSE 10.2, CentOS 4.4 y los programas comerciales: Paragon NTFS para Linux y Figura Fifteen Puzzle Game

novedades

correo electrónico

20 La lucha contra el Spam no está perdida David Alvarez GarcíaEl término spam corresponde a una marca de carne enlatada del grupo Hormel Foods Corporation (SPiced hAM), inmortalizada en un famoso episodio de los Monty Python en donde el restaurante solamente servía platos con spam, y no había forma de pedir algún plato que no lo tuviera. Esta denominación se comenzó a utilizar para el correo electrónico comercial no solicitado.

24 Certificados/PGP y cifrado de envíos Daniel Couso SantamaríaExisten documentos que por su importancia necesitamos que sólo los pueda leer el destinatario lejos de la vista de terceros y/o que ese destinatario tenga la certeza de que hemos sido nosotros realmente los remitentes de ese mensaje. La tecnología que nos va a permitir esto es el uso de una clave pública y una clave privada que servirán para cifrar/descifrar y firmar/verificar nuestros correos.

Mensual Linux+ está publicado por Software-Wydawnictwo Sp. z o. o.

Producción: Marta Kurpiewska, [email protected]

Redactora jefe: Paulina Pyrowicz, [email protected]

Redactor adjunto: Katarzyna Świnarska, [email protected]

Preparación de DVDs: Rafał Kwaśny

Diseño portada: Agnieszka Marchocka

Gráfico: Łukasz Pabian – "insane"

Publicidad: [email protected]

Suscripción: [email protected]

Maquetación y composición: Marcin Ziółkowski, [email protected]

Marcin Pieśniewski, [email protected]ón:

Raul NanclaresCorrectores:

Pablo Cardozo, Agripino Petit Miguel, Minton Arley, Hector Colina

Distribución: Coedis, S. L.

Avd. Barcelona, 22508750 Molins de Rei (Barcelona),

España

Dirección: Software–Wydawnictwo Sp. z o.o.,

ul. Bokserska 1, 02-682 Varsovia, Polonia

La Redacción se ha esforzado para que el material publicado en la revista y en los DVDs que la acompañan funcionen correctamente. Sin embargo,

no se responsabiliza de los posibles problemas que puedan surgir.

Todas las marcas comerciales mencionadas en la revista son propiedad de las empresas correspondientes

y han sido usadas únicamente con fines informativos.

La Redacción usa el sistema de composición automática

Los DVDs incluidos en la revista han sido comprobados con el programa AntiVirenKit, producto de la empresa

G Data Software Sp. z o.o.

¡Advertencia! Queda prohibida la reproducción total o parcial de

esta publicación periódica, por cualquier medio o procedimiento, sin para ello contar con la autorización

previa, expresa y por escrito del editor.

Linux ® es una marca comercialregistrada de Linus Torvalds.

Page 5: Linux Plus Magazine 030_Marzo 2007

4 Linux+ 3/2007

Índice

5www.lpmagazine.org

Correo electrónicoTema del número

software

28 Invita al Zorro a tu casa Jaroslaw SwierczynskiEl 25 de octubre, de 2006 una nueva versión del cada vez más popular navegador Mozilla Firefox fue publicada. Aunque el número de versión había aumentado significativamente, la nueva versión es más evolucionaria que revolucionaria. Sin embargo esta versión ofrece unos pocos cambios que pueden hacer la navegación por Internet mucho más fácil.

34 Juegos Francisco J. Carazo GilEste mes os presentamos los siguienetes juegos: Super Mario War, Astro Menace, Tower Toppler, Pix Pang, Cube, Flobo Puyo.

práctica

38 Desarrollo de juguetes físicos bajo Linux Hampus SöderströmEn el artículo mostraré cómo se puede crear un sencillo juguete físico bajo Linux usando tres bibliotecas comunes, OpenGL, SDL y ODE. He elegido el ejemplo sencillo de la cuna de Newton, que solía ser un juguete popular en las mesas de los ejecutivos. Está construido por una serie de péndulos (normalmente 5) contiguos. Nos centraremos principalmente en el desarrollo de Open Dynamics Engine (ODE).

seguridad

44 Los sistemas BSD, desconocidos.... pero muy seguros Marc BeyEl sistema de producción libre por excelencia es Linux. Todas las revistas y publicaciones especializadas tratan este tema. Sin embargo, existen otros sistemas de explotación de los que no se habla mucho a pesar de ser los sistemas de explotación más seguros del mundo: los sistemas BSD. Instalados en un gran número de servidores y proveedores de servicios al usuario, permanecen en la sombra, ignorados. Muchos piensan que son difíciles de manejar, de utilizar. ¿Cómo son? ¿Por qué no se utilizan en mayor medida? ¿Por qué poseen tanta seguridad? Esto es lo que explicamos en este artículo.

proyectos Linux

54 Proyecto CentOS Jordi Espasa ClofentCentOS es el acrónimo de Community Enterprise Operating System, es decir, Sistema Operativo de la Comunidad para Empresa. Y, claro está, es una distribución GNU/Linux. Para los neófitos en el mundo del software libre, recordaremos que una distribución GNU/Linux no es más que un kernel Linux empaquetado con multitud de aplicaciones con licencias libres (GNU GPL, GNU LGPL, BSD...)

para programadores

58 Ruby on Rails: ¿una moda? Carolina García CatañoEn estos momentos uno de los entornos de programación web sobre el que más se habla es Ruby on Rails. Existe la controversia típica de cuando sale algo nuevo: ¿será mejor o peor que lo que ya existe (PHP, Python, J2EE)?, ¿será una moda, o realmente aportará una serie de características novedosas?

68 OpenXava: J2EE rápido y fácil Javier Paniza LucasJava es, sin duda, el lenguaje de programación más popular que existe. Esto indica el índice TIOBE, es el lenguaje con más proyectos en Sourceforge, es apoyado incondicionalmente por los grandes de la industria (IBM, Oracle, SAP, Sun, Google, etc.). La relación entre Java y Linux siempre ha sido buena.

74 Connection Pooling en PHP Carlos Sánchez ValleLa mayoría de los proyectos existentes en PHP utilizan MySQL como backend y escalan muy bien simplemente utilizando conexiones persistentes. Ese no es el caso para los proyectos en PHP con Oracle. Abrir una conexión a una base de datos Oracle es un proceso relativamente largo en tiempo: es necesario crear conexiones de red, abrir una sesión autenticada y crear un nuevo proceso de la base de datos que maneje la sesión.

entrevista

78 OLPC: Entrevista a uno de los desarrolladores Paulina PyrowiczUn laptop por niño (One Laptop Per Child), es un proyecto humanitario y sin fines de lucro, que tiene por meta entregar un laptop a cada niño del mundo, sobre todo en los países sub- desarrollados donde el acceso a la tecnología es más bien escaso. Fue pensado para que el profesor tuviese una herramienta más de trabajo en la sala de clases.Linux+ tuvo la oportunidad de entrevistar a Eduardo Silva, uno de los programadores de este proyecto.

para principiantes

80 Trucos y truquillos Leonardo Ibarra R.En esta ocasión nos centraremos en la apariencia de nuestro escritorio utilizando Gnome, que conste que les estoy advirtiendo que hay que armarse de paciencia a fin de tener los resultados que les muestro.

Page 6: Linux Plus Magazine 030_Marzo 2007

6 Linux+ 3/2007

descripción de DVDsDisco A

7www.lpmagazine.org

descripción de DVDsDisco A

OpenSUSE 10.2: Una guía práctica

OpenSUSE 10.2, publicado re-cientemente, es actualmenteuno de los sistemas GNU/Linux más modernos, ideal pa-

ra los usuarios principiantes y para las personas, que han decidido cambiar el sistema operativo de Microsoft Windows a Linux.

El proyecto de OpenSUSE es desarrolla-do principalmente por la comunidad de soft-ware libre y financiado por Novell. Es una de las distribuciones más populares de Linux para el Escritorio; aunque también viene pre-parado para instalarlo en servidores. El pro-yecto OpenSUSE tiene como objetivo el man-tener un sistema operativo completamente funcional, que sea amistoso para el usuario principiante.

Preparando la instalaciónEl proceso de instalación y configuración de OpenSUSE 10.2, gracias al programa YaST desarrollado especialmente para esta dis-tribución, es muy fácil e intuitivo. En el ar-tículo vamos a guiar al nuevo usuario pa-so a paso por todas sus etapas explicando todas las funciones.

Si piensas instalarlo en un disco duro nuevo o sin particiones, la instalación será mucho más sencilla y fácil. Si hay un sistema anterior en el disco duro, tal como otra distri-bución de Linux o Microsoft Windows, nece-sitarás realizar una lista de comprobaciones como la siguiente:

• ¿Hay espacio suficiente en el disco? Necesitarás cerca de dos o tres gigabytes para la instalación por defecto y también un poco de espacio más si quieres guar-dar tus documentos, archivos de música, películas, etc.;

• ¿Quieres mantener tu sistema operativo anterior? Si quieres mantener Microsoft Windows necesitarás desfragmentar el disco duro antes de instalar;

• ¿Está mi hardware soportado? Aunque la mayoría del hardware está soportado puede darse algún error para el nuevo usuario. Visite la página web http://en.open-suse.org/HCL para comprobar que tu hard-ware está soportado. Aunque nunca he te-nido ningún problema con OpenSUSE es conveniente asegurarse; especialmente si pretendes utilizar dispositivos inalámbri-cos;

• ¿Utilizas una tarjeta gráfica ATI? ATI proporciona los drivers de Linux para tu

Elige el modo de instalación

tarjeta gráfica, sin embargo, éstos no son tan buenos con los de Nvidia. Si utilizas tu ordenador para aplicaciones multi-media, Nvidia es la mejor opción.

Requisitos de HardwareOpenSUSE Linux 10.2 soporta la mayoría de los componentes de hardware accesibles en el mercado.

Para que no ocurran unas interrupciones, se recomienda la siguiente configuración:

• procesador: Intel: Pentium 1–4, Celeron, Xeon; AMD: Duron, Athlon, Athlon XP, At-hlon MP, Athlon 64, Sempron, Opteron;

• memoria RAM: lo mínimo para el traba-jo en el entorno gráfico es de 256 MB, se recomienda 512 MB. Para los sistemas sin el entorno gráfico (por ejemplo un router, un servidor web) la cantidad de memoria puede ser inferior. Por supues-to es posible trabajar en el entorno grá-fico teniendo una cantidad de memoria RAM inferior a 256 MB, pero eso sería menos confortable;

• espacio en el disco duro: para el sistema mínimo (sin el entorno gráfico) 500 MB es suficiente, para el escritorio estándar se recomienda aproximadamente unos 2,5 GB de espacio libre. Si queremos ins-talar los dos principales entornos gráfi-cos y los paquetes adicionales, debemos disponer de al menos 3,5 GB de espacio libre;

• gráfica y sonido: SUSE Linux 10.2 no tie-ne problemas con la mayoría de las tar-jetas de sonido y tarjetas gráficas accesi-bles en el mercado actualmente.

Comenzando con la instalaciónPrimero tenemos que configurar los pará-metros básicos. Aquí es donde comienza la diversión, primero necesitaremos arrancar desde el disco. Para hacer esto necesitare-mos arrancar el ordenador desde el dispo-sitivo CD/DVD. Además OpenSUSE per-mite otros tipos de instalación como ins-talarlo a través de la web mediante el pro-tocolo SSH, automáticamente, por medio de un servidor de instalación defini-do y otras.

La manera más fácil de instalar el sis-tema usando los discos adjuntados a la revista es configurar el lector DVD en el BIOS, como el primer dispositivo a poner en marcha (first boot device), guardar la con-figuración, y después reiniciar el ordena-dor teniendo el primer disco de instalación en el lector. Si dentro de un rato vemos la pantalla azul con el logotipo de la distri-bución, podemos empezar el proceso de la instalación de OpenSUSE Linux10.2. Sin embargo, si tenemos problemas y no ob-tenemos los resultados deseados, podemos arrancar el sistema desde un disco flexible y después iniciar el programa de instala-ción que está en el disco. Las instrucciones

Page 7: Linux Plus Magazine 030_Marzo 2007

6 Linux+ 3/2007

descripción de DVDsDisco A

7www.lpmagazine.org

descripción de DVDsDisco A

detalladas se encuentran en el archivo /boot/README, que contiene el disco. Tam-bién en el disco, en el directorio dosutils va-mos a encontrar unos programas de herra-mientas, útiles durante el proceso de crea-ción de los discos de arranque y la instala-ción por web.

Configuración inicialCuando logramos poner en marcha el ins-talador, vemos una pantalla de selección de opciones de instalación. Para cambiar el lenguaje de los mensajes hay que pulsar la tecla [F2] (Language) y escoger la opción adecuada.

Las posibles opciones son:

• Ejecutar desde el disco duro (Boot from Hard Disk) – pone en marcha el sistema que ya está en el disco;

• Instalación (Installation) – empieza el pro-ceso de la instalación estándar;

• Instalación – ACPI Desactivado (Installa-tion – ACPI Disabled) – si el equipo no soporta ACPI (advanced configuration and power interface) – interfaz avanzada para gestión de configuración y ener-gía) o la instalación estándar no se po-ne en marcha, es la opción que os ayu-dará;

• Instalación – Configuración Segura (Insta-llation – Safe Settings) – ejecuta el insta-lador con DMA de lectores CD/DVD activado y con las opciones de gestión de energía desactivadas. Este modo de instalación permite también establecer unos parámetros adicionales del kernel durante la ejecución.

Las demás opciones (Sistema de Escape y Test de Memoria) pueden ser útiles al comprobar la eficiencia del sistema o al recuperar los datos.

En la pantalla de las opciones de la pues-ta en marcha se pueden usar las teclas de función para cambiar algunas opciones del programa de ejecución:

• [F1] – presenta la ayuda que concierne a la opción marcada actualmente;

• [F2] – selección del lenguaje del progra-ma de ejecución;

• [F3] – tras pulsar esta tecla aparecerá la línea de comandos de programa de ejecución, en la cual se podrán estable-cer unos parámetros de ejecución adi-cionales, escoger el modo gráfico de ins- Configuración de la instalación

talador (igualmente el modo de texto); además se podrán usar las opciones adicionales de las teclas de función ([F4], [F5]);

• [F4] – generalmente se realiza la insta-lación mediante los discos CD o DVD. Pulsando [F4] es posible escoger otras fuentes de instalación, como un servidor FTP o NFS;

• [F5] – esta tecla sirve para comunicar al sistema, que queremos cargar unos nuevos controladores de SUSE Linux desde disquete. En la etapa adecuada de la instalación se nos pedirá meter el disquete.

Tras elegir una opción adecuada OpenSUSE Linux carga el sistema mínimo, necesario para ejecutar los siguientes pasos de la insta-lación. Si queremos saber qué está haciendo el programa en el momento dado, hay que pulsar [Esc]. Al terminar este paso se ejecuta el instalador de sistema adecuado: el progra-ma YaST.

En la mayoría de los casos querremos realizar la instalación en modo gráfico, no obstante si ocurre una ejecución de YaST en modo de texto tenemos dos soluciones: con-tinuar la instalación en modo de texto (serán accesibles exactamente las mismas opciones que en el modo gráfico, sin embargo todo será menos cómodo de manejar) o reiniciar el ordenador, en la pantalla de selección de las opciones de la instalación pulsar [F3],

escribir lo siguiente en la línea de comandos, que aparecerá:

x11i=fbdev

y ejecutar la instalación. La opción de arriba obliga el sistema a usar el entorno gráfico en vez del entorno detectado automática-mente.

Según lo preestablecido el sistema inten-tará ejecutar YaST en modo gráfico, entonces lo mejor es en primer lugar simplemente poner en marcha el proceso de instalación, y establecer las opciones adicionales sólo en caso de problemas con la configuración estándar.

Empezamos la instalaciónEl propio proceso de instalación empieza con la ejecución del instalador, sea en mo-do gráfico, sea en modo de texto. Si des-pués de la puesta en marcha no funciona el ratón, podemos usar el teclado, [TAB] salta de un elemento a otro, [Enter] o [Espa-cio] escogen un elemento dado. Están acce-sibles también las abreviaturas de teclado por ejemplo. [n] – Adelante (Next) o [b] – At-rás (Back).

IdiomaSe puede ejecutar el instalador YaST en varios idiomas. En esta pantalla podemos escoger el idioma de interfaz deseado. Basándose en el lenguaje escogido YaST establecerá también

Page 8: Linux Plus Magazine 030_Marzo 2007

8 Linux+ 3/2007

descripción de DVDsDisco A

la zona horaria y el reloj del sistema; es posi-ble cambiar estas opciones en las siguientes partes de la instalación.

Tipo de InstalaciónSi el instalador descubre en el disco el siste-ma SUSE Linux instalado antes, aparecerá la pantalla de selección con las siguientes opciones:

• Nueva Instalación – si en el disco no se encuentra la instalación anterior de SUSE, esta pantalla será omitida y será escogida la siguiente opción;

• Actualización de la instalación existente – sirve solamente para actualizar la ins-talación anterior de SUSE Linux;

• Otros – la selección de esta posición nos permite el acceso a las siguientes opcio-nes: ejecutar el sistema ya instalado o in-tentar arreglar el sistema existente (hay que usar esta opción con cautela, ya que los cambios introducidos mediante esta opción pueden dañar el sistema ya exis-tente).

Selección de la PantallaEn SUSE Linux son accesibles los dos entor-nos gráficos más grandes y más populares: KDE y GNOME (Gráfico 4). Ambos son pare-cidos en cuanto a la funcionalidad, pero tie-nen filosofías de funcionamiento diferentes: KDE se parece a MS Windows y GNOME a MacOS. Hace un tiempo la empresa No-vell, que es la propietaria de SUSE, decidió concentrarse en sólo un gestor de ventanas. Entonces fue escogido KDE, sin embargo enlas siguientes versiones sigue siendo posi-ble la selección de GNOME, aunque KDE es el entorno gráfico recomendado y mejor soportado.

Si no queremos instalar ninguno de es-tos entornos, lo que queda es la opción de la instalación con el modo gráfico, podre-mos ejecutar las aplicaciones gráficas, no obstante la funcionalidad de un entorno así será limitada considerablemente (no es re-comendable, sólo para las personas que sa-ben perfectamente lo que hacen). Si quere-mos instalar por ejemplo el sistema de ser-vidor, podemos escoger la opción – Modo de Texto (no se instalará ninguna aplicacióngráfica).

Resumen de la instalaciónDespués de las preparaciones y la confi-guración inicial, el instalador presentará el

resumen de las informaciones adquiridas (Gráfico 5). Si en este momento hacemos clic en el botón Aceptar, empezará la insta-lación de los paquetes. Antes de comenzar este proceso vale la pena estudiar también las informaciones ampliadas de la insta-lación, que se encuentran en la lengüeta Experto. Todos los datos, que están allí se pueden cambiar al hacer clic con el ratón sobre el nombre del grupo o al pulsar el botón Cambiar y escoger la opción adecua-da.

ParticionesEl instalador de SUSE Linux intentará au-tomáticamente escoger la mejor manera de hacer las particiones. No obstante muchas veces esta configuración no es óptima. Si tan sólo empezamos nuestra aventura con Linux vale la pena aquí familiarizarse con unas reglas generales de cómo hacer las particiones de discos.

Lo que veremos primeramente, cuando observemos las proposiciones del instala-dor, será probablemente la creación de dos particiones: partición SWAP y partición principal.

Partición SWAP (llamada también par-tición de intercambio) es el espacio donde el sistema almacenará los datos de mo-mento innecesarios en la memoria RAM. No podremos usar esta partición de forma normal, está gestionada por el sistema ope-rativo, entonces no tenemos que preocupar-nos por nada.

Si dividimos el disco en particiones, no determinamos para una partición así el punto de montaje (o sea el lugar donde se encuentra en realidad en nuestro siste-ma), marcamos solamente que su formato tiene que ser SWAP. Esta partición, en el caso de las máquinas más viejas con menor cantidad de memoria RAM, debería tener el tamaño equivalente al doble del tamaño de la cantidad de memoria accesible, en caso de las máquinas de 512 MB de RAM o más el tamaño de 300–500 MB es suficien-te.

En los sistemas Linux la estructura delas particiones no es tan visible como en Windows, donde los discos sucesivos, corresponden a las particiones sucesivas. En Linux determinamos la partición princi-pal y establecemos el punto de montaje /. Ahora cada partición siguiente puede estar submontada en el lugar cualquiera de este sistema de archivos. Por ejemplo si que-

remos que los directorios de datos de usu-arios (/home/usuario1, /home/usuario2 ...) se encuentren en otra partición, que el sistema operativo (para que se pueda recuperar los datos en caso de unos problemas o para que unos archivos de los usuarios no limi-ten el espacio necesario para que el sistema funcione correctamente), es suficiente crear una partición y determinar su punto de montaje como /home. Gracias a eso el direc-torio /home entero, se encontrará en otra par-tición, no obstante para los usuarios será accesible normalmente, sin tener que es-coger el disco.

Tamaños de las particionesPara optimizar la colocación de los datos de SUSE Linux 10.2 proponemos la siguiente división:

• / – partición principal – 5GB (si vamos a instalar mucho software adicional, se puede aumentar el espacio a 10GB);

• /boot – aquí está el kernel del sistema – 50MB;

• /home – partición de datos de usuarios – 10GB y más;

• /tmp – partición de archivos temporales – 500MB – 1GB;

• /var – aquí están los logs del sistema – 300 MB.

Si disponemos de un disco grande, podemos aumentar la cantidad de espacio para los datos de usuarios, ya que aquí precisamente podrán guardar todas sus fotos, archivos de música y películas.

Adicionalmente se pueden separar los archivos accesibles por diferentes servido-res:

• /srv – datos de los servidores – tamaño depende de la cantidad de datos facilita-dos.

Sistemas de archivosMuchas personas pueden conocer de Win-dows los sistemas de archivos tales como FAT16/32 o NTFS. Desgraciadamente no son suficientemente buenos para Linux; no soportan las autorizaciones avanzadas, tienen bastantes averías, y los datos de vez en cuando se fragmentan, lo que disminu-ye la efectividad del trabajo. Los sistemas Linux utilizan sus propios tipos de los sistemas de archivos, los más frecuentes son:

Page 9: Linux Plus Magazine 030_Marzo 2007

DVD ASi no puedes leer el disco DVDy no notas ningún tipo de deterioro mecánico, por favor, pruébalo en al menos dos unidades de disco diferentes.

3/2007 DVD BEn caso de problemas, escribir a: [email protected]

Page 10: Linux Plus Magazine 030_Marzo 2007

10 Linux+ 3/2007

descripción de DVDsDisco A

11www.lpmagazine.org

descripción de DVDsDisco A

• swap – sistema de archivos para la parti-ción de intercambio;

• ext3 – el sistema de archivos de Linux más popular;

• ReiserFS –sistema de archivos moderno y rápido.

Escogiendo el sistema de archivos es mejor dejar el sistema propuesto por el instala-dor.

Nombres de las particionesEn Linux no encontraremos los discos C o D, en cambio las particiones tienen los siguientes nombres por ejemplo: /dev/hdb1, /dev/sda3, /dev/hdb1 significa un dispositivo (device), disco duro (hard drive), conectado en el ordenador como primary slave (segun-do disco en el primer cable IDE o simple-mente segundo disco por orden), 1 – signi-fica, que es la primera partición. /dev/sda3 significa la tercera partición en el primer disco SCSI.

Discos lógicosYa que en el disco duro se pueden crear solo 4 particiones primarias, tenemos a nuestra disposición los discos lógicos. Para usar los discos lógicos, la cuarta partición primaria generada tiene que ser una partición exten-dida. Se pueden definir los discos lógicos en esta partición. Los discos lógicos tienen los números de 5 hacia arriba.

Selección de paquetes individualesEn este momento podemos escoger los pa-quetes a instalar individualmente. Según el gestor de ventanas escogido tendremos la posibilidad de marcar las aplicaciones adi-cionales que queremos tener en el sistema. En el administrador de paquetes algo muy útil es el área de selección Filtro, que se en-cuentra en el rincón de arriba a la derecha de la ventana. Si cambiamos la opción de filtrado, en el área más abajo serán presen-tados los paquetes de instalación agrupa-dos según los criterios escogidos. Si para el trabajo necesitamos las aplicaciones de oficina, como por ejemplo OpenOffice.org, hay que colocar el Filtro sobre el valor Con-juntos y marcar la caja Aplicaciones de oficina. Si ahora queremos instalar también todos los paquetes accesibles para un lenguaje da-do, configuramos el filtrado según el idio-ma y marcamos todo el grupo en la ventana abajo o solamente los paquetes escogidos de un grupo dado en la ventana a la dere-

cha. Puede ocurrir que recordamos el nom-bre de la aplicación, pero no podemos en-contrarla en los grupos de paquetes. En este caso configuramos el filtro para la bús-queda, escribimos el nombre y pulsamos [Enter]. Dentro de un rato, en la ventana a la derecha deberíamos encontrar el pa-quete buscado.

Cuando escojamos ya los paquetes de-seados hay que hacer clic en Comprobar relaciones, para asegurarse, que después de la instalación no habrá problemas con el funcionamiento del sistema. Si ocurren al-gunos problemas con las relaciones en los paquetes escogidos, el instalador nos per-mitirá escoger la manera de resolver el pro-blema. Si nos satisface la selección y ya no hay problemas con las relaciones, podemos hacer clic en Aceptar. Aparecerá la ventana con la lista de paquetes a instalar adicio-nalmente para cumplir con las relaciones y volveremos a la ventana de configuración de la instalación.

Configuración de la instalaciónEn la lengüeta Experto de la ventana del re-sumen de la instalación podemos cambiar la configuración del programa de ejecución, que será instalado junto con nuestro siste-ma. Si tenemos en el disco otro sistema ope-rativo hay que añadir unas posiciones ade-cuadas al menú de ejecución. La configura-ción del programa de arranque está desti-nada solamente a los usuarios avanzados y en la mayoría de los casos no se debería

modificar lo que está allí puesto automáti-camente.

Instalación de PaquetesCuando aceptamos todas las opciones en la ventana del resumen, empezará el proceso de la instalación de paquetes. Si cambiamos a la lengüeta Detalles podremos estar al corriente del proceso de instalación. En la ventana de arriba están puestos los datos exactos sobre la cantidad de paquetes a instalar desde cada disco. Después de un tiempo encontraremos allí también las informaciones actualizadas al corriente sobre el tiempo que queda para instalar los paquetes desde un disco dado.

Después de la instalación del sistema básico, YaST pedirá el reinicio del ordena-dor. Entonces en el menú de ejecución hay que escoger la ejecución del sistema desde el disco duro. Después de hacer esto se reiniciará el proceso de la instalación de los paquetes, no obstante esta vez no será ya in-terrumpido.

Configuración después de la instalaciónDespués de terminar el proceso de la insta-lación de paquetes empezará ya la última etapa de la instalación: la configuración final.

Contraseña de usuario rootEl Administrador, llamado también root, es el usuario más importante de cada sistema Linux. Tiene todas las autorizaciones en el

Selección de software

Page 11: Linux Plus Magazine 030_Marzo 2007

10 Linux+ 3/2007

descripción de DVDsDisco A

11www.lpmagazine.org

descripción de DVDsDisco A

sistema y mediante esta cuenta en particular, por ejemplo, instalaremos el software o pon-dremos en marcha los servicios de sistema adicionales. Por eso es muy importante, que la contraseña del administrador sea bastante difícil de adivinar. Una contraseña ideal debería consistir de letras minúsculas y ma-yúsculas, cifras y signos especiales, para que ninguna persona no autorizada tenga acceso a nuestros datos.

Configuración de la redEn este paso de la instalación, podemos con-figurar la conexión a la red si es accesible y si la tenemos. Si en nuestra red la dirección IP es asignada automáticamente por el servidor DHCP, podemos enseguida comprobar, si el instalador ha configurado la conexión correc-tamente. En cambio, si las informaciones no son bajadas automáticamente, hay que confi-gurar las opciones requeridas (haciendo clic en el grupo Red).

Verificando la conexión a la red el ins-talador se conecta con el servidor OpenSU-SE Linux y averigua las actualizaciones ac-cesibles. Si las hay, se introducen los cam-bios adecuados en el gestor de paquetes y se las puede incluir en los siguientes pasos del proceso de la instalación. Durante la verificación de la conexión se descargan las informaciones actualizadas sobre la edi-ción, que se puede leer al final de la instala-ción.

En el grupo Red es posible configurar también un cortafuegos (Firewall). El corta-

fuegos funciona del mismo modo que las aplicaciones de Windows: controla y filtra la comunicación entre el sistema e Internet.

Actualización OnlineSi YaST logró conectarse con el servidor OpenSUSE y bajar las informaciones actuales sobre las actualizaciones, podemos instalar estos paquetes en este momento. Hay que tener en cuenta que el hecho de bajar muchas cantidades de datos de la web puede tardar según la velocidad de nuestra conexión a In-ternet y la cantidad de datos a bajar.

Para actualizar el sistema hay que esco-ger Actualizar el Sistema ahora y hacer clic en OK.

Entonces se abrirá la ventana del insta-lador YaST con la lista de las actualizaciones accesibles a escoger.

Así podemos actualizar nuestro sistema en cualquier momento, también después de la instalación. Si no queremos actualizar el sis-tema en este momento hay que escoger Omitir la actualización y hacer clic en OK.

UsuariosEn este paso hay que crear las cuentas de los usuarios normales dando su nombre y con-traseña. Si le marcamos al usuario la opción Registro automático, tras el reinicio del siste-ma aparecerá el escritorio de este usuario. Se puede rechazar después esta opción median-te el programa YaST o – si hemos escogido KDE – en la configuración del programa cargador en Centro de Control KDE.

Hay que recordar que los datos de usua-rios particulares serán accesibles sólo para ellos y para el administrador del sistema. Al utilizar el sistema el usuario tendrá que entrar la contraseña cada vez, cuando para poner en marcha algún programa, serán necesarios los derechos de root. En cambio trabajando en la consola del sistema para obtener los derechos del administrador, hay que dar la siguiente orden

su -

y después habrá que entrar la contraseña. Si queremos obtener temporalmente los permi-sos de otro usuario, daremos la orden

su usuario

donde usuario, es el nombre–login de la per-sona, cuyos permisos queremos obtener.

Escribiendo la configuración del sistemaAhora el sistema se ocupará de limpiar auto-máticamente todos los residuos del proceso de la instalación, como por ejemplo los archi-vos temporales, guardará también en los logs las informaciones del instalador.

Configuración del equipoLa configuración del equipo en realidad no pertenece ya al mismo proceso de la insta-lación. No obstante es una facilidad, ya que antes de iniciar nuestro nuevo sistema por primera vez, podemos configurar detalla-damente todos los periféricos que vamos a utilizar.

Si queremos examinar o cambiar las propiedades de la impresora o una tarjeta gráfica, hay que hacer clic en el nombre del componente escogido, entonces aparecerá la ventana de configuración. En la mayoría de los casos el instalador escogerá correcta-mente las opciones adecuadas para nuestros periféricos. Si tiene un problema con alguna cosa, se puede omitir este paso y volver a es-to luego, poniendo en marcha el programa de la configuración de un componente dado en YaST.

Terminación de la instalaciónEn este momento veremos el mensaje de ins-talación terminada con éxito. Entonces ha-cemos clic en Terminar y empezamos a cono-cer nuestro nuevo entorno de trabajo. ¡Que te diviertas!

Configuración de red

Page 12: Linux Plus Magazine 030_Marzo 2007

12 Linux+ 3/2007

descripción de DVDsDisco B

13www.lpmagazine.org

descripción de DVDsDisco B

CentOS 4.4

CentOS (acrónimo de Community ENTerprise Operating System) es un clon a nivel binario de la distribución Red Hat Enterprise

Linux, compilado por voluntarios a partir del código fuente liberado por Red Hat, empresa desarrolladora de RHEL.

Red Hat Enterprise Linux se compone de software libre y código abierto, pero se publica en formato binario usable (CD–ROM o DVD–ROM) solamente a suscripto-res pagados. Como es requerido, Red Hat libera todo el código fuente del producto de forma pública bajo los términos de la Licencia Pública GNU y otras licencias. Los desarrolladores de CentOS usan ese código fuente para crear un producto final que es muy similar al Red Hat Enterprise Linux y está libremente disponible para ser bajado y usado por el público, pero no es manteni-do ni soportado por Red Hat. Existen otras distribuciones también derivadas de los fuentes de Red Hat.

CentOS usa yum para bajar e instalar las actualizaciones, herramienta también utiliza-da por Fedora Core

Requerimientos de SistemaHardware recomendado para operar es el siguiente:

• Memoria RAM: 64 MB (mínimo),• Espacio en Disco Duro: 512 MB (míni-

mo) – 2 GB (recomendado),• Procesador: ver Arquitecturas.

ArquitecturasCentOS soporta (casi) todas las mismas arquitecturas que el original Red Hat Enter-prise Linux.

• Intel x86 – compatible (32 bit) (Intel Pen-tium I/II/III/IV/Celeron/Xeon, AMD K6/II/III, AMD Duron, Athlon/XP/MP),

• Intel Itanium (64 bit),• Advanced Micro Devices AMD64 (At-

hlon 64, etc) e Intel EM64T (64 bit),• PowerPC/32 (Apple Macintosh Power-

Mac corriendo sobre procesadores G3 o G4 PowerPC),

• IBM Mainframe (eServer zSeries y S/390),

Además tiene soporte para dos arquitecturas no soportadas por su original. CentOS

• Alpha procesador (DEC_Alpha),• SPARC.

InstalaciónPara instalar la distribución deberías seguir los siguientes pasos:

• Arranque de DVD: Primero debes ase-gurarte que tu BIOS se encuentre con-figurado para leer el DVD al momento de inicializarse tu PC o Servidor, esto es necesario para que se ejecute el shell de instalación CentOS en lugar del sistema operativo que tienes instalado en tu dis-co duro. El acceso al BIOS varía depen-diendo del Hardware que utilice, sin em-bargo, las opciones más comunes son las teclas ESC, F2 o DEL,

• Arranque de CentOS: Inicializa tu sis-tema con el DVD don CentOS colocado en tu lector de DVD. Si configuraste co-rrectamente tu BIOS para leer DVD's al arranque, debes observar la pantalla de inicio de la distribución,

• Proceso inicial y detección de Hardware: Estando en la pantalla anterior, simple-mente esperando u oprimiendo Enter, iniciarás el proceso para detección de Hardware y proceso de instalación a tra-vés de una consola gráfica , esta secuen-cia puede durar entre 10 o 15 segundos,

mientras observa mensajes descriptivos sobre tu sistema. Si deseas realizar tu proceso de instalación mediante linea de comandos, entonces deberás introducir la secuencia linux text,

• Bienvenida: Ahora verás desplegado un mensaje de bienvenida de CentOS con instrucciones de navegación, simplemen-te oprime Next para continuar con el pro-ceso,

• Lenguaje del Sistema: La siguiente selec-ción que debes hacer es sobre el idioma que deseas para tu proceso de instala-ción y sistema,

• Configuración de Teclado: Selecciona el tipo de teclado en base a su sistema; Es-pañol si posees un teclado con tecla eñey caracteres latinos, o bien, estadouni-dense de lo contrario,

• Tipo de Instalación (Actualización, Escri-torio personal, Estación de Trabajo, Ser-vidor, Personalizada): Seguido, será rea-lizado un proceso de auto–detección pa-ra determinar si posees una instalación pre–existente de CentOS, de encontrarse tendrás una opción de actualización, de lo contrario, podrás elegir entre 4 modalidades – Escritorio Personal, Esta-ción de Trabajo, Servidor o Personaliza-da – cada una de éstas presenta una bre-ve descripción de su funcionamiento.

Page 13: Linux Plus Magazine 030_Marzo 2007

12 Linux+ 3/2007

descripción de DVDsDisco B

13www.lpmagazine.org

descripción de DVDsDisco B

Para el caso de esta guía, se asumirá una configuración de Servidor, ya que Cent-OS se caracteriza por su estabilidad en esta área.

Partición de Disco DuroPosteriormente, debes realizar el particiona-miento de tu disco duro, CentOS te ofrece dos alternativas para llevar a cabo este proceso.

• Particionamiento Automático: Como su nombre lo implica, CentOS realiza el par-ticionamiento del disco duro a dimensio-nes pre–determinadas, sin embargo, esto implica generalmente que debes borrar toda la información existente en tu disco duro,

• Partición manual con Disk Druid: Para usuarios con amplio conocimiento del proceso de partición, puedes optar por hacer tu propia distribución de espacio con esta opción.

Se recomienda seleccionar Particionamien-to Automático puesto que implica el méto-do más directo y sencillo para instalar Cen-tOS, no obstante, si utilizas la opción de Disk Druid toma en cuenta los factores de redimensionamiento que utilizas para sus particiones. La principal ventaja de utilizar la opción automática, se debe a que las par-ticiones son creadas en el orden y tamaño recomendado por CentOS para operación óptima.

• Administrador de Arranque (Boot Loa-der): Debes confirmar la instalación del

Paragon NTFS para Linux

Figure fifteen

administrador de arranque (Boot Loader) GRUB; si CentOS será el único sistema operativo instalado en tu equipo, este pa-so no debe ser de mayor trascendencia. Sin embargo, si posees más de un disco duro, o bien, además de CentOS existirá otro sistema operativo, esta configura-ción tiene implicaciones en la manera que es inicializado tu sistema,

• Configuración de Red: Ahora debes in-dicar los parámetros para acceso a red, ya sea manualmente con información de nodos IP y DNS , o bien, indicando una configuración automática vía DHCP,

• Configuración Coratfuegos (Firewall): Aquí debes especificar si deseas instalar un mecanismo de Firewall para proteger tu sistema. De ser así, también tienes la opción de habilitar determinados servi-cios para que éstos no sean afectados por el Firewall, tales como: SSH , Servidores Web, Servidores de Correo y FTP,

• Definición de usuario raíz (root): Poste-riormente debes indicar una contraseña para el usuario raíz (root) del sistema, como su nombre lo indica, éste será el usuario maestro de la instalación y tendrá control absoluto de acceso sobre toda aplicación en CentOS,

• Selección de Aplicaciones/Paquetes: En esta consola tienes la opción de elegir la serie de aplicaciones que serán instalados, por default se encontrarán seleccionados una serie de paquetes que corresponden a una configuración típica de servidor, esto debido a que con anterioridad fue seleccionado este tipo de instalación. No

obstante, puedes agregar aplicaciones a tu discreción, tales como un ambiente gráfi-co u otra función necesaria para cumplir con tus requerimientos. Seleccionadas las aplicaciones, al oprimir el botón Siguiente iniciarás la instalación de aplicaciones, dependiendo de tu Hardware, este paso puede demorar entre 20 o 40 minutos,

• Ultimo paso: Felicidades!: Has termina-do de instalar satisfactoriamente CentOS Linux. Ahora sólo debes reinicializar tu sistema para entrar a tu ambiente Linux!

Paragon NTFS para LinuxEl driver para Linux Paragon NTFS es la so-lución sin rival basada en la Tecnología Paragon, experiencia en programación y un conocimiento en profundidad de la indus-tria. Ofrece acceso total lectura/escritura a particiones NFTS bajo Linux resolviendo un problema basado en la diferencia entre los sistemas de archivos de Windows y Linux. Superando la incompatibilidad entre estos dos sistemas operativos opuestos, Paragon NTFS para Linux proporciona transparencia total, alto rendimiento y estabilidad en var-ias plataformas y núcleos Linux siendo alta-mente ajustable y productivo.

Figure FifteenFigure Fifteen Puzzle Game; quita botones para que aparezca la imagen oculta debajo. Intenta quitar quince botones adyacentes en total. Este puzzle requiere pensar rápido y prever los movimientos futuros. Quita los botones de forma lógica o no podrás eliminar todos los botones. ¡Unos excelentes efectos de sonido hacen este juego todavía más in-teresante! Lo que también hace interesante a este juego es que es uno de los pocos juegos personalizables que existe. Los usuarios pue-den usar fotografías de familia, mascotas,etc., como fondos para las soluciones. Figure Fif-teen juego de puzzles y estrategia.

Page 14: Linux Plus Magazine 030_Marzo 2007

14 Linux+ 3/2007

NEWS novedadessección llevada por Alex Sandoval [email protected]

15www.lpmagazine.org

NEWS

sección llevada por Alex Sandoval [email protected]

novedadesNoticias

La FSF dice que Microsoft tiene mala VistaLa Free Software Foundation (FSF) ha lanzado una campaña en contra del nuevo sistema operativo presentado por Microsoft.Los organizadores afirman que se trata de poner en claro las desventajas de Vista y potenciar el uso de alternativas gratuitas como gNewSense.Para cumplir dicho propósito la FSF ha dispuesto del sitio BadVista.org en el que se puede apreciar con detalle los propósitos, metas y lo que está aconte-ciendo con referencia a esta campaña en la que se tiene claro el mensaje de que la lucha es por la libertad de los usuarios.http://badvista.fsf.org/

Más 3D para UbuntuUna de las propuestas más notorias que se están haciendo para las nuevas características que traerá la nueva ver-sión de Ubuntu 7.04 Feisty Fawn es la inclusión del llamado Face Browser Login, el cual permitirá el aprovecha-miento de las funcionalidades 3D me-diante AIGLX desde el momento en que los usuarios se encuentren en la pantalla de autenticación del sistema.Cabe destacar que también se tiene planeado la inclusión de manera predeterminada de Beryl/Compiz ofreciendo así a la gran masa de usuarios de Ubuntu una mejor calidad visual en su escritorio y entorno. Pero, ¿qué pasa si la máquina no tiene la capacidad para usar AIGLX? Para tales equipos se está preparando una versión alternativa. Los detalles se pueden apreciar en la página del proyecto.https://wiki.ubuntu.com/FaceBrowser-Login

Hans Reiser desarrollador de ReiserFS vende NamesysHans Reiser, está tratando de vender Namesys, para hacer frente al pago de los costes legales del juicio en el que se va a ver envuelto, pues, recorde-mos, está en prisión sin fianza acusado de haber asesinado a su esposa, Nina, de la que estaba en trámites de divor-cio, tras encontrar, en su apartamento y en su motocicleta, rastros de sangre que un análisis de ADN desveló como suyos. Según su abogado, William DuBois, los buitres son bienvenidos al negocio. Reiser asegura que es ino-cente y que pasó el fin de semana en el que desapareció su mujer, en casa con sus hijos después de que ella les dejara allí.El futuro del alguna vez alabado Reiser-FS nunca fue más incierto.http://es.theinquirer.net/2006/12/23/el_inventor_de_reiser_pone_nam.html

El gobierno de Uruguay dice que todos los escolares tendrán un PCAunque tanto Brasil como Argentina han

anunciado interés en implementar el XO de la iniciativa OLPC (Un laptop por ni-ño), al parecer Uruguay será el primer país el mundo en tener a toda su población esco-lar utilizando este computador portátil. El presidente Tabaré Vázquez presentó el pro-yecto CEIBAL (Conectividad Educativa de la Informática Básica para el Aprendizaje en Línea), que se encargará de ofrecer una computadora portátil a todos los escolares en 2009. Comenzará con un proyecto piloto en Montevideo (capital del país) y cuatro de-partamentos del Interior durante el año 2007, para luego comenzar a extenderse por todo el país durante 2008 y finalmente cumplir su objetivo el año 2009.

“CEIBAL por todo lo que tiene de simbó-lico para los uruguayos. Tuvimos que hacer malabarismos para encontrar qué podíamos hacer para que CEIBAL se transformara en una sigla y ahí está: Conectividad Educativa de la Informática Básica para el Aprendizaje en Línea”, confesó el presidente Tabaré Váz-quez durante la presentación.

La computadora la podrán llevar los ni-ños a su casa y tendrán acceso a la red de la escuela en sus alrededores. El plan también se extenderá a los colegios privados en don-de se venderá la computadora a precio de costo: “Queremos igualdad de condiciones para todos los niños (...) no olvidemos que en las escuelas privadas hay muchos niños becados que provienen de familias muy po-bres que también tienen que ser contempla-dos”.

Cada niño y su maestro tendrán un ordenadorEl gobierno apuesta a la innovación científica y la investigación en materia educativa. Las

nuevas tecnologías son la base de dichos em-prendimientos. La modernización educativa incluye el programa que dotará a cada es-colar y sus maestros de una computadora, y a todas las escuelas rurales, de Internet.

Se procura así facilitar el acceso de la ciu-dadanía a la información y el conocimiento por medio de la informática. Los escolares accederán al trabajo informático tanto en sus domicilios como en las aulas. El primer mandatario, al presentar el proyecto que revolucionará el sistema educativo, afirmó: En lo que va de nuestro gobierno, y en lo que nosquede del mismo, difícilmente encontraremos una satisfacción mayor que la que vamos a encontrarhoy cuando estemos hablando de este proyecto. El Proyecto CEIBAL surgió de una idea nacidaen el Instituto de Tecnología de Massachus-setts (MIT), realizado con computadoras portátiles y de fácil acceso. Vázquez consi-deró que en este proyecto no hay que pen-sar sólo en Montevideo, sino también en peque-ños pueblos del interior del país de difícil acceso, mediante el trabajo en red. Las computado-ras no requieren el uso de energía eléctrica, lo que es una ventaja para aquellos puntos del interior del país aún no electrificados. Además, es un importante avance para que niños de todas las clases sociales, sobre todo de las más carenciadas, tengan acceso a las nuevas tecnologías. El proyecto comenzará a implementarse desde marzo a septiembre de este año, cuando se iniciará una etapa de prueba para 150 alumnos y sus docentes en el interior del país. Entre los meses de septiembre y diciembre se implementará en cuatro departamentos a designar. En el año 2008, el gobierno piensa completar la cober-tura en todos los departamentos del interior del país, para que en el año 2009 se pueda llegar a los niños de todo Montevideo.

La modernidad y las nuevas tecnolo-gías se están imponiendo en nuestro país co-mo una herramienta válida para el desarro-llo educativo tanto de niños como jóvenes y adultos. La importancia del acceso a Inter-net también estimula a las autoridades para seguir con proyectos de innovación educa-tiva.

http://www.larepublica.com.uy/lr3/larepublica/2006/12/15/comunidad/235709/uruguay-apues-ta-a-la-innovacion-tecnologica-para-la-educa-cion/

Ordenador que tendrá cada escolar uruguayo desde este año

Page 15: Linux Plus Magazine 030_Marzo 2007

14 Linux+ 3/2007

NEWS novedadessección llevada por Alex Sandoval [email protected]

15www.lpmagazine.org

NEWS

sección llevada por Alex Sandoval [email protected]

novedadesNoticias

Lenguaje de programación DD es un lenguaje de programación de sistemas. Está enfocado a combinar el poder y alto rendimiento de C y C++ con la productividad de programación de lenguajes modernos como Ruby y Python. Se ha puesto especial atención en las nece-sidades de garantía de calidad, documen-tación, administración, portabilidad y estabilidad. En Wikipedia es posible encontrar más información en español.http://www.digitalmars.com/d/ http://es.wikipedia.org/wiki/Lenguaje_de_programación_D

En febrero los niños probarán SugarSugar, se llama la interfaz que utilizarán los OLPC (Un portátil por niño). Un escri-torio de Linux completamente modifica-do, donde se nota que el énfasis estuvo en simplificar las cosas. Hay varios detalles curiosos, por ejemplo el sistema se navega básicamente por iconos (no hay texto) y las aplicaciones no tienen menús. Inclu-so en Firefox no hay barra de direcciones. Además el sistema hace uso de una bitá-cora (Journal) en la que se va registrando todo lo que el usuario ha ido haciendo a lo largo de los días. Y en febrero comenzarán las pruebas de usabilidad entre los verda-deros destinatarios del invento: los niños.http://news.yahoo.com/s/ap/20061231/ap_on_hi_te/hundred_dollar_laptop

Microsoft teme al open sourceEn su último informe sobre riesgos para su negocio, Microsoft establece la ame-naza del software libre como uno de los principales factores de riesgo. Especial-mente interesante es la visión de en que consiste la amenaza del software libre: el 'open source' no asume todos los costes de desarrollo (claro reparte el coste entre muchas compañías y comunidades) y sus partidarios están intentando con-vencer a gobiernos y administraciones públicas para que lo promocionen. Curio-samente también afirma en este mismo informe que su coste total de propiedad es menor (a lo mejor hay algo aquí que no cuentan). Dice que con esta populariza-ción del open source a lo mejor tienen que reducir sus precios de venta.http://libroblanco.com/joomla/

Gran Paradiso: Alpha 1 de Firefox 3 ya está disponibleSi tienes espíritu aventurero e instalas de todo en tu computador entonces deberías darte una vuelta por el sitio de Mozilla. Los chicos ya hicieron público Gran Paradiso Alpha 1. La aplicación está disponible para Windows, Linux y Mac, y está pensada para ser usada por desarrolladores y no por simples usua-rios como nosotros. Pero si te atreves, puedes bajarlo e instalarlo en tu equipo.http://www.mozilla.org/projects/firefox/3.0a1/releasenotes/

Ciudad de Amsterdam anuncia experimento con software de código abiertoFuentes de la ciudad de Amsterdam

anunciaron que se destinaran 300.000 euros, unos 400.000 dólares, para realizar pruebas con software de código abierto en dos distritos administrativos durante este año, en un intento de apartarse de su princi-pal proveedor, Microsoft Corp., y de esta ma-nera reducir gastos además de lograr una independencia en la gestión de la informa-ción.

El software de código abierto es desa-rrollado libremente por programadores vo-luntarios, y arrendado por proveedores que generalmente cobran solo por los servicios y soporte.

Un vocero de la ciudad, Marjolijn van Goethem, dijo que en algunos departamen-tos y oficinas probarían un sistema operati-vo basado en Linux en los computadores de la ciudad, utilizando software de oficina de código abierto, en reemplazo de Microsoft Windows y Office.

Numerosos pueblos y ciudades de Euro-pa, notablemente Munich en Alemania, y Vie-na en Austria, han cambiado parcial o ma-yoritariamente a sistemas de código abierto pero siguen siendo una pequeña porción del mercado total.

Un estudio pedido por el consejo de la ciu-dad de Amsterdam demostró que una estrategia de software abierto se traduce en una indepen-

dencia de los proveedores. Además, el uso de software abierto conduce a un mejor intercam-bio y almacenamiento de información, sin temor a riesgos financieros o logísticos inaceptables, dijo un vocero de la ciudad en una declara-ción.

La prueba está programada para eje-cutarse durante la primera mitad de este año, y si es exitosa, el resto de la ciudad podría comenzar a utilizar software de có-digo abierto, decía la declaración de la ciu-dad.

Se indicaba además que no estaba pla-neado detener el uso de software de Micro-soft completamente en ningún caso, sino que la expectativa de un nuevo contrato con Microsoft sería más pequeña. El contrato ac-tual expira a finales de 2008. La declaración no revelaba detalles del contrato con Micro-soft.

Otras nueve ciudades holandesas, inclui-das Haarlem, Groningen, Eindhoven y Nij-megen se han unido en la firma del mani-festo for open software in government, cerrado a principio de 2006.

Pero Van Goethem dijo que cada ciudad individualmente puede decidir como honra-rá la declaración de principios.

http://www.theage.com.au/articles/2006/12/23/1166290761703.html

Ciudad de Amsterdam

Page 16: Linux Plus Magazine 030_Marzo 2007

novedadesUbuntu

16 Linux+ 3/2007

sección llevada por Francisco Javier Carazo Gil [email protected]

Beryl desarrollándose al máximo para poder estar presente en Ubuntu 7.04El gestor de ventanas en tres dimensiones más difundido del software libre, escindido de Compiz, Beryl está siendo mejorado día a día por sus desarrolladores, con varios ob-jetivos, uno de ellos, llegar a entrar dentro de Ubuntu 7.04 por defecto. La intención de Mark Shuttleworth sobre la nueva versión de su distribución, es que ha de competir de manera directa con Windows Vista, para ello necesita un gestor de ventanas con capacidades gráficas para poder hacer frente al nuevo gestor de Microsoft, que por cierto se parece asombrosamente al gestor que ya usaba Mac OS X. Hablando de este tema, existe un vídeo en la red que compara ambos gestores y que os recomiendo en-carecidamente que veáis porque los inge-nieros de Redmond parece que no tienen demasiada capacidad de crear, al menos en estos temas. Si tenéis instalado Beryl en vuestra Ubuntu en el repositorio que se actualiza con mayor periodicidad, os daréis cuenta que casi a diario aparecen actuali-zaciones, para poder llegar a ser un gestor estable de cara a integrarse dentro de una versión de Ubuntu también estable y poder dar servicio en equipos de producción sin problemas de estabilidad y fiabilidad. Es cierto que en la actualidad Beryl tiene ba-stantes problemas de fiabilidad, hecho que yo mismo puedo asegurar, pero también es verdad que los esfuerzos del equipo de desarrollo no paran ni en Navidades y cada día es más estable. Esperemos que Ubuntu 7.04 Feisty Fawn sea la primera versión de una distribución que incorpore efectos gráficos gracias a Beryl por defecto, pero para ello también hacen falta algunos flecos, como la incorporación de drivers propieta-rios procedentes de Nvidia y Ati dentro de la propia distribución.

Relanzado el proyecto X-EvianDesde Metabolik se ha decidido relanzar el proyecto X-Evian de acuerdo con las nece-sidades actuales. La nueva versión estará basada en Ubuntu, más concretamente en Xubuntu, en vez de en Debian como la versión anterior. La orientación estará basada al igual que en la versión actual, en el hacktivismo, es decir tal como desde Metabolik describen: trabajo cooperativo, basado en software libre, preparado para soportar eventos activistas...) pero orienta-do concretamente a cubrir las necesidades de los hacklabs. La distribución accederá a los repositorios estándar de Ubuntu ade-más de los que se crearán para dicha distri-bución de manera especializada. Desde el proyecto se pide ayuda a toda la comuni-dad del software libre para desarrollarlo en todos los aspectos, desde mantener la wiki, probar paquetes, documentar, probar... X-Evian es una prueba más de lo que hoy en día es Ubuntu, la distribución más simple y polifacética del mercado. Esto es sólo una derivación más de la multitud que existen de Ubuntu y que cada día aparecen.

Ubuntu la reina de las distribuciones en 2006Por segundo año consecutivo, y con más

distancia que el año pasado, Ubuntu vuelve a ser la distribución más importante del mundo GNU/Linux. Al igual que anti-guamente lo fuera Mandrake durante mu-chos años seguidos, seguidas de las siempre presentes Red Hat o su sucesora Fedora, Debian y (Open)Suse.

El dato lo aportan portales tan impor-tantes como Google Trends, OS News o Dis-troWatch. Además el sentimiento general de la industria del software libre, de las páginas más importantes de este mundillo y de toda la información generada, apun-taba a ese dato de manera inconfundible, Ubuntu es la más famosa y más usada de lasdistribuciones.

El segundo puesto lo ocupa Fedora a bas-tante distancia de Ubuntu, el tercero Open-Suse muy cerca de Fedora y cuarta Debian. Tras ellas, Mandriva, sigue estando dentro delTop 5, pero a considerable distancia de las cuatro primeras.

Es increíble como Ubuntu en tan poco tiempo ha conseguido generar un grupo de usuarios tan grande. Nunca antes, ninguna otra distribución había conseguido tal can-tidad de web dedicadas, foros, manuales, comunidades, howtos... y es que para casicualquier periférico, buscando a través de cualquier buscador encontramos manualesde cómo instalar, configurar y usar todo. Y cuando me refiero a cualquier periféri-co, me olvido de aplicaciones, en Ubuntuexiste documentación disponible en Inter-net para instalar la aplicación más simpledel mundo. Bueno aunque todo esto enverdad llevarlo al extremo es una exagera-ción, si es totalmente cierto que de ninguna otra distribución al buscar información se tiene la sensación que se tiene con Ubuntu, de gran disponibilidad.

Muchas distribuciones tienen incluso más de una década de historia, mientras que Ubuntu, apenas pasa de su segundo cum-pleaños, pero demuestra ser la de mayor po-tencia en la actualidad. Es la distribución que más puede llegar al corazón de los usuarios de sistemas Windows que están deseosos de poder introducirse en el mundo del soft-ware libre. Además tiene la potencia y es-pecialización que se requiere para tareas untanto diversas, como lo demuestran la mul-titud de derivaciones de la distribución.Existen especializaciones para científicos,

hackers, empresarios, programadores... e in-cluso para grupos religiosos, y no sólo unao dos, sino multitud. Distribuciones sopor-tadas por organismos públicos como Gua-dalinex están también basadas en Ubuntu.

La comunidad crece día tras día. Las causas de por qué Ubuntu ha crecido de una manera exponencial en este corto per-íodo de tiempo, son muchas. La primera de ellas, el apoyo indudable que el magna-te sudafricano, director y mecenas de las distribución, Mark Shuttleworth, ha dado a Canonical Ltd. la empresa encargada dedesarrollar Ubuntu. Del apoyo económico, vienen muchas más de las causas. Por ejem-plo el nutrido grupo de programadores en-cargados de Ubuntu o el llamado Ship-it para enviar Ubuntu a todo el mundo de ma-nera totalmente gratuita y sin ninguna mo-lestia (servicio que funciona a la perfección y que por desgracia en la actualidad no es gratuito del todo).

También tiene mucho que ver en el éxito de Ubuntu la perfecta integración de Ubun-tu con los entornos gráficos más importan-tes de este mundillo, Gnome y KDE. De hecho, Kubuntu consigue una integración con KDE tan buena como la de otras dis-tribuciones basadas sólo en KDE. Además podemos instalar otros entornos como Xf-ce, con una configuración e integración por defecto estupenda, como por ejemplo en el caso de Xubuntu.

Otro punto a favor de Ubuntu es la ca-pacidad de actualización tan buena y la pe-riodicidad de éstas. Cada 6 meses podemos disfrutar de una nueva versión realmente cargada de novedades. En el caso de otras distribuciones cuando actualizas a la nueva versión, normalmente no consigues tantas novedades como las que consigues cada vez que lo haces en Ubuntu. Además la com-patibilidad con el hardware es realmente envidiable, y por defecto detecta y configu-ra una gran cantidad de periféricos, por loque el ahorro de tiempo y recursos es real-mente cuantioso. Para terminar de expresar las causas de este éxito tan exponencial, quería referirme a los repositorios, tan bien cuidados por la comunidad, y a aplicacio-nes tipo Automatix o EasyUbuntu que ha-cen que instalar, configurar y ejecutar apli-caciones en nuestra distribución sea cosa de niños, mucho más fácil aún que en Win-dows.

Page 17: Linux Plus Magazine 030_Marzo 2007

sección llevada por Esteban Negri [email protected]

novedadesSUSE

17www.lpmagazine.org

Vuelve a Novell el fundador de SuSEUno de los co-fundadores originales de SuSE GmbH, Hubert Mantel, ha vuel-to a la empresa tras haberla abandonado el año pasado. Aparentemente, después de un año de plantearse lo que quería hacer decidió que quería seguir mante-niendo su apuesta por Linux. Sobre el reciente acuerdo entre Novell y Micro-soft, Mantel dijo que no tenía ningún problema a la hora de trabajar conjunta-mente con la empresa de Bill Gates. Si la gente quiere que Linux triunfe, no pue-den vivir en un universo independiente, afirmó Mantel.

Primeros clientes para la alianza entre Microsoft y NovellDos bancos y una compañía de seguros han aceptado ya la nueva y polémica oferta de soporte técnico de Microsoft para la plataforma SuSE Enterprise Li-nux de Novell. Entre los primeros clien-tes de esta nueva oferta de suscripción para SuSE Linux se encuentran Deutsche Bank, AIG Technologies (parte de la compañía de seguros American Inter-national Group) y Credit Suisse. Este último, que se ha comprometido con un proyecto para el despliegue de SuSE Linux en un entorno virtualizado, es un cliente nuevo para Novell, y ha optado por su plataforma como resultado de la alianza con Microsoft.

Novell acerca NetWare a LinuxNovell ofrecerá servicios NetWare con SuSE Linux en su próxima versión de Open Enterprise Server (OES), su siste-ma operativo híbrido NetWare/Linux. Mientras el primer OES retuvo el kernel NetWare, OES 2 completará el turno de ofrecer servicios de trabajo en grupo comple-tamente con SuSE Linux Enterprise, lo que ayudará a los clientes más fieles a mantener su inversión en NetWare. En otras pala-bras, los servicios NetWare estarán aho-ra por encima de Linux o, si lo prefieres, podrás hacer funcionar NetWare bajo la virtualización Xen de SuSE.

El líder de Samba abandona Novell y se va a GoogleTras el acuerdo de Novell con Microsoft, Jeremy Allison, líder del proyecto Samba e ingeniero de Novell, ha decidido abandonar la empresa. Parece ser que el reciente pacto de Novell con Microsoft no ha sentado demasiado bien a Allison que cree que el acuerdo con Microsoft nos ha puesto fuera de la Comunidad.Recordemos hace escasamente unas semanas Google había donado 20.000 dó-lares al proyecto Samba. Allison se sumará a otros líderes de proyectos libres que ya trabajan en Microsoft, como por ejemplo Mike Pinkerton, responsable del browser Camino, y Sean Egan, de Gaim, los cuales comparten su trabajo con sus labores de desarrollo.

openSuse 10.2Números atrás estábamos comentando

como sería openSuse 10.2, el pasado 7 de diciembre se anunció oficialmente el lanza-miento de la versión 10.2 de este sistema ope-rativo. Las actualizaciones más importantes en lo que respecta a versiones de software son:

• kernel 2.6.18.2,• Xorg 7.2 RC2,• KDE 3.5.5,• Gnome 2.16.1,• Firefox 2.0.

Disponible para plataformas i386, X86, X86_64 y PPC.

Finalmente, como habíamos anunciado, Kickoff es el nuevo menú de escritorio, que representa un paradigma a los menús clásicos de escritorio: posee un atractivo diseño con ven tanas organizadas en solapas y una casillapara poder buscar archivos (Beagle Search Tool).

En lo que respecta a YaST, promete ser más liviano y reconocer una gran cantidad dehardware con solo conectarlo al pc. Reconoce automáticamente gran cantidad de tarjetas de vídeo y monitores para ajustarlos a la re-solución más óptima ni bien se inicia por pri-mera vez el sistema, lo mismo pasa con las tarjetas de sonido y sintonizadoras de TV.

Los iconos del panel de control de YaSTestán divididos por categorías lo cual per-mite una ubicación más rápida de los mis-mos, y gracias al Beagle Search Tool, tenemos la posibilidad de filtrar los iconos mediante palabras clave.

Estas dos nuevas funcionalidades au-mentan mucho la velocidad de búsqueda, ya que el panel de control posee muchos iconos y es difícil encontrar lo que uno ne-

cesita, ahora en la versión 10.2 no tenemos este problema.

También incluye mejoras en la conserva-ción de energía gracias a KPowersave, un pa-nel que permite controlar las funciones de con-servación de energía que posee el sistema con la opción de poner el sistema en hibernación.

Con los problemas previamente mencio-nados en el manejo de paquetes en la versión 10.1, ahora parecen estar resueltos con la in-clusión de openSuse managament suite. Prometeser más liviana y está integrada con YaST y también viene con una potente aplicación de consola llamada Zypper que era algo que estaba faltando en las versiones anteriores. Ya que instalar paquetes desde la consola era igual de lento que desde la interfaz gráfica.

También hay un nuevo applet: opensu-seupdater que notifica cuando hay actualizacio-nes disponibles para bajar. Como en la versión anterior también posee Xgl+Compiz como interfaz gráfica 3D con la opción de poner el cubo en modo transparente si se utiliza Beryl.

Como conclusión, esta versión de open-Suse trae mejoras en lo que respecta al panelde control YaST y al manejo de paquetes, haciéndolos más livianos, optimizando labúsqueda y agregando Zypper para insta-lar aplicaciones desde la consola rápida-mente y no olvidar la gran mejora en reco-nocimiento de hardware.

Como aspecto negativo, y es un tópico que aparece en varios foros, es el tema de las uentes: algunas fuentes que venían en la ver-sión 10.1 no están incluidas en ésta y las quetiene por defecto no se ven tan bien. Pero es un problema menor ya que instalando las fu-entes que más nos gusten y configurando suvisualización se puede solucionar.

Bienvenido a openSuSE 10.2

Page 18: Linux Plus Magazine 030_Marzo 2007

novedadesFedora

18 Linux+ 3/2007

sección llevada por Diego Rivero Montes [email protected]

Como ya sabemos Intel y Mac han culmi-nado su transición a una colaboración

estrecha entre las dos marcas, es decir que te-nemos procesadores de la famosa Intel desde el más pequeño Mac mini, hasta el Mac Pro más potente. Como cabía esperar, una distri-bución como Fedora, descendiente de uno de los buques insignia en el software libre, no se va a quedar atrás en su adaptación a las nue-vas soluciones que adoptan los fabricantes de hardware, por ello desde la primera test 1 de Fedora Core 6, se ha propuesto adaptarse en este campo, que siendo muy atractivo, no deja de ser un poco intimidatorio, encontrán-dose aún en fase de desarrollo.

A excepción del Wireless que utiliza un chipset Atheros, la configuración de los Mi-nis va razonablemente bien. En el caso de los Macbooks cuenta con drivers disponibles gracias a terceros proveedores.

Bueno, sabiendo esto y que la evolución es constante, podemos empezar a instalar FC 6 en nuestro Mac. Lo primero es tener perfectamen-te instalado Mac OS X Tiger 10.4.6. Una vez hecho esto debemos descargar e instalar Boo-tCamp, pero ¿qué es BootCamp? BootCamp es una aplicación que te ayuda a hacer sitio en el disco de tu Mac y así poder instalar otro Sistema Operativo, sin mover ninguno de tus archivos. Después sólo tienes que introducir tu disco de Fedora Core 6, reiniciar e instalar, con cuidado de instalar en el sitio que hayamos re-servado ya que podemos borrar nuestro OS X. Una vez finalizado todo el proceso, pulsando la tecla “Alt” durante el arranque podremos elegir entre Mac OS X y Fedora.

Bueno, ya hemos hecho sitio en el disco duro, y si todo lo anterior ha ido como debe, estarás en una instalación normal de Fedora, en la que podremos escoger la partición don-de alojarlo, evidentemente elegirás la partición creada con BootCamp para este propósito. Cuando llegues a la instalación de Grub, sal-taremos este paso, ya que lo que podemos conseguir es que la máquina no arranque nin-gún sistema y tengas que reinstalar. Cuando hayas terminado y reiniciado, pulsando la te-cla “Alt”, ya puedes seleccionar entre el Tigre y “Windows” para tu instalación Linux, por desgracia no hay un pingüinito y nos asigna la ventanita de nuestro amigo “Guillermito Puertas” (Bil Gates, jeje) pero bueno, algo es al-go y ya tenemos FC 6 en nuestro Mac, el resto está por llegar. Como ya se ha dicho, estamos en constante evolución y esto es solamente

El mayor acontecimiento de Software Libre de Europa, FOSDEM, 24 y 25 de Febrero de 2007Pues bien, FOSDEM es un acontecimiento libre y no comercial realizado por y para la comunidad Linux. Su meta es proporcionar libremente y abrir a los desarrolladores y a la comunidad un lugar de reunión; por cierto el lugar es inmejorable, la ciudad de Bruselas en Bélgica. Es un acontecimiento, donde la participación y asistencia es total-mente gratuita. FOSDEM instala lo que se llaman DevRooms, lo que podríamos tradu-cir como cuarto del desarrollador, para que los desarrolladores den a conocer y ayuden e intercambien inquietudes con el resto de la comunidad. También se trata de un ámbito donde poder intercambiar y discutir soluciones y las últimas tendencias. Según FOSDEM, es algo realmente importante que aquellos que se dedican al desarrollo en todo el mundo puedan satisfacer en vivo sus inquietudes, pudiendo así beneficiarse sus proyectos y aquellos que nazcan como fruto de estas reuniones. En el aspecto de la infraestructura, red/conectividad a Internet y proyectores, FOSDEM se encarga de todo.Ahora un poco de historia: en el año 2000 un entusiasta del movimiento Linux en Bélgica, decidió convocar una pequeña reunión de desarrolladores de Open Source, que el denominó Open Source Developers European Meeting (OSDEM). Creó una lista de correo y un web site en el que se hablaba de esto. Unas semanas más tarde la gente ya estaba esperando impaciente el aconteci-miento. Rafael envió invitaciones a conocidas figuras como Rasterman, Fyo-dor, Jeremy Allison y así muchos, con lo que el éxito estaba asegurado. Hoy en día ya es un acontecimiento consolidado que cubre un amplio espectro de los proyectos de Software Libre e igualmente ofrecer una plataforma a la gente que quiere colaborar con el verdadero espíritu del Open Source.

Fedora legacyFedora 4 y anteriores pueden quedarse sin soporte. Según pudimos leer en http://fedo-ralegacy.org/ en una noticia fechada el 12 de diciembre de 2006, el modelo actual para dar soporte y mantenimiento a las distri-buciones se está reexaminando. Mientras tanto, según dice, no pueden extender la ayuda a las versiones más antiguas de Fe-dora Core 4 como en un primer momento se había planeado.

Sobre el futuro de los RPMSegún se desprende de lo visto y leído en-torno a Red Hat, y en particular a Fedora, el proyecto parece estar en los orígenes de crear una nueva comunidad alrededor de los paquetes referidos, destinados a desarro-lladores de diferentes horizontes: léase de Fedora, de Red Hat, de Novell, de Mandriva u otros. La primera apuesta es tomar el código de los actuales RPM para limpiarlo y trabajar con todas las personas y grupos en general que confían en los RPMs, para así crear un proyecto fuente de primer rango.

el principio, así que nadie desespere, todo es susceptible de ser mejorado y tarde o tempra-no ocurre.

A vueltas con el ratónDesde hace tiempo los ratones han ido cre-ciendo, y no me refiero a esos que tienen cua-tro patitas, un rabito más o menos largo y una nariz puntiaguda, jeje. Hoy en día es fácil encontrarlos de múltiples formas colores y con más accesorios y botones que un traje. Pero, también es posible que el ratón que te enviaron con tu Mac tenga un solo botón y te preguntes como podrías utilizar un escritorio GNOME con ese ratón sin desesperarte en el intento. Pues bien, es posible, utilizando una emulación del botón derecho.

Bueno, para emular el clic del botón de-recho, habremos de utilizar el teclado. Utili-zaremos la tecla que quieras y a continuación activaremos una característica de accesibili-dad llamada Mouse keys.

Los pasos a seguir son los siguientes:

• Entramos en Sistema, preferencias, acce-sibilidad, teclado,

• Ahora estamos en permitir características de accesibilidad del teclado,

• Elegimos Mouse keys y aquí permitir Mouse keys.

También es posible emular el tercer botón del ratón (como ya dije los ratones siguen creciendo). Para utilizar la tecla INTRO por ejemplo, se puede hacer como sigue según he podido saber:

• Entramos en el escritorio GNOME y aquíabrimos una consola de texto,

• Iniciamos en la consola de texto xev, el cual nos mostrará los valores que toma X11,

• Localiza el keycode de la tecla que de-seas utilizar,

• Presionar la tecla que deseas localizar y localiza el valor que toma la tecla pul-sada en el Termina,

• Anotar el valor que toma el keycode pa-ra la tecla pulsada.

Ahora escribimos en el Terminal Xmodmap -e keycode 108 = Pointer_Button3 para poner al día tu keymap (para esta sesión solamente).

Y listo ya tenemos un ratón más grande.

Fedora también en los Intel-Mac

Page 19: Linux Plus Magazine 030_Marzo 2007

sección llevada por Juan Gamez [email protected]

novedadesMandriva

19www.lpmagazine.org

Mandriva en MéxicoMandriva abre oficinas en México para ofrecer soluciones a clientes y orga-nizaciones en todo el territorio nacional mexicano.Mandriva y su asociado local, Data-comms-Genesys (http://www.datacomms.com.mx/ y http://www.genesys.com.mx/), llegaron a un acuerdo para crear la com-pañía Mandriva México que pondrá a dis-posición del mercado mexicano productos y servicios de código abierto.Esta decisión se ha tomado con el fin de proveer de herramientas de TI a compa-ñías, entidades gubernamentales y usua-rios finales quienes se verán beneficiados por las herramientas de Mandriva basadas en Linux así como de la disponibilidad de soporte local y capacitación de alta calidad.

Ulteo OS Alpha 1 SiriusGael Duval, fundador y ex-empleado de Mandriva, presentó finalmente el primer newsletter de su nueva distribución Ulteo OS. Poco después se hizo disponible su primera versión Alpha 1 en formato de LiveCD instalable y su primera captura de pantalla. Ulteo OS Alpha 1 está basado en Ubuntu 6.06 LTS e incluye: Kernel 2.6.15, X.Org 7.0, KDE 3.5.2 y Firefox 1.5.0.8, entre otros.

La mitad de las empresas migrará a Linux a partir de 2007Un estudio realizado entre diversos CIOs (Chief Information Officers) de empre-sas ha revelado que más de la mitad de ellos está pensando en instalar Linux en puestos de misión crítica en los próximos cinco años. Según ComputerWorld, la encuesta fue llevada a cabo por Saugatuck Research, que preguntó a 133 empresas de todo el mundo. El resultado fue sorpren-dente: al parecer habrá un número mucho mayor de negocios que utilicen Linux en el año 2007.Los CIOs creen que la filosofía Open Sour-ce y Linux ya han sido legitimadas por la mayoría de los vendedores de software a negocios, incluida la propia Microsoft.

La piratería de Windows podría beneficiar a LinuxLas constantes iniciativas de Microsoft para bloquear a quienes usan versiones pirateadas de Windows sin comprar las respectivas licencias serán contra-producentes para la propia compañía, al motivar la adopción de Linux a gran escala.Cada fin de año, desde 2000, se ha pronos-ticado que el año siguiente sería el definiti-vo para la irrupción plena de Linux en el mercado de consumidores. Hasta ahora, los pronósticos no se han cumplido, pero la consultora IDC estima que la cacería de piratas será el factor que definitivamente dará inicio al cambio.

Mandriva FlashMandriva, continuando con su tradi-

ción de ofrecer al usuario la posibi-lidad de tener su distribución favorita en un soporte portátil y con el fin de poder contar con la distribución Mandriva en el lugar donde se encuentre, ha anunciado la salida de Mandriva Flash. Mandriva Flash es una distribución Mandriva Linux 2007 instalada en un llavero USB de 2 GB de ca-pacidad, donde dispondremos de 1 GB de espacio libre para guardar e intercambiardatos.

Para poder trabajar con Mandriva Flash solamente tenemos que conectar el llavero USB a un PC y arrancarlo, automá-ticamente Mandriva Flash se encargará de detectar todo el hardware de nuestro or-denador de forma que en pocos segundos tendremos funcionando nuestra distribu-ción favorita.

Para que todo este proceso tenga lugar evidentemente el ordenador debe soportar el arranque desde llaveros USB algo que solamente está presente en los ordenadores más modernos, en caso de no disponer de esta posibilidad de arranque, disponemos de una pequeña imagen booteable de CD-ROM en la partición compartida del llave-ro USB. Esta imagen sólo ocupa 3MB, por lo que puede grabarse en un CD-ROM del tamaño de una tarjeta de crédito. Puede en-tonces hacer que su ordenador arranque desde este CD-ROM (asegurándose de que su llavero USB Mandriva Flash esté conec-tado), y automáticamente arrancara la dis-tribución desde el llavero USB Mandriva Flash. Una vez que haya arrancado Man-driva Flash, puede extraer el CD-ROM de launidad.

Mandriva Flash nos ofrece:

• Kernel 2.6.17,• KDE 3.5.4,• Mozilla Firefox 1.5.0.6,• OpenOffice 2.0.3,• The Gimp 2.3.10,• AmaroK 1.4.3,• KMPlayer 0.9.3,• Ekiga 2.0.3,• K3b 0.12.17,• Flash Player 7.0.68,• RealPlayer 10.0.8.80.

Todas estas aplicaciones están disponibles en su versión de 32 bits.

Así mismo dispondremos del escritorio 3D, tanto con AIGLX como con Xgl y la nue-va herramienta para configurarlo (drak3d), también tendremos a nuestra disposición todas las herramientas de configuración que ofrece Mandriva como por ejemplo Drakcon-nect que nos permitirá configurar nu-estra red de una manera muy sencilla.

Si en toda la cantidad de software que nos ofrece Mandriva Flash no encontramos lo que necesitamos podemos instalar nue-vo software desde los repositorios de Man-driva utilizando la herramienta de Gestión de Software. La única salvedad es que no podemos añadir más de 400MB de modi-ficaciones al sistema en Mandriva Flash. Así mismo puede actualizar su sistema Mandriva usando la herramienta Mandri-vaUpdate.

El llavero USB tiene distintas particiones: presenta una primera partición FAT de 750 MB. Esta partición puede ser compartida por distintos sistemas operativos, aquí se incluye la imagen del CD-ROM de arranque y algu-na documentación.

Una segunda partición ocupa el resto del disco, ésta contiene la imagen comprimida que contiene la distribución y 400MB de espacio libre donde se alojan las modificacio-nes del sistema y los directorios personales de usuario.

Los únicos puntos negativos que po-demos encontrar en Mandriva USB, y esto siendo bastante puntilloso, es la falta de documentación y páginas de manual por falta de espacio en el llavero y la no inclu-sión de la herramienta de instalación Live (draklive-install) pues parece ser que en algún caso aislado se podría borrar el car-gador de arranque de Mandriva Flash. De todas formas podemos descargar el paque-te con el instalador y realizar la instalación al disco duro asumiendo nosotros el riesgo de esta operación.

Mandriva Flash se presenta dentro de un llavero USB diseñado por Dane-Elec Memory con 5 años de garantía, además seincluye un mes de servicio en el nivel Sil-ver del Club Mandriva así como un mes de soporte en Mandriva Expert. Se puede ad-quirir en Mandriva Store (http://store.man-driva.com/).

Page 20: Linux Plus Magazine 030_Marzo 2007

correo electrónicoSPAM: cómo defenderte

20 Linux+ 3/2007

correo electrónicoSPAM: cómo defenderte

21www.lpmagazine.org

linux

@so

ftwar

e.co

m.p

lLa lucha contra el Spam no está perdidaEl término spam corresponde a una marca de carne enlatada del grupo Hormel Foods Corporation (SPiced hAM), inmortalizada en un famoso episodio de los Monty Python en donde el restaurante solamente servía platos con spam, y no había forma de pedir algún plato que no lo tuviera. Esta denominación se comenzó a utilizar para el correo electrónico comercial no solicitado.

David Alvarez García

El SPAM es un problema que afecta a todos los usuarios de Internet: desde el que pierde tiempo y dinero abriendo los mails hasta los administra-dores de la red que tienen que combatirlo. Éste

está en cada rincón de La Red: blogs, páginas web, mails, etc.Se estima que el 26% de los receptores contesta a los

mensajes de spam de correo electrónico y que el 8% termina realizando una compra. Por sectores, el ganador es el spam farmacéutico. Diversas fuentes estiman el crecimiento espe-rado del spam en torno a un 65% para el actual 2007.

Objetivos de los SPAMMERSLos spammers pueden tener distintos objetivos. Algunos usuarios pican y compran los productos que ofrecen, mayo-ritariamente por mail. Si entramos en las webs que promo-cionan el SPAM, estamos aumentando el número de visitas del sitio y normalmente los ingresos por publicidad son proporcionales al número de visitas recibidas por lo que se pueden permitir el lujo de aumentar los precios por colocar un anuncio en su web. También mejoran el posicionamiento en buscadores al tener más presencia en Internet. Si además de ingresar en sus sitios, compramos lo que venden, es otra

forma de promover lo que ellos hacen (valga la pena el pro-ducto o no) y les da la posibilidad de que lo sigan haciendo. Todo esto se hace por dinero, el SPAM es rentable, tanto para el que se publicita como para el que se encarga de pu-blicitar (spammer), que muchas veces es la misma persona. Realmente no todos son para comprar o vender algo sino que encontramos SPAM de tipo religioso, político, etc.

EstadísticasSPAMHaus es un proyecto que hace un seguimiento de to-dos los spammers alrededor del mundo, provee información y soluciones a los usuarios de Internet y tiene como objetivo la extinción del SPAM. Vamos a analizar algunas de sus estadísticas.

Como dice el título, este es el top 10 de los países en los que más spammers se registraron. Del quinto lugar para abajo no hay mucha diferencia y puede que en unos días este ranking cambie en esas posiciones, pero los primeros 4 lugares, sobre todo el primero, parecen ser más estables y en donde el problema es más difícil de controlar por parte de los encargados de regular el tráfico en Internet. En SPAMHaus también encontramos un top10 de los spammers, casual-

Page 21: Linux Plus Magazine 030_Marzo 2007

correo electrónicoSPAM: cómo defenderte

20 Linux+ 3/2007

correo electrónicoSPAM: cómo defenderte

21www.lpmagazine.org

mente son todos oriundos de los 4 primeros países del ranking anterior.

Principales amenazasLógicamente el correo basura, hace perder tiempo, energía y dinero a los ISP, incluso les proporciona una mala imagen. El ancho de banda que ocupa el spam, se le quita a los usuarios, de modo que éstos acaban perdiendo también, aparte de ser los destinatarios del co-rreo basura. Retrasa el envío de otros mensajes de correo, y en ciertas situaciones produce la pérdida de algún mail importante.

Uno de los problemas actuales con el SPAM mediante correo y los ISP es que al of-recer éstos un direccionamiento dinámico, es posible que se le asigne a un usuario una direc-ción IP que anteriormente se usó para el envío de SPAM. Esto ocasiona que la IP o incluso la red a la que pertenece esa dirección aparezca en listas negras y se tengan problemas a la hora de recibir mails de personas que usan servidores propios en casa, cuando realmente no tienen ninguna culpa.

Como curiosidad decir que eso se puede intentar solucionar poniéndose en contacto con la empresa que genera dichas listas negras y también configurando en el servidor de correo que enrute a través de otro servidor.

En lo relativo al spam en sitios webs, estos se llenan de publicidad en muy poco tiempo, obligando a usar métodos anti-spam en los blogs, portales,etc. Y el estar vigilando mucho el sitio para no dar mala imagen y sensación de abandono, sino se quita dicho spam también se facilita la indexación de la web publicitada a los buscadores.

En los chats es habitual encontrarnos con el SPAM en forma de robot que se mete en un ca-nal de la red a dejar su publicidad. Este tipo de SPAM es denunciable, como los anteriores (no confundir con el legal que dan las redes dueñas del chat, generalmente al conectar al servidor). Se puede avisar a cops de la red o denunciar en webs, pero en este tipo de redes al poder usar

comandos como son /ignore o /silence y el uso de bots que banean a los spambots, hace poco denunciable el SPAM en las redes de chat.

Otros riesgos que el usuario puede correr son:

• El robo de identidad (phishing). Muchos spammers utilizan esta técnica, que con-siste en tomar la identidad de otra perso-na, para reenviar ese SPAM a otros con la identidad robada.

• Virus. Muchos virus usan las técnicas del SPAM para expandirse.

• Combinación de vulnerabilidades (explo-its) y SPAM. Muchos spammers explotan vulnerabilidades de los sistemas y las distribuyen en sus SPAMs. Por ejemplo, el 31 de diciembre de 2002, un grupo de hac-kers de Brasil enviaron un SPAM con un código Javascript malicioso que a aquellos que abrían el correo con Hotmail, les com-prometía la cuenta.

• Combinación de virus y SPAM. Muchos SPAMs, traen consigo un gusano, que lo que permite es seguir expandiendo el co-rreo basura a todos los contactos de la víc-tima.

La principal amenaza para las empresas es que el SPAM les puede causar un DoS (Denial of Service). Esto sucede cuando se sobrecarga un equipo en particular, saturando su capa-cidad de procesamiento, o bien llenando sus buffers de entrada, y haciendo que éste recha-ce las peticiones entrantes. Todos los años las empresas gastan millones para combatir este tipo de amenazas.

¿Es Legal el SPAM?El envío de SPAM en muchos países es per-fectamente legal, no se ve como algo poco ético ni como una violación de la privacidad. Opinan que es una forma perfectamente válida de hacer publicidad y comercio debido a su bajo coste , facilidad y velocidad de envío. En muchos países está normalizado / regulado, la ley actual de California dice que los spammers deben marcar los correos que envían para que la gente lo reconozca como spam y sea optativo el recibir dicha publicidad. La marca en este ca-so es ADV en el campo asunto. En España está claramente prohibido, como se aprecia en estos artículos de la LSSI.

Artículo 20. Información exigida sobre las comunicaciones comerciales, ofertas promocio-nales y concursos.

• Las comunicaciones comerciales reali-zadas por vía electrónica deberán ser

claramente identificables como tales y de-berán indicar la persona física o jurídica en nombre de la cual se realizan. En el caso en el que tengan lugar a través de correo electrónico u otro medio de comunicación electrónica equivalente incluirán al co-mienzo del mensaje la palabra publicidad.

• En los supuestos de ofertas promociona-les, como las que incluyan descuentos, premios y regalos, y de concursos o juegos promocionales, previa la correspondiente autorización, se deberá asegurar, además del cumplimiento de los requisitos esta-blecidos en el apartado anterior y en las normas de ordenación del comercio, que queden claramente identificados como tales y que las condiciones de acceso y, en su caso, de participación se expresen de forma clara e inequívoca.

Artículo 21. Prohibición de comunicaciones co-merciales no solicitadas realizadas a través de correo electrónico o medios de comunicación electrónica equivalentes.

Queda prohibido el envío de comunicacio-nes publicitarias o promocionales por correo electrónico u otro medio de comunicación elec-trónica equivalente que previamente no hubie-ran sido solicitadas o expresamente autoriza-das por los destinatarios de las mismas.

Pero incluso dentro de la legalidad pue-den engañarle para ser objetivo de SPAM. Es habitual que un usuario escriba su dirección de correo electrónico en alguna página web donde la letra pequeña autoriza a la compañía y a sus asociadas enviarle información que crean de su utilidad.

La Asociación de usuarios de la comu-nicación advierte de que no es fácil delimitar la legalidad del spam. De hecho, el 90% de los productores de estos mensajes asegura que su actividad se enmarca dentro de la lícita promoción de bienes y servicios. Como vemos el tema de la legalidad es muy importante ya que puede frenar en gran medida el SPAM, el año pasado en Argentina se declaró ilegal el SPAM, junto a eso se prohibieron el comercio de bases de da-tos de correos electrónicos, un gran avance.

Por desgracia en muchos países aun es legal todo este tipo de acciones comerciales. Todos conocemos a Alan Ralsky, conocido co-mo el rey del correo basura, es de los personajes más prolíficos y conocidos por su negocio y sus declaraciones en el mundo del SPAM, con una fortuna, y numerosas denuncias de todo tipo.

Este tipo de famosos suelen ser objeto de acciones por el resto de usuarios que están en su contra, que por norma es un número de gente considerable. En el año 2006 le suscri-Figura 1. El origen del nombre SPAM

Page 22: Linux Plus Magazine 030_Marzo 2007

22

correo electrónicoSPAM: cómo defenderte

Linux+ 3/2007 23

correo electrónicoSPAM: cómo defenderte

www.lpmagazine.org

bieron a un sin fin de boletines por carta que le llegan cada día a su casa.

Al dueño de Center for American English, el New York English Centre y el Centre for Spoken English, le asesinaron en 2006 siendo muy conocido por sus políticas publicitarias agresivas en Internet, enviaban millones de e-mails diariamente a todo el mundo.

¿Es fácil realizar SPAM?Hacer Spam no requiere un conocimiento informático avanzado, con poco que se sepa se pueden hacer grandes cosas. Los spammers usan muchas técnicas distintas para colarse en las bandejas de entrada, como son el Spam CSS basado en mensajes que utilizan estilos en cas-cada (Cascading Style Sheets o CSS), que se usa para controlar el aspecto de páginas Web, y ocultar mensajes de spam.

También usan CSS que engañan a los fil-tros de spam que no entienden CSS y se apro-vechan de eso. Usan asuntos con caracteres no habituales para saltar los filtros anti-spam, etc.

Otra técnica es usar Spam NDR que con-siste en enviar correos (normalmente con ad-juntos) que utilizan falsas notificaciones es-tándar de entrega fallida (non-delivery report o NDR) que el destinatario considerará autén-tica, y le llevará a abrir un adjunto que es spam. Los famosos HOAX, también les ayudan para conseguir correos.

El software usado por spammers se deno-mina Ratware, con el que automatizan campa-ñas de spam, generan, envían y monitorizan los correos basura enviados.

Muchas veces si tienen acceso a la admi-nistración de webs, ya sea ganándose al admi-nistrador, hackeándola, modifican el código de formularios para enviar direcciones de correo a su lista cuando los usuarios se suscriben o envían comentarios.

Usan técnicas de recolección de direccio-nes de correo, para luego usarlas o incluso ven-derlas a terceros. La mayoría no son más que simples scripts que no tienen mucha complica-ción. Un ejemplo de lo fácil que es sacar unas pocas cuentas de correo sería desde una termi-nal el siguiente comando:

$ curl -s http://www.dominio.com | grep

-ioE "[A-Za-z0-9._%-]*@hotmail.com"

Esta tubería nos saca unas cuantas

direcciones de correo del tipo:

[email protected] [email protected]

[email protected]

...

Como se ve es muy fácil y con un poco de tiempo se pueden crear programas más sofis-

ticados. Si a esta facilidad de encontrar correos válidos se le suma que existen sitios donde comprar más e incluso intercambiarlas con otros spammers el problema se agrava.

Una pregunta es cómo consiguen los servidores los spammers para enviar tanta publicidad. Los spammers pueden desde contratar sus propios servidores (generalmente con datos falsos) o usar otros infectados para la causa con todo tipo de malware que permita hacer spam sobre él. Pero de lo que más se suelen aprovechar es de la mala configuración de muchos servidores que incluyen servicio de correo, los cuales tienen la opción denominada relay abierta y ahora veremos en qué consiste.

Esta opción por despiste o por una mala administración puede quedar activada, por defecto podemos encontrarla activada depen-diendo de qué servidor instalemos. La opción permite poder enviar correos haciéndonos pasar por el remitente que queramos, o con algunos de los dominios albergados en el ser-vidor. Veamos un ejemplo interactuando con el protocolo SMTP y sus comandos mediante telnet, es algo muy simple.

Con OPEN RELAY:

$ telnet busindre.is-a-geek.com

Trying 83.42.145.32...

Connected to busindre.is-a-geek.com

Escape character is '^]'.

220 busipc ESMTP Postfix

ehlo busipc

mail from: [email protected]

250 2.1.0 Ok

rcpt to: [email protected]

250 2.1.5 Ok

data

354 End data with <CR><LF>.<CR><LF>

Esto es un SPAM gracias al relay abierto, de-bería estar cerrado

250 2.0.0 Ok: queued as DA455416DA

quit

221 2.0.0 Bye

Connection closed by foreign host.

En este ejemplo se ve que la cuenta de gmail ha recibido un mail de una cuenta Hotmail, es-to lo hemos podido hacer cualquiera de noso-tros desde un ordenador conectado a Internet.

Con OPEN RELAY desactivado:

$ telnet busindre.is-a-geek.com 25

Trying 83.42.145.32...

Connected to busindre.is-a-geek.com.

Escape character is '^]'.

220 busipc ESMTP Postfix

mail from:[email protected]

250 2.1.0 Ok

rcpt to: [email protected]

554 5.7.1 <[email protected]>: Relay

access denied

rcpt to: busi@busipc

504 5.5.2 <busi@busipc>: Recipient

address rejected: need fully-qualified

address

Como vemos, en este último caso estamos protegidos frente a ataques de spammers, en este caso no permitimos que usen el server ni para enviar correos a la cuenta local del servi-dor. Un solo servidor puede enviar millones de mails en poco tiempo. Muchos spammers están usando ahora proxies abiertos y anó-nimos para despistar y que no se les siga el rastro y evitar los filtros por IP. Empresas como Elconsoft venden software de spam con posibilidad de anonimato, pagando ló-gicamente.

Si queremos asegurar nuestra configura-ción del servidor frente a spammers de correo podemos volver a usar telnet para que nos chequeen la seguridad del servidor en cuanto a relay se refiere de esta manera:

$ telnet relay-test.mail-abuse.org

Esto genera 20 test parecido al que hicimos anteriormente, pero más rápidamente.

¿Cómo protegernos?Pues la primera en velar por nuestra protec-ción debería de ser la legalidad, prohibiendo el SPAM y actuando duramente contra él, cuando se trate de países donde no esté le-galizado.

Pero sin la ayuda de un proveedor, un spammer no puede enviar spam, necesita acce-so a Internet. Existen buenos proveedores (ISP) que desconectan a los spammers muy rápido, en días, horas o incluso minutos. Las empre-sas XS4ALL y Outblaze son muy conocidos por tomar acciones rápidas, efectivas y duras contra sus clientes (spammers). En este pasado año encontramos el problema de telefónica con AHBL, la cual planeaba bloquear todo el

Figura 2. El anuncio que todos conocemos...

Page 23: Linux Plus Magazine 030_Marzo 2007

22

correo electrónicoSPAM: cómo defenderte

Linux+ 3/2007 23

correo electrónicoSPAM: cómo defenderte

www.lpmagazine.org

dominio TDE por facilitar el spam por medio de sus conexiones, y probablemente por medio de su servidor SMTP. Es crucial que los ISP se concienticen y tomen posturas frente al correo basura y el SPAM en general.

También los proveedores de hosting y ad-ministradores juegan un papel muy importan-te, suelen tener una cláusula por la que pueden confiscar los servidores de un cliente al cancelar su cuenta por usar el servidor para el envío de correo basura, ejecución de scripts para llenar comentarios de blogs con publicidad, etc.

En muchos paneles de administración de hosting como puede ser Plesk encontramos módulos para usar software tan popular como Spamassassin en el servidor de hosting de una manera muy fácil de manejar y configurar pa-ra evitar el correo basura. También varios CMS usan plugins para añadir filtros de spam en co-mentarios, uno que todos conocemos es Akis-met, muy de moda y que da un resultado exce-lente. Los usuarios también debemos tener en cuenta para no caer en la trampa una serie de puntos claves.

Si administramos un servidor no dejar el relay abierto y configurarlo debidamente. La función de los administradores es importante, aunque el server no sea profesional y sea de andar por casa debemos asegurarlo siempre.

No responder a los típicos HOAX, que es el típico intento de engañar a un grupo de personas haciéndoles creer que algo falso es real. El típico mail de ayuda al niño enfermo reenviando el correo a tus contactos, Salva las ballenas, Hay un virus en hotmail, etc, suelen ser muy usados para recolectar cuentas de correo para los spammers, porque saben que la gente lo reenvía fácilmente.

No responder a un mail no deseado. Para alguien que se dedica a este oficio un solo acier-to justifica todo lo que hace, si a uno le interesa alguno de los productos ofrecidos en uno de esos mails, hay que dirigirse a un sitio web donde también lo ofrezcan. No responder a lasinstrucciones de los correos SPAM de hacer un reenvío con la palabra remover (unsuscribe o remove). Este es un truco que ellos usan para saber la reacción que se tiene ante estos e-mails,

además de alertar al spammer de que cierta-mente es una dirección válida que pertenece a alguien. Si uno lo responde, lo más seguro es que su nombre sea agregado a una lista y reciba mayor cantidad de SPAM.

No suscribirse en sitios que prometen re-mover su nombre de las listas de SPAM. Estos sitios son de dos tipos, los sinceros y los que lo hacen para recolectar direcciones. Los primeros son usados por los segundos y en ambos casos nuestra dirección de correo adquiere más valor ya que es identificada como una dirección vali-da que pertenece a un usuario.

Usar las direcciones de correo con imáge-nes para evitar que robots las cojan. Si bien evi-tar estas situaciones ayuda mucho a no recibirgran cantidad de SPAM, las empresas requie-ren otro tipo de seguridad, para esto se utilizan filtros, los cuales están tipificados.

Filtros de lista negraSon listas de servidores de correo, los cuales permiten ser usados por los spammers o tie-nen huecos que dejan pasar a los spammers. Este tipo de filtros no son muy efectivos por dos razones fundamentales. De cada 10.000 mails, aproximadamente 8.500 son de distin-tos usuarios y/o dominios (la mayoría inexis-tentes).

Filtros basados en firmasÉstos trabajan mediante la comparación de mail entrante con mails conocidos. Una forma de chequear que dos mails son iguales es cal-culando firmas para esos correos, le asignan un número a cada caracter, se suma el valor de cada caracter y si la suma es igual a la de otro mail no hay duda de que es SPAM. Esto atrapa de 50-70% del SPAM.

Filtros basados en reglasEste tipo de filtro trabaja con patrones de pala-bras usadas en los correos no deseados, signos de exclamación, fechas, malas palabras, etc. Unos años atrás, los mejores, atrapaban entre el 90-95% del SPAM, es una solución fácil de implementar a nivel de servidores; el problema que tiene es que el SPAM destinado a provocar

DoS no tiene un texto que tenga sentido, sino que son cadenas generadas aleatoriamente.

Filtro de respuesta-desafíoAl recibir un correo electrónico de un nuevo contacto, este filtro les envía un mail de vuelta a ese nuevo contacto y le pide que llene una planilla para que el mail pueda ser despacha-do. Es un filtro muy efectivo (99.9%) pero es muy molesto.

Filtros que responden o FFBs (Filters that figth Backs)La mayoría de los mail no deseados contienen un link a una página web, si cada persona que recibe un correo spam hiciera clic en ese link, el tráfico en los servidores de los spammers sería una carga pesada, esta es la función de los FFBs. Esta idea es bastante especulativa, pero tiene como punto importante que aumentan los costos para los SPAMs.

Filtros BayesianosEs la última tecnología en la detección de spam, estos filtros se basan en estadísticas de palabras que aparecen en los correos no deseados. Ge-neralmente trabajan con grupos de dos tipos de email, los legítimos y los spam, para cada palabra en estos mails, los filtros calculan las probabilidades de spam basadas en la propor-ción de ocurrencias de los mismos, por ejemplo la palabra garantizado (guarranteed) aparece un 99% de las veces en correos SPAM que en correos legítimos y la palabra deducir aparece con un porcentaje menor pues no es usada en los correos no deseados. Los filtros bayesianos son inteligentes puesto que aprenden a distinguir entre los dos tipos de correos. Son efectivos en el 99% de los casos de falso-positivos y son una buena solución tanto para usuarios individua-les como para servidores de correo.

Resumiendo: Para luchar de manera efec-tiva contra el spam hace falta buena legalidad, buenos ISP, administradores, software anti-spam de calidad y concientizar a los usuarios.

Recuerden: La única forma de parar de recibir spam es asegurarse de que ni siquiera se llega a en-viar. Figura 3. Correo basura

Figura 4. El ranking de SPAM

Page 24: Linux Plus Magazine 030_Marzo 2007

correo electrónicoSeguridad del correo

24 Linux+ 3/2007

correo electrónicoSeguridad del correo

25www.lpmagazine.org

linux

@so

ftwar

e.co

m.p

lCertificados/PGP y cifrado de envíosExisten documentos que por su importancia necesitamos que sólo los pueda leer el destinatario lejos de la vista de terceros y/o que ese destinatario tenga la certeza de que hemos sido nosotros realmente los remitentes de ese mensaje. La tecnología que nos va a permitir esto es el uso de una clave pública y una clave privada que servirán para cifrar/descifrar y firmar/verificar nuestros correos.

Daniel Couso Santamaría

Hace años la gente empezaba a poner en sus tarjetas de visita su correo electrónico y su dirección web el afortunado que la tenía. Hoy cada vez es más frecuente encontrarse

con tarjetas de visita que añaden al final una ristra de cifras en hexadecimal correspondientes a la clave pública de co-rreo electrónico. Y es que con el tiempo el uso de firmas di-gitales se está popularizando puesto que se está volviendo una necesidad confirmar la procedencia e integridad de la información que circula por Internet. Se necesitan métodos para asegurarnos de que la información que recibimos no ha sido modificada por terceros o que está siendo captura-da mientras se está transfiriendo. Los métodos que se usan para el correo hacen uso, como otros tantos protocolos de Internet (https, sftp, ...), de la criptografía y en este caso concreto de la criptografía asimétrica donde en vez de tener una clave con la que ciframos y desciframos tenemos dos, una pública y otra privada, donde con una ciframos en origen y con la otra desciframos en destino. Este modo de funcionar va a permitir aparte del cifrado, la firma di-gital de documentos, con lo que por un lado mantenemos nuestros documentos bajo llave y por otro vamos a poder

conseguir un mecanismo para tener la seguridad de que ese documento es de una persona en concreto y no de otra que esa está haciendo pasar por aquella.

Existen dos enfoques a la hora de trabajar con cifrado y firma digital de correos electrónicos: mediante certificados o mediante OpenPGP. El primero es el usado en el ámbito empresarial y el segundo es más usado entre los usuarios finales. Con ambos obtenemos los mismos resultados pero cada uno tiene sus peculiaridades que lo hacen más o me-nos adecuado para unos usos u otros. Primero daremos una

Daniel Couso Santamaría es técnico de sistemas y socio de la empresa C.T.I. Tegnix S.L., consultora que aporta soluciones informáticas basadas en software libre. También es socio del grupo de usuarios de GNU/Linux AGNIX.

El autor quiere agradecer a Claudio Filho su ayuda en escribir el artículo.

Sobre el autor

Page 25: Linux Plus Magazine 030_Marzo 2007

correo electrónicoSeguridad del correo

24 Linux+ 3/2007

correo electrónicoSeguridad del correo

25www.lpmagazine.org

descripción general de los procesos de cifrado y firma digital y a continuación veremos cómo se comporta cada enfoque para llevarlos luego a los clientes de correo.

¿Cómo funciona?Antes de nada necesitamos un par de claves digitales, compuestas por una clave pública y una clave privada. Con la clave pública nuestros remitentes podrán cifrar los correos electrónicos que nos envían y verificar las firmas digitales del correo recibido mientras que con la clave privada ocurre al contrario: servirá para descifrar los correos cifrados pre-viamente con la clave pública correspondien-te y para firmar el correo a enviar. Es decir lo que una clave cifra, su homóloga lo descifra y lo que una clave firma la otra lo verifica.

Una vez aclarado esto podemos entrar en más detalle en el proceso de firma di-gital. En primer lugar, en cuanto tenemos nuestro documento listo para enviar, se procede a realizar un resumen o hash que es una suerte de huella digital para ese do-cumento. Toda modificación por pequeña que sea, como el añadir un simple espacio en blanco, que se haga sobre el documento implicará una modificación del hash. Ahora ciframos este hash con nuestra clave privada y se anexa al final del documento con lo que ya lo podemos enviar. El proceso en la parte del receptor del mensaje será el de separar el hash cifrado del documento y proceder por un lado a hacer un hash del documento y por el otro a descifrar el hash cifrado con la clave

pública correspondiente y compararlos entre sí. Si los valores obtenidos son iguales sig-nifica que el correo que llega es de quien lo envía y no ha sufrido modificaciones.

Para el proceso de cifrado digital se procede de un modo similar y más simple. Se toma el documento y se cifra con la llave pública del destinatario. Cuando el receptor abre el correo solamente necesita descifrarlo con la llave privada que sólo es poseída por él asegurando que él y el remitente del mensaje conocen el contenido del mismo.

Sobre el uso de la clave privada es impor-tantísimo mantener nuestras claves privadas protegidas en lugar seguro puesto que si un tercero se hace con su clave privada supon-dría comprometer al dueño de esa clave.

Certificados digitalesUn certificado digital es un documento di-gital mediante el cual un tercero confiable (una autoridad de certificación) garantiza la vinculación entre la identidad de un sujeto o entidad y su clave pública, es decir, que gracias al certificado digital que emite una autoridad certificadora tenemos la garantía de que una cierta clave pública corresponde verdaderamente a la persona o entidad que dice ser.

Los certificados digitales que se usan ac-tualmente siguen en su mayoría el protocolo X.509 aunque existen otros muchos protoco-los para certificados digitales. El protocolo X.509 establece una serie de campos en el certificado tales como el número de serie, el

emisor del certificado, algoritmo de cripto-grafía usado, periodo de validez, información sobre el sujeto o entidad, información sobre la clave, una serie de campos reservados y la firma de la autoridad certificadora.

Existen en todo el mundo autoridades certificadoras que expiden certificados del tipo comentado anteriormente como Veri-Sign o Thawte. Por lo general suelen expedir certificados a entidades empresariales para uso con comercio electrónico y otro tipo de transacciones donde se requiere este tipo de seguridad. Este tipo de certificados suelen conllevar un coste de varios cientos de euros al año.

En España existen varias autoridades certificadoras, entre ellas la FNMT (Fabrica Nacional de Moneda y Timbre), donde es po-sible obtener un certificado gratuito donde nuestro NIF/CIF queda vinculado con una clave pública. Con este certificado se pueden llevar a cabo gestiones a través de Internet pa-ra obtener información de la administración pública del Estado como datos fiscales para el IRPF, datos de la vida laboral, etc.

Es importante comentar también que a su vez las entidades certificadoras se organizan de forma jerárquica de modo que cada auto-ridad certificadora debe estar certificada por otra autoridad certificadora de nivel superior creándose así una jerarquía de autoridades certificadoras con una autoridad certificadora raíz.

¿Cómo obtener un certificado digital?Como comentábamos antes es posible conse-guir un certificado digital sin costes expedido por la FNMT desde http://www.cert.fnmt.es. Para obtenerlo debemos seguir tres pasos:

• Solicitud vía Internet: se introduce el NIF/CIF del interesado y la longitud de la clave y nos envían un código necesa-rio para seguir adelante con los demás pasos,

• Acreditación de la entidad en una Ofici-na de Registro: deberemos ir a la entidad más cercana con el código que se nos ha entregado para que haya una constancia presencial,

• Descarga del certificado de usuario: desde nuestro navegador descargamos e instalamos el certificado digital.

A partir del certificado que está instalado en nuestro navegador podremos hacer copias de seguridad del mismo o exportarlo a otros programas.Figura 1. Firma digital a partir del hash del documento

Page 26: Linux Plus Magazine 030_Marzo 2007

26

correo electrónicoSeguridad del correo

Linux+ 3/2007 27

correo electrónicoSeguridad del correo

www.lpmagazine.org

Protocolo OpenPGPEl OpenPGP (Open Pretty Good Privacy) es un protocolo no propietario basado en el PGP de Phil Zimmermann desarrollado en 1991 y llevado en la actualidad por un grupo de trabajo como un estándar abierto. Existe una implementación libre de las especificaciones de OpenPGP llamado GPG (GnuPG) que es usado más por los usuarios finales que por entidades corporativas o empresas que se suelen decantar más por el certificado digital.

El modo de funcionar de este protoco-lo, al contrario del sistema de certificados que se basa en la existencia de autoridades certificadoras que se encargan de tramitar los certificados desde una perspectiva cen-tralizada y vertical, se basa en relaciones de confianza entre los propios usuarios lo que le otorga las características de ser distribuido y horizontal.

Con PGP cada usuario crea un par de cla-ves guardando para él la clave privada y su-biendo a un servidor global su clave pública para que cualquier otro usuario pueda descar-garla en el caso de que le llegue un correo con nuestra dirección. Como es obvio el usuario receptor tiene la certeza de que el mensaje fue enviado por el dueño de la clave que estaba en

el servidor, sin embargo no tiene la certeza de que el dueño de esa llave es quien dice ser en realidad. En resumen es el propio usuario el que debe de definir el grado de confianza, cosa que no hace falta con los certificados puesto que es la autoridad certificadora quien se en-carga de este aspecto y por lo tanto el usuario debe empeñar su palabra de honor cada vez que autentica la llave de una persona. Para hacer esta autenticación se suelen organizar reuniones para intercambios de llaves donde se reunen los interesados y muestran docu-mentos oficiales que acreditan quien dicen ser (DNI, pasaporte, etc...). Una vez identificados se intercambian sus claves públicas y cada uno procede a añadir en su lista de confiables las nuevas direcciones. Con esto se van creando relaciones de confianza donde A confía en B y B confía a su vez en C, C puede enviar un correo a A y A lo toma como confiable puesto que está firmado por B.

PGP tiene una serie de ventajas al ser menos burocrático y más horizontal que el sistema basado en certificados sin dejar de ser eficiente aunque lamentablemente no encuentre apoyo de firma digital en docu-mentos de suites como OpenOffice.org donde sólo hay soporte para certificados.

¿Cómo crear claves en PGP?Existen varias herramientas libres, bien me-diante línea de comandos o bien mediante interfaz gráfica, basadas en GnuPG que nos van a permitir crear y gestionar nuestras claves. Nos centraremos en gpg y Seahorse herramientas que podemos encontrar en practicamente cualquier distribución. Para crear un nuevo par de claves mediante gpg tecleamos en un shell

$ gpg –gen-key

A continuación se nos pide que contestemos a una serie de preguntas donde tendremos que escoger entre varias opciones:

• Opciones de configuración,• Clave criptográfica: seleccionaremos DSA

y ElGamal,• Tamaño de clave: 2048 bits,• Validez: 0 (con esto nuestra clave nunca

expira),• Nombre de usuario: Nombre que identi-

fica al propietario de la clave,• Correo electrónico: Dirección de correo

del propietario de la clave,• Comentario: Breve descripción de la clave,• Confirmación: Teclee O (letra O) para

confirmar,• Frase de paso: Contraseña que nos identi-

fica como propietarios de la clave privada,

A partir de esta información nuestro orde-nador genera el par de claves. Para mejorar la generación de claves se aconseja mover el ratón o teclear algo con el teclado para mejo-rar el proceso de obtención de números alea-torios que tiene que llevar a cabo el programa para la generación de nuestras claves. Una vez concluido todo el proceso se guardará la información relevante dentro del directorio .gnupg de la carpeta de usuario.

El proceso a través del programa con interfaz gráfica para el escritorio Gnome Seahorse es mucho más sencillo, basta con ir a Clave -> Teclear clave y seleccionar Clave PGP. El resto del proceso es muy similar al

Figura 2. Verificación de autenticidad de documento mediante la comparación de hashes

Figura 3. Pantalla de creación de clave de Seahorse

Page 27: Linux Plus Magazine 030_Marzo 2007

26

correo electrónicoSeguridad del correo

Linux+ 3/2007 27

correo electrónicoSeguridad del correo

www.lpmagazine.org

descrito pero con la comodidad de la interfaz gráfica. Una vez que nuestro par de claves es-tá creado es interesante que subamos nuestra clave pública a alguno de los repositorios de claves públicas que existen en Internet para que todo el mundo pueda verificar nuestros correos enviados descargándose la clave des-de estos servidores públicos. Para ello existe una opción en Seahorse con la que podemos enviar nuestra clave pública a un servidor de claves haciendo clic derecho en la clave que queramos publicar y a continuación pulsan-do en Sincronizar y publicar claves.

Thunderbird y EnigmailAhora vamos a configurar nuestro gestor de correo Thunderbird para trabajar con GPG puesto que Thunderbird ya viene preparado para soportar el uso de certificados. Lo pri-mero será instalar la extensión Enigmail bien como paquete de alguna distribución: apt-get install enigmail o bien descargándola de http://releases.mozilla.org/pub/mozilla.org/extensions/enigmail/enigmail-0.94.1.1-tb.xpi.

Una vez instalada abrimos el gestor de correo Thunderbird y observamos que ha aparecido un nuevo menú llamado OpenPGP. Aparte de esto también nos apa-rece un nuevo apartado en las opciones de nuestras cuentas para configurar lo referente a las claves con OpenPGP.

Firma digital con certificados en ThunderbirdComo decíamos Thunderbird viene prepara-do para trabajar con certificados con lo que so-lamente es necesario configurar nuestra cuenta de correo para que esté listo para usar.

Abrimos Opciones de Cuenta y seleccio-namos la opción Seguridad. Pulsamos en Se-leccionar dentro del apartado de firma digital y escogemos entre nuestros certificados aquel que está asociado a esta cuenta de correo.

Después de asignar el certificado a la cuenta nos preguntará si queremos también asignar-lo a esta cuenta para cifrado a lo que respon-demos que sí. Con esto ya podemos firmar nuestros correos. Para ello, antes de enviar, deberemos pulsar en el botón S/MIME y se-leccionar la opción Firmar digitalmente este mensaje. Veremos que nos aparece el dibujo de un bolígrafo en la esquina inferior derecha de la ventana indicándonos que el mensaje será firmado antes de ser enviado.

Firma digital con OpenPGP en ThunderbirdPara configurar OpenPGP en nuestro cliente de correo Thunderbird debemos de instalar antes la extensión Enigmail (punto explicado ante-riormente) y dirigirse a Editar | Opciones de cuenta | Seguridad OpenPGP. A continuación habilitamos OpenPGP en esta cuenta marcan-do la primera casilla y pulsamos en seleccionar clave donde escogeremos la clave asociada con la cuenta que estamos configurando. También se nos da la opción de configurar alguna op-ción más como si los correos enviados deben de ir firmados por defecto o si deseamos en-viar en la cabecera PGP del mensaje el ID de la clave o la dirección URL del servidor de claves donde tenemos alojada nuestra clave. Con esto ya está configurado nuestra cuenta y ya podemos firmar digitalmente nuestro correo. Para ello antes de enviar pulsamos en el botón OpenPGP de la barra de herramientas y selec-cionamos Firmar mensaje.

Verificar mensajes firmadosCuando llegue un mensaje firmado obser-varemos que aparece un bolígrafo con un interrogante en la esquina inferior derecha. Si pulsamos sobre él nos preguntará si quere-mos buscar la clave en los servidores públicos y la descargará. A continuación podremos asignarle un grado de confianza a la clave pública descargada en base a que tengamos certeza de que corresponde a la persona en cuestión.

Cifrado de envíosPara cifrar los envíos debemos hacer el mis-mo paso que con las firmas digitales pero a la hora de escoger la acción antes de enviar deberemos pulsar en Cifrar/Encriptar este mensaje. Esta opción estará disponible siem-pre que podamos usar la clave pública del destinatario cosa que no siempre es posible porque puede el destinatario carecer de ella. Asimismo podremos cifrar y a la vez firmar un mensaje de modo que tendremos certeza de la integridad y autenticidad del mensaje.

Otros programasEs evidente que el principal campo de apli-cación del cifrado y firma digital ha sido el correo electrónico. Sin embargo existen otros programas que usan esta tecnología.

Si tenemos instalado el Seahorse veremos que al hacer clic derecho sobre cualquier archi-vo en el gestor de ficheros Nautilus nos apa-recen dos nuevas acciones a realizar: Firmar o Cifrar/Encriptar. Si pulsamos en Firmar se creará un archivo de igual nombre y con exten-sión .sig con el que se puede verificar el fichero en cuestión con un doble clic sobre el mismo. Si pulsamos en Cifrar/Encriptar se abrirá un menú con la lista de todas las claves públicas de otros usuarios que tenemos en nuestro orde-nador. Con lo que marcamos a quien queremos enviar el documento cifrado y obtendremos un fichero cifrado de igual nombre acabado en .pgp que podremos enviar al interesado.

Dentro de OpenOffice.org podremos fir-mar digitalmente nuestros documentos si nos dirigimos a Archivo | Firmas digitales una vez salvado el documento. Aparecerá una marca en la parte inferior de la pantalla avisándonos de que el documento ha sido firmado. Si una vez que salvamos el documentos lo volvemos a modificar, no vale pulsar Control-Z para des-hacer el cambio puesto que el documento ha sido alterado y es necesario volver a firmarlo.

Otro tipo de programas en los que es útil un poco de criptografía es en los programas de mensajería instantánea como Gaim. Gaim cuen-ta con un plugin llamado gaim-encryption que al activarlo genera un par de claves para cada cuenta que tengamos registrada sea del proto-colo que sea. De modo que si con quien estamos hablando tiene también instalado este plugin la conversación se producirá de forma cifrada.

Aspectos a tener en cuentaCada vez es más importante y necesario con-tar con canales donde la comunicación pueda realizarse de forma segura. Si el entorno en el que nos movemos es empresarial nuestra elección debe ser el uso de certificados. Si por el contrario nuestro ámbito es el de usuarios entonces la opción recomendada es PGP me-diante las herramientas de GnuPG.

Es conveniente también destacar la impor-tancia de mantener en lugar seguro la clave privada y una copia de seguridad ya que al fin y al cabo es la que verdaderamente asegura todas las características de las que hemos ha-blado anteriormente cuando nos referíamos a integridad y autenticidad de los documentos que estamos transfiriendo. Si un tercero se hace con nuestra clave privada todos estos aspectos de seguridad quedan comprometidos. Figura 4. Plugin del Gaim para cifrar conversaciones

Page 28: Linux Plus Magazine 030_Marzo 2007

softwareMozilla Firefox 2.0

28 Linux+ 3/2007

softwareMozilla Firefox 2.0

29www.lpmagazine.org

linux

@so

ftwar

e.co

m.p

lInvita al Zorro a tu casaEl 25 de octubre de 2006 una nueva versión del cada vez más popular navegador Mozilla Firefox fue publicada. Aunque el número de versión había aumentado significativamente, la nueva versión es más evolucionaria que revolucionaria. Sin embargo esta versión ofrece unos pocos cambios que pueden hacer la navegación por Internet mucho más fácil.

Jarosław Świerczyński

Una interfaz de usuario mejorada es algo obli-gatorio en las nuevas versiones de todas las aplicaciones. El cambio más importante en la interfaz de Firefox 2 es una versión modi-

ficada de la navegación con pestañas. Por defecto todos los enlaces se abren en una pestaña nueva en lugar de en ven-tanas. Y por fin se pueden ordenar las pestañas sin instalar extensiones adicionales.

Ahora es mucho más fácil manejar muchos sitios web en una sola ventana. En lugar de dividir la barra de pesta-ñas entre las diferentes paginas web, hay dos botones, uno en el lado izquierdo y otro en el derecho, estos permiten desplazarse por los encabezamientos de las pestañas que tienen un ancho razonable. Por defecto el ancho mínimo está configurado a 100 pixels. Esto puede cambiarse usan-do about:config (escribe esto en la barra de direcciones) que contiene todos parámetros. El parámetro responsable del ancho mínimo se llama browser.tabs.tabMinWidth. Su-gerimos cambiarlo a 75 pixels. Si usamos el valor 0, Firefox volverá al comportamiento antiguo y dividirá la barra de pestañas entre todas las pestañas abiertas y no mostrará los botones de desplazamiento. Además hay un botón en

el lado derecho de la barra de pestañas que abre una lista con todas las pestañas abiertas.

Ahora cada pestaña tiene su propio botón de cerrar. Sin embargo si te gusta el antiguo acercamiento, un único botón para cerrar todas las ventanas en el lado derecho de la barra, escribe 3 en browser.tabs.closeButtons. El valor 2 por otro lado, los elimina por completo, mientras que el valor 0 hace que sólo aparezca el botón en las pestañas activas.

No tenemos que preocuparnos con cerrar ventanas por accidente – en un menú contextual que se abre con el botón derecho podemos recuperar una pestaña haciendo click en Deshacer Cierre de Pestaña. Una lista de pestañas reciente-mente cerradas puede encontrarse en Historial–>Pestañas cerradas recientemente.

Los gesteros de extensiones y temas también han sido cambiados. Ahora todo, incluyendo los paquetes de len-guaje, reside en una ventana. Un gestor se puede encontrar en Herramientas–>Complementos.

Una función nueva muy útil permite restablecer el estado de una sesión previa. Desde ahora en adelante los reinicios no destruirán nuestro trabajo – Firefox no sólo recupera páginas web abiertas sino también el contenido

Page 29: Linux Plus Magazine 030_Marzo 2007

softwareMozilla Firefox 2.0

28 Linux+ 3/2007

softwareMozilla Firefox 2.0

29www.lpmagazine.org

de formularios web. Esta función es activada por defecto cuando el navegador se vuelve a abrir después de un reinicio. Es posible recu-perar una sesión previa incluso después de un apagado normal. Esto puede activarse en Editar–>Preferencias, en Principal, cambiando Cuando se inicie Firefox a Mostrar las ventanas y pestañas de mi última sesión.

No temas el inglés nunca másPor fin Firefox 2 es capaz de encontrar fallos de escritura en las áreas de texto y en los campos de texto de los formularios web. Todo lo que necesitamos es un diccionario. Para conseguir uno fácilmente, con el botón derecho abre el menú contextual de cualquier área de texto, y ve al submenú Añadir diccionarios. Se abrirá una página web con diccionarios. A partir todas las palabras con errores ortográficos aparecerán subrayadas en rojo y cuando abramos el menú contextual, veremos sugerencias para corregir el error o podremos añadir una palabra nueva al diccionario. Por defecto el navegador no comprueba los errores de escritura tendremos que habilitar la función en el menu contextual

(Comprobar la ortografía de este campo) cam-po de texto. Podemos cambiar este parámetro poniendo layout.spellcheckDefault 2 en about:config.

Incluso más seguridadLos ladrones de Internet intentan superar-se unos a otros inventando nuevas formas para robar información confidencial a los usuarios de la red, por ejemplo nombres de usuario y contraseñas de banca on-line. Firefox dificulta la vida a los criminales gracias a la habilidad de detectar ataques de phising, que se trata de usar sitios web falsificados que se parecen a otros sitios web

donde la gente usa normalmente sus datos confidenciales, contraseñas o números de tarjetas de crédito.

Cuando intentamos abrir un sitio forjado, Firefox bloqueará el acceso y mostrará un mensaje y un enlace que nos permitirá huir rápidamente a la página de inicio de Firefox. Por supuesto podemos ignorar esta adverten-cia o incluso decirle al navegador que está equivocado.

Existen dos bases de datos donde Firefox puede comprobar si un sitio web es auténti-co. La primera base de datos se actualiza pe-riódicamente y se almacena en disco. Cuando Firefox lo está utilizando no necesita conec-tarse a ningún sitio web. La segunda base de datos está localizada en Internet y está más actualizada que la primera. Cada enlace que abrimos en el navegador, está siendo envia-do a una base de datos remota y basándose en una respuesta Firefox decide si el sitio web es seguro o no. En la nueva versión del navegador la única base de datos on-line so-portada es un servidor de Google. Firefox se comunica con él usando una conexión segura SSL. Por defecto el detector de phising está activado y se usa la base de datos local. Para usar el servicio de Google abre la ventana de Preferencias y en la sección de Seguridad mar-ca Comprobar preguntando a Google sobre cada sitio que visito. Firefox se conectará a Google par descargar los términos de servicio. La información mostrada nos informa sobre los datos que se enviarán en un petición de veri-ficación y que pasa después de decidir lo que vamos a hacer al ver la advertencia contra suplantación de identidad y phising. Los

Figura 1. Ahora es más fácil controlar múltiples pestañas

Figura 2. La página about:config nos permite ajustar Firefox a nuestras necesidades

Una versión vulnerable de la versión 2.0 del protocolo SSL ha sido desactivada por defecto en Firefox 2.0 en favor de la versión 3. Sin embargo si usamos sitios web que sólo soportan la segunda versión, podemos activar el soporte para ella en about:config con el parámetro security.enable_ssl2.

Soporte de SSLv2

Page 30: Linux Plus Magazine 030_Marzo 2007

30

softwareMozilla Firefox 2.0

Linux+ 3/2007 31

softwareMozilla Firefox 2.0

www.lpmagazine.org

términos de servicio también son un recor-datorio de como trata Google la informa-ción privada de sus usuarios. Una vez que hayamos leído y aceptado los términos de servicio, nuestro navegador empezará a usar la base de datos on-line de falsificaciones de páginas.

Si encontramos un sitio web que en nuestra opinión ha sido incorrectamente identificado como phising y no lo era, pode-mos reportarlo usando Ayuda–>Informar de falsificación de web.

La Información es la claveEl soporte de feeds RSS también ha sido ac-tualizado. Cuando navegamos por un sitio web que proporciona por lo menos un feed, un icono naranja aparece en la barra de di-rección. Si lo pulsamos veremos una preview del feed (o una lista de los feeds disponibles si el sitio web proporciona más de un feed, la preview solo aparecerá cuando elijamos un único feed. En lugar de un triste árbol de documentos XML veremos una información preformateada proporcionada por el feed.

Pero eso no es todo. En la parte de arriba de la preview aparecere un formulario que permite subscribirse al feed de tres formas: como un marcador vivo, usando una aplicación exter-na o usando un servicio on-line como Google Reader, My Yahoo o Bloglines.

Eligiendo la primera opción, el feed apa-recerá por defecto en la barra de marcadores. Después de pulsar en el marcador veremos un menú con los títulos de la información enviada. Cuando hagamos click sobre uno de los títulos se abrirá una página web con toda la información. Y lo que es más, la última en-trada del menú de feeds abrirá toda la infor-mación disponible, en pestañas diferentes.

Se ha hecho mucho para hacer la búsque-da en Internet más fácil. En primer lugar, la barra de búsqueda ahora es capaz de hacer sugerencias para las búsquedas. Usando los motores de búsqueda de Google, Yahoo! y Answers.com, una lista de sugerencias apa-recerán mientras escribimos.

Cuando usamos la barra de búsqueda, los resultados aparecerán en una ventana activa.

Esto se puede cambiar para que los resulta-dos se muestren siempre en una pestaña nue-va. Todo lo que tenemos que hacer es poner browser.search.openintab true.

El navegador ahora tiene un nuevo gestor de motores de búsqueda. Encontraremos en él una lista de motores de búsqueda disponi-bles, en Administrar motores de búsqueda. En la ventana del gestor podemos añadir motores de búsqueda usando Obtener más motores de búsqueda, eliminar plugins innecesarios, reor-denar los motores, y activar o desactivar las sugerencias.

Firefox nos informará cuando navegue-mos por un sitio que ofrezca plugins para motores de búsqueda. El navegador ahora so-porta nuevos formatos de plugins: Sherlock y OpenSearch. El Listado 1 es un ejemplo de un plugin con el segundo formato.

Aquí el elemento más importante es Url. Si su atributo type es text/html, entonces la dirección dada está pensada para obtener resultados de búsqueda. El segundo valor posible de este atributo es application/x-suggestions+json que significa que la direc-ción tiene como objetivo ofrecer sugerencias de búsqueda como las que hemos menciona-do antes en este artículo. Las sugerencias de-berían aparecer en formato JavaScript Object Notation (JSON) como este:

["lin", ["linux", "linus", "linear"]]

En el ejemplo de arriba lin es una cadena introducida en el campo de búsqueda de tér-minos y el segundo elemento son sugerencias para lin.

En ambos casos la dirección puede usar parámetros que será reemplazados con va-lores adecuados. En nuestro ejemplo hemos usado el parámetro searchTerms que tendrá que ser sustituido con el contenido de un campo de texto en el que introducimas las búsquedas. Es importante que escribamos los ampersands como &amp; o el archivo del plu-gin no será considerado como XML válido.

Figura 3. Gracias al corrector nos libraremos fácilmente de los errores de ortografía

Figura 4. Firefox bloquea una página web peligrosa

Justo al lado de la barra de dirección hay un botón llamado Ir a la URL de la barra de direcciones . Este botón se usa raramente debido a que su función está duplicada por la tecla Enter que es más fácil de utilizar. Es seguro ocultar el botón. Puedes hacer-lo poniendo browser.urlbar.hideGoButton en true.

Botón Inútil

Page 31: Linux Plus Magazine 030_Marzo 2007

30

softwareMozilla Firefox 2.0

Linux+ 3/2007 31

softwareMozilla Firefox 2.0

www.lpmagazine.org

El siguiente código ha de ser añadido en sitio web que ofrezca el plugin:

<link rel="search" type="application/

opensearchdescription+xml" title="L+

Search" href="http://www.lpsearch.org/

en/lpsearch.xml"/>

Firefox indicará la disponibilidad del plugin cambiando el color de elección de motor de búsqueda a azul. Para añadir un nuevo motor de búsqueda simplemente presiona el botón y usa Añadir [L]+[Búsqueda].

El acceso a la información también ha sido facilitado implementado el soporte de micro-resúmenes, resúmenes actualizados de la in-formación más importante de un sitio web. En el navegador aparecen como marcadores con Títulos Vivos. Para subscribirse a un microre-sumen disponible en un sitio web, haz lo que haces normalmente para marcar sitios web – presiona [Ctrl]+[D]. Luego en el ventana de diálogo despliega el campo Nombre y elige uno de los microresúmenes disponibles.

Para añadir un microresumen a tu sitio web, pon el siguiente código en el encabe-zamiento:

<link rel="microsummary"

href="microsummary.php">

El archivo microsummary.php debería ob-viamente generar un resumen. Ahora mismo Firefox sólo puede mostrar los microresúme-nes como texto planto. Si el archivo devuelve

código HTML, el navegador romperá todas las etiquetas.

También se pueden crear microsumarios para sitios web que no los soportan. Para poder hacer esto, se necesita un generador de microre-súmenes. Mostraremos como añadir un marca-dor para www.kernel.org que muestre el número de la versión del último kernel estable. Creemos el archivo que aparece en el Listado 2.

Lo más importante del código de arriba son template match=/ y los nodos de pa-ginas. El primero define el contenido del mi-crosumario. En este caso es un texto estático y una versión del kernel obtenida del sitio web. Ambas son expresiones del lenguaje XSLT. El elemento value-of devuelve un valor definido por una expresión XPath dada en el atributo select. XPath es un lenguaje usado para identificar nodos en documentos HTML y XML. Afortunadamente no hay necesidad de aprenderlo. Una forma mucho más fácil de instalar la extensión XPath Checker, abre el menú de contexto del nodo que queremos usar y elige View XPath se abrirá una ventana con expresiones Xpath listas para ser usadas.

El nodo pages define sitios web a los que se aplican los microresúmenes. El navegador consiera que un generador es capaz de hacer un microresumen si la dirección del sitio web coincide con al menos un elemento de inclu-de y no coincide con ninguno de los elemen-tos de exclude. No importa el orden de estos elementos. Los espacios en blanco (espacios, tabuladores, caracteres de nueva linea) prece-dentes o siguientes no se tienen en cuenta.

Las direcciones de los elementos include y euclude deberán ser expresiones regulares. En el ejemplo anterior la expresión coincide con www.kernel.org and kernel.org. Por favor date cuenta de que la barras invertida prece-de a los puntos que son caracteres especiales en expresiones regulares. Igualmente las sím-bolos de interrogación, usados como el incio de parámetros pasados a scripts del lado del servidor, tiene que estar precedidos por ba-rras invertidas. El símbolo de interrogación de nuestro ejemplo significa que la expresión entre paréntesis puede ocurrir una o cero ve-ces, por eso es por lo que no hemos usado una barra invertida.

El elemento update es opcional y dice ca-da cuanto tiempo tiene Firefox que refrescar el el microresumen. En el caso más simple este elemento tiene un atributo interval expresa-do en minutos. Uno puede definir intervalos condicionados como elementos condition usando una expresión Xpath que debería devolver verdadero o falso. Si un elemento update no existe o no especifica un intervalo (ninguna de las condiciones se cumplen y no hay atributo interval), Firefox comprueba browser.microsummary.updateInterval. Si el parámetro no existe, el navegador lo hace por defecto cada 30 minutos.

Ahora que nuestro generador está listo, ha de ser añadido a nuestro sitio web. Usare-mos JavaScript para hacer esto:

Figura 5. Firefox ofrece sugerencias para las búsquedas

Requerimientos: CPU 500 MHz, 256 MB RAM, 100 MB de espacio de disco, una distribución moderna de Linux.

Mozilla Firefox 2.0

Figura 6. El nuevo gestor facilita la gestión de los motores de búsqueda

Page 32: Linux Plus Magazine 030_Marzo 2007

32

softwareMozilla Firefox 2.0

Linux+ 3/2007 33

softwareMozilla Firefox 2.0

www.lpmagazine.org

<button onclick="window.sidebar.

addMicrosummaryGenerator('http:

//www.lpmagazine.org/en/kernel-

org.xml')">Install kernel.org's

microsummary</button>

Presionando este botón en un navegador que no soporte microresúmenes tendrá como

resultado un error. Podemos proteger a los usuarios de esos navegadores usando el có-digo del Listado 3.

<button onclick="addGenerator('htt

p://www.lpmagazine.org/en/kernel-

org.xml')">Install kernel.org's

microsummary</button>

Estándares más recientesUna versión nueva de un navegador suele soportar versiones nuevas de estándares. Firefox 2 soporta la última versiones de Ja-vaScript – 1.7. En la lista de nuevas funciones podemos encontrar generadores, iteradores, comprensión de arrays, expresiones let y asignaciones desestructuradas.

Cada trozo de código JavaScript 1.7 debe empezar con:

<script type="application/

javascript;version=1.7">

Un generador es una función que usa una palabra clave yield. Veamos el código del Listado 4.

Ese código seguirá mostrando números pares, empezando por el cero, hasta que decidamo pararlo. La función evens() es un generador. Llamándola no conseguimos real-mente que su código se ejecute, en su lugar se devuelve un objeto generador-iterador. Cada llamada al método next() causa la ejecución

Listado 2. Un generador de microresumenes para www.kernel.org

<?xml version="1.0" encoding="UTF-8"?>

<generator xmlns="http://www.mozilla.org/microsummaries/0.1" name="The

latest stable kernel">

<template>

<transform xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0">

<output method="text"/>

<template match="/">

<text>Latest kernel: </text>

<value-of select="id('versions')/table/tbody/tr[1]/td[2]/b/a"/>

</template>

</transform>

</template>

<pages>

<include>http://(www\.)?kernel\.org/</include>

</pages>

<update interval=”60”/>

</generator>

Listado 1. Un plugin de motor de búsqueda del sitio web de Linux+

<?xml version="1.0" encoding="UTF-8"?>

<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">

<ShortName>Linux+</ShortName>

<Description>Open Minds' Magazine</Description>

<Tags>linux magazine</Tags>

<Image height="16" width="16" type="image/png">http://

www.lpmagazine.org/en/tux.png</Image>

<Url type="text/html" method="GET" template="http://www.lpmagazine.org/

en/search.php?action=results&amp;query={searchTerms}"/>

<InputEncoding>UTF-8</InputEncoding>

<AdultContent>false</AdultContent>

</OpenSearchDescription>

Listado 4. Un generador que devuelve números pares

function evens()

{

var i = 0;

while (true)

{

yield i;

i += 2;

}

}

var e = evens();

while (confirm('Even number: ' +

e.next() + '. Display next?'));

Listado 5. Un ejemplo del uso de un iterador para mostrar un documento

var o = {firstname:"John", lastname:

"Smith", city:"London"};

var it = Iterator(o);

try {

while (true) {

alert(it.next());

}

} catch (err if err instanceof

StopIteration) {

alert("End of record.");

}

Listado 3. Un código universal para añadir un generador de microresúmenes

<script>

function addGenerator(url) {

if (typeof window.sidebar == "object" && typeof window.sidebar.addMicr

osummary

Generator == "function")

window.sidebar.addMicrosummaryGenerator(url);

else

alert('Your browser does not support microsummaries!');

}

</script>

Page 33: Linux Plus Magazine 030_Marzo 2007

32

softwareMozilla Firefox 2.0

Linux+ 3/2007 33

softwareMozilla Firefox 2.0

www.lpmagazine.org

de la instrucción de la función evens() hasta que se encuentra la palabra clave yield. Enton-ces devuelve el valor del parámetro palabra clave. La siguiente llamada al método next() hace continuar la ejecución de la función desde donde se paró la última vez, eso es justo des-pués la palabra clave yield. Podemos decir que la clave yield es similar a return.

Los iteradores son conocidos de otros len-guajes de programación como C++. Brévemen-te, un iterador es un objeto que nos permite ite-rar datos. Un ejemplo del uso de iteradores en JavaScript puede encontrarse en el Listado 5.

Como puedes ver, el método next() del iterador devuelve elementos consecutivos del documento y cuando no queda nada, la siguiente llamada al método tendrá como resultado una excepción StopIteratio.

JavaScript 1.7 permite iniciar un array usando generadores. Como ejemplo mostra-remos como rellenar un array con potencias de números desde 1 hasta 10. Asumamos que existe un generador range(a, b) que devuel-ve número desde a hasta b.

var powers = [i * i for (i in range(1,

10))];

También es posible „filtrar” número devuel-tos por el generador:

var odd = [i for (i in range(1, 10))

if (i % 2 != 0)];

La instrucción de arriba rellenará el array con números impares desde 1 hasta 10. Otra nueva característica es la clave let. Permite definir funciones y asignar valores a variables y constantes con su ámbito limitado a un bloque específico o incluso una única decla-ración. Unos cuantos ejemplo del uso de la clave están incluido en el Listado 6.

Por último pero no por ello menos impor-tante, tenemos la asignación desestructurada que nos permite extraer datos de arrays y objetos usando una sintaxis que imita la cons-trucción de literales de array u objeto además de crear paquetes ad-hoc de datos. Los ejem-plos aparecen el Listado 7.

Firefox 2 tiene un nuevo soporte para se-siones de cliente y almacenamiento persistente para mejorar el rendimiento cuando trata con grandes cantidades de datos tales como docu-mentos o buzones de correo. Firefox hace esto implementando una parte de la especificación Web Applications 1.0 de WHATWG (Web Hy-pertext Application Technology Working Group) que está constituido por empresas de software como Apple Computer, Mozilla Foundation y Opera Software.

La especificación define un nuevo atri-buto DOM (Document Object Model) llamado sessionStorage que funciona de forma simi-lar a una cookie pero que sólo está disponible a páginas del mismo dominio mostradas en la misma ventana:

sessionStorage.setItem('test', 123);

Después de abrir otra página del mismo do-minio el valor leido es el siguiente:

sessionStorage.getItem('test');

Otro atributo se llama globalStorage y no está limitado a una ventana. Es particular-mente útil para almacenar grandes archivos lo que no es posible usando cookies porque éstas son enviadas con cada petición HTTP. Como ejemplo del uso de globalStorage mostraremos un contador de páginas mostra-das para un usuario. Ver Listado 8.

Cada campo del objeto tipo globalS-torage es una cadena asi que tenemos que convertirla antes de usarla como un núme-ro. El objeto estará disponible al dominio lpmagazine.org y todos sus subdominios. Si en lugar de un nombre de dominio usamos una cadena vacía, los valores almacenados esta-rán disponibles para todos los sitios web.

Merece la pena mencionar que ahora Firefox soporta la especificación svg:textpath que permite al texto SVG (Scalable Vector Gra-phics) seguir una curva o forma.

La Dominación Mundial se acercaFirefox 2.0 debería ser la elección natural para cualquiera que haya estado usando este navegador antes. Las nuevas funciones de la aplicación con seguridad convencerán a parte de la gente que duda si abandonar viejos hábitos. Parece que no hay nadie que pueda parar la siempre creciente popularidad del navegador de Mozilla.

Figura 7. Los microresúmenes se añaden igual que los marcadores

Listado 6. Ejemplo del uso de la clave let

var x = 5;

let (x = 10) {

alert(x); // 10

}

alert(x); // 5

alert(let(x = 15) x); // 15

alert(x); // 5

if (x < 10) {

let x = 15;

alert(x); // 15

}

alert(x); // 5

Listado 7. Ejemplos del uso de la asignación desestructurada

var a = 5, b = 10;

[a, b] = [b, a];

function f() {

return [1, 2];

}

[a, b] = f();

Listado 8. Usando globalStorage para almace-nar un display count

var storage =

globalStorage['lpmagazine.org'];

if (!storage.pageLoadCount)

storage.pageLoadCount = 0;

storage.pageLoadCount = parseInt

(storage.pageLoadCount, 10) + 1;

alert('You have displayed

this page ' + storage.pageLoadCount

+ ' time(s).');

Page 34: Linux Plus Magazine 030_Marzo 2007

software

34

Juegos

Linux+ 3/2007

sección llevada por Francisco J. Carazo Gil

software

35

Juegos

www.lpmagazine.org

sección llevada por Francisco J. Carazo Gil

Super Mario War es un tributo a la archiconocida saga de Super Mario. Super Mario es quizás la saga más conocida de la historia

de los videojuegos. Tal como dice el mensaje de la página, el juego ha sido creado para ser un homenaje a los juegos y personajes de la saga de Nintendo. Por supuesto no tiene intención comercial alguna y está disponible para GNU/Linux, Windows y Mac. Sus principa-les desarrolladores son Michael Schaffer y Florian Hufsky.

Puedes instalarlo a través de binarios precompilados, en el caso de GNU/Linux son binarios compilados sobre Slackware, pero tal como he comprobado funcionan a la perfección. La otra opción es descargar el código fuente del juego. Está implementado usando la librería SDL (Simple Direct MediaLayer).

La idea del juego está basada en un arcade similar llamado Jump'n'Bump y también en un minijuego disponible en algunas ver-

Super Mario War

A diferencia de muchos que comentamos en esta sección, de es-tética retro o simplemente con gráficos simples, en esta ocasión

tenemos un juego de concepción retro pero con unos gráficos que nada tienen que envidiar a juegos comerciales de última moda. As-tro Menace es un juego en la última línea tecnológica que hace uso incluso de la librería OpenAL (libopenal) para poder usar música con efectos tridimensionales.

El juego es el típico matamarcianos, pero desarrollado haciendo uso de un potencial tecnológico actual. El objetivo del juego es ir pa-sando misiones, pero entre ellas podremos hacer uso del dinero que ganemos para potenciar nuestra nave de manera que los horizontes del juego se amplían.

Los gráficos son tridimensionales y los efectos gráficos son muy buenos. La música y los efectos tridimensionales son también de últi-

Astro Menace

jugabilidadgráficos

sonido

««««««««««««

NOTEjugabilidad

gráficossonido

««««««««««««««

NOTE

Super Mario War Astromenace

siones de Super Mario Bros. de las antiguas NES y Super Nintendo. El objetivo es básicamente el siguiente, aplastar la cabeza a los otros personajes. Los personajes pueden ser otros jugadores humanos en el mismo ordenador o seres creados por el ordenador, por la inteli-gencia artificial. Por ahora no se puede jugar en red, pero en una de las siguientes versiones se espera que sea una de las mejoras, pues es la más esperada.

No os creáis que el juego está escaso de objetos a usar o de otras opciones, tiene multitud de ambos y encima en cada versión se inte-gran más y más. Además viene con un editor de mapas, por lo que además de la multitud de mapas disponibles desde el comienzo, podemos añadir de una manera rápida, mapas creados a nuestro gusto.

Los gráficos son realmente similares a los de las sagas Super Mario de la NES. La música es la misma y el ambiente y los mo-vimientos se parecen asombrosamente a los juegos de la saga de principios de los noventa.

En la actualidad se encuentra en la versión 1.7. Su mayor encan-to es jugar simultáneamente con un amigo, aunque por ahora sólo sea posible estando en el mismo lugar.

http://smw.72dpiarmy.com/

ma línea. Es una pena que el juego no tenga licencia GPL, solamente es freeware, es decir de distribución gratuita pero su código es cerrado.

Su instalación es bastante simple. Solamente deberemos des-cargar un tarball y ejecutarlo. Depende de varias librerías que nor-malmente no tendremos instaladas a no ser que usemos a menudo programas de tratamiento de audio, puesto que usa los equivalentes para audio a lo que es la GLUT para tratamiento gráfico.

Todo el que quiera convertirse en betatester del juego simple-mente tendrá que postearlo en el foro de la compañía porque sus desarrolladores están buscando probadores, al igual que en muchos otros juegos libres o gratuitos.

Otro detalle interesante es el editor de niveles que trae incorpo-rado. A diferencia de la mayoría de editores de niveles, en este caso tenemos un editor a través de scripts, que a pesar de parecer a primera vista más tosco, en el fondo es más potente y nos proporciona más posibilidades. Existen varios manuales para poder desarrollar estos scripts en la misma web del juego.

En definitiva uno de los mejores juegos gratuitos que he pro-bado por la calidad de los efectos y con una idea antigua pero que nunca ha fallado.

http://www.viewizard.com/astromenace/index_linux.php

Page 35: Linux Plus Magazine 030_Marzo 2007

software

34

Juegos

Linux+ 3/2007

sección llevada por Francisco J. Carazo Gil

software

35

Juegos

www.lpmagazine.org

sección llevada por Francisco J. Carazo Gil

Este juego que no es, al menos para mí, llamativo ni por juga-bilidad, ni por gráficos, si que llama la atención por un hecho

único, el juego se desarrolla alrededor de una torre, de la que vemos sólo el alzado, por lo que sólo veremos 180º de todo lo que ocurre. Se trata de una característica que hace al juego único en el panorama de juegos de “correr y saltar” tan numerosos y famosos.

En realidad se trata de una adaptación actual, tan a menudo como ocurre en juegos libres, del original Tower Toppler o “Nebulus” dispo-nible para PC, Atari y Commodore 64. El diseñador de dicho juego fue J. M. Phillips y fue publicado por la compañía Hewson Software. En la actualidad podemos descargar dicho juego de algunas páginas web especializadas en abandonware y ejecutarlo usando algún emulador de MS-DOS como Dosbox, emulador de DOS libre, que personalmen-te os recomiendo, tanto para este como para todos los juegos antiguos

Tower Toppler

Pix Juegos, un estudio de desarrolladores de juegos de software libre, nos presentan Pix Pang 2.0. Se trata de la segunda versión

del clónico del antiguo Super Pang. De Super Pang ha habido una gran cantidad de secuelas, algunas de ellas libre como la que nos ocupa. En este caso Pix Juegos ha conseguido un gran producto en cuanto a todos los aspetctos que a un juego de estas características se le puede pedir.

Desarrollado con Fenix, sucesor libre de Div/Div2, el juego se en-cuentra liberado bajo licencia GPL. Es el buque insignia de Pix Juegos y ha recibido una gran cantidad de reconocimientos por parte de la co-munidad internauta en general. El juego, al igual que el original Super Pang, trata sobre eliminar una serie de bolas que caen del cielo. Dichas bolas cuando son alcanzadas por uno de nuestros ganchos o armas que usamos, se dividen hasta desaparecer. Nuestra supervivencia se basa en que dichas bolas no nos golpeen.

Pix Pang

jugabilidadgráficos

sonido

«««««

NOTEjugabilidad

gráficossonido

««««««««««

NOTE

Tower Toppler Pix Pang

implementados para el antiguo sistema operativo de Microsoft y que hoy gracias a este emulador podéis disfrutar en vuestro Linux.

La versión actual destaca respecto a gráficos en comparación con la versión anterior, a pesar de que sigue el mismo estilo. El au-tor de la versión que comentamos en un primer momento decidió programar su propia versión del juego en PASCAL, para un tiempo después reprogramarlo usando C y la SDL. La versión actual está li-bre de bugs de importancia y en futuras versiones se agregarán más sonidos.

Comentaros aparte que la jugabilidad no es demasiado buena, el personaje que controlamos no hace caso tan bien como debería a las órdenes que le enviamos desde la entrada estándar. Y no es que haga trayectos erróneos, sino que tarda.

La versión actual dispone de un editor de niveles. El autor del juego está pidiendo a los usuarios que hagan nuevas torres y misio-nes y que se las envíen para así incluir las mejores.

Los gráficos del nivel de bonus se han diseñado con Blender; ro-bots, torres y otros elementos, con POV-Ray (Persistance Of Vision). Existen versiones disponible para Linux en forma de RPM, Windo-ws y BeOs. El proyecto está soportado por Sourceforge.

http://toppler.sourceforge.net/

El objetivo del juego aunque sencillo se amplía gracias a una serie de posibilidades que se nos ofrece. Modo Arcade, Crazy, Safari o Personalizado. Además existe un editor de niveles.

Los gráficos son muy buenos (en el desarrollo de los mismos aparece un amigo mío, Danigm), el sonido y la música no están mal, y la jugabilidad es muy buena. La jugabilidad es realmente similar a la del juego original, los personajes responden a la perfección y los ganchos se disparan de manera totalmente correcta, es decir cuando deben de salir. Aunque parezca extraño comentar esto, en algunos juegos, la interacción hombre-máquina no está tan bien conseguida, y en un juego de estas características es realmente importante.

En resumen el juego dispone de: 4 modos diferentes de juego, 6 personajes diferentes, 4 tipos diferentes de armas, 4 monstruos, 80 niveles, posibilidad de guardar y 3 niveles diferentes de dificultad.

Respecto las versiones disponibles del juego, existen versiones pa-ra GNU/Linux, Windows y para las consolas GP32/GP2X. El resto de las versiones no las he probado, pero la versión para Linux viene en un tarball que simplemente descomprimiremos y tras esto, ejecutaremos un script. El juego funciona a la perfección sin ninguna configuración aparte.

http://www.pixjuegos.com/?q=node/16

Page 36: Linux Plus Magazine 030_Marzo 2007

software

36

Juegos

Linux+ 3/2007

sección llevada por Francisco J. Carazo Gil

Para muchos no será una sorpresa ver un juego de disparos en primera persona para GNU/Linux, Quake III tiene binarios es-

pecíficos para el sistema operativo, pero sin embargo no es normal ver un juego de ese tamaño con una licencia estilo BSD. Este es el caso del juego que nos ocupa, Cube.

Surgido desde cero, es decir con un motor 3D propio y todo lo demás programado expresamente para él, Cube se convierte en uno de los referentes de los juegos del mundo del software libre. Su mo-tor 3D ha sido desarrollado por un programador holandés y permite unos gráficos impresionantes, rodando sobre una máquina con tan sólo 500 Mhz, 64MB de RAM y una tarjeta gráfica como TNT2.

El motor ha sido desarrollado expresamente para GNU/Linux y a diferencia de otros motores similares, como el del original Quake, que fue liberado, este motor permite un rendimiento propio de los me-

Cube

El último juego que comentaré este mes será Flobo Puyo. Como muchos más que hemos comentado y comentaremos de la co-

munidad de juegos de software libre, Flobo Puyo es un clon de un clásico, en este caso del Tetris.

Además de ser un clon incorpora una serie de nuevas característi-cas que le dan un nuevo aire. Nuevo y no digo mejor porque al menos para mí la idea del Tetris debido a su simplicidad y genialidad no puede ser superada, al menos por este juego.

En realidad, Flobo Puyo más que un clon directo del Tetris, deberíamos decir que es un clon de Puyo Puyo otro juego del estilo. Comentemos sobre qué trata el juego. En primer lugar decir que se usan una serie de parejas de burbujas en vez de piezas poligonales. Cada pareja es de un color distinto y debes agruparlas por colores, haciéndolas desaparecer del tablero si reunes cuatro o más.

Flobo Puyo

jugabilidadgráficos

sonido

«««««««««««««

NOTEjugabilidad

gráficossonido

««««««««««

NOTE

Cube Flobo Puyo

jores motores de juegos comerciales. El programador de dicho motor es un holandés llamado Wouter van Oortmerssen, un programador sorprendente, que diseña tanto lenguajes como motores 3D o juegos para móviles.

En la actualidad el juego en sí se encuentra en su segunda ver-sión y ha mejorado al plenamente funcional Cube I. Además de más mapas, en esta versión se incluye una versión mejorada del motor gráfico y un editor de niveles con muchísimas funciones que hace posible un rápido y divertido desarrollo de nuevos niveles.

A decir verdad, pocas veces antes he visto un juego pertene-ciente a la comunidad del software libre tan bien acabado y con un motor gráfico tan depurado. En un futuro esperemos que este motor sea utilizado, además de para este juego, para el desarrollo de más juegos libres, puesto que dispone como ya hemos comentado ante-riormente de una licencia parecida a la BSD.

Comentando ya detalles internos del juego decir que los gráficos son excelentes. Una maravilla en cuanto a texturas, sombras, luces, que están perfectamente a la altura de juegos contemporáneos de código ce-rrado y con grandes empresas tras ellos. El tema sonoro está bien resuel-to y la jugabilidad es muy buena. A pesar de que no hay gran variedad de opciones de juego, la gran cantidad de mapas dan un plus adicional.

http://cube.sourceforge.net/

Pero además de eso, en el otro lado de la pantalla un oponente controlado bien por otra persona o por inteligencia artificial, tratará de hacer exactamente lo mismo, y cada vez que consiga hacer des-aparecer sus burbujas, te las enviará a ti para entorpecer tu juego. Es decir se creará una lucha entre ambos que da un toque competitivo muy divertido al juego.

Se encuentran disponibles versiones para: GNU/Linux, Mac OS, Windows y Sun OS/Solaris. Está programado en C++ y se encuentra liberado bajo licencia GPL. No tiene dependencias por lo que su insta-lación, configuración y ejecución es muy sencilla y breve.

Respecto a los gráficos, poco hay que decir en un juego de estas características. Cumplen con lo que se les pide. La jugabilidad también es buena y no hay “efectos raros” como en otros juegos de este estilo. El juego se encuentra desarrollado por IOS-Software y en la actualidad está en la versión 0.20.

En definitiva otro clon libre más, pero esta vez con el añadido de que no es sólo la mecánica típica del Tetris, sino que junto con dicha mecánica, otro contrincante, ya sea real o artificial, nos disputa de igual manera la partida, dándole un toque competitivo al juego que le viene extremadamente bien.

http://www.ios-software.com/?page=projet&quoi=29

Page 37: Linux Plus Magazine 030_Marzo 2007
Page 38: Linux Plus Magazine 030_Marzo 2007

prácticaDesarrollo de juguetes físicos

38 Linux+ 3/2007

prácticaDesarrollo de juguetes físicos

39www.lpmagazine.org

linux

@so

ftwar

e.co

m.p

lDesarrollo de juguetes físicos bajo LinuxEn el artículo mostraré cómo se puede crear un sencillo juguete físico bajo Linux usando tres bibliotecas comunes, OpenGL, SDL y ODE. He elegido el ejemplo sencillo de la cuna de Newton, que solía ser un juguete popular en las mesas de los ejecutivos. Está construido por una serie de péndulos (normalmente 5) contiguos. Nos centraremos principalmente en el desarrollo de Open Dynamics Engine (ODE).

Hampus Söderström

La mayoría de las distribuciones de Linux traen SDL y OpenGL pre-instaladas en las versiones para estaciones de trabajo. Se pue-de encontrar ODE en www.ode.org. ODE es

la elección Open Source en lo relativo a motores físicos. Es muy flexible y tiene una comunidad activa trabajan-do en él.

Los peligros de un programador de Física de Cuerpos RígidosODE da prioridad a la velocidad sobre la precisión. Es una buena elección si quieres hacer juegos, pero una mala elección para diseñar puentes. Los programadores noveles frecuentemente se frustran con la fragilidad de

las simulaciones. ¿Por qué explota mi mundo? ¿Por qué produce mensajes de error normalizados? ¿Por qué tiem-bla mi animación? Son cuestiones planteadas a menudo. Normalmente la solución se consigue ajustando los pará-metros de la animación, modificándolos hasta que se vea correctamente. Aunque, a veces, que se vea correctamente no implica que esté bien hecha.

• http://www.ode.org – Open Dynamics Engine,• http://www.libsdl.org – SDL,• http://www.opengl.org – OpenGL.

En la red

Hampus Söderström es un desarrollador freelance con 10 años de experiencia en el desarrollo de software en Linux y Unix. Su especialidad son las bases de datos, los juegos y el desarrollo de software de audio, y es el autor principal de HDB la Base de Datos Híbrida de Có-digo Abierto. Hampus vive en la actualidad en Singapur, donde desarrolla la próxima generación de juegos de lucha para PC, Mac y Linux. Puedes ponerte en contac-to con Hampus en [email protected] o visitar su página web en http://www.sxp.se/.

Acerca del Autor

Page 39: Linux Plus Magazine 030_Marzo 2007

prácticaDesarrollo de juguetes físicos

38 Linux+ 3/2007

prácticaDesarrollo de juguetes físicos

39www.lpmagazine.org

Gráficos y SonidoPrimero tenemos que iniciar nuestros subsis-temas. SDL es bastante fácil de iniciar. SDL incluye una variedad de subsistemas tales co-mo joystick, cdrom, temporizadores y sonido. Sólo necesitamos el subsistema de Vídeo por lo que para nuestro ejemplo especificamos SDL_INIT_VIDEO como parámetro de la llamada (Listado 1).

Después de esto necesitamos decirle al subsistema de Video el tamaño de nuestra ventana y crearla. Las etiquetas especifican que queremos una ventana OpenGL con ace-leración por hardware (ver Listado 2).

OpenGL también necesita ser iniciado, configuramos algunos de los parámetros que describen como se verá el juego, que sombras e iluminación vamos a utilizar y el ancho de la cámara (ver Listado 3).

Creando el mundoFinalmente hemos terminado con la base. Aho-ra creemos el mundo físico de ODE. dWorl-dCreate crea un mundo físico que contendrá todos nuestros cuerpos rígidos y articulaciones. Es posible tener varios mundos. Esto puede ser práctico y rápido si los objetos de distintos mundos nunca colisionan. Otro ejemplo en el que esto puede ser útil es cuando quieres simu-lar un mundo a diferente velocidad.

Un mundo puede tener varios espacios. Los espacios son creados con funciones Spa-ceCreate, hay un par de funciones SpaceCreate diferentes que crean espacios optimizados para propósitos diferentes.

Como sólo tenemos un par de cuerpos en nuestro espacio voy a usar un Simple-

Space donde los objetos están almacenados en una tabla y comprueba la colisión de las parejas posibles de geomas en cada fotogra-ma. Para mundos mayores hay Hash Spaces y Quad Tree Spaces que realizan la compro-bación de colisión, para encontrar posibles

pares de objetos en colisión, de forma más rápida. ODE crea una unión/articulación por cada colisión que obtenga, despúes de la colisión estas articulaciones son descar-tadas. Las mantendremos en un grupo de contacto (contact group) para hacerlo rápi-do. Hablaremos más sobre esto durante la rutina de colisión.

world = dWorldCreate();

space = dHashSpaceCreate (0);

contactgroup = dJointGroupCreate (0);

ODE no especifica ninguna métrica interna, podemos usar cualquier sistema que desee-mos. Los valores tienden a ser más estables cuando están escalados cerca de 1.0. En nues-tro ejemplo, he decidido que 1 significa un metro, pero podría haber sido una milla o la distancia del salto de una rana.

Además, para ayudar al programador de física en ODE, se encuentran los siempre útiles Constraints Force Mixing o CFM y el Pa-rámetro de Reducción de Errores o función ERP. Cuando se ajusta un sistema, el cambio de estos valores es nuestra primera posibilidad para estabilizar la simulación. El ERP y el CFM también pueden usarse para conseguir Figura 1. Explorando la inestabilidad con valores ERP y CFM

Listado 1. El parámetro SDL_INIT_VIDEO

if (SDL_Init(SDL_INIT_VIDEO) < 0 ) {

fprintf(stderr, "Unable to initialize SDL: %s\n", SDL_GetError());

SDL_Quit();

}

Listado 2. La especificación de las etiquetas

if ((screensurface = SDL_SetVideoMode(640, 480, 0, SDL_OPENGL|SDL_

HWSURFACE))

== NULL )

{

fprintf (stderr, "Unable to create OpenGL screen: %s\n", SDL_

GetError ());

SDL_Quit();

}

Listado 3. La descripción de los parámetros

glShadeModel(GL_FLAT);

glClearColor(1.0f, 1.0f, 1.0f, 0.5f);

glEnable(GL_LIGHTING);

glEnable(GL_LIGHT0);

glEnable(GL_DEPTH_TEST);

glViewport(0, 0, w, h);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(80.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);

glMatrixMode(GL_MODELVIEW);

Page 40: Linux Plus Magazine 030_Marzo 2007

40

prácticaDesarrollo de juguetes físicos

Linux+ 3/2007 41

prácticaDesarrollo de juguetes físicos

www.lpmagazine.org

varios efectos como la esponjosidad, las arti-culaciones saltarinas o un objeto que se agite alocadamente.

CFM le dice al motor hasta donde se permite la transgresión de los límites. Un límite podría ser el comportamiento de una articulación, por ejemplo de una bisagra en una puerta, que sólo debería moverse en un eje y no en 3 ejes, como lo haría una articulación esférica usada en una cadera. En cada paso dado por la simulación, el motor comprobará cuanto se ha movido la articulación desde su posición y aplicará una fuerza opuesta para devolverla a su lugar. Si a CFM se le asigna el valor 0, el límite será muy estricto. Si CFM es un valor positivo, será posible violar los límites em-pujando el objeto.

ERP le indica al motor cuanta fuerza se le permite usar a la hora de aplicar una fuerza opuesta a un cuerpo que esté violando algún límite. Si se le asignara el valor 0, esto desactivaría los límites, y las articulaciones se separarían unas de otras poco a poco.

Si ERP se ajusta a un valor elevado, esto forzaría al cuerpo a volver a su posición con tal fuerza que el motor necesitaría crear otra fuerza opuesta para contrarrestarla, y al final se añadiría tanta energía al sistema que se terminaría por crear una explosión.

Tanto CFM como ERP pueden ajustarse de forma global y en articulaciones indivi-duales. CFM y ERP son una fuente inagotable a la hora de crear efectos espectaculares e in-cluso mecánicas de juego, usando el motor de formas para los que no ha sido creado. Hay algunos valores que el manual te re-comienda no utilizar, pero aunque parezca raro, pueden tener un efecto espectacular a cuando se aplican en un juego. Esta parte de la programación de física aún no ha sido muy explorada, y puede ser una forma estupenda de experimentar y lograr cosas nuevas en nuestras pantallas.

dWorldSetGravity (world,0,0,-9.82);

dWorldSetCFM (world,1e-5);

dWorldSetERP(world,1);

Ya es hora de introducir algunos objetos. Los mundos tienen Cuerpos y Geomas. Los cuer-pos tienen una masa y posición, los geomas tienen una forma. Un cuerpo puede consistir de uno o más geomas, y así crear formas más complejas. Para hacerlo más interesante, también podemos conectar los cuerpos unos a otros a través de articulaciones. Las articu-laciones básicas son la articulación esférica, la articulación de bisagra, la articulación de deslizamiento, articulación de contacto, articulación universal y articulación fija. Para crear nuestro péndulo voy a unir una esfera con una articulación de bisagra, dado que sólo se balancea sobre un eje. Para anclar el péndulo usaré una articulación fija, que no es otra cosa que una articulación que ni se mueve ni hace nada (Listado 4).

Simulando el mundoYa hemos iniciado y poblado el mundo. El siguiente paso será preparar el bucle de simu-lación. Dado que usamos SDL, un pseudo-bu-cle sería algo como en el Listado 5.

La ejecución de la simulación consta de tres pasos: en primer lugar, colisionar todos los objetos en el mundo, en segundo lugar,

hacer avanzar el mundo con pequeños pasos temporales y, finalmente, limpiar todas las ar-ticulaciones de contacto que se hayan creado.

Ya que usamos un Espacio Simple, dS-paceCollide tratará de hacer que todas las bolas colisionen unas con otras, e invocará a nuestra rutina de callback nearCallback() para cada una de ellas. Hablaremos de near-Callback() más adelante.

dWorldStep mueve el mundo hacia ade-lante. Dado que he decidido que 1 signifique 1 segundo, un salto temporal de 0.01 moverá el mundo hacia adelante una centésima de segundo. Por razones de estabilidad, el salto temporal debe ser lo más pequeño posible, y ser fijo. En general, los saltos temporales variables son una mala idea. Si quieres usar saltos temporales variables, es mejor invocar dWorldStep varias veces consecutivas.

El uso de un timestep muy bajo general-mente mejora la estabilidad del sistema. Esto no es siempre posible, si quieres crear física en tiempo real. Los saltos temporales muy pe-queños implican más cálculos para moverse del punto x al punto yt, y para mantener tu juego en tiempo real a 60 fps esto no es siem-pre posible. Si nuestro juego está ajustado a 60

Listado 4. Los cuerpos

for(int i=0;i<BALLS;i++) {

ball[i] = dBodyCreate(world);

roof[i] = dBodyCreate(world);

fixed[i] = dJointCreateFixed(world,0);

hinge[i] = dJointCreateHinge(world,0);

dJointAttach (hinge[i],ball[i],roof[i]);

dJointAttach (fixed[i],roof[i],0);

dBodySetPosition(ball[i], i*2, 1, 1);

dBodySetPosition(roof[i], i*2, 1, 8);

dJointSetHingeAnchor(hinge[i], i*2, 1, 7);

dJointSetHingeAxis(hinge[i], 0,1,0);

dJointSetFixed(fixed[i]);

sphere[i] = dCreateSphere(space,1);

dGeomSetBody(sphere[i], ball[i]);

dMassSetSphereTotal(&m, 1, dGeomSphereGetRadius(sphere[i]));

dBodySetMass(ball[i], &m);

}

Listiado 5. El pseudo-bucle

while(run) {

while ( SDL_PollEvent(&event) ) {

// take care of any key events

}

// run forward one step

simulate();

// draw the new position of the open graphics

display();

}

Figura 2. La cuna, animada

Page 41: Linux Plus Magazine 030_Marzo 2007

40

prácticaDesarrollo de juguetes físicos

Linux+ 3/2007 41

prácticaDesarrollo de juguetes físicos

www.lpmagazine.org

fotogtamas por segundo, un timestep de 0.01 resultará en física en tiempo real utilizando mi sistema métrico de 1 metro y 1 segundo.

Si se utiliza un salto temporal muy ele-vado, por ejemplo 1, los resultados serán extraños y lo más probable es que el sistema sea inestable. Pensemos en los saltos tempo-rales como el número de ajustes que puedes hacer por segundo. Ahora imaginemos dos programadores en bicicleta, en una calle llena de gente, donde a uno de ellos sólo se le permite ajustar su manillar una vez por segundo, y al otro se le permite ajustar su manillar 100 veces por segundo. Más tarde o más temprano, el que sólo puede ajustar su dirección una vez por segundo necesita-ría hacer ajustes cada vez más grandes para mantenerse derecho, y la colisión, al final, sería inevitable.

void simulate(void){

dSpaceCollide (space,0,&nearCallback);

// handle any collisions

dWorldStep (world,0.01);

// step the world 0.01 time steps

forward

dJointGroupEmpty (contactgroup);

// remove and clear contact joints

}

La rutina callback de colisiones se utiliza por el motor para permitirnos realizar acciones cuando dos cuerpos colisionan. Quizá que-ramos añadir un efecto de sonido de colisión, incrementar un marcador de puntuación, comprobar si se ha producido un gol o evitar por completo la colisión.

Empezaremos comprobando si los dos cuerpos están conectados por una articulación y entonces evitaremos la colisión. Esto es útil si tenemos algo así como una parte de abajo de una pierna y otra parte de arriba, conectadas por una articulación, pero no queremos que colisionen simplemente porque se tocan en la parte donde la articulación las conecta.

Para cada colisión que puedan tener los geomas, creamos una articulación de contacto y así evitaremos que los geomas se inter-pe-netren. La función callback nunca debe ser usada para marcar el estado en el sistema. Si queremos añadir velocidad a un cuerpo debi-do a un contacto, deberemos marcar (flag) el geoma y añadir la velocidad después de que se haya ejecutado dSpaceCollide.

Esto nos lleva al segundo problema, ¿có-mo sabemos con qué geoma está trabajando nearCallback? Para solucionarlo, necesita-mos añadir unos datos definidos por el usua-rio al cuerpo con dGeomSetData que después

pueden ser extraídos con dGeomGetData. En estos datos podemos proporcionar una estructura donde definimos e identificamos nuestra propia información para el geoma.

Una técnica común para saber si un geo-ma está chocando con la tierra es comprobar que el geoma no tiene un cuerpo y que dGeom-GetBody nos devuelve el valor null (Listado 6).

Listado 6. Una técnica común para dGeomGetBody

static void nearCallback (void *data, dGeomID o1, dGeomID o2){

int i;

// exit without doing anything if the two bodies are connected by a joint

dBodyID b1 = dGeomGetBody(o1);

dBodyID b2 = dGeomGetBody(o2);

if (b1 && b2 && dAreConnectedExcluding (b1,b2,dJointTypeContact)) {

return;

}

// skip disabled bodies

if(b1 && b2){

if(!dBodyIsEnabled(b1) || !dBodyIsEnabled(b2)){

return;

}

}

dContact contact[MAX_CONTACTS]; // up to MAX_CONTACTS contacts per box-

box

for (i=0; i<MAX_CONTACTS; i++) {

contact[i].surface.mode = dContactBounce;

contact[i].surface.bounce = 0.01;

}

if (int numc = dCollide (o1,o2,MAX_CONTACTS,&contact[0].geom,

sizeof(dContact))) {

dMatrix3 RI;

dRSetIdentity (RI);

const dReal ss[3] = {0.02,0.02,0.02};

for (i=0; i<numc; i++) {

dJointID c = dJointCreateContact (world,contactgroup,contact+i);

dJointAttach (c,b1,b2);

}

}

}

Listado 7. Dibujando los objetos de física

void display() {

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();

gluLookAt(cameraAt[0], cameraAt[1], cameraAt[2],

lookAt[0], lookAt[1], lookAt[2],

cameraUp[0], cameraUp[1], cameraUp[2]);

dVector3 p;

for(int i=0; i < BALLS; i++) {

dJointGetHingeAnchor(hinge[i], p);

draw_line(dBodyGetPosition(ball[i]), p);

draw_line(p, dBodyGetPosition(roof[i]));

draw_sphere(dBodyGetPosition(ball[i]), dBodyGetRotation(ball[i]),

dBodyGetLinearVel(ball[i]), dGeomSphereGetRadius(sphere[i]));

}

SDL_GL_SwapBuffers();}

Page 42: Linux Plus Magazine 030_Marzo 2007

42

prácticaDesarrollo de juguetes físicos

Linux+ 3/2007

Después de que se hayan seguido los pasos de la física, es hora de actualizar los ob-jetos de la pantalla. Empezamos con algunas cosas básicas de OpenGL, limpiar la pantalla y ajustar la posición de la cámara y el punto de vista. Hay unas funciones que recuperan la información de los cuerpos y que usamos para dibujar los objetos físicos. draw_line y draw_sphere son nuestras propias funcio-nes y no son parte de OpenGL o de ODE. Las describiré más tarde.

Nuestra rutina draw_line routine. Vemos cómo las funciones dBodyGet nos de-vuelven const dReal array. dReal es o bien float o double dependiendo de cómo se compi-la ODE. Por defecto es double así que es lo que usaremos en este ejemplo (Listado 9).

ODE utiliza quaternions para describir la rotación. Para mejorar el soporte de OpenGL y de otras bibliotecas ODE, también propor-ciona una interfaz de rotación de matriz. La matriz, sin embargo, no tiene el mismo formato que OpenGL, así que tendremos que convertirla al formato de OpenGL antes de poder utilizarla. Yo utilizo esta utilidad para convertir habitualmente y ajustar la matriz a un formato adecuado a OpenGL (Listado 8).

Dibuja una esfera simple con sombreado suave utilizando GLUT. Primero usaremos la función setTransform que ya hemos descrito para introducir la matriz ODE en OpenGL.

También he añadido un poco de movimiento de apretar utilizando la velocidad del cuerpo. Si la bola se mueve rápido, se transforma un poco en la dirección del movimiento. setTransfrom hace glPushMatrix así que terminamos con glPopMatrix() para llevar el stack de OpenGL hasta donde empezó (Listado 10).

También necesitamos algún tipo de en-trada para controlar la cuna de Newton. He añadido un simple mecanismo utilizando las teclas numéricas para empujar esa cantidad de bolas y la barra espaciadora para resetear la simulación.

void push_balls(int num, double vel){

for(int i=0; i<num && i<BALLS;

i++){

dBodySetLinearVel(ball[i], vel, 0,

0);

}

}

Esto puede, más tarde, ser invocado desde el SDL key callback en respuesta a un evento de pulsación de tecla numérica.

if (event.type == SDL_KEYDOWN){

switch(event.key.keysym.sym){

case SDLK_1:

push_balls(1, -10);

Para resetear la simulación sin dejar ninguna fuerza residual, necesitas resetear todas las fuerzas, torques, vectores lineares y angula-res. Si quieres que tu juego se juegue de la misma forma todo el tiempo, también tienes que limpiar las articulaciones de contacto. Hacer que el motor funcione de una forma predeterminada al 100% es perfectamente po-sible, pero puede ser un poco raro hasta que encuentres hasta la última velocidad angular que te olvidaste de resetear.

Esto puede ser una fuente de confusiones todavía mayor si quieres que la simulación funcione de forma similar a través de una co-nexión de red y de distintos tipos de CPUs. Si ejecutas una simulación incluso en diferentes versiones de procesadores Intel, ello llevará, después de un rato, a diferencias numéricas. Esto se debe a los valores de punto flotante, que tienen distinto número de decimales. Ya que se están haciendo muchos cálculos simultáneamente, una pequeña diferencia en la posición de un objeto se propagará muy rápido y llevará a los sistemas a ser comple-tamente distintos. La solución habitual que se propone es resetear el modo de precisión de Floating Point Units antes de ejecutar la simulación. Sin embargo, esto no garantiza que la simulación vaya a funcionar ya que pude ser cambiado por el medio de la etapa del mundo. Si tu juego debe ser sincronizado

Listado 9. La dependencia double

void draw_line(const double pos1[3], const double pos2[3]){

glPushMatrix();

glEnable(GL_BLEND);

glLineWidth (0.1);

glBegin (GL_LINES);

glVertex3f (pos1[0],pos1[1],pos1[2]);

glVertex3f (pos2[0],pos2[1],pos2[2]);

glEnd();

glPopMatrix();

}

Listado 8. Ajustar la matriz al formato de OpenGL

void setTransform (const double

pos[3], const double R[12])

{

GLfloat matrix[16];

matrix[0]=R[0];

matrix[1]=R[4];

matrix[2]=R[8];

matrix[3]=0;

matrix[4]=R[1];

matrix[5]=R[5];

matrix[6]=R[9];

matrix[7]=0;

matrix[8]=R[2];

matrix[9]=R[6];

matrix[10]=R[10];

matrix[11]=0;

matrix[12]=pos[0];

matrix[13]=pos[1];

matrix[14]=pos[2];

matrix[15]=1;

glPushMatrix();

glMultMatrixf (matrix);

}

Listado 10. La velocidad del cuerpo

void draw_sphere(const double pos[3], const double R[12], const double

vel[3], double radius){

setTransform(pos, R);

glScalef(0.005 * vel[0]*vel[0] + radius, radius, radius);

glEnable(GL_BLEND);

glColor3f(0.2,0.2,0.2);

glEnable(GL_DEPTH_TEST);

glShadeModel(GL_SMOOTH);

glutSolidSphere(1, 16, 16);

glPopMatrix();

}

Page 43: Linux Plus Magazine 030_Marzo 2007

43

prácticaDesarrollo de juguetes físicos

www.lpmagazine.org

en varias CPUs, necesitarás algún tipo de datos de sincronización para estar seguro de que los clientes se sincronizan si han derivado de donde deberían estar.

La gran compañía de videojuegos Blizzard (autores de World of Warcraft) solucionó este problema haciendo su propio emulador FPU dentro del juego. Esto es algo inteligente, aunque un poco lento, pero es la única forma de poder estar totalmente seguro de que la física se ejecutará de forma similar en un montón de máquinas distintas.

Aquí está mi función mínima de reset. Al menos, la posición, rotación y velocidad deben ser reseteados. Omitir este reset de rotación hará que el mundo explote, puesto que los límites de la bisagra se terminarán por sobrepasar en exceso.

dMatrix3 R;

dRSetIdentity(R);

for(int i = 0;i < BALLS; i++){

dBodySetPosition(ball[i], i*2,

1, 1);

dBodySetRotation(ball[i], R);

dBodySetLinearVel(ball[i], 0,

0, 0);

}

Después de que la simulación esté lista, ce-rramos y limpiamos ODE como deben hacer todos los buenos programadores.

dSpaceDestroy (space);

dWorldDestroy (world);

ConclusiónEste artículo describe cómo podemos crear un simulación simple de un cuerpo rígido usando el Open Dynamics Engine. La programación del ODE puede ser a la vez divertida y frus-trante, debido a la cantidad de ajustes que hay que hacer para conseguir nuestros propósitos.

En lo que se refiere a la jugabilidad, la física se usa cada vez más como un concepto central del diseño de juegos, desde el clásico Stair Dismount donde mueves a un muñeco por las escaleras hasta Toribash donde te ves envuelto en un combate cuerpo a cuerpo. Hay, en efecto, muchísimos conceptos de juego que pueden realizarse en la práctica ahora debido a la física en tiempo real y ape-nas acabamos de arañar la superficie de estas posibilidades.

Mi recomendación general para cual-quier programador de física para juegos es que se busque hacer las cosas sencillas y que concentre el 90% en la jugabilidad y el 10% en el contenido.

P U B L I C I D A D

Ibermachines Sistemas OpenSourcehttp://www.ibermachines.com/Soluciones informáticas libres para empresas. Consultoría en sistemas de código abierto, tales como GNU/Linux y FreeBSD. Mantenimiento de redes y servidores.

Inittab (Alberto Gonzalez)http://inittab.com, [email protected] en Software Libre y GNU/Linux. Formación, consultoría, soporte técnico y mantenimiento de servidores. Cursos a medida de Linux, Apache, Mysql, Samba y seguridad. Su departamento de sistemas en manos de expertos en Software Libre. Instalación de servidores de ficheros/impresión, web/correo, Intranet.

REALTECH Españ[email protected], multinacional Alemana fundada en 1994, es líder en consultoría tecnológica SAP y software de gestión de Sistemas de Información.Desde su fundación ha tenido una oferta completa de servicios que cubren todos los aspectos de diseno, implantación y operación de sistemas SAP.

Avanzada 7http://www.avanzada7.comAvanzada 7 es una empresa de ingeniería especializada en soluciones VoIPbasadas en tecnología Open Source Linux-Asterisk. Disponemos de una am-plia gama de productos para VoIP y ofrecemos servicios de consultoría pre y post venta para soluciones de voz basadas en Asterisk.

[email protected] en la web: Sitios fáciles de administrar – Archivos sin papeles -Pre-sencia en Internet – Informática educativa – Redes colaborativas – La web como plataforma. Todo con software libre: Ruby on Rails – SPIP – XHTML y CSS – Squeak.

Gestión Cuatrocientos, S.L. http://www.gestion400.comGestión Cuatrocientos, desarrolla aplicaciones Java de gestión para la Admi-nistración Local y presta servicios de Asistencia Técnica. Desde el Registro de Entrada hasta el SICAL pasando por la Gestión de Expedientes y la Ges-tión Tributaria y Recaudación. Las aplicaciones funcionan en Linux.

Protaliahttp://www.protalia.comConsultoría general de informática de Empresas orientada al Software Libre. Nuestra actividad está especializada en la migración desde sistemas propieta-rios a GNU/Linux en entornos empresariales.

C.T.I. Tegnix [email protected]. TEGNIX S.L. es una consultora tecnológica e informática altamente especializada en Software Libre que posee un marcado caracter social con integrantes multidisciplinares de amplia experiencia profesional y colaborativa.

Page 44: Linux Plus Magazine 030_Marzo 2007

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

44 Linux+ 3/2007

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

45www.lpmagazine.org

linux

@so

ftwar

e.co

m.p

lSistemas BSDEl sistema operativo libre por excelencia es Linux. Todas las revistas y publicaciones especializadas tratan este tema. Sin embargo, existen otros sistemas operativos de los que no se habla mucho a pesar de ser los más seguros del mundo: los sistemas BSD. Instalados en un gran número de servidores y proveedores de servicios al usuario, permanecen en la sombra, ignorados. Muchos piensan que son difíciles de manejar, de utilizar. ¿Cómo son? ¿Por qué no se utilizan en mayor medida? ¿Por qué poseen tanta seguridad? Esto es lo que os explicamos en este artículo.

Marc Bey

El nacimiento de los sistemas BSD es similar al nacimiento y la historia de Unix. Ya sabemos que Unix nació como un proyecto de búsqueda desarrollado en los laboratorios de AT&T Bell

en 1969. La versión de Unix desarrollada en Berkeley vio la luz en 1977 y todos los cambios aportados por esta uni-versidad constituyen una colección de bloques bajo licen-cia compatible con la de AT&T, conocida bajo el nombre de Berkeley Software Distribution o BSD y gestionada por el Computer Science Research Group (CSRG). Posteriormente, durante más de quince años, los más curiosos han encabe-zado BSD para hacerlos hoy día los sistemas más estables y seguros. Los BSD han ido contribuyendo a los sistemas operativos actuales, particularmente con la implementa-ción de la pila TCP-IP, la Shell, la memoria virtual o la gestión de tareas. Los sistemas actuales provienen todos de BSDNet2, además 4,4BSD-Lite, 4,4BSD-Lite2 y final-mente 386/BSD (soporte de arquitectura PC).

Los diferentes sistemas BSDSon muchos. Distinguiremos BSD históricos, que serán los que veamos con mayor detalle en este artículo, pero

también aquellos más actuales, que continúan los pasos de sus predecesores.

Open BSDOpen BSD es un sistema operativo libre de tipo Unix derivado de 4,4BSD, creado en 1994 por Théo de Raadt. Funciona sobre 17 plataformas diferentes. Su particu-laridad es que incluye un gran número de medidas de seguridad que no están presentes en otros sistemas. El mayor beneficio es una auditoría de seguridad constan-te, por lo que tiene una búsqueda de bugs de las más

En este artículo, hemos hecho una presentación de los sistemas BSD, describiendo sus especificaciones, sus cualidades y sus diferencias con Linux, y proponemos una instalación de FreeBSD 6.1 con la explicación de algunas tareas básicas (instalación, actualizaciones, sistema de puertos, configuración básica).

En este artículo se explica...

Page 45: Linux Plus Magazine 030_Marzo 2007

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

44 Linux+ 3/2007

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

45www.lpmagazine.org

precisas. Desde el punto de vista de la segu-ridad, posee herramientas de criptografía avanzada, donde volveremos más adelante. La última versión estable es la versión 4.0 recientemente liberada.

FreeBSDSin duda alguna es el más usado de esta familia, y además el más sencillo de utilizar. La primera versión de FreeBSD salió en di-ciembre de 1993.El objetivo del proyecto es concentrarse en la arquitectura de PC, par-ticularmente x86, y proporcionar un sistema usable con la aplicación de un mínimo de restricciones, FreeBSD aporta múltiples fun-cionalidades avanzadas en torno a la red, así como una compatibilidad binaria con Linux para mayor placer. La última versión estable es la versión 6.1.

Net BSDEl proyecto NetBSD fue fundado por Chris Demetriou, Théo de RAADT, Adam Glass y Charles Hannum en marzo de 1993. El obje-tivo era poder aceptar los parches externos en 386BSD.

Net BSD posee una gran reputación por su portabilidad y su soporte a más de 50 ar-quitecturas diferentes. Una de sus particula-ridades es su retro-compatibilidad. Es posible hacer funcionar los binarios de 1993, gracias a la opción COMPAT_09 de su kernel. La últi-ma versión estable es la versión 3.1

Otros sistemas BSDDistinguiremos los más conocidos:

• PC BSD, derivada de FreeBSD ofrece un entorno de oficina totalmente operacional,

• PicoBSD, el más pequeño de los BSD, basta con tener un diskette,

• DesktopBSD derivada de FreeBSD pro-pone la simplicidad en el uso y la convi-vencia de KDE,

• DragonflyBSD Live CD derivada tam-bién de FreeBSD,

• Freesbie Live CD derivada de FreeBSD,• FrenzyBSD derivada de FreeBSD, ofrece

herramientas para el administrador de sistemas,

• Monowall : distribución cortafuegos ba-sada en FreeBSD.

Interés de los sistemas BSD − comparación con LinuxEmpecemos, estos son los sistemas más segu-ros. De modo nativo son ideales para su uti-lización como Firewalls, de pasarelas seguras o como VPN (Redes Privadas Virtuales), los sis-temas BSD incluyen, al igual que openBSD, las funciones criptográficas avanzadas. Las detallamos.

Open SSHVersión SSH totalmente libre de cualquier patente. Esta versión soporta la versión 1.5 del protocolo SSH (Secure Shell). Contiene también la autentificación Kerberos además de la option Ticket Passing. Permite establecer conexiones seguras.

Generador de números pseudo-aleatorios (PRNG)Se trata de un algoritmo que envía a las aplicaciones un flujo de datos (números) que permiten aportarles una seguridad máxima, así como a los servicios. Por ejemplo, estos números se utilizan en:

• Asignación sin_port dinámicos en bind,• PID de los procesos,• PID de los paquetes IP,• Identificadores (ID) de las transacciones

RPC (XID),• Identificadores (ID) de las transacciones

NFS RPC (XID),• Identificadores (ID) de las peticiones DNS.

Funciones avanzadas de HashEn OpenBSD, son muchas. Encontramos MD5, SHA1, y RIPEMD-160.

Transformaciones criptográficasSon usadas para cifrar y encriptar los datos. El principio descansa en la existencia de dos claves (cifrado y descifrado) aplicadas a los datos. La seguridad de una transformación no se basa en la clave. Las transformaciones disponibles son: DES, 3DES, Blowfish y Cast en particular por el núcleo así como por los programas que los utilizan.

Finalmente, podemos comentar que OpenBSD es capaz de soportar entre otros, ciertos materiales criptográficos como Ipsec o incluso HIFN 7751 que son aceleradores criptográficos.

Figura 1. Prompt de FreeBSD

Figura 2. Elección del país. Figura 3. Proceso de instalación de FreeBSD

Page 46: Linux Plus Magazine 030_Marzo 2007

46 Linux+ 3/2007

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

47www.lpmagazine.org

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

Las aplicacionesDijimos que para los sistemas open sour-ce, en particular Linux, existe por un lado numerosas distribuciones, pero igualmente un gran número de aplicaciones, a menudo redundantes. Por ejemplo, para la gestión de oficina, OpenOffice.org y además la suite Ko-ffice. En efecto no es muy útil tener las dos.

Algunos a la vista de los sistemas BSD piensan que se trata de una antigua distribu-ción Linux.

No es nada de esto. Muchas de estas apli-caciones están disponibles para los sistemas BSD en particular para FreeBSD.

La estabilidadGracias a la auditoría constante de los desa-rrolladores en el plano de la seguridad así como en el plano de los bugs de aplicaciones, los sistemas BSD son los más estables. Puede llegar el caso de que ciertos sistemas BSD no hayan sido apagados después de meses y esto se debe a las aplicaciones y sus servicios.

La interoperabilidadLos sistemas BSD son igualmente compati-bles en los binarios con Linux, SCO, SVR4, BSDI y FreeBSD por ejemplo.

La portabilidadEl soporte material es primordial para los BSD. NetBSD es uno de los sistemas con mayor soporte. Los administradores suelen decir: Si funciona con NetBSD, es que debe funcionar.

La homogeneidadContrariamente a las distribuciones Linux, los sistemas BSD son más homogéneos desde su concepción. De hecho, Linux es únicamente el núcleo, el resto de librerías, scripts e instaladores son desarrollados aparte.

El matiz está en la concepción. Cada pro-yecto BSD concibe todo el sistema y distribu-ye aquello que le aporta mayor coherencia.

Límites de aplicación de los sistemas BSDEl límite de aplicación de los sistemas BSD es el que ponga vuestra imaginación. Todas las aplicaciones que funcionan bajo un UNIX propietario tienen grandes posibilidades de

funcionar bajo Open BSD, FreeBSD o incluso NetBSD, y esto en sectores como la robótica, la navegación por satélite, pueden beneficiar-se de múltiples aplicaciones muy avanzadas que se desarrollan en las universidades.

En cuanto a la oficina, los sistemas BSD disponen de múltiples aplicaciones para su di-recta utilización (oficina, desarrollo, etc...) y un largo número de programas transportables

EspecificacionesAl igual que Linux, los sistemas BSD en par-ticular los BSD históricos (FREE,Open, Net), veremos las especificaciones propias que les caracterizan. Giran en torno a tres temas que veremos a continuación en este artículo:

• La seguridad,• La portabilidad,• Las aplicaciones.

A continuación las veremos de una forma más detallada.

OpenBSDOpenBSD sobre todo se utiliza para la puesta en funcionamiento de Redes Privadas Virtua-

Figura 4. Visualización de discos

Figura 5. FDISK en FreeBSD

Figura 6. Elección del cargador de arranque

Page 47: Linux Plus Magazine 030_Marzo 2007

46 Linux+ 3/2007

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

47www.lpmagazine.org

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

les, así como firewalls en las empresas. Lema: libre, funcional, seguro.

FreeBSDFreeBSD dispone del mayor número de apli-caciones. Está muy adaptado al escritorio al igual que a los servicios de red, como los ser-vidores WEB, los servidores de mensajería, los servidores de FTP o incluso los servidores de ficheros de tipo NFS como su lema indica: The power to serve.

NetBSDSu gran cualidad, está a la vista, su gran portabilidad (17 arquitecturas, 54 platafor-mas diferentes) en particular la portabilidad ascendente (una configuración que funcio-na, funcionará en la versión superior con mínimos cambios). Divisa: Of course it runs NetBSD.

Instalación de FreeBSD 6.1Después de la teoría, pasaremos a la práctica. Os propongo instalar la última versión de FreeBSD, es decir, la versión 6.1.

Obteniendo las imágenes ISOAntes de comenzar, buscaremos la ima-gen ISO de la distribución en el sitio del proyecto FreeBSD: http://www.freebsd.org/

Figura 7. Particionamiento en FreeBSD

Figura 8. Elección del tipo de instalación.

Figura 9. Elección de los grupos de paquetes.

Figura 10. Selección de los componentes X

Muchos conocen Linux, sus numerosas distribuciones, la riqueza de aplicaciones, ....Pero pocos conocen los sistemas BSD. Pocos saben que también son los siste-mas más seguros del mundo. OpenBSD, NetBSD, FreeBSD poseen grandes propiedades en pos de la seguridad de base y su portabilidad como esencial para NetBSD, el importante número de apli-caciones disponibles para FreeBSD, así como para las nuevas distribuciones son su verdadera esencia.Descendiente de una misma base, tiene sus propias especificaciones y comple-mentos, siendo sostenidos por una gran número de universidades. Su campo de aplicación es múltiple (ciencia, redes, ro-bótica, etc, ...).Su estabilidad les hace ser fuente de los sistemas más utilizados con aplicaciones críticas o para los que la seguridad y esta-bilidad son fundamentales.Más homogéneos que Linux en su concep-ción, necesitan un acercamiento diferente, a menudo mucho más sencillos de domi-nar, principalmente por el administrador de sistema.Su compatibilidad binaria original con Linux constituye una ventaja adicional.Entonces usémoslos, saquémoslos de la sombra y démosle el lugar que merecen, un mejor lugar, de igual a igual con los demás sistemas operativos.

Lo que hay que saber...

Page 48: Linux Plus Magazine 030_Marzo 2007

48 Linux+ 3/2007

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

where.html. Elegid las imágenes ISO (2) para la plataforma i386. Podéis grabarla en CD-ROM con la ayuda de K3B por ejemplo, si obtenéis las imágenes desde un puesto Linux.

InstalaciónTras la descarga de las imágenes ISO, podre-mos instalar FreeBSD. Os proponemos, para que sea lo más simple posible, la instalación en un disco vacío.

A continuación podréis configurar la bios de la máquina para que ésta arranque desde el CD-ROM. A partir de ahora, dejáos guiar. El resultado del arranque está visible en la Figura 1. Después, en la Figura 2, os pide seleccionar vuestro país. Y finalmente llegamos a la pantalla de instalación en la que podremos elegir el hacer una nueva instalación (Figura 3). Elegir a continuación el disco sobre el que queremos instalar FreeBSD (Figura 4). El disco está vacío, tal como se muestra en la Figura 5. Es el mo-mento de indicar al sistema las opciones de arranque (Figura 6).

Seguidamente, podremos particionar nuestro sistema o utilizar la opción A, que nos permite particionarlo por defecto (Figura 7).

Ahora, en la pantalla siguiente, podre-mos elegir el modo de instalación. En efecto, es totalmente posible instalar los binarios, X Windows utilizando la opción All o per-sonalizando la instalación notablemente por los usuarios avanzados o los administradores

con la opción Developper.Se nos solicitará elegir la instalación o no

de toda la colección de puertos disponibles. Los puertos son un conjunto de programas o paquetes usables de forma nativa por Unix pero también por Linux y transportados a FreeBSD. Los puertos constituyen el árbol de paquetes de los sistemas BSD. Así es po-sible elegir el grupo de paquetes a instalar (Figura 9).

El servidor gráfico X puede ser instalado si se desea, en el menú siguiente, podremos elegir los componentes necesarios para insta-lar (Figura 10).

Elegid a continuación el modo de instala-ción. FreeBSD se puede instalar vía CD/DVD (la que nosotros utilizaremos) pero también podremos utilizarlo vía FTP o incluso HTTP: en cualquier caso, es importante, que si vues-tra máquina se sitúa tras un firewall, utilizad el método FTP passive o incluso configurarlo convenientemente (Figura 11).

En las dos pantallas siguientes, configu-raremos la red, la interfaz (Texto) y el modo de conexión (estático/DHCP) así como sus parámetros.

Después, como vimos anteriormente, existe una compatibilidad binaria de Linux dentro de FreeBSD. Aquí podremos activarlo si lo deseamos.

Do you wish to enable Linux binary compatibility? yesAntes de configurar el teclado y ratón en las siguientes pantallas, introducid la contraseña de root (Figura 12). Ya está, solamente nos queda configurar el servidor gráfico X. Para hacerlo teclead como root :

xorgconfig

La primera pantalla se ve en la Figura 14. En efecto, lo primero en hacer es la generación de un fichero xorg.conf.

Figura 11. Elección del modo de instalación

Figura 13. Configuración de red

Figura 12. Elección de la contraseña de root Figura 14. Creación del fichero de configuración X

Page 49: Linux Plus Magazine 030_Marzo 2007

¡Pide suscripción!LiNUX+ por suscripción es más barata: 69 €

Si tienes preguntas, problemas o dudas,

escribe a: [email protected]

¡En cada número 2 DVDs!

Absender-Daten

Por favor, rellena este cupón y mándalo por fax: 0048 22 887 10 11 o por correo: Software-Wydawnictwo Sp. z o. o., Bokserska 1, 02-682 Varsovia, Polonia; e-mail: [email protected]

Pedido

Nombre(s) ......................................................................................... Apellido(s)........................................................................................

Dirección .........................................................................................................................................................................................................

C. P. ................................................................................................... Población, provincia ........................................................................

Teléfono ............................................................................................ Fax ....................................................................................................

E-mail ................................................................................................ Suscripción a partir del N° ..............................................................

Precio de suscripción anual de Linux+: 69 €

En nuestra tienda virtual podrás adquirir todos los productos de la editorial Software-Wydawnictwo: www.buyitpress.com

TRES REGALOSPARA ELEGIR

Realizo el pago con: □ tarjeta de crédito (EuroCard/MasterCard/Visa/American Express) nO CVC Code Válida hasta □ transferencia bancaria a BANCO SANTANDER CENTRAL HISPANO Número de la cuenta bancaria: 0049-1555-11-221-0160876 IBAN: ES33 0049 1555 1122 1016 0876 código SWIFT del banco (BIC): BSCHESMM Fecha y firma obligatorias:

Ahora un regalo especialpara nuestros suscriptores – 12 números anteriores de Linux+ en la versión electrónica

Page 50: Linux Plus Magazine 030_Marzo 2007

50 Linux+ 3/2007

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

51www.lpmagazine.org

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

Para los teclados, ratones, tamaño y frecuencia de la pantalla se muestra en las imágenes 15, 16, 17. Una vez terminadas estas operaciones, continuaremos con la instala-ción de todos los binarios y paquetes relativos a X y a Gnome.

Si no es nuestro caso, podemos utilizar el comando: pkg_add kde para instalar KDE. No nos queda más que ordenar al servidor X que lance KDE como gestor de ventanas por defecto, añadiendo al fichero ./xinitrc: exec startkde

Además KDE dispone de su propio ges-tor de ventanas KDM, que podremos utilizar. Nos permitirá trabajar bajo Gnome, Xfce o cualquier otro entorno. Para esto, necesi-taremos modificar el fichero ttyv8 en /etc/ttys de este modo :

ttyv8 "/usr/local/bin/kdm -nodaemon"

xterm on secure

Tras estas pequeñas modificaciones tecleamos:

startx

y podremos obtener el resultado visible en la Figura 18, o incluso bajo KDE (Figura 19).

Instalación de aplicaciones bajo FreeBSDEs muy fácil instalar el software bajo FreeBSD, ya sean las aplicaciones precompi-ladas disponibles para FreeBSD en la máqui-na o incluso en la red. Para esto, utilizad los comandos pkg_add y paquetage. Con este método, FreeBSD descargará siempre la úl-tima versión del paquete y como fuente para las versiones FreeBSD-STABLE o FreeBSD-CURRENT.

También es posible dirigirse directa-mente a uno de los mirrors de FreeBSD para descargar el paquete y solamente habría que instalarlo con pkg_add (Listado 1).

Es igualmente posible instalar aplicacio-nes bajo FreeBSD utilizando los comandos habituales ./configure, make, make install, make clean a partir de las fuentes encontra-das en los mirrors del proyecto FreeBSD. Es igualmente válido con otros BSD, NetBSD, OpenNSD.

Configuración de los PuertosSi debemos eliminar las aplicaciones pre-compiladas en FreeBSD, es una tarea rela-tivamente simple. Basta utilizar el siguiente comando:

pkg_delete paquete

El sistema de puertos bajo FreeBSDEl sistema de puertos es una de las grandes fuerzas de los sistemas BSD. Cada puerto es un conjunto de ficheros que indica donde en-contrar todas las fuentes de una aplicación, las correcciones que aportar, cómo compilar dichas fuentes y múltiples indicaciones sobre las dependencias, los subprogramas y las bibliotecas utilizadas. Un puerto es una

aplicación llevada a BSD. Para BSD existen más de 15000 puertos, que pueden ser ins-talados en forma de binario o de paquete al igual que compilarse a partir de las fuentes (pkgsrc sous NetBSD por ejemplo).

El sistema de puertos se presenta en for-ma de árbol, situado en: /usr/ports/categories/applications. El comando man ports os dará más información sobre este árbol.

Figura 15. Configuración del ratón

Figura 17. Parámetros de la pantalla

Figura 16. Elección del teclado

Page 51: Linux Plus Magazine 030_Marzo 2007

50 Linux+ 3/2007

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

51www.lpmagazine.org

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

¿Cómo instalar el sistema de puertos?Hemos visto que es posible instalar el sistema de puertos a través del comando sysinstall.

Para esto, como root tecleamos sy-sinstall. Vamos al menú Configure -> Do post-install configuration of FreeBSD, después Distributions->Install additional distribution sets y elegid ports -> The FreeBSD Ports collection y validamos. Elegimos a con-tinuación el medio (CD-ROM, FTP etc.) y volvemos a validar. El sistema de puertos ocupa aproximadamente 200 MB de espacio en disco duro.

Actualizar el sistema de puertosEl sistema de puertos se actualiza con el co-mando cvsup.

Para esto, instaladlo (/usr/ports/net/cvsup). Encontraremos numerosos ejemplos en /usr/share/examples/cvsup.

Ahora, es importante copiar el fichero ports-supfile en el directorio del adminis-trador por ejemplo. Editemos el fichero, buscando la línea "*default host=CHANGE_THIS.FreeBSD.org" y reemplacemoslo asi "CHANGE_THIS" por "cvsup". Tras la actuali-zación, teclearemos:

# cvsup port-supfile

Actualización de las aplicacionesUna vez instalado nuestro sistema, es impor-tante actualizarlo. Para esto, instalaremos el port portupgrade. Una vez instalado, tecleare-mos simplemente:

# portupgrade --all

El sistema se actualizará automáticamente. Al final no habrá más que una lista de aplica-ciones que no se podrá instalar bajo FreeBSD.

Configuración de la base del sistemaHemos visto la actualización del sistema, pe-ro quedan algunas pequeñas cosas para tener un sistema operativo.

Modificación de la Shell por defectoPor motivos prácticos, es importante modifi-car la shell por defecto de root a fin de que éste utilice Bash (Bourne Again Shell).

Para ello, conviene verificar las shell autorizadas y comprobar la presencia de: /usr/local/bin/bash y como root teclearemos: #chsh.

Modificación del fichero de inicioEs muy útil también por razones evidentes de compatibilidad, unir los ficheros de inicio de shell con los ficheros .profile y .bashrc. Creare-mos entonces un enlace simbólico:

# ln -s .profile .bashrc

Podremos editar entonces el fichero .profile y añadirle:

# Variable de entorno

export CVSROOT=':

pserver :[email protected]:

/home/ncvs'

# Variale de entorno editor

export EDITOR='ee'

# Variable de entorno prompt format

'user@machine:/path#'

export PS1='\u@\h:\w#'

# alias colorls

alias ls='ls -G'

alias ll='ls -l'

alias la='ll -a'

Figura 18. FreeBSD con XFCE como gestor de ventanas

Figura 19. KDE bajo FreeBSD

Figura 20. Descarga del paquete ltrace

Page 52: Linux Plus Magazine 030_Marzo 2007

52 Linux+ 3/2007

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

53www.lpmagazine.org

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

Configuración de los nombres de máquinaSe trata de hecho de rehacer el fichero /etc/host. Al abrir este fichero encontraremos:

::1 localhost localhost.localdomain

127.0.0.1 localhost

localhost.localdomain

127.0.0.1 votre_host _host._domain

Podremos añadir otras asociaciones IP/nombre de máquina. Esto es útil para el re-conocimiento de red, especialmente si no hay DNS en la red en cuestión.

El añadir usuarios en FreeBSD se hace gracias al comando adduser (Listado 2).

Utilizando los derechos de rootPuede ser útil que ciertos usuarios puedan utilizar los derechos de root o el terminal de su cuenta. La cuenta wheel hace un poco esta función. Es posible modificar el fichero /etc/group de acuerdo a eso, y especificar las sesiones separadas por una coma en la línea:

Wheel :* :0 :root,rge

También es posible utilizar el comando sudo que nos permite en ciertos casos la utilización de los derechos de root para ciertos usuarios para efectuar determinadas tareas.

Si esta utilidad no está instalado, lo podremos hacer vía comando sysins-

tall como vimos más arriba. Si también se necesita configurarlo, lo haremos en /usr/local/etc.

chmod 440 sudoers en el fichero sudoers

y añadiremos las siguientes líneas:

root ALL = (ALL) ALL

%wheel ALL = (ALL) ALL

ALL = (ALL) ALL

Configuración de los parámetros de arranque del sistemaTodos los parámetros de arranque de nuestro nuevo sistema FreeBSD se encuentran en /boot/default/loader.conf.

En este fichero, podremos elegir, durante el arranque un kernel por defecto, si hemos instalado otro adicional.

Si hemos compilado un kernel y éste no funciona, podremos ponerlo al inicio en el archivo bootloader de FreeBSD tecleando:

unload kernel

load /kernel.old

esto nos servirá siempre.

El modo monousuario bajo FreeBSDEste modo es muy importante, pues permi-te la recuperación y cambio de la contraseña de root. Para utilizarlo tecleemos al inicio, en el prompt: >boot -s o elegir la opción 4 del menú de inicio, que nos permite obtener una shell y recuperar y cambiar la contra-seña de root haciendo: # mount -u para montar el sistema de ficheros primario para

este inicio, después # mount -a y ya está, podremos teclear #passwd root y seguida-mente reboot.

Verificación de SSHEs importante verificar si el demonio SSH está activo en la máquina y comprobar su fichero de configuración. Teclearemos: pid ssh en respuesta, tiene que aparecer algo

Listado 1. En el terminal teclead:

# ftp -a ftp2.FreeBSD.org

Connected to ftp2.FreeBSD.org.

220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.

331 Guest login ok, send your email address as password.

230-

230- This machine is in Vienna, VA, USA, hosted by Verio.

230- Questions? E-mail [email protected].

230-

230-

230 Guest login ok, access restrictions apply.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> cd /pub/FreeBSD/ports/packages/sysutils/

250 CWD command successful.

ftp> get ltrace-0.3.6_1.tbz

local: ltrace-0.3.6_1.tgz remote ltrace-0.3.6_1.tbz

200 PORT command successful.

150 Opening BINARY mode data connection for 'ltrace-0.3.6_1.tbz' (92375

bytes).

100% |**************************************************| 92375 00:00 ETA

226 Transfer complete.

92375 bytes received in 5.60 seconds (16.11 KB/s)

ftp> exit

# pkg_add ltrace-0,3,6_1.tbz

Figura 21. Salida del comando chsh

Page 53: Linux Plus Magazine 030_Marzo 2007

52 Linux+ 3/2007

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

53www.lpmagazine.org

seguridadLos sistemas BSD, desconocidos.... pero muy seguros

parecido a esto: ?? Is 0 :00 :39 /usr/sbin/sshd.A continuación haremos: # vi /etc/ssh/sshd_config y verificaremos si tenemos:

[...]

PermitRootLogin no

[...]

FreeBSD en francés en el texto. Para esto, buscaremos en el fichero /etc/profile y modi-ficaremos:

LANG=fr_FR.ISO8859-15 ; export LANG

MM_CHARSET=ISO-8859-15 ; export

MM_CHARSET

No olvidemos que el teclado se puede modi-ficar con el comando sysinstall que podremos lanzar en cualquier momento en un terminal.

Vuestro sistema estará ahora operativo para el uso básico. En una vista rápida, he-mos visto que los ficheros de configuración no son más diferentes que los de Linux. Así pues, el usuario de Linux no encontrará grandes problemas.

ConclusiónHemos visto muy de cerca los sistemas BSD que constituyen una verdadera alternativa por un lado a Linux y por otro, a los sistemas ope-rativos propietarios. El usuario tiene la elección: una seguridad máxima, y/o una gran portabi-lidad o en el caso de FreeBSD, la disponibilidad de un entorno de producción completo.

Hemos visto sus ventajas, sus diferen-cias más notables respecto a Linux, su ho-mogeneidad como parte de su concepción.

A día de hoy equipan numerosos servi-dores, en la sombra de las bases de datos o los centros de datos, distribuyendo servicios a los usuarios finales que no lo conocen, de los que nunca han oído hablar, pero que reconocen que los servicios que usan raramente no están disponibles. Y esto es su fuerza. Su compatibilidad binaria en el origen con Linux haciéndolo uno de los sistemas más comple-tos, interoperable.

El soporte de las grandes universidades (MIT...) ha hecho una labor innegable para su utilización en los sectores punteros (ro-bótica, ciencia, etc...). Merecen algo mejor que permanecer en la espera de los apa-sionados y los científicos y deberían estar más presentes en las empresas, al igual

que en el escritorio de los usuarios, puesto que contrariamente a Linux, han tenido un acercamiento diferente, siendo a menudo más simples de utilizar y de configurar. Los sistemas BSD han progresado en este punto hacia una mejora de los procesos de instalación y de su portabilidad, de su convivencia igualmente notable en lo que concierne a FreeBSD.

Las numerosas distribuciones nuevas casi todas han sido derivadas de FreeBSD. Pueden parecernos todavía rústicas para utilizarlas pero todos sus esfuerzos se han volcado en la ergonomía.

Con los años encontrarán su propio lugar, en el seno de los sistemas operati-vos más utilizados, pero para salir de la sombra aún falta una prioridad para todos aquellos que como yo creemos en el soft-ware libre.

Listado 2. Fichero de inicio /etc/rc.conf

Hostname= "nombremaquina_

dominio"Ifconfig_xl0= "DHCP"

Inetd_enable="YES"

Ipv6_enable="YES"

Kern_securelevel_enable="NO"

Keymap="fr.iso.acc"

Linux_enable="YES"

Local_startup="/usr/local/etc/rc.d"

Moused_enable="YES"

Sendmail_enable="NO"

Sshd_enable="YES"

Tcp_extensions="YES"

Usbd_enable="YES"

Figura 22. Contenido del fichero loader.conf

• FreeBSD : http://www.frebsd.org,• OpenBSD :http://www.openbsd.org,• NetBSD : http://www.netbsd.org,• Freesbie : http://www.freesbie.org,• Dragonfly : http://

www.dragonflybsd.org/index.shtml,• GCU-squad : http://www.gcu-

squad.org/,• PC-BSD : http://www.pcbsd.org/,• Trusted-BSD : http://

www.trustedbsd.org/,• En la wikipedia : http://

es.wikipedia.org/wiki/Berkeley_soft-ware_distribution,

• Monowall : http://m0n0.ch/wall/,

En la red

Marc BEY es el gerente de la sociedad Bashprofile, una sociedad de servicios de software libre con sede en Marsella (Francia). Ésta propone a sus clientes soluciones basadas en entornos Open Source. La seguridad de redes y los sistemas es una de sus prioridades http://www.bashprofile.net. Bashprofile es miembro de la ASS2L (Asociación de sociedades de servicios en software libre) (http://www.ass2l.org).

Sobre el autor

Page 54: Linux Plus Magazine 030_Marzo 2007

proyectos LinuxCommunity Enterprise Operating System

54 Linux+ 3/2007

proyectos LinuxCommunity Enterprise Operating System

55www.lpmagazine.org

linux

@so

ftwar

e.co

m.p

lProyecto CentOS

CentOS es el acrónimo de Community Enterprise Operating System, es decir, Sistema Operativo de la Comunidad para Empresa. Y, claro ésta, es una distribución GNU/Linux. Para los novicios en el mundo del software libre, recordaremos que una distribución GNU/Linux no es más que un kernel Linux empaquetado con multitud de aplicaciones con licencias libres (GNU GPL, GNU LGPL, BSD...)

Jordi Espasa Clofent

La primera versión de CentOS se lanzó a finales de 2003 (CentOS 3-build4-rc0). A finales de marzo del 2004 salió una nueva versión: Cento 3.1. Cen-tOS 2, basado en la versión 2.1 de Red Hat Enter-

prise Linux se lanzó en mayo de 2004. CentOS 4.0, basado en Red Hat Enterprise Server 4 se lanzó para arquitectura i386 y ia64 en marzo de 2005. A día de hoy se está trabajando los las ediciones beta de Red Hat Enterprise Server 5.

El objetivo de CentOS es proporcionar a la comunidad una distribución orientada a empresas pero sin los costes que las distros comerciales conllevan. Analicemos los dos requisitos de esta afirmación

¿Qué es una distribución orientada a empresas?Al decir distribución orientada a empresas (también cono-cidas como distribuciones comerciales) estamos hablando explícitamente que las distribuciones que serán usadas en entornos empresariales y por ello tendrán características que las diferenciaran de otras distribuciones.

Las distribuciones se orientan hacia un objetivo u otro. Por ejemplo, para el usuario final, para escritorio, para pro-

gramadores... al ser una distribución un kernel más una serie de aplicaciones, el conjunto se puede construir con unos fines específicos.

Algunas características que tendrán las distribuciones comerciales serán las que comentaremos a continuación.

Actualizaciones en binarioLa distribución tendrá que disponer de las necesarias ac-tualizaciones de seguridad. Estas actualizaciones, para la comodidad de la administración del sistema, tendrán que estar disponibles en formato binario además de las fuentes . Un sistema dónde los parches de actualizaciones se tuvie-ran que aplicar mediante código fuente y posterior proceso de compilación significaría invertir demasiado tiempo y recursos en el proceso.

Largo ciclo de vidaLas distribuciones no-comerciales suelen tener un ciclo de vida de 1 o 2 años, siendo habitual que cada nueva versión de la distribución aparezca a los 6 meses. La empresa, sin embargo, necesita un ciclo de vida más largo por evidentes cuestiones de estabilidad y administración. En la empresa

Page 55: Linux Plus Magazine 030_Marzo 2007

proyectos LinuxCommunity Enterprise Operating System

54 Linux+ 3/2007

proyectos LinuxCommunity Enterprise Operating System

55www.lpmagazine.org

todo gira alrededor de la productividad, y la productividad no entiende de últimas versio-nes y rápidos cambios, sino de robustez y se-guridad de los servicios prestados. El ciclo de vida es una cuestión clave en las distribucio-nes comerciales, siendo habitual un soporte de 5 años o incluso más.

Hardware compatibleLos servicios requeridos por las empresas sue-len tener cargas muy elevadas y, consecuen-temente, las máquinas que los soportan serán aparatos de media/alta gama. La distribución comercial tendrá que estar certificada para este o aquel aparato de determinado fabricante en pro de su correcto funcionamiento. En este sentido, los proveedores de distribuciones comerciales y los proveedores de hardware mantienen acuerdos de colaboración con tal de certificar la compatibilidad entre software y hardware. La empresa hará un gasto consi-derable en la adquisición de hardware y debe saber con antelación que dicho hardware funcionará sin problemas en conjunción con la distribución comercial. En este sentido las dis-tribuciones comerciales llegan a acuerdos y cer-tificaciones de compatibilidad con fabricantes de la categoría de IBM, HP, DELL, SUN...

Soporte técnicoLa empresa necesita que el sistema dispon-ga de medios de soporte técnico eficientes, sean estos en forma de personal cualificado o telesoporte (vía teléfono, email...etc). En la empresa es requerido que cuando la propia estructura informática se vea desbordada, se pueda contar con el soporte del proveedor.

¿Porqué las distribuciones comerciales cuestan dinero si se trata de Software Libre?Este es el punto clave para entender el porqué de la existencia de CentOS.

Existe aún hoy en día una gran confusión respecto a los costes del Software Libre. Las licencias de software libre (sean cuales sean: GNU GPL, GNU LGPL, BSD, Apache Licen-ce, Mozilla License... etc) hacen referencia a la libertad, no al precio. De hecho es perfecta-mente legal y lícita la actividad económica usando el Software Libre. El padre del pro-yecto GNU, Richard Stallman siempre co-menta que el idioma español es agraciado en

ese sentido, ya que las palabras libre y gratis son diferentes, mientras que en inglés la pala-bra free significa ambas cosas y da pie a más confusión todavía.

Los proveedores de distribuciones orien-tadas a la empresa, tales como Novell (SUSE Enterprise Server), Red Hat (Red Hat Enterprise Linux) o Mandriva (Mandriva Corporate Server) cobran por los servicios anteriormente expli-cados, no por el código, que está licenciado bajo las condiciones de software libre. El pun-to especialmente crítico es acerca de la dis-ponibilidad de los binarios. Las licencias de Software Libre obligan a poner a disposición de la comunidad el código fuente, pero no así los binarios. Luego entonces, la clave del cos-te de las distribuciones comerciales está ahí: en el derecho de acceder o no a esos binarios, que normalmente serán actualizaciones.

¿Puedo obtener las distribuciones comerciales sin cargo alguno?La respuesta es sí, es perfectamente lícito y legal. Por si alguien lo dudaba cualquiera puede obtener sin coste alguno las distintas distribuciones comerciales de los distintos proveedores. Pero, evidentemente, si no se les paga por sus servicios, esos mismos provee-dores no darán soporte al usuario ni tampoco le permitirán acceder a las correspondientes actualizaciones.

Está claro que una empresa que quiera disfrutar de la estabilidad de una distribución comercial pero no quiera pagar su licencia, tendrá como contrapartida un sistema sin actualizar y sin soporte.

Figura 1. Editando con emacs un script que añade de manera automática repositorios de terceros para CentOS 4.4 en máquina x86

Figura 2. Pantalla principal de la página del proyecto CentOS

Page 56: Linux Plus Magazine 030_Marzo 2007

56

proyectos LinuxCommunity Enterprise Operating System

Linux+ 3/2007 57

proyectos LinuxCommunity Enterprise Operating System

www.lpmagazine.org

¿Dónde está entonces el trucode CentOS? Lo que hace el proyecto CentOS es agenciarse ese código fuente de una distribución comer-cial (Red Hat Enterprise Server en este caso) y compilarlo para conseguir el binario. De esta manera, CentOS, al estar basado en las fuentes de RHEL provee de manera totalmen-te gratuita de los siguientes servicios:

• Actualizaciones en binario,• Largo ciclo de vida,• Compatible con hardware.

La legalidadEl tema de la legalidad es algo esencial en el mundo empresarial y muchos de los que tie-ne en mente el utilizar CentOS se hacen ahora mismo la misma pregunta ¿es completamen-te legal CentOS? La respuesta es si, lo es.

El proyecto CentOS recoge el código fuente liberado por la empresa Red Hat para su versión estrella empresarial (Red Hat Enterprise Server) y lo recompila, facili-tando así los archivos binarios. El resultado es un sistema clon del mencionado producto empresarial pero si tener que pagar por ello; y por cuestiones técnicas evidentes, 100% compatible con la versión empresarial de Red Hat. Red Hat está cumpliendo con las licencias libres, que obligan a poner a dispo-sición de la comunidad el código fuente (que no el binario). Y CentOS está disfrutando del derecho de la obtención de ese código fuente y su modificación. Todos están siguiendo las reglas del juego y, por tanto, todo es legal.

En sus inicios CentOS obtenía las fuentes de los servidores de acceso público de Red

Hat y procedía a la consecución del binario, pero hubieron problemas. Esos binarios contenían referencias a Red Hat, ya que esos fuentes también las contenían, y como Red Hat no deja de ser una marca registrada ahí existió un conflicto. Sin embargo, ese conflicto se resolvió sin juicios de por medio, con un proceso bien simple y de ejemplar civismo para la comunidad: Red Hat avisó a CentOS de que los binarios conseguidos no podían contener referencias a la marca registrada de su propiedad y CentOS así lo hizo a partir de entonces. De hecho, en la misma página de CentOS nunca se nombra específicamente a Red Hat, sino que se usa la expresión pro-veedor Norte Americano de Linux para Empresas. Y ahí acabó todo problema legal.

Incluso hay quien dice que a Red Hat la existencia de CentOS le interesa en cierta medi-da. Porqué? Muy fácil, pues porqué CentOS es la elección siempre y cuando el soporte no sea imprescindible, pero cuando lo sea, la elección natural será Red Hat. Es decir, dicho de otro modo, CentOS es un caldo de cultivo de posible usuarios de Red Hat en su edición comercial.

La comunidad CentOSLos usuarios de una distribución cualquiera tienen el perfil que responde a los objetivos para los que la misma ha sido realizada. En el caso de CentOS se trata de una distribu-ción orientada a empresa pero sin los costes de soporte normalmente asociados. Luego entonces los usuarios de CentOS serán, por definición, empresas que no pueden permi-tirse el pagar las licencias o no lo consideran imprescindible para su estructura producti-

va; y eso significa que serán, en casi todas las ocasiones, PYMES. Concretando todavía más, los usuarios directos de CentOS serán admi-nistradores de sistema que están capacitados para administrar un sistema de orientación comercial sin tener soporte por parte de pro-veedor, aún disfrutando de todas las demás ventajas técnicas (actualizaciones en binario, largo ciclo de vida y hardware compatible y certificado).

La comunidad de CentOS está repleta de profesionales de la informática que nor-malmente serán administradores de sistema. Evidentemente también hay usuarios finales que quieren disfrutar de la robustez del siste-ma o autodidactas curiosos. Pero el nervio de la comunidad CentOS es principalmente pro-fesional. Sólo echando un vistazo a las listas de correo se percibe el elevando nivel técnico de los usuarios. El soporte no-comercial que CentOS provee a la comunidad de usuarios se expresa en:

• listas de correo,• foros,• canales irc,• formularios de contacto con el equipo de

líderes.

El proyecto es liderado por una docena de desarrolladores que no trabajan en CentOS (que no conforma empresa alguna), sino en la actividad privada. Además, ya mayoría de ellos participa activamente en los canales co-municativos del proyecto. El proyecto disfru-ta de ayuda económicas (puntuales) por parte de varias empresas que apuestan por CentOS en su estructura productiva y, por tanto, son los primeros interesados en el buen devenir del proyecto.

CentOS goza de buena salud, el equipo de líderes está muy activo y motivado y la comunidad de usuarios está creciendo. Aún a día de hoy se trata de una distribución que tiene la mayor parte de su público en USA, pero se está popularizando alrededor del mundo. Las empresas de servicios de Internet la están usando progresivamente e incluso alguna empresa ofrece soporte comercial.

Aspectos técnicosCentOS es un clon de Red Hat Entreprise Li-nux y, por la tanto, técnicamente es lo mismo; no en vano es un producto 100% compatible con la edición comerciales de Red Hat. Y eso es mucho decir, teniendo en cuenta que el proveedor del sombrero rojo es el líder mun-dial en soluciones GNU/Linux. Vamos a co-mentar algunos aspectos a destacar.Figura 3. Listado de alguno de los mirrors del proyecto

Page 57: Linux Plus Magazine 030_Marzo 2007

56

proyectos LinuxCommunity Enterprise Operating System

Linux+ 3/2007 57

proyectos LinuxCommunity Enterprise Operating System

www.lpmagazine.org

RPM como formato de paqueteLa base del sistema de paquetes de CentOS es el consolidado sistema RPM. No en vano RPM (ahora RPM Packet Manager aunque en origen Red Hat Packet Manager) es con-siderado el estándar de formato de paquete precompilado por parte del proyecto Linux Standard Base (LSB).

Herramienta de gestión de actualizacionesSe dispone del gestor de actualizaciones up2date. Este programa dispone de muchas y muy útiles funciones (inclusión o exclusión de determinados paquetes, filtros, programa-ción de tareas... etc) y además está disponible tanto desde línea de comandos como en GUI.

Gnome como escritorio por defectoGnome es el escritorio por defecto. Red Hat ha contribuido mucho a la mejora de este escritorio, que, a día de hoy, nada le tiene que envidiar a KDE. En CentOS tenemos un escritorio estable y pulido. Evidentemente también se puede instalar KDE o, ideal para servidores o equipos de recursos limitados, XFCE.

Soporte LSBSe siguen al máximo las directrices marcadas por el proyecto Linux Standard Base. La orga-nización del árbol de sistema, la localización de los distintos binarios y librerías... todo se hace acorde a lo marcado según LSB.

Soporte para múltiples arquitecturasDependiendo de la versión de CentOS que se use hay soporte para diversas arquitecturas.

• CentOS 2: x86,• CentOS 3: x86, x86_64 (AMD6, Intel

EM64T), s390, s390x, ia64,• CentOS 4: x86, x86_64, ia64. Además, hay

betas para ppc (PowerPC) y alpha (DEC Alpha). Para s390, s390x y SPARC hay desarrollo, pero todavía no se dispone de beta alguna.

Soporte para Global File System y Cluster SuiteCentOS dispone de soporte para estas dos tecnología muchas veces cruciales para las empresas.

FlexibilidadCentOS puede usarse tanto de servidor como de escritorio. La disponibilidad de amplia pa-quetería permite múltiples configuraciones, abarcando así varios objetivos.

YUMYUM (Yellow dog Updater Modified). Es el gestor de paquetería RPM de CentOS. Este gestor, derivado del gestor creado por Yellow Dog (distribución de origen norteamerica-no especializada en soportar arquitectura PowerPC), escrito en python, es también el gestor adoptado por Fedora. Se trata de un gestor estable y maduro que resuelve las dependencias sin problema alguno.

Características como un modo shell interactivo o la posibilidad de operar por agrupaciones de paquetes dan mucha poten-cia a YUM.

Gran cantidad de software disponibleCentOS mantiene varios repositorios con los cuales trabaja YUM y son más que suficientes la mayoría de los casos. Sin em-bargo existen otros repositorios de terceros que proporcionan una enorme cantidad de software extra. Además, los 3 más usados y con más prestigio son mantenidos preci-samente por tres de los desarrolladores de Centos (Karanbir Singh, Dag Wieers y Dries Verachtert). Además, se dispone de una área de contribución dónde cualquier usuario de la distribución puede enviar sus distintas colaboraciones.

Tiempo de respuesta rápidaCentOS pone los binarios a disposición de la comunidad en 24H desde que Red Hat libera el código fuente. Puede ser que algún paquete en particular demore un poco más, pero ese es el tiempo estándar de publicación de los binarios.

Excelente documentaciónLa documentación usada por CentOS es la misma que la de Red Hat, famosa por su ca-lidad. Además el proyecto ofrece documen-tación específica sobre YUM o otros aspectos propios de CentOS.

Obtener CentOSCentOS puede descargarse desde su página principal. El proyecto cuenta además con una extensa red de servidores réplica alrededor del mundo, ya que muchos de sus usuarios son ISPs. Además de las ya normales ISOs de descarga (sean estás para CD o DVD) encon-tramos también:

• una versión LiveCD con la cual arrancar desde el lector óptico,

• una versión ServerCD que incorpora en un sólo CD lo justo para hacer una insta-lación mínima de un servidor.

ConclusiónCentOS es un proyecto relativamente joven aunque ofrece un producto estable y recono-cido. Su comunidad de usuarios va creciendo. Es una elección a tener muy en cuenta para PYMES que quizá no puedan permitirse el pago de determinadas licencias y no por ello tiene que renunciar a ciertas ventajas.

Figura 4. Usando up2date y yum en modo texto a través de una terminal X (Gnome-Terminal)

Jordi Espasa Clofent es administrador de sistemas de Solucions Globals Maresme S.L especializado en plataforma GNU/Linux

Sobre el autor

Page 58: Linux Plus Magazine 030_Marzo 2007

para programadoresRuby on Rails: ¿nos gusta porque está de moda o porque lo vale?

58 Linux+ 3/2007

para programadoresRuby on Rails: ¿nos gusta porque está de moda o porque lo vale?

59www.lpmagazine.org

linux

@so

ftwar

e.co

m.p

lRuby on Rails: ¿una moda?En estos momentos uno de los entornos de programación web sobre el que más se habla es Ruby on Rails. Existe la controversia típica de cuando sale algo nuevo: ¿será mejor o peor que lo ya existe (PHP, Python, J2EE)?, ¿será una moda, o realmente aportará una serie de características novedosas?

Carolina García Cataño

En este artículo intentaremos ver y entender qué es Ruby on Rails, pero también analizar en qué sentido se está comparando con otros lenguajes o entornos para tener elementos de

decisión y ver si Ruby on Rails será una tecnología que nos interese usar.

Ruby on Rails, de ahora en adelante RoR, es un entor-no de programación web desarrollado en Ruby por David Heinemeier Hansson, como resultado del desarrollo de Basecamp (un software para la gestión de proyectos vía web, basado en un interfaz sencillo, claro, fácil de usar, sin complicaciones).

La primera versión de RoR salió a la luz pública en julio de 2004, con lo cual es evidente que RoR es muy reciente, de ahí las suspicacias que crea y la necesidad de analizar y hacer compara raciones de su utilidad

En estos momentos, el desarrollo web y el mundo entorno a él está cambiando rápidamente, una serie de nuevos elementos están incorporándose a la concepción de la web, conceptos como web 2.0, empiezan a estar en la mente de todos, la interactividad entre el usuario y la web, la creación de redes sociales que permitan que los

propios usuarios vayan construyendo la web y asociado a todo ello están una serie de tecnologías

Que van irrumpiendo con fuerza, XHTML, XML, AJAX, RSS, metodologías ágiles, entornos de programa-ción para lenguajes ya extendidos como PHP, JSP, ASP, entre medias aparece Ruby on Rails y por otra parte cada vez es más relevante el uso de los numerosos estándares establecidos por el Consorcio de la W3C.

Para entender qué es RoR, primero tenemos que conocer un poco en qué se apoya. RoR está programado en Ruby, un lenguaje de script, multiplataforma, que fue creado en 1995 por el japonés Yukihiro Matsumoto (Matz). Es un lenguaje orientado a objetos y es software libre; hereda ciertas carac-terísticas de otros lenguajes como Perl, Smalltalk, Eiffel, Ada y Lisp y como dice el propio autor es un lenguaje aparente-mente sencillo pero internamente complejo. Es un lenguaje muy intuitivo casi a un nivel de lenguaje humano.

Ruby fue diseñado para un desarrollo rápido y sencillo. Cada día este lenguaje va ganando más adeptos, tanto así que la empresa Sun Microsystems, está apoyando un proyec-to llamado Jruby que es un interprete de Ruby escrito 100% en Java. Entre las características del lenguaje se encuentran:

Page 59: Linux Plus Magazine 030_Marzo 2007

para programadoresRuby on Rails: ¿nos gusta porque está de moda o porque lo vale?

58 Linux+ 3/2007

para programadoresRuby on Rails: ¿nos gusta porque está de moda o porque lo vale?

59www.lpmagazine.org

• La sintaxis es simple y consistente,• Todo es un objeto,• Posibilidad de hacer llamadas directa-

mente al sistema operativo,• Muy potente para el manejo de cadenas

y expresiones regulares,• No se necesita declarar las variables,• Gestión de memoria automática.

Una vez vistas las bases de Ruby, veamos cuales son las pautas que sigue RoR para el desarrollo web.

Los dos principios principales son, primero \u201cDRY-Don't repeat yourself o No te repitas\u201d y en segundo lugar \u201cConvenciones antes que configuración\u201d.

Primer principioDRY significa que las definiciones sólo de-berían ser hechas una vez. Como Ruby on Rails es un entorno de programación, las componentes están integradas de manera que ciertos \u201cpuentes\u201d entre ellas no necesitan hacerse manualmente, por ejemplo, si tienes un formulario en tu web, con sólo una línea de código puedes llamarlo las veces que quieras y desde donde quieras, ¿suena bien no?

Otro ejemplo, en cada tabla en la base de datos de tu aplicación, puedes manipular los registros de dicha tabla como si fueran un ob-jeto y sus campos como si fueran un atributo, sin necesidad de declarar nada, todo gracias al Active Record (uno de los elementos más lla-mativos de RoR y que veremos más adelante.

Segundo principioNos dice \u201cConvenciones antes que Configuración\u201d, esto quiere decir, que el programador sólo tiene que definir la confi-guración de aquello que no sea convencional. En muchas ocasiones siempre definimos las cosas de la misma manera, hacemos las mis-mas configuraciones, con lo cual tendemos a repetir ciertos pasos cada vez, con lo cual estableciendo una serie de convenciones se logra ahorrar mucho tiempo porque el propio entorno de programación por defecto genera ciertos elementos y ciertas configuraciones. Por ejemplo, si en nuestra aplicación web tenemos una clase que sea Post en el modelo, entonces gracias a las convenciones sabemos que en la base de datos existe una tabla que se llama posts, así nos ahorramos escribir un montón de código a la hora de desarrollar una aplicación.

Las convenciones existentes en Rails han sido definidas por el grupo de desarrollado-

res con intención de facilitar el desarrollo, pero eso no implica que dichas convenciones no se puedan redefinir y cada quien pueda configurarlo de otra forma y a su medida.

Ruby on Rails implementa una serie de patrones de diseño que se denominan, Model-View-Controller (MVC de aquí en adelante) y ActiveRecord Veamos en qué consiste la arquitectura MVC de Rails.

El modelo (Model) consiste en una serie de clases que representan las tablas de las ba-ses de datos relacionales o RDBMS (Relational Database Manager System).

La vista (View) es la visualización de los datos que manejan desde las clases de los controller, generalmente esto consiste en tener una cantidad mínima de código entre-mezclado con el html.

En el MVC, los clases de los controller responden a la interacción del usuario y a la lógica de la aplicación, que a su vez maneja los datos del modelo y que se visualizan a tra-vés de la vista.

En las aplicaciones web basadas en MVC, los métodos de los Controller se inician a tra-vés del navegador web.

En Rails también existe lo que se llama scaffolding, que facilita mucho la vida del pro-gramador, y que consiste en la construcción automática de todo el código necesario de la lógica y de las vistas que se necesitan para realizar las operaciones más frecuentes, como son crear nuevas entradas, leer entradas ya existentes, modificarlas y borrarlas (en inglés corresponder a CRUD).

Uso de AJAXAJAX parece ser la palabra de moda en el mundo del desarrollo de aplicaciones Web,

AJAX no es una tecnología, sino la unión de varias tecnologías que juntas pueden lograr cosas realmente impresionantes.

AJAX, en resumen, es el acrónimo para Asynchronous JavaScript + XML y el con-cepto es: Cargar y renderizar una página, luego mantenerse en esa página mientras scripts y rutinas van al servidor buscando, en segundo plano, los datos que son usados para actualizar la página solo re-renderizando la página y mostrando u ocultando porciones de la misma.

La intención de todo esto es que la web tenga un comportamiento más receptivo o sensible a la hora de gestionar pequeñas cantidades de información, de esta manera la página web no tiene que recargarse por completo cada vez que el usuario hace un cambio. Por lo tanto aumenta la posibilidad de interactividad de la web, la velocidad y la usabilidad.

El hecho de que se genere HTML de manera local en el navegador a través de código JavaScript permite que se mejore notablemente lo que se denomina la expe-riencia de usuario, la información puede mostrarse parcialmente según el usuario la demande, evitando así que el exceso de in-formación convierta la web en algo confuso y poco usable.

Sin embargo, AJAX también presenta algunos problemas o retos para los desa-rrolladores de aplicaciones web que quieran realizar una web que cumpla las normas de accesibilidad establecidas por WAI (Web Accessibility Initiative-Iniciativa para la Acce-sibilidad Web). Por ejemplo, las páginas web creadas dinámicamente no quedan regis-tradas en el historial del navegador, por lo

Figura 1. Sitio oficial de Rails en español

Page 60: Linux Plus Magazine 030_Marzo 2007

60

para programadoresRuby on Rails: ¿nos gusta porque está de moda o porque lo vale?

Linux+ 3/2007 61

para programadoresRuby on Rails: ¿nos gusta porque está de moda o porque lo vale?

www.lpmagazine.org

tanto si el usuario pulsa en el botón de Atrás de su navegador posiblemente no pueda ac-ceder a los datos que tenía en la pantalla que había visualizado previamente. Ajax utiliza javascript, y esto significa también que la aplicación web no funcione en la siguiente versión del navegador y necesite actualiza-ción. Desde hace tiempo se ha demostrado que basar mucho un desarrollo web en el uso de javascript es poco fiable y difícil de mantener sobre todo teniendo en cuenta que Microsoft no cumple la compatibilidad de javascript en Internet Explorer.

Rails tiene un modelo consistente y sim-ple de implementar las operaciones con Ajax.

Una vez el navegador ha renderizado y mostrado la página inicial, la interactividad del usuario hace que se muestre una página nueva o que desencadene una acción en Ajax, esto es:

• Se produce una acción por parte del usuario, esto es, pulsar en un botón, cambiar los datos, de un campo en un formulario, o una acción que sea periódi-ca basada en un temporizador.

• La información asociada con la acción se envía de forma asíncrona al handler en el servidor vía XMLHttpRequest,

• El handler del lado del servidor ejecuta una acción basada en la información y devuelve un fragmento de HTML,

• El JavaScript en el lado cliente (que Rails ha creado automáticamente) recibe el fragmento de código HTML y lo utiliza para actualizar una parte específica de la página HTML en la que se encuentra el usuario, generalmente será el contenido de una etiqueta <div>.

La existencia de GEMSPara hacernos aún más fácil la vida, existen las RubyGems que es un sistema de empa-quetar en Ruby.

Un gem es un aplicación o librería de Ruby empaquetada, tiene un nombre (por ejemplo rake) y una versión (por ejemplo 0.4.16). La existencia de gems permite que:

• Exista una forma estándar de distribuir los programas y librerías de Ruby,

• Tener una herramienta que permite el fácil manejo e instalación de los paquetes de gems,

• Un servidor de gems que permite dispo-ner de las gems desde cualquier máquina donde RubyGems está instalado.

Las gems se gestionan desde cada ordenador utilizando el comando gem. Se pueden instalar, eliminar, buscar (entre otras posibilidades) pa-quetes de gems mediante el comando gem.

RubyGems es el nombre del proyecto que ha desarrollado el sistema de empaquetado de gems y el comando gem. Se puede obtener RubyGems en el repositorio de RubyForge (http://rubyforge.org/projects/rubygems).

Veamos cómo utilizar el comando gems para obtener distinto tipo de información.

Listado de las gems disponiblesSi ejecutamos:

gem query --remote # atajo:

gem q -R

entonces obtendremos un listado de todas las gems que se encuentren en el servidor remoto.

La información obtenida de la ejecución del comando sería (la hemos reducido consi-derablemente), ver Listado 1.

Instalación de una gemSi ejecutamos:

gem install --remote progressbar

# shortcut: gem i -r progressbar

la gem progressbar se instalará en el orde-nador. Véase que no es necesario especificar la versión, pero si se desea se puede hacer. Por defecto se instalará la última versión disponible.

Por lo tanto si queremos instalar una ver-sión específica, haríamos:

gem ins -r progressbar-0.0.3

o

gem ins -r progressbar --version '>

0.0.1'

Desinstalando una gemSi queremos desinstalar una gem, tan sólo tenemos que escribir lo siguiente.

gem uninstall progressbar

Successfully uninstalled progressbar

version 0.0.3

Listado de todas las gems instaladas:

gem query --local

# atajo: 'gem q -L'

Instalando Ruby on RailsPara la instalación de Ruby on Rails, pode-mos hacerlo de dos formas, manualmente haciendo uso de las gems, como hemos visto en el apartado anterior, o bien usando otras herramientas específicas para cada sistema operativo:

Para usuarios de Debian o UbuntuPrimero tenemos que instalar Ruby sudo apt-get install ruby irb rdoc

Luego instalamos las gems, descargando un fichero de http://rubyforge.org/frs/?group_id=126&release_id=5803 y descomprimiéndo-lo en nuestro ordenador (ver Figura 2).

tar zxvf rubygems-0.9.0.tgz

luego vamos al directorio creado

cd rubygems-0.9.0Figura 2. Rubyforge.org, sitio de proyectos open source en Ruby

Page 61: Linux Plus Magazine 030_Marzo 2007

60

para programadoresRuby on Rails: ¿nos gusta porque está de moda o porque lo vale?

Linux+ 3/2007 61

para programadoresRuby on Rails: ¿nos gusta porque está de moda o porque lo vale?

www.lpmagazine.org

y ejecutamos:

ruby setup.rb all

Ahora instalamos Rails:

gem install rails –include-

dependencies

Para poder empezar con Rails vamos a ne-cesitar un servidor web, por defecto instala Webrick.

Para ponerlo en marcha, tenemos que ejecutar:

script/server -d -p 3000

Y necesitaremos una base de datos como MySQL, que tendremos que tener instalada además de alguna librería extra como libmys-ql-ruby (para el caso de MySQL, pero se po-dría usar otra bases de datos cmo PostreSQL)

Para usuarios de Mac Os XEn el sistema Mac OsX existe una herramien-ta muy sencilla que permite la instalación y facilita el desarrollo en Rails, se denomina Locomotive (http://locomotive.raaum.org/)

Locomotive está disponible como bi-nario universal, tanto para arquitectura de PowerPC como Intel (como requisito tiene que ser Mac OS X 10.3 o posterior) . Será nece-sario tener instalado las herramientas Xcode para poder usar las rubygems y compilar código nativo.Por defecto, el servidor web será lighttpd con FastCGI y la base de datos que usará será SQLite, pero también se puede enganchar a MySQL y PostgreSQL.

Se puede instalar manualmente también siguiendo las instrucciones que aparencen en:

+info http://hivelogic.com/articles/

2005/12/01/ruby_rails_lighttpd_mysql_

tiger

Para usuarios de WindowsEn Windows podemos echar mano de Instant Rails (http://instantrails.rubyforge.org/wiki/wiki.pl) , que contiene Ruby, Rails, Apache y Mysql, todo preconfigurado y listo para usar. Tendrás que descargar un fichero zip, descomprimirlo en un directorio, y en dicho directorio ejecutar InstantRails.exe.

Instant Rails detectará preguntará si quie-res actualizar las rutas en todos los ficheros de configuración...pulsa sobre el si.

Para una instalación manual debemos descargarnos cada uno de los módulos:

Los archivos deberán ser descargados en un sólo directorio y los comandos ejecutados en ese directorio.

gem install rake-0.7.1.gem

gem install activesupport-1.3.1

gem install activerecord-1.14.4.gem

gem install actionpack-1.12.5.gem

gem install actionmailer-1.2.5.gem

gem install actionwebservice-1.1.6.gem

gem install rails-1.1.6.gem

Muy bien hasta aquí ya debemos tener insta-lado Ruby y Rails satisfactoriamente.

Ahora que menos que escribir un clásico con Rails, cómo escribir hola mundo en nues-tro navegador con Rails.

En primer lugar tendremos que crear nuestro proyecto rails con

rails MiProyecto

este comando crea toda la estructura de fiche-ros y directorios necesarios.

Ahora para comprobar que nuestra ins-talación es correcta ponemos en marcha el servidor web que viene con Ruby, Webrick, en la línea de comandos, desde dentro del di-rectorio del proyecto que acabamos de crear, escribimos:

ruby script/server

y si todo ha ido bien, accediendo a http://localhost:3000 veremos una pagina de bien-venida de Rails.

De momento nuestra aplicación no hace nada, así que vamos a crear un controlador con

ruby script/server

Creamos un controlador

ruby script/generate controller test

Verás que se crean una serie de directorios y ficheros, entre ellos tienes que encontrar directorio_trabajo_rails/ejemplo/app/controllers/test_controller.rb.

Al controlador vamos a agregar un mé-todo index:

class TestController <

ActionController::Base

def index

end

end

Una vez hecho esto, crearemos la vista para esta acción que acabamos de crear, en direc-torio_trabajo_rails/ejemplo/app/views/test crea un archivo llamado index.rhtml y dentro escribimos el texto Mundo Hola desde RoR!, lo grabas y si accedes desde el navegador a http://localhost:3000/test/ verás tu primera incursión en Rails.

Digamos que te controlador test es el con-trolador principal de tu aplicación, lo ideal es que los usuarios entren a tu página a través de simplemente escribiendo tudominio.com, y no teniendo que escribir tudominio.com/test , para lograr esto editemos directorio_tra-bajo_rails/ejemplo/config/routes.rb: descomenta-mos la línea

# map.connect '', :controller =>

"welcome" quedaría así:

map.connect '', :controller => "test":

Figura 3. Loudthinking, blog personal del desarrollador de Rails David Heinemeier Hansson

Page 62: Linux Plus Magazine 030_Marzo 2007

62

para programadoresRuby on Rails: ¿nos gusta porque está de moda o porque lo vale?

Linux+ 3/2007

Y como nos indican unas líneas arriba, debe-mos borrar el archivo directorio_trabajo_rails/ejemplo/public/index.html y ahora si se podría acceder a través de http://localhost:3000/.

Lo más común es hacer aplicaciones que accedan a una base de datos y hagan opera-ciones (insertar, actualizar, borrar) en la mis-ma. Una forma sencilla de hacer esto es con lo que en rails se denomina scaffolding.

Primero creamos en la base de datos una tabla que se llame recetas, por ejemplo, si queremos hacer una base de datos de recetas. Configuramos el acceso desde rails en el fi-chero database/config.yml y ahora tenemos dos opciones, crear el modelo y el controlador Receta:

ruby script/generate model Receta

ruby script/generate controller Receta

y en el fichero del controlador poner:

class RecetaController <

ActionController::Base

scaffold :receta

end

De esta forma se generan dinámicamente todos los métodos necesarios para añadir, modificar y borrar recetas en nuestra base de datos. Esta forma puede servir para aplicaciones muy sen-cillas en las que no necesitemos nada más.

Otra opción es usar un generador que crea todos los ficheros con el código de la opción anterior:

ruby script/generate scaffold Receta

De esta forma podemos tomar este código co-mo base y modificarlo para adaptarlo a nues-tra aplicación.

Hasta ahora, estamos viendo que en Rails la mayor parte de las cosas son ventajas, facili-

dades, sencillez, simplicidad, elegancia, pero también nos encontramos ante ciertos peros, que son los que en muchas ocasiones frenan a los desarrolladores a usar Rails, veamos si realmente son “peros” consistentes.

Rendimiento y escalabilidadGeneralmente uno de los problemas que se asocian a Rails es el rendimiento y la escala-bilidad, por un lado, se dice porque Ruby es

lento o en genérico los lenguajes interpretados son lentos.

Ante eso, encontramos como respuesta en el blog de DHH, www.loudthinking.com, algo que es parte de la propia filosofía de Rails, no se busca un lenguaje o entorno de programación que sirva para todas las situa-ciones, no hay que reinventar la rueda, sino saber en qué momento qué herramientas hay que usar, Rails está orientado a desarrollo web, si en algún momento la aplicación tiene un cuello de botella, quizá la forma de evi-tarlo sea usando otro lenguaje (C, C++, Java) que haga determinada tarea de forma óptima, puede que parezca hacer trampa, pero es una forma que casos específicos en los que el rendimiento pueda ser peor no determinan el desarrollo general de una aplicación web.

PerformanceDefinitivamente, una debilidad de Ruby po-co conocida (o poco publicitada), es su baja performance en velocidades de ejecución. Los benchmarks en diversos equipos y con distintas rutinas señalan a Ruby como un len-guaje lento, en comparación con PHP4, y más

Listado 1. Gems en servidor remoto

activerecord (0.8.4, 0.8.3, 0.8.2, 0.8.1, 0.8.0, 0.7.6, 0.7.5)

Implements the ActiveRecord pattern for ORM.

BlueCloth (0.0.4, 0.0.3, 0.0.2)

BlueCloth is a Ruby implementation of Markdown, a

text-to-HTML conversion tool for web writers.

Markdown allows you to write using an easy-to-read,

easy-to-write plain text format, then convert it to

structurally valid XHTML (or HTML).

captcha (0.1.2)

Ruby/CAPTCHA is an implementation of the 'Completely

Automated Public Turing Test to Tell Computers

and Humans Apart'.

cardinal (0.0.4)

Ruby to Parrot compiler.

cgikit (1.1.0)

CGIKit is a componented-oriented web application

framework like Apple Computers WebObjects. This

framework services Model-View-Controller architecture

programming by components based on a HTML file, a

definition file and a Ruby source.

Si queremos buscar gems en el servidor remoto para posteriormente poder

instalarlas, lo haríamos de la siguiente forma:

gem query --remote --name-matches doom

# atajo: gem q -R -n doom

Se obtiene como resultado lo siguiente:

*** GEMS EN SERVIDOR REMOTO***

ruby-doom (0.8, 0.0.7)

Ruby-DOOM provides a scripting API for creating DOOM

maps. It also provides higher-level APIs to make map

creation easier.

Figura 4. Tabla comparativa de Rails y J2EE

Rails

Container

J2EE

M-V-C

Webrick Tomcat Servlet Container

DispatchServlet ActionServlet

Active Record Hibernate

ActionController RHML

Persistence

DatabaseMySQL MySQL

Action ActionForm JSP

Page 63: Linux Plus Magazine 030_Marzo 2007
Page 64: Linux Plus Magazine 030_Marzo 2007

64

para programadoresRuby on Rails: ¿nos gusta porque está de moda o porque lo vale?

Linux+ 3/2007

lento aun en comparación a PHP5. Como contrapartida, posee una excelente gestión de memoria, superior a las 2 versiones de PHP en el mercado actual.

Comparando Rails con PHPCuando aparece alguna novedad siempre hay tendencia a hacer comparaciones, cuan-do en muchos casos tampoco tiene mucho sentido hacerlas.

En el caso de establecer una comparación entre PHP y RoR, se parte de un error de base, no son comparables, ¿podríamos hacer una comparación entre peras y manzanas? ¿Por qué se genera esta falsa comparación?

PHP es un lenguaje de script, extre-madamente liberal, no lo ata con ninguna tecnología extra y su forma de uso está más basado en la programación estructurada, influencia del lenguaje C. Sin embargo RoR es un entorno de programación basado en Ruby, siendo Ruby un lenguaje orientado a objetos 100%.

La mejora del modelo de OOP en PHP5 ha traído aparejado el surgimiento de un número importante de entornos de progra-mación (Cake, PRADO, Symfony, etc.) que se van agregando al lote del Zend Framework, aunque ninguno logra imponerse fuertemen-te sobre el resto.

Figura 5. Amazon apuesta por Rails en su sitio unspun.amazon.org

Por otro lado, el concepto de Rails como Framework MVC + ActiveRecord, ideal para el desarrollo ágil de sitios Web 2.0, segura-mente no es la panacea universal ni la solu-ción definitiva, ya que podemos encontrar otras posibles soluciones en otros lenguajes:

• Cake (PHP). Anteriormente citado,• Django (Python),• Trails (Java).

Estos funcionan tan bien o inclusive mejor que RoR, dependiendo del sistema con el que estamos lidiando.

Flexibilidad vs. OrganizaciónEn muchos casos se oye decir a desarrolladores web que RoR está más organizado y es más es-tructurado mientras que PHP es más flexible.

Tanto Ruby como PHP son lenguajes de scripting con propósito similar. La organiza-ción que le dota Rails a Ruby bien se la puede entregar cualquier Framework a PHP, como ser algunos de los citados anteriormente.

Comparando Rails con DjangoDjango es uno de los entornos de programa-ción más competente para el desarrollo web en Python. Es destacable en primer lugar porque está altamente reconocido por parte de los programadores de Python y en se-gundo lugar es un entorno de programación de nueva generación que no necesita copiar Ruby on Rails.

Django y Rails aspiran a resolver un tipo de problemas similares, de una manera similar, usando una arquitectura similar. En

P U B L I C I D A D

Page 65: Linux Plus Magazine 030_Marzo 2007

65

para programadoresRuby on Rails: ¿nos gusta porque está de moda o porque lo vale?

www.lpmagazine.org

la actualidad no parece que haya especiales ventajas técnicas en cambiar de entorno de programación para un grupo desarrollador de Django a Rails y viceversa. Para los desa-rrolladores que no se encuentran utilizando ninguno de los dos entornos de programación para la implementación web, pero que sin em-bargo utilizan Python o Ruby, pues lo lógico es que los primeros se beneficien de Django y los segundos de Rails, aprovechando los cono-cimientos adquiridos que tiene en los respec-tivos lenguajes de script. Para desarrolladores que no conozcan ninguno de los dos lenguajes pues la elección dependerá del tipo de entorno de desarrollo y del tipo de aplicación.

Comparando Rails con J2EEUno de los debates más acalorados a la hora de comparar Rails con otros entornos de pro-gramación ya existentes, es el que existe entre Rails y J2EE.

Si observamos la figura a continuación, veremos que son pocas las diferencias reales entre los elementos que componen una apli-cación web. ambos tiene un contenedor en el que el código de la aplicación se ejecutará, un entorno MVC que facilita la separación entre el modelo, la vista y el controlador y la exis-tencia de un mecanismo que permite que los datos sean persistentes

Por lo tanto posiblemente no sea tanto la parte técnica lo que diferencia ambos entornos de programación sino la filosofía que siguen los desarrolladores de cada uno de los entornos, mientras Rails prefiere tener código explícito en lugar de ficheros de configuración, el hecho de que Ruby sea un lenguaje más ágil y permite generar con

código en tiempo de ejecución. Generalmente Rails se basa en proyectos individuales, y la aplicación puede definir componentes ho-mogéneos. En cambio, en J2EE la tendencia es desarrollar los mejores componentes de manera independiente uno de otro, y se uti-liza XML para la configuración y unión de los distintos componentes.

Grandes y no tan grandes usan RailsEn muchas ocasiones se señala a Rails como una apuesta vana, con escasa trascendencia porque no está siendo utilizado como entorno de programación en sitio grandes, con gran cantidad de tráfico. Sin embargo hemos de tener en cuenta que Rails apenas ha sido publi-co hace poco más de 3 años, lo cual puede ser una razón para pensar que la implementación de sitios web no es automática, aún así si mi-ramos con detalle, veremos que son múltiples las apuestas por el uso de Rails en empresas grandes y desde luego en las no tan grandes.

Veamos algunos ejemplos de donde se está utilizando Rails, sin incluir a las platafor-mas creadas por los propios creadores de RoR (37 signals o Basecamp):

Amazon usa Rails en Amazon Unspun, ejemplo de aplicación de la web 2.0 donde la intención es llegar a consensos colectivos sobre cualquier tipo de tema, dando la posi-bilidad a los usuarios de crear listas y sobre la temática elegida poder establecer un consen-so de si es bueno, malo, divertido, etc.

Leopard, la nueva versión del sistema operativo Mac OsX incluirá por defecto, el entorno de programación de aplicaciones web de Ruby On Rails.

IBM ha añadido Ruby on Rails a la lista de entornos de programación para DB2, entre los cuales también se incluyen Java, .Net y PHP.

Odeo, es un portal de podcasting con mi-llones de visitas. La coctelera, ha desarrollado The Shaker, una herramienta para la publica-ción y administración de contenidos en Inter-net, es un servidor de blogs, que se caracteriza por su sencillez, facilidad de uso y usabilidad.

ConclusiónHemos visto de una manera rápida, las prin-cipales características de Ruby on Rails, las ventajas que tiene, la agilidad, facilidad de de-sarrollo, es un lenguaje cuya lectura es accesible a primera vista, está pensado para potenciar la usabilidad en las aplicaciones. También hemos visto alguno de los puntos flacos de los que se acusa a Rails, como es el rendimiento, aunque se podría decir que en estos momentos la inver-sión de personal de desarrollo es mayor que la inversión en hardware, con lo cual habría que evaluar realmente qué necesita la aplicación que tengamos entre manos. Sin embargo, desde la experiencia de Dabne como empre-sa que desarrolla en Rails, sólo hemos visto ventajas, la existencia de conveciones ahorran tiempo, evita reprogramación de cierto código, el scaffolding permite poder poner en marcha una aplicación de manera rápida, para emplear el tiempo en las partes más específicas de la aplicación, además existe una comunidad de rails muy activa, lo cual siempre es una buena forma de aterrizar en algo nuevo.

Figura 6. La coctelera, servidor de blogs en español desarrollado en Rails por The-Cocktail

Carolina García Cataño es socia de la empresa Dabne-Tecnologías de la infor-mación. Podéis escribirle a [email protected].

Sobre la autora

• Sitio oficial de Rails en español: rubyonrails.org.es/.• Lista de correo de rails en español: http://lists.simplelogica.net/mailman/

listinfo/ror-es.• Blogs: http://www.lacoctelera.com/railes, http://www.shinkitune.com/blogonrails/, http://sobrerailes.com/.• Fuentes: http://rubyforge.org/, http://rubygems.org/.

En la red

Page 66: Linux Plus Magazine 030_Marzo 2007

www.buyitpress.com

¡Suscríbete a tus revistas favoritasy pide los números atrasados!

Ahora te puedes suscribir a tus revistas preferidas en tan sólo un momento y de manera segura.

Te garantizamos:• precios preferibles, • pago en línea, • rapidez en atender tu pedido.¡Suscripción segura a todas las revistas de Software-Wydawnictwo!

¡Regalos para nuevos suscriptores!

Page 67: Linux Plus Magazine 030_Marzo 2007

Nombre(s) ................................................................................................... Apellido(s) ..................................................................................................

Dirección ..............................................................................................................................................................................................................................

C.P. .............................................................................................................. Población ....................................................................................................

Teléfono ..................................................................................................... Fax ...............................................................................................................

Suscripción a partir del No ...................................................................................................................................................................................................

e-mail (para poder recibir la factura) ..................................................................................................................................................................................

o Renovación automática de la suscripción

Por favor, rellena este cupón y mándalo por fax: 0048 22 887 10 11 o por correo: Software-Wydawnictwo Sp. z o. o.,Bokserska 1, 02-682 Varsovia, Polonia; e-mail: [email protected]

Pedido de suscripción

Título número de ejemplares

al año

número de suscripcio-

nes

a partirdel número Precio

Sofware Developer’s Journal Extra! (1 CD-ROM)– el antiguo Software 2.0Bimestral para programadores profesionales

6 38 €

Linux+DVD (2 DVDs)Mensual con dos DVDs dedicado a Linux 12 69 €

Hakin9 – ¿cómo defenderse? (2 CD-ROM)Mensual para las personas que se interesan por la seguridad de sistemas informáticos

12 69 €

Linux+Pack (7 CD-ROMs)Las distribuciones de Linux más populares 8 65 €

MSCoder (2 CD-ROM)Independent magazine for developers using Microsoft platforms 6 38 €

En total

Realizo el pago con:

□ tarjeta de crédito (EuroCard/MasterCard/Visa/American Express) nO CVC Code Válida hasta

□ transferencia bancaria a BANCO SANTANDER CENTRAL HISPANO Número de la cuenta bancaria: 0049-1555-11-221-0160876 IBAN: ES33 0049 1555 1122 1016 0876 código SWIFT del banco (BIC): BSCHESMM Fecha y firma obligatorias:

Page 68: Linux Plus Magazine 030_Marzo 2007

para programadoresOpenXava

68 Linux+ 3/2007

OpenXava

69www.lpmagazine.org

para programadores

linux

@so

ftwar

e.co

m.p

l

OpenXava: J2EE rápido y fácilJava es, sin duda, el lenguaje de programación más popular que existe. Esto indica el índice TIOBE, es el lenguaje con más proyectos en Sourceforge, es apoyado incondicionalmente por los grandes de la industria (IBM, Oracle, SAP, Sun, Google, etc.). La relación entre Java y Linux siempre ha sido buena.

Javier Paniza Lucas

Muchos servidores de aplicaciones Java corren sobre Linux, además una hege-monía total de Windows hubiera quitado interés a una tecnología multiplataforma

como Java. Pero a pesar de todo esto, la tecnología Java, especialmente la tecnología Java de servidor, J2EE, es re-chazada por muchos programadores Linux, porque parece una tecnología muy compleja y poco productiva en com-paración con otras alternativas para Linux. OpenXava es un marco de trabajo que permite desarrollar aplicaciones J2EE de forma rápida y sencilla.

J2EE (Java 2 Extremadamente Enredado)J2EE (ahora Java EE 5) es el estándar Java para servidores de aplicaciones. Un servidor de aplicaciones nos permite tener las aplicaciones instaladas en un servidor web y po-der usarlas desde el cliente usando un simple navegador de Internet, se puede decir que un servidor J2EE es algo parecido a PHP + MySQL pero con Java; la principal di-ferencia es que un servidor J2EE posee un conjunto míni-mo de servicios, JSP (páginas dinámica), JMS (mensajes asíncronos), EJB (transacciones, persistencia, objetos dis-

tribuidos) y muchos más, que son muy útiles para desa-rrollar aplicaciones críticas de empresa. Si hacemos una aplicación J2EE, ésta podrá ser desplegada en cualquier servidor de aplicaciones que cumpla el estándar. Ejemp-los de servidor de aplicaciones J2EE, son el IBM WebSphe-re Application Server, el BEA Weblogic, o el JBoss (que ahora pertenece a RedHat). La mayoría de bancos y gran-des empresas confían en esta tecnología para desarrollar sus nuevos sistemas críticos. J2EE es un estándar de la in-dustria.

Ahora bien, cuando nosotros, simples programadores, intentamos desarrollar una aplicación de gestión con J2EE

Javier Paniza Lucas desarrolla aplicaciones J2EE des-tinadas a la administración pública desde 1999, dentro de la empresa Gestión 400.

Actualmente participa activamente (también desde Gestión 400) en el proyecto de código abierto Open-Xava.

Sobre el autor

Page 69: Linux Plus Magazine 030_Marzo 2007

para programadoresOpenXava

68 Linux+ 3/2007

OpenXava

69www.lpmagazine.org

para programadores

nos encontramos con que tenemos que ser ex-pertos en orientación a objetos, diseñar una arquitectura de nuestro sistema, conocer un catálogo inmenso de patrones de software, utilizar varios marcos de trabajos y tecnolo-gías (Struts, Hibernate, etc). Al final, lo que antes hacíamos en una hora con unos cuan-tos clics de ratón, ahora nos hace falta escribir 15 clases Java, varios archivos XML, varios JSP. Necesitamos 4 programadores expertos para poder hacer una simple aplicación de gestión.

Es una pena, porque Java, además de serubicuo, es un lenguaje divertido, elegante, po-tente, y no es intrínsecamente complicado, lo es J2EE, y a veces las aplicaciones que noso-tros (los programadores Java) hacemos.

Por otra parte J2EE es una plataforma con muchas bondades, y ahí es donde entra en jue-go OpenXava, ya que nos permite desarrollar aplicaciones de forma rápida y sencilla, pero el resultado son aplicaciones J2EE, desplegables en cualquier servidor de aplicaciones Java.

OpenXava: Un marco de trabajoLos marcos de trabajos son una técnica de reutilización del código muy usada en el mun-

do Java (y en general en el mundo OO). Un marco de trabajo es una aplicación casi acaba-da, en la que tenemos algunos huecos. El pro-gramador que quiera hacer una aplicación final nueva, solo tiene que coger el marco de trabajo y rellenar esos huecos. Un marco de trabajo es útil cuando nos encontramos varias aplicacio-nes con una estructura parecida. OpenXava es un marco de trabajo para desarrollar aplica-ciones de gestión. Si necesitamos desarrollar

Listado 1. Cliente.xml: Componente de negocio Cliente

<?xml version="1.0" encoding=

"ISO-8859-1"?>

<!DOCTYPE componente SYSTEM

"dtds/componente.dtd">

<componente nombre="Cliente">

<entidad>

<propiedad nombre="codigo"

tipo="String" clave="true"

longitud="5" requerido="true"/>

<propiedad nombre="nombre"

tipo="String"

longitud="40" requerido="true"/>

</entidad>

<mapeo-entidad tabla="CUSTOMERS">

<mapeo-propiedad propiedad-

modelo="codigo" columna-tabla=

"ID"/>

<mapeo-propiedad propiedad-

modelo="nombre" columna-

tabla="NAME"/>

</mapeo-entidad>

</componente>

Listado 2. aplicacion.xml: Definición de los módulos de la aplicación

<?xml version = "1.0" encoding =

"ISO-8859-1"?>

<!DOCTYPE aplicacion SYSTEM "dtds/

aplicacion.dtd">

<aplicacion nombre="LPMagazine">

<modulo nombre="Clientes">

<modelo nombre="Cliente"/>

<controlador nombre="Typical"/>

</modulo>

</aplicacion>

Figura 1. Modo lista del módulo de clientes

Listado 3. Factura.xml: Componente de negocio Factura

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE componente SYSTEM "dtds/componente.dtd">

<componente nombre="Factura">

<entidad>

<propiedad nombre="anyo" tipo="int" clave="true"

longitud="4" requerido="true">

<calculador-valor-defecto

clase="org.openxava.calculators.CurrentYearCalculator"/>

</propiedad>

<propiedad nombre="numero" tipo="int" clave="true"

longitud="6" requerido="true"/>

<propiedad nombre="fecha" tipo="java.util.Date" requerido="true">

<calculador-valor-defecto

clase="org.openxava.calculators.CurrentDateCalculator"/>

</propiedad>

<referencia modelo="Cliente" requerido="true"/>

</entidad>

<mapeo-entidad tabla="FACTURAS">

<mapeo-propiedad propiedad-modelo="anyo" columna-tabla="FACANO"/>

<mapeo-propiedad propiedad-modelo="numero" columna-tabla="FACNUM"/>

<mapeo-propiedad propiedad-modelo="fecha" columna-tabla="FACFEC"/>

<mapeo-referencia referencia-modelo="cliente">

<detalle-mapeo-referencia

columna-tabla="FACCLI"

propiedad-modelo-referenciado="codigo"/>

</mapeo-referencia>

</mapeo-entidad>

</componente>

Page 70: Linux Plus Magazine 030_Marzo 2007

70

para programadoresOpenXava

Linux+ 3/2007 71

para programadoresOpenXava

www.lpmagazine.org

aplicaciones de gestión (facturación, control de almacén, contabilidad, inventario, nóminas, etc.) OpenXava es una opción a considerar. Pero la mejor forma de conocer OpenXava es mediante un ejemplo.

Componentes de negocioOpenXava está orientado a componentes de negocio. Las piezas básicas para construir unaaplicación con OpenXava son los componen-tes de negocio. Un componente de negocioagrupa toda la información referente a un concepto de negocio. Un concepto de nego-cio puede ser Albarán, Factura, Cliente.

Un componente de negocio se declara en OpenXava usando XML. Es realmente senci-llo. Por ejemplo, si quisiéramos declarar un componente de negocio Cliente, escribiríamos un archivo Cliente.xml con este contenido (ver Listado 1).

Todo, absolutamente todo lo que el sis-tema necesita saber para trabajar con el concep-to de cliente está en este archivo Cliente.xml. En este caso es todavía simple, de momento solamente indicamos las propiedades del com-ponente y su mapeo a la base de datos, peroen Cliente.xml podemos definir las validaciones, los cálculos, la presentación de datos tabu-lares, la disposición de la interfaz gráfica, etc. Vamos a ver qué puede hacer OpenXava a partir de una definición de componente como ésta.

Módulos y controladores reutilizablesSi queremos que este componente funcione y el usuario pueda trabajar con él tenemos queregistrarlo en nuestra aplicación; esto se hace con un archivo llamado aplicacion.xml, de lasiguiente forma (Listado 2).

Y con solamente esto, sin nada más, sin ni siquiera una línea de código Java, Open

Xava genera una aplicación como la en laFigura 1.

El usuario puede filtrar, ordenar, generar informes en PDF, añadir o quitar campos a la lista, consultar en modo detalle cualquier objeto, borrar, modificar, etc. Y nosotros no he-mos tenido que programar toda esta lógica.

El truco está en que el controlador Typi-cal, que nosotros hemos asociado en el archi-vo aplicacion.xml a nuestro componente Cli-ente, tiene esta lógica reutilizable incluida. Un controlador es un conjunto de acciones que puede ejecutar el usuario. OpenXava vie-ne con un nutrido conjunto de controladores reutilizables incluidos, pero nosotros siempre tenemos la posibilidad de refinar su com-portamiento y, por supuesto, crear nuestros propios controladores.

Referencias y valores por defectoA primera vista pudiera parecer que OpenXa-va sirve para hacer mantenimientos sencillos de tablas simples. Nada más lejos, las capa-cidades de OpenXava nos permiten modelar prácticamente cualquier sistema de gestión. Entre otras cosas OpenXava permite definir referencias y colecciones en el más puro estilo orientado a objetos. Vamos a verlo definiendo una primera versión de un componente Fac-tura (ver Listado 3).Figura 2. Modo detalle del módulo de clientes

Listado 4. Factura.xml: Añadimos una colección de líneas a la Factura.

...

<componente nombre="Factura">

<entidad>

...

<coleccion nombre="lineas">

<referencia modelo="LineaFactura"/>

</coleccion>

</entidad>

<agregado nombre="LineaFactura">

<propiedad nombre="oid" oculta="true" tipo="int" clave="true"/>

<propiedad nombre="descripcion" tipo="String"

longitud="60" requerido="true"/>

<propiedad nombre="importe" estereotipo="DINERO" requerido="true"/>

</agregado>

<mapeo-entidad tabla="FACTURAS">

...

</mapeo-entidad>

<mapeo-agregado agregado="LineaFactura" tabla="LINEAS">

<mapeo-referencia referencia-modelo="factura">

<detalle-mapeo-referencia

columna-tabla="LINANO"

propiedad-modelo-referenciado="anyo"/>

<detalle-mapeo-referencia

columna-tabla="LINFAC"

propiedad-modelo-referenciado="numero"/>

</mapeo-referencia>

<mapeo-propiedad propiedad-modelo="oid" columna-tabla="LINID"/>

<mapeo-propiedad propiedad-modelo="descripcion" columna-tabla="LINDES"/>

<mapeo-propiedad propiedad-modelo="importe" columna-tabla="LINIMP"/>

</mapeo-agregado>

</componente>

Page 71: Linux Plus Magazine 030_Marzo 2007

70

para programadoresOpenXava

Linux+ 3/2007 71

para programadoresOpenXava

www.lpmagazine.org

Cuya representación sería como en la Figura 3. Vemos como con la simple línea de XML:

<referencia modelo="Cliente"

requerido="true"/>

Es suficiente para definir una referencia, y que nuestra interfaz gráfica ya visualiza automáticamente la referencia al cliente en la factura, y ofrece la posibilidad de buscar clientes o crear nuevos.

También observamos como el formulario contiene relleno por defecto el año y la fecha. Esto se hace mediante los calculadores valor defecto, estos calculadores se ejecutan justo al pulsar la acción nuevo para crear una nueva factura. Los calculadores son clases Java que podemos escribir nosotros, aunque en este caso se han utilizado calculadores estándar que vienen incluidos en OpenXava.

Agregados y coleccionesAhora necesitamos que nuestra factura ten-ga líneas. Para eso vamos a crear una colec-ción de agregados. Una colección porque una

factura puede tener varias líneas, por eso se modela como una colección. Y de agregados porque las líneas de la factura forman parte de la factura, no tienen vida propia (no son entidades), se borran cuando una factura se borra y no son compartidas por más de una factura. Puede que los conceptos de colección y agregado parezcan un poco extraño al principio, pero son naturales y muy fáciles de usar, lo veremos con un ejemplo. Para definir las líneas de la factura modificaremos nuestro componente Factura añadiendo el siguiente código (Listado 4.). Con el resultado de la Figura 4.

El agregado LineaFactura se define en el mismo Factura.xml ya que LineaFactura sola-mente se va a utilizar desde Factura. La inter-faz gráfica permite al usuario añadir, editar y borrar líneas. Cuando una factura se borra, todas sus líneas desaparecen con ella.

Hemos visto un ejemplo de una colección de agregados, pero también es posible definir una colección a otras entidades, por ejemplo, si nos interesara que el Cliente tuviese una colección de sus facturas esto se definiría de la siguiente forma en Cliente.xml:

<coleccion nombre="facturas">

<referencia modelo="Factura"/>

</coleccion>

Y OpenXava generaría el código Java y la interfaz gráfica adecuada.

Figura 3. Visualización del componente Factura con una referencia

Listado 5. CalculadorSumaImportes.java: Clase Java con la lógica para sumar los importes.

package org.openxava.lpmagazine.ca

lculadores;

import java.math.*;

import java.rmi.*;

import java.util.*;

import org.openxava.calculators.*;

import org.openxava.lpmagazine.mo

delo.*;

public class CalculadorSumaImportes

implements IModelCalculator {

private Factura factura;

public Object calculate() throws

Exception {

BigDecimal result = new

BigDecimal("0.00");

for (Iterator it = factura.getLinea

s().iterator(); it.hasNext(); ) {

LineaFactura linea = (LineaFactura)

it.next();

result = result.add(linea.getImpo

rte());

}

return result;

}

public void setModel(Object model)

throws RemoteException {

this.factura = (Factura) model;

}

}

Listado 6. Factura.xml: Definición de la vista (representación visual) para la Factura.

...

<componente nombre="Factura">

<entidad>

...

</entidad>

<agregado nombre="LineaFactura">

...

</agregado>

<vista>

<miembros>

anyo, numero, fecha;

<seccion nombre="cliente">

cliente</seccion>

<seccion nombre="lineas">

lineas</seccion>

<seccion nombre="importes">

sumaImportes</seccion>

</miembros>

</vista>

<mapeo-entidad tabla="FACTURAS">

...

</mapeo-entidad>

<mapeo-agregado

agregado="LineaFactura"

tabla="LINEAS">

...

</mapeo-agregado>

</componente>

Page 72: Linux Plus Magazine 030_Marzo 2007

72

para programadoresOpenXava

Linux+ 3/2007 73

para programadoresOpenXava

www.lpmagazine.org

Lógica propiaHasta ahora hemos visto como nosotros ha-cemos unas simples declaraciones con la es-tructura de nuestros datos y OpenXava ge-nera toda la aplicación por nosotros. Esto es rápido, pero puede hacer parecer a OpenXa-va un poco rígido; esto no es así. OpenXava ofrece mucha flexibilidad a la hora de aña-dir o refinar su comportamiento estándar, prácticamente toda la funcionalidad que ofrece una aplicación OpenXava se puederefinar.

Aquí vamos a ver el caso más sencillo, que es insertar un cálculo cuya lógica vamos a programar nosotros. Esto se hace definien-do una propiedad calculada. Vamos a definir una propiedad calculada para calcular la su-ma de los importes en la la factura. Editamos el archivo Factura.xml y añadimos:

<propiedad nombre="sumaImportes"

estereotipo="DINERO">

<calculador clase="org.openxava.lpma

gazine.calculadores.CalculadorSumaImp

ortes"/>

</propiedad>

Así declaramos que Factura tendrá una pro-piedad calculada llamada sumaImportes y cu-ya lógica de cálculo está en la clase Java Cal-culadorSumaImportes, que es como sigue en el Listado 5.

OpenXava inyecta primero el objeto fac-tura en el calculador llamando a setModel(), y después ejecuta calculate() para obtener el resultado del cálculo. OpenXava genera una clase Java por cada entidad y agregado que definimos en nuestro componente, y esas clases (como Factura, Cliente o LineaFactura) las podemos usar cuando escribimos nuestra lógica, de esta forma podemos trabajar con ob-jetos sin ni siquiera tener que usar SQL, como hemos hecho en este calculador (OpenXava se encarga de la persistencia mediante Hibernate, EJB2 o EJB3 JPA según el estilo de generación de código que se escoja). Por supuesto si que-remos usar SQL también se puede hacer.

Ahora en nuestra interfaz de usuario ya aparece la suma de los importes (ver Figura 5).

Puede que la interfaz gráfica que Open-Xava ha generado para nuestra factura no nos guste demasiado, no nos debe preocupar esto también se puede refinar.

Distribución de la vistaOpenXava no es un lenguaje de definición de interfaces gráficas (como XUL o XForms),más bien genera automáticamente la inter-faz gráfica a partir del modelo. Sin embar-go, podemos definir vistas para distribuir la información visualmente de formas más agradable y práctica. Veamos cómo. En Fac-tura.xml podemos insertar este código (Lis-tado 6).

El resultado visual sería como en la Fi-gura 6.

Hemos usado la definición de la vista pa-ra indicar que miembros queremos que apa-rezcan, y como nos gustarían que se clasifi-caran (usando las secciones). Es OpenXava el que convierte esa definición en una inter-faz gráfica final, implementando las seccio-nes como pestañas, por ejemplo. Gracias al nivel de abstracción alto al definir vistas no sería difícil generar a partir de la misma ap-licación OpenXava interfaces gráficas dife-rentes, usando por ejemplo Swing, SWT, AJAX, FLEX, WML, o HTML pero con dife-rentes formatos.

Las vistas OpenXava permiten definir gru-pos (implementados como marcos), secciones anidadas (las pestañas), visualizar las referen-cias como combos, personalizar el comporta-miento de cualquier parte de la interfaz, defi-nir eventos, etc. De hecho, la flexibilidad de la definición de vistas es tal, que aplicaciones grandes (con cientos de componentes) se han hecho exclusivamente con vistas OpenXava sin tener que escribir ni un solo archivo JSP (OpenXava permite insertar código JSP pro-pio en cualquier lugar).

PortalYa tenemos una pequeña gestión de clientes y facturas, pero si queremos convertir esto en

Figura 4. Visualización del componente Factura con su colección de líneas

Figura 5. Visualización del componente Factura con una propiedad calculada

Page 73: Linux Plus Magazine 030_Marzo 2007

72

para programadoresOpenXava

Linux+ 3/2007 73

para programadoresOpenXava

www.lpmagazine.org

una aplicación final aún nos falta una gestión de usuarios y la navegación por los módulos. OpenXava no incluye ninguna de estas cosas, pero tiene algo mejor, genera automática-mente una aplicación de portlets desplegable en cualquier portal estándar JSR-168, así es el portal el que se encarga de la navegación y la seguridad.

En el contexto de Java un portal es un software de servidor que permite crear un si-tio web con una apariencia consistente a par-tir de un conjunto de piezas, que se llaman portlets. Estos portlets siguen un estándar (JSR-168), así cualquiera que haga portlets siguiendo este estándar puede añadirlosa un portal Java. Los portales Java se utili-zan como portales corporativos, muchas ve-

ces de uso interno, para integrar aplicacio-nes dispersas con una interfaz de usuario coherente y una misma gestión de usuar-ios.

OpenXava automáticamente genera apli-caciones JSR-168, no necesitamos escribir na-da de código específico, solo coger el archivo war resultante y desplegarlo en nuestro por-tal favorito.

El aspecto de nuestra aplicación des-plegada en un Liferay (un portal de código abierto) sería como en la Figura 7.

Podemos también ver qué aspecto tie-ne una aplicación OpenXava de gestión de Padrón Municipal de Habitantes en el portal comercial IBM WebShere Portal (Fi-gura 8).

ConclusiónLa conclusión es evidente, con solamente 3simples archivos XML y una clase Java po-demos desarrollar con OpenXava una peque-ña aplicación lista para usar. Además una aplicación que sigue los estándares Java J2-EE, desarrollada usando orientación a obje-tos y desplegable en un portal.

Puede parecer que OpenXava es útil pa-ra desarrollar de forma rápida aplicaciones sencillas para acceder a base de datos, y de hecho, lo es. Sin embargo, OpenXava se ha utilizado para desarrollar aplicaciones crí-ticas (como Padrón, Nóminas, etc), y aun-que OpenXava no desarrolla de forma mági-ca las aplicaciones (no es una bala de plata) sí que ahorra bastante trabajo, creando una estructura común, suministrando gratis mu-cha funcionalidad típica, y poniendo una base para reutilizar código de forma efecti-va.

OpenXava ofrece muchas más posibilida-des de las que se han visto en este sucinto artí-culo,se puede aprender más de lo que ofrece OpenXava leyendo su guía de referencia, o visitando su sitio web (http://www.openxava.org).

No dudéis en poner cualquier pregunta que tengáis sobre OpenXava en sus foros: http://sourceforge.net/forum/?group_id=123187 y sobre todo probadlo, es de código abierto (LGPL) y funciona perfectamente en cual-quier distribución Linux.

Figura 6. Visualización del componente Factura con una vista refinada

Figura 7. Nuestro portlet de facturas dentro de un portal Liferay

Figura 8. Un portlet OpenXava de una aplicación de Padrón en un WebSphere Portal

• Sitio de OpenXava: http://www.openxava.org,

• Índice TIOBE:http://www.tiobe.com/tpci.htm,

• J2EE (sun): http://java.sun.com/javaee/,

• J2EE (wikipedia): http://es.wikipedia.org/wiki/J2EE,

• Portales/portlets: http://es.wikipedia.org/wiki/Portlet.

En la red

Page 74: Linux Plus Magazine 030_Marzo 2007

Proyectos en PHP con Oracle

74 Linux+ 3/2007

para programadoresProyectos en PHP con Oracle

75www.lpmagazine.org

para programadores

linux

@so

ftwar

e.co

m.p

lConnection Pooling en PHPLa mayoría de los proyectos existentes en PHP utilizan MySQL como backend y escalan muy bien simplemente utilizando conexiones persistentes. Ese no es el caso para los proyectos en PHP con Oracle. Abrir una conexión a una base de datos Oracle es un proceso relativamente largo en tiempo: es necesario crear conexiones de red, abrir una sesión autenticada y crear un nuevo proceso de la base de datos que maneje la sesión.

Carlos Sánchez Valle

Si utilizáramos conexiones persistentes en un sitio con mucho tráfico con una configuración de ser-vidores web Apache en granja, necesitaríamos ir abriendo conexiones según creciera el número

de peticiones y debido al consumo medio de memoria de 2 a 3 MB por proceso de Oracle, un número no muy alto de peticiones dinámicas por servidor provocaría que rápi-damente nos quedáramos sin memoria en el servidor de base de datos. Necesitamos una solución intermedia que se encargue de mantener conexiones abiertas, de gestionarlas dinámicamente según las necesidades de tráfico, de cerrar-las y de lanzar las consultas a la base de datos en nombre de todos los servidores web. Lo que necesitamos es un pool de conexiones.

Una de las preguntas que aparecen en 'The Oracle PHP/FAQ' [http://www.oracle.com/technology/tech/php/ht-docs/php_faq.html] es si PHP ofrece algún tipo de pooling de conexiones para conectarse a Oracle. La respuesta oficial de Oracle en este tema es tajante: No.

Desafortunadamente PHP no ofrece ningún tipo de pooling de conexiones para Oracle. Oracle nos ofrece una alternativa que consiste en una aplicación de código

libre que ofrece pooling de conexiones con APIs para diversos lenguajes y con soporte de multitud de bases de datos. Entre estas combinaciones encontramos el caso que nos ocupa en este artículo, PHP y Oracle.

Esta aplicación se llama SQLRelay, y aunque ca-rezca de un soporte popular por parte de la comuni-dad de desarrolladores, tanto de PHP como de Oracle, SQLRelay es la única alternativa posible para manejar un proyecto de altísimo tráfico, desarrollado en PHP y con Oracle como backend. Esta configuración es precisamente la que utilizamos en el portal de empleo Trabajar.com.

Trabajar.com y su red de portales de empleoEn tan sólo un año la red de portales de empleo Tra-bajar.com, perteneciente al grupo Canalmail, ha logrado reunir más de 700.000 candidatos para casi 14.000 empre-sas. El portal de referencia para encontrar empleo en tec-nologías Linux, PHP, etc, es Informaticos.com. Según los da-tos de estadísticas para el mes de noviembre de 2006, la red de empleo ha superado el millón de visitas únicas.

Page 75: Linux Plus Magazine 030_Marzo 2007

Proyectos en PHP con Oracle

74 Linux+ 3/2007

para programadoresProyectos en PHP con Oracle

75www.lpmagazine.org

para programadores

Todo este tráfico lo soporta una plata-forma basada en gran parte en soluciones de código abierto y del mundo Linux. Todas las máquinas del cluster tienen instalado el siste-ma operativo Debian. La granja de servidores web balanceados tienen instalados la versión 2.0 del servidor web Apache, y utilizan la ver-sión 4.4.2 de PHP.

El backend consiste en 2 máquinas con Oracle 9i replicadas, configuradas de tal modo que si la primera fallase entra a dar servicio automáticamente la segunda.

El framework en el que se basa toda la aplicación ha sido desarrollado a medida para el proyecto y utiliza una clase de abs-tracción de base de datos con dos posibles drivers intercambiables: uno para conec-tarnos directamente a Oracle a través de la extensión de PHP que maneja la Oracle Connection Interface (OCI8) y otro que uti-liza la API que nos proporciona el pool de conexiones SQLRelay para conectarnos con PHP. De este modo, modificando un senci-llo archivo de configuración podemos cam-biar de conexión directa con Oracle a co-nexión a través del pool o viceversa, por si existiera cualquier problema con el mismo o quisiéramos parar el pooling por cualquier razón.

ProblemáticaEl servidor web Apache en su versión 2.0 que tenemos instalado en las máquinas de Trabajar.com, funciona en modo preforking. Esto significa que el servidor para cada una de las peticiones que recibe, arranca un nuevo proceso para atenderla. El servidor tiene una serie de parámetros de configuración que permite configurar cuantos de esos procesos arranca al iniciarse y cuantos segundos pue-den quedarse a esperar nuevas peticiones una vez que han servido la última, para evitar

que el servidor esté continuamente creando y matando procesos.

Si uno de estos procesos atiende una petición a un script PHP que tiene que conec-tarse a la base de datos, como por ejemplo una de las fichas de las ofertas de empleo de Tra-bajar.com, el proceso tiene que abrir una co-nexión a la base de datos Oracle, que como ya comentamos en la introducción, es un proce-so largo y costoso.

Suponiendo que la totalidad de las peti-ciones fuesen dinámicas:

nº de procesos Apache * nº de

servidores web = nº de conexiones a

Oracle

Cada conexión a Oracle consume de 2 a 3 MB de memoria en el servidor de base de datos, por lo que con un tráfico estimado de 100 peticiones dinámicas simultáneas, y con 5 máquinas en la granja de servidores web serían necesarios de 1 a 1,5 GB de memoria libre. Para 300 peticiones simultáneas, este numero aumenta de 3 a 4,5 GB de memoria necesaria. Más que suficiente para empezar a poner en problemas a un servidor de ba-se de datos. Si el servidor llegase a entrar en swap, el rendimiento caería en picado y sería imposible seguir aceptando consul-tas, llegando a colapsar la base de datos. En esta situación, los procesos web se queda-rían esperando el resultado de las consultas lanzadas, se iría llegando al número máxi-mo de procesos por servidor web, y el sitio quedaría completamente incapacitado para dar servicio.

Cuando Trabajar.com empezó a sufrir problemas de rendimiento debido al cre-cimiento en tráfico, enseguida el equipo técnico se puso manos a la obra para buscar una solución de pooling de conexiones. La

experiencia del grupo Canalmail con su plataforma de email marketing basada en lenguaje Java y Oracle hacía uso de solucio-nes de pooling y sin ellas no sería posible soportar la carga de trabajo de la base de datos con el conjunto de máquinas actual. Era necesario buscar.

Una solución similar para el entorno de PHP, y afortunadamente, Oracle derivaba a un proyecto de código abierto llamado SQL-Relay. [http://sqlrelay.sourceforge.net]

SoluciónSQLRelay es un pool de conexiones a base de datos, que actúa además como proxy y balanceador de carga, disponible para Unix y Linux. SQLRelay permite acelerar y mejorar la escalabilidad de las aplicacio-nes web y distribuir el acceso a diferentes bases de datos replicadas, entre otras carac-terísticas.

Entre las bases de datos soportadas en-contramos las siguientes: Oracle, MySQL, mSQL, PostgreSQL, Sybase, MS SQL Server, IBM DB2, Interbase, Sybase, SQLite, ODBC y MS Access.

Además, SQLRelay cuenta con APIs nati-vas para los siguientes lenguajes: C, C++, Perl, Python, PHP, Ruby, Java, TCL y Zope.

SQLRelay cuenta con su propia exten-sión para PHP de acceso a bases de datos, que permite lanzar las consultas y realizar las operaciones usuales contra Oracle, co-mo utilizar Binding, recoger resultados de múltiples líneas, cachear ResultSets, llamar a procedimientos en PL/SQL, lanzar tran-sacciones, etc. Esta extensión sirve para lan-zar estas operaciones contra el demonio de SQLRelay, que se encargará a su vez de

Listado 1. Ejemplo de fichero de configuración de SQLRelay

<instance id="ora_dev" port="9007" dbase="oracle8" connections="10"

maxconnections="100" maxqueuelength="0" growby="2" ttl="60"

endofsession="commit" sessiontimeout="600" runasuser="nobody"

runasgroup="nobody" cursors="5" authtier="listener" handoff="pass"

deniedips="" allowedips="" debug="none">

<users>

<user user="FOO" password="FOO"/>

</users>

<connections>

<connection connectionid="db1" string="user=FOO;password=FOO;nls_

lang=Spanish_Spain.WE8ISO8859P15;autocommit=no;" metric="1"/>

</connections>

</instance>

Figura 1. Esquema conceptual de SQLRelay

Page 76: Linux Plus Magazine 030_Marzo 2007

76

Proyectos en PHP con Oracle

Linux+ 3/2007

para programadores

77

Proyectos en PHP con Oracle

www.lpmagazine.org

para programadores

dirigirlas a la base de datos correspondiente y devolver los resultados.

Por lo tanto, es necesario cambiar las llamadas a la base de datos del código PHP, ya que las funciones son diferentes que las de la extensión OCI8 de PHP, aunque según el creador, también cuenta con un driver para PEAR:DB, lo que facilita mucho la tarea de integrar SQLRelay si el proyecto la utiliza. En nuestro caso, el equipo técnico tuvo que crear de cero un driver para la cla-se de abstracción que utiliza el framework del proyecto.

El funcionamiento de SQLRelay se basa en la utilización de una serie de demonios: por un lado, lanza un número determinado de demonios que mantienen múltiples co-nexiones a la base de datos y por otro lado,

un demonio Listener escucha peticiones de los clientes, que en este caso, serían scripts PHP. Estos clientes establecen sesiones con el demonio Listener, que son dirigidas a su vez a los demonios que mantienen las conexiones. Los clientes envían las con-sultas y las llamadas a procedimientos a es-tos demonios a través de la red, los demo-nios ejecutan las consultas a través de las conexiones abiertas a la base de datos y de-vuelven los resultados por la red al clien-te.

Instalación de SQLRelayLa instalación de SQLRelay es relativamen-te sencilla y está detallada en la siguiente URL: http://sqlrelay.sourceforge.net/sqlrelay/installing.html. Únicamente conviene reseñar

que es necesario instalar previamente la lib-rería Rudiments desde http://www.firstworks.com.

Configuración de SQLRelayMerece más atención el proceso de la con-figuración que se hace íntegramente a tra-vés de un archivo XML localizado normal-mente en /usr/local/firstworks/etc/sqlrelay.conf.

En el archivo se puede ir rellenando cada una de las instancias de SQLRelay. Una instancia de SQLRelay consiste en el demonio listener y cada uno de los de-monios que manejan las conexiones. Si es necesario definir diferentes configuraciones para conectar a diferentes bases de datos (producción, desarrollo...) cada una viene representada en una instancia.

Dentro de las instancias, tenemos otros dos tags destacables, users y connections. El primero define los usuarios que tienen privilegios para manejar la instancia, re-presentados por nombre de usuario y pas-sword, y el segundo describe cada demo-nio de conexión a Oracle. En condiciones normales, sin bases de datos replicadas ni balanceo de carga de bases de datos, ten-dremos definida únicamente una sola co-nexión. Los atributos de este tag son la ca-dena de conexión, y en ella encontramos el usuario y el password para conectar a Orac-le, y una serie de variables de configu-ración como autocommit activado o des-activado o la variable NLS_Land a utili-zar.

El tag de la instancia también lleva atri-butos muy importantes, como connections, que es el número de conexiones que se crea-rán al iniciar el demonio, maxconnections, que es el máximo número de conexiones que puede llegar a crear según se acumulen los clientes, el ttl, los timeouts, el comando que se lanza al finalizar una sesión, etc. To-dos los atributos posibles y sus valores es-tán definidos en la documentación de SQL-Relay.

Comandos de SQLRelaySQLRelay se maneja mediante comandos como cualquier otro demonio. Una vez completado el archivo de configuración hay que llamar al comando sqlr-start para arrancar el listener y arrancar el número de conexiones a Oracle definido con el atributo connections de la instancia definida en la configuración. Para detener la ejecución del demonio simplemente hay que llamar a sqlr-stop.

Listado 2. Ejemplo de utilización de la API PHP de SQLRelay

$con=sqlrcon_alloc("host",9007,"","user","password",0,1);

$cur=sqlrcur_alloc($con);

sqlrcur_sendQuery($cur,"select * from my_table");

sqlrcon_endSession($con);

for ($row=0; $row<sqlrcur_rowCount($cur); $row++) {

$rowarray=sqlrcur_getRow($cur,$row);

for ($col=0; $col<sqlrcur_colCount($cur); $col++) {

echo rowarray[$col];

echo ",";

}

echo "\n";

}

sqlrcur_free($cur);

sqlrcon_free($con);

Figura 2. Home de Trabajar.com

Page 77: Linux Plus Magazine 030_Marzo 2007

76

Proyectos en PHP con Oracle

Linux+ 3/2007

para programadores

77

Proyectos en PHP con Oracle

www.lpmagazine.org

para programadores

Otro comando interesante es el sqlr-status que nos muestra información del demonio, como las conexiones que mantiene con el servidor Oracle, con los clientes, el número de cursores abiertos, número de consultas lanzadas y número de errores encontrados.

Utilización de la API de SQLRelayEl último paso después de la configuración y el arranque del Listener de SQLRelay es uti-lizar la API PHP que nos proporciona como método de lanzar las consultas y procedi-mientos a la base de datos.

La mejor manera de comprender la uti-lización de SQLRelay desde nuestro código PHP es con un sencillo ejemplo. La API de SQLRelay no es tan rica como puede ser la OCI8 nativa de PHP, pero nos permite hacer la mayoría de las operaciones normales: lanzar consultas, ejecutar procedimientos, enlazar variables (binding), comenzar y fi-nalizar transacciones con commit y rollback, utilizar cursores, e incluso cachear Result-Sets enteros.

En el siguiente listado de código pode-mos ver como conectarnos al demonio de SQLRelay, lanzar una consulta simple y reco-rrer el ResultSet que nos devuelve como resul-tado.

En el caso de Trabajar.com, no se utilizan las funciones de la API PHP de SQLRelay directamente en el código, sino que el equi-po técnico tuvo que construir un driver específico para la clase de abstracción de base de datos del framework del proyecto, basándose en el driver de Oracle que utili-zaba las OCI8.

De todas maneras, si tu proyecto utiliza la clase de abstracción de bases de datos PEAR DB, utilizar esta API es tan sencillo como añadir el driver que viene con la distribución de SQLRelay y realizar la conexión de la si-guiente manera, sustituyendo el usuario, el password, el host y el puerto de Oracle por los que corresponda.

$db = DB::connect("sqlrelay://user:

password@host:9007/testdb");

Para el resto de operaciones se pueden utili-zar todos los métodos de PEAR DB como de costumbre.

ConclusionesSQLRelay actualmente es prácticamente laúnica opción posible para poder utilizar des-de un proyecto en PHP un backend como Oracle sin sufrir problemas de rendimiento en entornos de mucho tráfico.

Al ofrecer un pool de conexiones, puede gestionar y manejar las conexiones a Oracle de manera escalable sin saturar la memoria

de la máquina donde se alberga la base de da-tos, de una manera más eficiente que abrien-do conexiones directamente desde nuestros scripts PHP.

La instalación, configuración y manejo de la API PHP de SQLRelay no es excesiva-mente complicada, y ante cualquier proble-ma existe una extensa documentación, aun-que desconocemos otros proyectos de la en-vergadura de Trabajar.com donde esté siendo utilizado.

Por citar algunas desventajas, comen-taremos que si el proyecto donde se piense implantar no cuenta con clases de abstracción de base de datos, es necesario cambiar todo el código que maneja la interacción con ésta, ya que la API es diferente que la nativa de Ora-cle en PHP. Aunque viene con las funciones más usuales, no tiene tanta variedad como las OCI8, pero tenemos que comentar que no hemos echado en falta ninguna.

Si en algunas partes del proyecto donde se implante es necesario recibir ResultSets muy largas de la base de datos, es posible que sea más eficiente conectar directamente con Oracle, porque las ResultSets tienen que hacer un doble camino: de Oracle a SQLRelay y de SQLRelay al cliente.

Además de estos aspectos, en la implanta-ción y uso diario de SQLRelay en Trabajar.com hemos detectado ciertos problemas con algu-nas de las conexiones que mantiene el demo-nio de SQLRelay con la base de datos. En raras ocasiones alguna conexión empieza a devolver errores de la base de datos (ORA-00600 para ser más exactos), mientras que el resto de co-nexiones abiertas funcionan correctamente. En estos casos cambiamos nuestros archivos de configuración de la aplicación para conectar directamente a Oracle a través de la API nativa de PHP, reiniciamos SQLRelay y volvemos a cambiar todo para conectar a través del pooling.

Afortunadamente esto no ocurre muy a menudo y es fácilmente detectable configu-rando una serie de alarmas. Hemos estado varios meses con el demonio funcionando y sin reiniciarlo hasta que empezamos a de-tectar los primeros errores.

Desde el equipo técnico de Trabajar.com, podemos afirmar que sin SQLRelay actual-mente el portal de empleo no podría soportar el tráfico diario sin haber realizado ninguna fuerte inversión en mayor y mejor hardware, por lo que recomendamos la utilización de este pooling de conexiones en cualquier pro-yecto PHP con base de datos Oracle como backend.

Figura 3. Aquí encontraréis detalles de la instalación de SQLRelay

Figura 4. Para instalar la librería Rudiment visitad esta página

Page 78: Linux Plus Magazine 030_Marzo 2007

78

entrevistaUn laptop por niño

Linux+ 3/2007 79

entrevistaUn laptop por niño

www.lpmagazine.org

Un laptop por niño (One Laptop Per Child), es un proyecto hu-manitario y sin fines de lucro, que tiene por meta entregar un

laptop a cada niño del mundo, sobre todo en los países sub desarrollados donde el acceso a la tecnología es más bien escaso. Fue pen-sado para que el profesor tuviese una herra-mienta más de trabajo en la sala de clases.

Linux+ tuvo la oportunidad de entre-vistar a Eduardo Silva, quien es uno de los tantos programadores con que este proyecto cuenta, veremos los aspectos técnicos de la máquina, y veremos qué ha logrado hacer el equipo de desarrollo con esta máquina, que si bien a buenas y a primeras parece escasa en recursos, nos daremos cuenta que cumple de sobra con el fin que se creó, acercar a los niños a la tecnología.

Por dar un ejemplo, este laptop es capaz de crear automáticamente una red con otros laptops que estén al alcance de su antena Wireless, y tiene una autonomía de aproxi-madamente 3 horas (hay planes de incluso cuadruplicar su duración), además tiene una cámara web integrada. Y todo por US$100.

Linux+: Eduardo, ¿cuándo y por qué fue tu primera incursión en Linux?

Eduardo Silva: En el año 1998 mientras terminaba un sistema en Visual Basic para un

ES: Si mi memoria no me falla, lo primero que programé fue un escaneador de puertos, un simple programa en C que intentaba co-nectarse a los puertos de comunicación de una máquina para saber cuales estaban abier-tos y cuales no, la idea principal era aprender sobre sockets y comunicación de programas a través de una red.

L+: ¿Qué distribución usas actualmente?ES: En mi servidor local uso Debian, en

mi laptop uso Ubuntu. Por un largo tiempo probé distintas distribuciones y al final opté por lo más estable y rápido de actualizar.

L+: ¿Prefieres herramientas de programa-ción 4GL (Visual Basic, Power Builder, etc.) o las típicas interfaces con IDE?, ¿por qué?

ES: Hay herramientas 4GL que son ex-celentes, pero todo va por un tema de gusto y comodidad, yo prefiero los IDE, nunca he sido muy amigo de las herramientas 4GL (aunque las utilicé mucho un buen tiempo), para mi un IDE lo tiene todo, es por eso que se llama Ambiente de Desarrollo Integrado: mar-cador de sintaxis, debuggers, compilador/intérprete, documentador, etc.

L+: Eduardo, ¿cómo fue que llegaste a trabajar para Google en el proyecto OLPC?

ES: Todo comenzó en 2005 cuando vi que Google tenía un programa llamado Summer of Code 2005, en el cual reclutaban

cliente, las pantallas azules cada vez más, me iban sacando de mis casillas, el sistema ope-rativo era muy inestable, mi aplicación se caía sin razón alguna y fue en ese momento que me dí cuenta que el sistema operativo que tenía frente a mis ojos no era lo que decía ser y nunca lo sería.

Pasados unos días, mi hermano Gonza-lo que ya había tenido experiencia en Unix hace un tiempo, llegó con la novedad de un SET de distribuciones de Linux que se había conseguido, que era un unix gratuito (así se le conocía en ese tiempo) y nos dispusimos a instalarlo. Lo primero que me maravilló fue el arranque del sistema, en el cual podías ver en detalle lo que estaba haciendo, muchas de las cosas que para mi eran desconocidas. El aprender a instalarlo me habrá tomado hacer el proceso unas 15 ó 20 veces, en ese entonces el proceso de instalación no era muy amigable y se requerían de varios conceptos básicos que yo no tenía para poder lograr una instalación exitosa.

Me inicié con RedHat 5.1 y hasta el día de hoy recuerdo mis 2 grandes batallas: configu-rar mi módem (gracias a Dios no era un win-módem) y configurar la tarjeta gráfica para X.

L+: ¿Qué fue lo primero que programaste en Linux (aparte de los típicos programas para aprender al estilo hola mundo)?

OLPC: Entrevista

a uno de los desarrolladores La experiencia

a través de Google en OLPC y después como voluntario ha sido sorprendentemente enriquecedora...

Page 79: Linux Plus Magazine 030_Marzo 2007

78

entrevistaUn laptop por niño

Linux+ 3/2007 79

entrevistaUn laptop por niño

www.lpmagazine.org

a distintos estudiantes universitarios (o áreas afines) para que invirtieran su tiempo de vacaciones trabajando para proyectos opensource, es decir, Google te daba una lista de proyectos y tu seleccionabas a cual deseabas aplicar, enviabas una propuesta al proyecto canalizada por Google y los men-tores del proyecto calificaban las mejores según la calidad de ésta y los conocimientos de la persona (cada proyecto utiliza sus cri-terios de selección), una vez que el proyecto te ha aprobado viene la aprobación final por Google, una vez que está todo ok, comienzas a trabajar directamente con un mentor que te es asignado en el proyecto, tu trabajo dura tres meses y Google te remunera una buena suma de dinero por la labor hecha. Yo apli-qué a este programa en el año 2005 pero no fui aceptado.

Ya en el año 2006 comencé a oír sobre el proyecto OLPC y me pareció haber escucha-do una de las mejores ideas que se podrían realizar y ya había un staff de trabajo para el proyecto, en ese entonces deseé algún día po-der participar haciendo alguna colaboración. Meses más tarde se abre Google Summer of Code 2006, y uno de los proyectos disponi-bles para participar era OLPC, apliqué para la organización y esta vez fui aceptado para participar del programa.

Durante tres meses estuve desarrollan-do a Memphis, una herramienta gráfica para el análisis de uso de memoria un poco diferente a lo que es pstools, en este caso la medición de recursos se realiza en base a métricas específicas, también fue incluida la exportación de reportes, soporte de plu-gins, etc. Actualmente sigo participando como voluntario de OLPC donde aun sigo desarrollando Memphis.

L+: ¿Podrías darnos una pequeña reseña acerca de las características físicas del OLPC?

ES: El laptop en sí a primera vista pa-rece un juguete para niños, pero una vez

que abres el XO cuesta creer que hay tanta maravilla junta, tanto en hardware como en software. En los componentes de hardware encontramos un procesador AMD Geode GX-500, 128MB de memoria RAM, NAND Flash de 512MB como dispositivo de alma-cenamiento central (el XO no posee disco duro), Chipe Marvell (wireless), 3 USB ex-ternos, batería de 2000 ciclos de carga, LCD de 7.5” (logra una resolución de 1200x900), 1 Slot para memorias SD, Audio, Cámara VGA, etc.

Uno de los grandes desafíos de este gran proyecto educacional, es lograr que el laptop optimice al máximo el consumo de energía, para lo cual se han implementado nuevas soluciones aplicadas al hardware como lo es el nuevo chip DCON, el cual actúa como una interfaz intermedia que permite el deswizzling y anti-aliasing en modo color, permitiendo también a su vez tener la pantalla activa con el procesador suspendido. Uno de los componentes que más consume energía es el LCD. Otra for-ma de ahorrar energía, se ha logrado con la suspensión de CPU, en los laptops con-vencionales esto ocurre alrededor de los 10 segundos, en XO es menor a 100mS, gracias a estas implementaciones se ha logrado un gran ahorro energético.

L+: ¿Cuáles han sido los principales obstáculos que han encontrado al desarrollar software para el OLPC?

ES: Más que obstáculos, yo los llamaría desafíos u oportunidades, dentro de ellos a nivel de diseño físico que debe ser resistente al pol-vo y líquidos, una carcasa rígida y una extra protección para el LCD.

A nivel de software, el optimizar al máxi-mo el uso de espacio del sistema, eliminando componentes que no son necesarios, una ima-gen actual del sistema operativo instalado esta entre los 100 y 150MB, la auto configu-ración de la red inalámbrica, mesh-network, optimizar la transferencia de datos desde el Nand Flash, entre otros.

L+: ¿El OLPC se basa en alguna distribu-ción, o es una distribución específicamente creada para él?

ES: OLPC está auspiciado por una gran variedad de empresas dentro de las cuales se encuentra RedHat, la cual ha aportado con Ingenieros para la adaptación de Fedora Core para el laptop. Es una versión optimizada con un par de variaciones a la distribución actual. El Kernel utilizado es un branch llamado olpc-2.6, con los drivers específicos para el hardware de OLPC como: CPU, CAFE, Touchpad, etc.

L+: ¿Qué interfaz gráfica se utiliza en el OLPC, se sabe que la pantalla es muy pequeña?

ES: El ambiente de trabajo para XO se llama Sugar, el cual es un ambiente diseñado específicamente para niños y programado en Python, es un entorno 100% visual en el cual los programas son llamados actividades, los cuales están integrados con iconos de una forma amigable.

Sugar es un entorno que permite la inte-gración de otros usuarios de Sugar a través de la red, pudiendo crear grupos de trabajo y compartiendo actividades con ellos. El en-torno es muy fácil de usar y lo más importan-te es que es muy intuitivo.

Siendo la pantalla pequeña, hay que destacar que tenemos una resolución de 1200x900, lo cual da una excelente nitidez de los contenidos y como Sugar es un entorno basado en objetos visuales/iconos no hay nin-gún problema al utilizarlo.

L+: Sabemos que el OLPC es una máqui-na de bajo costo, ¿crees tú que en un futuro cercano se siga desarrollando el mismo pro-yecto, pero con mejor hardware, o sólo se seguirá optimizando el software?

ES: Yo creo que el proyecto se seguirá desarrollando a la par con el nacimiento de nuevas tecnologías, el costo del hardware tiene una gran tendencia a reducirse, en algún momento las nuevas tecnologías se irán inte-grando en el proyecto, la evolución de cual-quier proyecto debe ir a la par de la tecnología, y hablando del software: el SW siempre debe ser óptimo, ningún programa debería des-perdiciar recursos, optimizar debiera ser una práctica común entre los desarrolladores.

L+: Por último, ¿cómo ha sido la ex-periencia de trabajar en un proyecto tan grande como OLPC? (desde el punto de vista humano, cansancio, tiempo, enriquecimiento intelectual y esas cosas..)

ES: La experiencia a través de Google en OLPC y después como voluntario ha sido sor-prendentemente enriquecedora, en OLPC te desenvuelves con personas que tienen mucha experiencia tanto en desarrollo como en im-plementaciones tecnológicas. El staff oficial siempre está dispuesto a ayudarte y hay es-pacio para quien desee aportar. Para ayudar lo más crítico es el tiempo, en mi caso me ha-go el tiempo en las tardes-noche después de mi jornada de trabajo para hacer correcciones a los SW que estoy desarrollando.

L+: ¿Qué no se puede hacer con OLPC?ES: Instalar Windows que pesa 1.5GB

y requiere del doble de recursos para hacer lo mismo que XO. Figura 1. Laptop para los niños

Page 80: Linux Plus Magazine 030_Marzo 2007

para principiantesTrucos y truquillos

80 Linux+ 3/2007

para principiantesTrucos y truquillos

81www.lpmagazine.org

Trucos y truquillosLeonardo Ibarra R.

Pues nuevamente aquí, compartiendo con uste-des, tips, trucos y truquillos. En esta ocasión nos centraremos en la apariencia de nuestro escrito-

Figura 1. Esta es la apariencia de Gnome por default

Figura 2. Primer menú a modificar del panel Inferior Figura 3. Segundo menú a modificar del panel Inferior

Ya falta menos, ánimoAhora para cambiar el Splashscreen, lo más cómodo es tener instalado el Gnome-splas-hscreen-manager, si no lo tienes puedes instalarlo con tu administrador de paque-tes, para los usuarios de Ubuntu la ordensería:

$ sudo apt-get install gnome-

splashscreen-manager

Una vez instalado, lo llamaremos con la si-guiente orden:

$ gnome-splashscreen-manager

Una vez aquí con la opción install seleccio-namos la imagen para el splash que previa-mente descargamos, y posteriormente la acti-vamos con la opción activate.

Posteriormente instalamos nuestro fondo de pantalla, sí ya sabes, clic derecho sobre el

rio utilizando Gnome, que conste que les estoy advirtiendo que hay que armarse de paciencia a fin de tener los resultados que les muestro.

que invocarlo mediante la linea de comando así:

$gcursor

Instala el tema Jaguarx y listo.Una cosa más y terminamos, algo de lo

más atractivo del sistema de Mac, es su panel semitransparente, para tenerlo en nuestro sis-tema necesitamos seguir los siguientes pasos:

Vamos a borrar el panel inferior, por si no lo sabes esto se hace dando clic derecho en el panel donde no haya ningún icono, esto despliega un menú con la opción Borrar este panel, la seleccionamos, ahora vamos al panel superior igualmente clic derecho, y ahora se-leccionamos la opción Panel nuevo, si es necesa-rio podemos arrastrarlo a la parte inferior del escritorio, una vez ahí clic derecho Propiedades, en tamaño ponemos 50 pixeles y quitamos la opción de expandir, nos pasamos a la pestaña fondo y seleccionamos Color sólido y ponemos color blanco, corremos la barra Estilo hacia la izquierda a fin de tener el nivel de transparen-cia deseado y cerramos este menú.

Ahora ya tenemos un panel al cual con-forme se le vayan agregando lanzadores se

Felices trucos y que lo disfruten.Ánimo.

escritorio cambiar fondo, seleccionamos la imagen y listo.

Para que sea mas fácil cambiar nuestro cursor utiliza Gcursor, ya sabes si no lo tieneslo instalas, posteriormente solamente tendrías

Page 81: Linux Plus Magazine 030_Marzo 2007

para principiantesTrucos y truquillos

80 Linux+ 3/2007

para principiantesTrucos y truquillos

81www.lpmagazine.org

Figura 4. Así quedará nuestro escritorio una vez modificado

Mucho se ha dicho de que si el escritorio Gnome es bueno para trabajar, pero le faltan aplicacio-nes para el usuario que viene de Windows, que si Kde es bonito pero consume recursos, que si Windowmaker es un escritorio para usuarios noveles, en fin, cada quien usa como escritorio lo que sabe, o conviene, o aguanta su máquina.

Pero a este respecto yo puedo decir que lo fabuloso del mundo GNU/Linux es la liber-tad, y la cantidad de opciones que hay, así es que por lo tanto todo vale, ¿ok?

Así es que tomando en cuenta esto, un día se me antojó tener mi Ubuntu con apariencia de Mac, utilizando Gnome, cabe destacar que ya había visto en Internet algunas capturas de pantalla, pero ni idea de cómo se conseguía esto, así que me puse a investigar y ahora lo comparto contigo.

Antes de empezar a descargar los pa-quetes que utilizaremos, te sugiero crear una carpeta que llamaremos Mac, dentro de ésta crea las carpetas que listo a continuación a fin de que posteriormente puedas identificar fá-cilmente a qué corresponde cada paquete:

• Tema,• Iconos,• Gdm,• Splash,• Fondo,• Cursor.

expandirá, para iniciar podemos añadir las funciones de Papelera, Salir, Control de volumen, para esto clic derecho sobre el panel inferior->Aña-dir al panel, y seleccionamos las opciones men-cionadas anteriormente, luego de esto ya pode-

Como entrada del sistema podemos usar los siguientes temas Gdm:

• http://www.gnome-look.org/content/show.php?content=28630,

• http://www.gnome-look.org/content/show.php?content=14486.

Para el Splashscreen a mi me gustaron estos:

• http://www.gnome-look.org/content/show.php?content=42858,

• http://www.gnome-look.org/content/show.php?content=42836.

Para el tema de escritorio necesitamos T-ish en su versión 3.2 de la siguiente dire-cción:

• http://www.gnome-look.org/content/show.php?content=30859.

Posteriormente el paquete de iconos de aquí:

• http://www.gnome-look.org/content/show.php?content=31618.

Y por ultimo el fondo de escritorio lo descar-gamos de aquí:

• http://lxvweb.tripod.com/.

Se me olvidaba el cursor, éste lo descargamos de aquí – Recuerden que les dije que había que armarse de paciencia:

• http://www.gnome-look.org/content/show.php?content=14775.

Ya con todo esto en nuestro disco duro, ahora procederemos a instalar los paquetes.

Como estoy seguro de que no todo mun-do usa Ubuntu, y por lo tanto sus lanzadores gráficos pueden tener ubicaciones diferentes, invocaremos las aplicaciones que utilizare-mos a través de consola a fin de que dichas instrucciones les sean útiles.

Primero instalaremos el tema T-ish y los iconos OSX para lo cual desde la linea de co-mandos daremos la siguiente instrucción:

$ gnome-theme-manager

La cual despliega la pantalla que nos per-mitirá instalar estos archivos, ya sea indican-do la ruta o arrastrándolos hacia esta ven-tana, una vez hecho esto en detalles del tema en la sección Controles y Borde de la ventana, debe estar seleccionado el tema T-ish, y en la sección iconos el tema OSX, al aplicarlos ve-rás que inmediatamente nuestro Gnome se empieza a parecer a la interfaz de un Mac, pero todavía faltan algunos detalles.

Continuamos con Gdm, que es la pan-talla con la que iniciamos, la cual nos pide usuario y contraseña cuando arranca el sis-tema, para poder configurarla necesitamos ser root, así que en nuestra terminal escribi-mos:

$ sudo gdmsetup

Después de proporcionar la contraseña, ya podremos seleccionar la pantalla que utili-zará Gdm al arrancar, en mi caso es Apple-Linux 0.1, verán que en este mismo menú de configuración , aparece la opción Color de fondo, es importante que lo cambiemos a fin de que cuando se presente el splash del sis-tema éste tenga un fondo acorde con nuestra configuración, lo más cómodo es presionar el botón del color y posteriormente tomar una muestra del color preferido con el go-tero y listo.

mos añadir lanzadores de las aplicaciones que utilicemos regularmente, yo arrastro los iconos ya existentes en el escritorio para añadirlos.

El resto ya va en gustos y necesidades de aplicaciones.

Pues después de esta faena ya está listo nuestro GNU/Linux Gnome con apariencia de Mac OS.

Que lo disfrutes.Ánimo.

GNU/Linux con apariencia de Mac Os

Page 82: Linux Plus Magazine 030_Marzo 2007

El tema principal del siguiente número de Linux+ será:

Gráficaes decir, nuevas soluciones gráficas para Linux

La Redacción se reserva derecho a modificar sus planes

• Seguridad Firewall en Linux

• OSCommerce Comercio electrónico seguro y eficaz

• Monitorización de redes en Linux Guía práctica

• Linux contra Windows Esta vez basamos nuestra comparación en MySQL

• ACE Formatos de fichero

El próximo número incluirá los siguientes artículos:

!El número a la venta a partir del 1 de abril!

DVD1 : FreeBSD 6.2El sistema ideal para servicios de Internet o Intranet, fácil de instalar

DVD2 : Debian 4.0La versión más reciente del sistema operativo universal

Programas comercialesWeb-analiser PRO 2.76Programa que permite recoger y analizar las estadísticas del tráfico de tu sitio web

Page 83: Linux Plus Magazine 030_Marzo 2007
Page 84: Linux Plus Magazine 030_Marzo 2007