Sie sind auf Seite 1von 92

a modo de introduccin Linux, menos de 1%?

Linux, menos de 1%?


oy por la maana mi amiga me pregunt si Linux era fcil porque quera comprarse un porttil con Ubuntu preinstalado. El otro da otro amigo mo gracias a una Live CD de esta misma distribucin sac sus datos del disco duro en el que fall Windows. En cada parte se puede or o leer que Linux es ms seguro, ms barato, que las empresas y la administracin pblica se instalan este sistema operativo masivamente para ahorrar dinero, que las empresas grandes cada vez venden ms equipos con diferentes distribuciones preinstaladas, etc. Pero si todo esto es verdad, cmo es posible que, como muestran las estadsticas en uno de los artculos publicados en la revista, Linux no haya superado todava el 1% de sistemas utilizados en el mundo? Son estas estadsticas fiables? Creis que son verdaderas? A lo mejor diris que nosotros como una revista dedicada a este Sistema Operativo deberamos saber estas cosas, poseer nuestras propias estadsticas. Pero la verdad es que es muy difcil obtener datos objetivos, las encuestas que solemos realizar entre nuestros lectores no pueden serlo por razones obvias. Por eso tenemos que basarnos en los datos recogidos por otras organizaciones, lo que significa que nos es imposible averiguar su objetividad. Lo que me interesa es, cmo a vosotros os parecen estas estadsticas, creis en ellas? Realmente tan poca gente utiliza Linux en casa o en el trabajo? Nos gustara recibir vuestras opiniones acerca de este tema, podis escribirnos o publicar en nuestro foro. Los autores de las opiniones que publicaremos recibirn 3 nmeros de la revista como regalo. El tema central de este nmero es Cloud Computing, la tecnologa que desde hace algn tiempo gana terreno con gran rapidez. Qu es Cloud Computing? Merece la pena aprovecharlo? Es seguro? Las respuestas a estas y muchas otras preguntas las encontraris en una serie de artculos que publicamos en este nmero y que tratan sobre este tema. Esperamos os ayuden a profundizar las posibilidades que nos trae la nueva tecnologa y ver los peligros que puede llevar consigo. Adems del tema central encontraris otros artculos sobre los temas como seguridad (son realmente seguros nuestros datos?), virtualizacin (la segunda parte del extenso artculo sobre creacin y uso de mquinas virtuales), programacin (creacin de frontends en Gambas y programacin de Aplicaciones de Internet Enriquecidas con Flex y AMFPHP) y mucho, mucho ms. Os deseamos buena lectura y nos vemos en julio!

Paulina Pyrowicz Redactora Jefe de Linux+

www.lpmagazine.org

ndice

En este nmero

descripcin de DVD

30

CentOS
Pedro Ramn Farias

Cloud Computing cobra su mayor sentido en una aproximacin Open Source


Jos Manuel Rodrguez, director de Software de Sun Microsystems Ibrica

novedades

10 12 13 14

Noticias
Alex Sandoval

Ubuntu
Francisco Javier Carazo Gil

La consolidacin de Internet como medio de acceso y comparticin de la informacin y como plataforma de comunicaciones por parte de ciudadanos, empresas y gobiernos (ya es utilizada por ms de 1.000 millones de personas diariamente en todo el mundo, una cifra que se habr doblado en 2011) ha forzado a los grandes proveedores de tecnologas de informacin a evolucionar sus estrategias hacia el aprovisionamiento de todo tipo de servicios informticos a travs de la red como si de un servicio bsico y a medida se tratara.

Mandriva
Juan Gamez

32

Cloud Computing: Stairway To Heaven?


Lino Garca Morales

Fedora
Diego Rivero Montes

Cloud Computing

A mediados de los 90 Marc Andreessen (cofundador de la empresa Netscape Communications Corporation y coautor de Mosaic, uno de los primeros navegadores web con interfaz grfico) predijo que Microsoft Windows estaba destinado a ser un pobre conjunto de drivers ejecutndose en Netscape Navigator. Netscape desapareci en Marzo del 2008, sin embargo, su prediccin va camino de cumplirse en algn Navegador web.

16

Cloud Computing: El sistema operativo EyeOS


Jos B. Als Alquzar

Bajo el trmino Cloud Computing, se engloba un conjunto de soluciones tecnolgicas que permiten ofrecer servicios de computacin a travs de los protocolos TCP-IP, de forma que todo aquello que pueda ofrecer un sistema informtico concreto, tanto a bajo nivel como a nivel de aplicacin, es accesible a usuarios ajenos a ste.

22

Cloud Computing: La gran oportunidad para Linux?


Diego Gernan Gonzalez

Desde la liberacin en 1992 de las primeras distribuciones se viene vaticinando el gran despegue de Linux. 17 aos despus ni el inters de grandes empresas como IBM, ni la aparicin de una distro orientada especficamente al pblico masivo como UBUNTU, ni el atractivo innegable para el usuario sin conocimientos de proyectos como COMPIZ han permitido perforar el techo del 1% del mercado. En cuanto al tan deseado aluvin de nuevos usuarios que se esperaba a causa de la desilusin con Windows Vista se qued en algunos miles, el resto de los no conformes se volvi a XP.

software

36 38

Juegos
Francisco Javier Carazo Gil

Interconexin de Sistemas Abiertos


Lino Garca Morales

El modelo de referencia de interconexin de sistemas abiertos (OSI, Open System Interconnection) fue desarrollado por la ISO (Organizacin Internacional de Normalizacin) en 1977 para describir las arquitecturas de redes y compatibilizar la comunicacin entre los fabricantes de ordenadores.

Linux+ 6/2009

ndice

Tema del nmero virtualizacin

Cloud Computing programacin

42

Maquinas virtuales, parte II


Daniel Garca

66

En esta segunda entrega nos adentraremos en los detalles de implementacin sobre el entorno de prueba. Se detallar paso a paso una instalacin de Debian, para los principiantes, clonacin de mquinas virtuales y configuracin de diversos servicios red, entre ellos: un firewall perimetral, un proxy cache transparente, un servidor DNS, etctcera.

Gestin Potente de Procesos: Creacin de FrontEnds en Gambas


Jorge Emanuel Capurro

GNU/Linux posee infinitas alternativas a distintos programas de aplicacin. Muchas de estas son de interfaz de modo texto, lo que lleva al usuario principiante/intermedio a una difcil interaccin con el programa. Gambas pens en este problema, por lo que como era de esperar, nos trae una solucin: La creacin de FrontEnds.

80
seguridad

Aplicaciones de Internet Enriquecidas (RIA): Programando RIA con Flex y AMFPHP


Matas Barletta

58

Su informacin, a salvo?
David Puente Castro (Blackngel)

Qu programador no quisiera darle a sus usuarios la mejor experiencia de uso, una herramienta intuitiva, fcil de usar y que tenga los beneficios de las aplicaciones web? Adems, que el desarrollo e implementacin sea sencillo y... placentero.

De qu servira un ordenador si no pudisemos almacenar informacin en l? Absurda mquina si esto ocurriese. Pero aun no siendo as, de nada sirve si no podemos mantener esta informacin lejos de curiosos atacantes. El problema es claro. Hasta qu punto la privacidad de nuestros datos est garantizada?

opinin

86

Distribuidores polivalentes
Fernando de la Cuadra, director de Educacin de Ontinet.com

Los administradores de sistemas de las empresas suelen tener que sufrir una gran dicotoma en su trabajo: Windows o Linux? Es una batalla perdida. Por mucho que nos empeemos, la inmensa mayora de usuarios va a rechazar un cambio a Linux en los puestos de trabajo mientras sigan teniendo Windows en casa.

entrevista

88
www.lpmagazine.org

Entrevista a Ignacio Molina Palacios, Proyect Manager de AXARnet Comunicaciones 5

descripcin de DVD DVDs

Centos 5.3
or fin ha salido esta tan esperada entrega de Centos, fue liberada el da uno de abril, un poco despus de la Scientif (tambin basada en Red Hat y liberada el da veintiocho de marzo). Es curiosa la larga espera que se ha tenido que sufrir hasta la aparicin de esta versin pues la 5,3 de Red Hat fue liberada el 20 de enero, aunque queda patente que esta demora no es responsabilidad de la comunidad desarrolladora de Centos al darse el caso tambin en otras distribuciones derivadas de Red Hat. Casi todas estas distribuciones como tambin se da el caso en Debian tienen un pequeo inconveniente que se convierte a la vez en ventaja, tienen paquetes algo antiguos, lo que aunque no te ofrece las ltimas novedades hace que sea mucho ms fiable al estar ms probados sus paquetes. Si se quieren las ltimas novedades habra que recurrir a Fedora. Bueno, vamos a dejarnos de comentarios que pueden ser ms o menos interesantes o curiosos y vamos a lo que realmente nos importa, la instalacin y configuracin bsica de Centos. Lo primero es disponer de soporte de instalacin, bien sea DVD o CD, en este caso nos decantaremos por la instalacin desde el DVD que acompaa este nmero de la revista, si necesitamos los CD por que el equipo en el que lo vallamos a instalar no posea lector para DVD podremos obtenerlos en www.centos.org . Una vez arrancamos desde la unidad lectora la primera pantalla que nos encontramos nos ofrece varias posibilidades de arranque, en nuestro caso para instalar y teniendo en cuenta que nuestra mquina tiene suficiente procesador y RAM y vamos a instalar tambin el entorno grfico nos decantamos por la instalacin por defecto y pulsamos enter, en caso de instalar un servidor la mayora de las veces no instalamos el entorno grfico por lo que habra que modificar los parmetros de arranque para instalacin de modo texto, prestando especial atencin a que no necesitemos el entorno grfico para el servidor como se da el caso en algunas bases de datosa aplicaciones de ERP y BW. El siguiente paso que nos pide como en casi todas las versiones de Red Hat y distribuciones derivadas es la comprobacin del disco, en este caso no es necesario y si la hemos descargado de Internet pasndole despus la suma MD5 de comprobacin se puede decir que tampoco, pero si tenemos dudas de la integridad del soporte es muy recomendable. En nuestro caso al provenir de una fuente de confianza omitiremos este paso seleccionando Skip con el tabulador el enter. En estos momentos empieza a cargar

el Anaconda, instalador grfico de Red Hat utilizado tambin por otras distribuciones como puedan ser sus derivadas u otras tan dispares como Linex o Valdemoro (Hasta donde s a da de hoy discontinuada). Pulsamos siguiente y el primer paso consiste en la seleccin de idioma para ello tenemos la opcin de recorrernos la lista buscndolo o empezar a escribirlo para que nos lo vaya buscando la instalacin y ya nos movemos por muchas menos opciones, yo siempre me decanto por esta segunda opcin (Hay que escribirlo en ingls). Seleccionamos el teclado adecuado, normalmente nos sirve el que viene por defecto y procedemos al particionado del disco, tenemos varias opciones para ello desde todo por defecto para no complicarnos la vida hasta hacer las particiones de manera automtica, en este caso como prima el valor didctico al productivo nos decantamos por la opcin de crear diseo personalizado. Normalmente se ha hablado de la necesidad de tres particiones -una para el sistema, otra para datos y la ltima para swap (aunque actualmente podemos hablar de la necesidad de simplemente dos por la RAM que suelen tener los equipos que hacen innecesaria la particin para swap), aunque en este caso vamos a crearla. En primer lugar vamos a crear la particin raz y le vamos a dar por ejemplo cuatro gigas de espacio para ello nos vamos a nuevo, ponemos punto de montaje /, la dejamos como ext3 y la forzamos como primaria, en segundo lugar crearemos la swap (la que se dice que como norma general tendr el doble de espacio que la memoria RAM hasta que

llegue sta al medio giga, despus tendr la misma dimensin) para ello nos vamos a nuevo, ponemos swap y le damos el tamao deseado y con lo que quede hacemos la tercera particin ext3 definiendo el punto de montaje como /home. Cuando ya tenemos nuestras particiones definidas procedemos a lo que es ya la instalacin en s, es decir la copia de archivos al disco, lo primero que nos pide es en qu particin deseamos instalar, en nuestro caso nos decidimos por la sda1 que es la que hemos preparado a tal efecto, y dejamos que nos instale el gestor de arranque grub en este caso, el que podemos modificar desde aqu mismo para adecuarlo a nuestras necesidades. El siguiente paso es el de la configuracin de la red, en nuestro caso es a travs de un servidor de DHCP ubicado en el ruter de conexin a Internet, en caso de que en vuestra red de rea local tengis configurada ip fija tendris que rellenar los otros campos. Seleccionamos la zona horaria y ya nos pide la contrasea de root para despus proceder a seleccionar los paquetes a instalar. En nuestro caso vamos a personalizar la instalacin ahora, seleccionamos esa opcin, pulsamos en siguiente y ya nos muestra los paquetes a instalar separados por categoras, en mi caso voy a instalar el entorno de escritorio gnome por defecto, las herramientas de autora y publicacin, los editores, grficos, la Internet (tanto grfica como texto), las herramientas de oficina, el sistema base, las herramientas de administracin. Pulsamos siguiente, nos comprueba las dependencias y despus ya nos indica

Figura 1. Pantalla de arranque de Centos 5,3 desde la que podemos modificar los parmetros de arranque que deseemos para la instalacin

Linux+ 6/2009

descripcin de DVDs DVDs


Integracin basada en Scripts y extensiones con diferentes aplicaciones y servicios: Cliente de correo (Ej. Pine, Evolution) y servicios de Servidor de Correo, Servicios de programacin (ej. Cron) para asegurar la automatizacin del anlisis y. actualizacin. Anlisis clsico de lnea de comando completo con una interfaz grfica para una mayor integracin con los entornos desktop. Inclusin automtica del GUI del anlisis al men del sistema. Plugins Open source para tres de los ms populares administradores de archivos: Konqueror (KDE), Nautilus (GNOME) y Thunar (Xfce). Configuracin de accin basada en el tipo de resultado del anlisis.

Figura 2. Aqu tenemos nuestra tabla de particiones con las tres definidas

que va a proceder a la instalacin de los paquetes seleccionados. Una vez completada la copia de archivos comenzamos con la configuracin bsica del sistema. El primer paso es el cortafuegos, si el equipo est conectado directamente a Internet es obligatorio tenerlo habilitado y si est dentro de una red de rea local protegida por un cortafuegos lo podemos deshabilitar y nos es ms sencilla la administracin, cuestin de gustos. Luego nos pregunta por la configuracin del SecurityEnhanced Linux (SELinux), un parche para mejorar la seguridad de linux que o es un entorno de muy alta seguridad o no es recomendable su empleo por que la complejidad de su configuracin en un principio merma notablemente la productividad. Tras esto llega el momento de poner en hora el sistema. El siguiente paso es la creacin de un usuario,muy importante si no quieres trabajar siempre como root. Y para finalizar la instalacin comprobar la tarjeta de sonido y si hacen falta Cd's adicionales.

Ahora si se quiere se puede instalar compiz para efectos 3D o las aplicaciones que necesitemos pero al usarse principalmente en servidores no le vamos a instalar escritorios que consuman recursos de la mquina de forma innecesaria ni a mostrar la configuracin de servidores porque si no, nos alargaramos ms de lo conveniente. Por Pedro Ramn Farias

Requisitos del sistema


Sistema operativo:Linux, FreeBSD Linux Kernel: 2.4.x or 2.6.x (rec.) FreeBSD: 5.4 (o superior con compat5x) glibc: version 2.3.1 o superior, y libstdc++5 desde gcc 3.2.2 o superior Procesador: x86 compatible 300 MHz; i686 a 500MHz rec.; amd64(x86_64) Memoria mnima: 64MB (128MB rec.) Espacio libre mnimo en disco duro: 100MB

BitDefender Antivirus Scanner for Unices

BitDefender Antivirus Scanner for Unices es una verstil solucin antivirus bajo demanda diseada Distribuciones soportadas para sistemas Linux y FreeBSD. Ofrece anlisis antivirus y antispyware para UNIX y particiones RedHat Enterprise Linux 3 o superior SuSE Linux Enterprise Server 9 o superior basadas en Windows. Fedora Core 1 o superior Caractersticas principales Debian GNU/Linux 3.1 o superior Slackware 9.x o superior Anlisis antivirus y antispyware bajo de- Mandrake/Mandriva 9.1 o superior manda. FreeBSD 5.4 o superior

Poltica de licencia
La solucin BitDefender Antivirus Scanner for Unices es totalmente gratuita nicamente en el caso de usuarios domsticos. Si desea utilizar BitDefender Antivirus for Unices con fines comerciales, la licencia deber ser comprada en la tienda online de BitDefender o a travs de la red de distribuidores oficiales de BitDefender.

EyeOS, Cloud Computing Operating System

En el DVD encontraris la distribucin EyeOS, versin 32 bit. Sobre la distro y su uso podris leer en el artculo de Jos B. Alos incluido en la revista.
Figura 3. Centos 5.3 con escritorio Gnome

www.lpmagazine.org

NE WS

novedades Noticias seccin llevada por Alex Sandoval news@lpmagazine.org

Nftables, el nuevo firewall de Linux

Al igual que ocurri en el pasado con ipfwadm e ipchains, ahora le toca a iptables ir preparndose para quedar aparcado en el bal de los recuerdos. El grupo encargado de Netfilter ha publicado una versin preliminar del que previsiblemente ser su sucesor: nftables. La nueva herramienta es ms adaptable, tiene una sintaxis ms simple y permite ejecutar ms de una accin por lnea. Nftables est formado por tres componentes: la implementacin en el kernel, la biblioteca de comunicacin (libnl) y el frontend. La reescritura ha sido necesaria ya que cada vez estaban siendo includas ms extensiones en netfilter que resultaban difciles de manejar para quienes administraban los sistemas. Se ha decidido, adems, sacar del kernel la mayor parte del sistema de evaluacin de reglas. El cdigo se encuentra actualmente en estado alpha, lo que quiere decir que se puede empezar a experimentar con l. http://softlibre.barrapunto.com/softlibre/09/ 04/06/117240.shtml
Ututo XS 2009

Finalmente se anunci el lanzamiendo de Ututo XS 2009, la ms reciente actualizacin de la primera distribucin GNU/Linux argentina. Esta nueva versin est disponible en formato LiveDVD e incluye importantes novedades, como por ejemplo: Soporte para conexin a redes de datos mviles (GPRS y 3G), mejor capacidad de placas de video con acceleracin grfica, se fusionan la versin instalable y el autoejecutable (Vivo!) en un solo DVD, Soporte para las MacBook Mac mini de Apple y las netbooks MSI Wind y ASUS EeePC, Kernel 2.6.28.1 con capacidades extendidas de deteccin de hardware, hibernacin y suspensin del sistema. Para ms adelante, el proyecto de Ututo promete versiones optimizadas para procesadores AMD de 32 y 64 bits, Intel de 64 bits e incluso el Intel Atom. https://www.ututo.org/www/modules/news/ news.php?ID_news=339
Gmail te permite arrepentirte

rasil es uno de los pases ms comprometidos con los programas de cdigo abierto de latinoamerica y del mundo. Esa fidelidad al software libre le trajo un beneficio directo que segn un clculo de la organizacin Servicio Federal de Procesamiento de Datos (Servio Federal de Processamento de Dados, Serpro) del Ministerio de Hacienda, muestra que en los ltimos 12 meses, Brasil ha ahorrado 370 millones de reales, unos US$ 167,8 millones de dlares, con el uso de sistemas operativos, navegadores de Internet, correo electrnico y software libre para diversos fines. Segn Marcus Vinicius Ferreira Mazn, presidente del Serpro, la cantidad podra ser an mayor, ya que apenas 62 de las 90 reparticiones consultadas respondieron la encuesta. Las instituciones que contestaron cuentan en total con 2 millones de equipos. El Serpro utiliza Fedora en sus ordenadores, adems de soluciones de correos electrnicos Carteiro y Expresso. Actualmente, todas las dependencias del gobierno federal tienen alguna experiencia con software libre, pero todava existe potencial de desarrollo. La previsin indica que este ahorro continuar creciendo. Conforme se verifican los resultados positivos de la tecnologa libre, su uso aumenta fuertemente, resumi Ferreira, quien seal que los programas de cdigo abierto son superiores no slo por su precio, sino tambin por su adaptabilidad. El ahorro permiti la instalacin de 5.000 telecentros para el programa de inclusin digital en comunidades carentes. Despus de la adopcin del uso del software libre por parte del Gobierno brasileo, el 40%

Brasil ahorr US$ 167,8 millones usando software libre

El ahorro permiti la instalacin de 5.000 telecentros para el programa de inclusin digital en comunidades de escasos recursos

de los organismos estatales ya implement sus programas hasta el usuario final con sistemas de cdigo abierto. El 15 de abril, el Serpro hizo accesible para el pblico una plataforma para desarrollo de programas informticos llamada Demoiselle en homenaje al piloto brasileo Santos Dumont, quien en 1907 dej libre el patente del avin que dise en Francia. Esta buena noticia muestra a otros pases, que existe vida ms all de MS Office y sistemas operativos pagados en las instituciones gubernamentales. http://tecnologia.terra.com.br/interna/ 0,,OI3685118-EI4795,00-Governo+economiza+ R+mi+com+sistemas+operacionais.html

Los desarrolladores de Gmail siguen agregndole funciones a su popular servicio de correo electrnico. Antes fue un sistema para adjuntar archivos y agregaron una herramienta para evitar que mandes correos estando ebrio. Ahora el correo electrnico de Google te permitir cancelar el envo de un correo cuando te des cuenta que la direccin est mal escrita, el mensaje est incompleto o te arrepientes de haber enviado ese correo a tu jefe. Esta opcin Undo Send se activa en Gmail Labs y entrega aproximadamente 5 segundos de reflexin despus de presionar el botn Enviar para detener el viaje por internet. Despus de ese lapso, ya no hay nada que hacer. Esta aplicacin es ideal para aquellos usuarios de dedos rpidos que presionan impulsivamente Send, lo que les puede acarrear ms de algn problema personal o laboral. http://gmailblog.blogspot.com/2009/03/newin-labs-undo-send.html

as acciones de Sun Microsystems Inc. cayeron ms del 22 por ciento tras rechazar una oferta de compra de IBM por 7.000 millones de dlares, lo que dej a la productora de servidores y programas vulnerable a demandas de sus accionistas. Mientras an creen que las negociaciones podran reactivarse, una fuente cercana con informacin sobre el asunto dijo que los contactos cesaron el fin de semana luego de que Sun rechazara la oferta de IBM de 9,40 dlares por accin. Las acciones de Sun cayeron un 22,5 por ciento a 6,58 dlares, aunque siguen cotizn-

Sun termina negociaciones con IBM y acciones se desploman

dose por arriba del nivel de 4,97 dlares, que era el valor del papel antes de que las negociaciones con IBM fueran reportadas por primera vez en marzo de este ao. La primera reaccin de Sun fue asegurar que no habr cambio de nombres en la cpula. Nuestra poltica es no comentar rumores o especulaciones. Lo que podemos decir es que Sun sigue comprometida con su equipo de liderazgo, estrategia de crecimiento y con crear valor para los accionistas, dijo la empresa en un comunicado enviado por correo electrnico. El comunicado lleg en medio de especulaciones de que el fin de la negociacin con

10

Linux+ 6/2009

novedades seccin llevada por Alex Sandoval news@lpmagazine.org Noticias

NE WS

IBM poda provocar la renuncia del presidente ejecutivo, Jonathan Schwartz. Muchos analistas creen que tomar la oferta de IBM hubiese sido la mejor opcin para Sun, que est perdiendo participacin de mercado, y que el cese de las negociaciones dej en evidencia que tena una posicin mucho ms dbil que el comprador. Parece que estn en un dilema. La historia operacional de Sun en los ltimos cuatro a ocho trimestres no parece estar funcionando bien para ellos, ni tampoco sus esfuerzos por vender activos, dijo Tom Smith, analista de S&P Equity Research. El analista baj la recomendacin para los papeles de Sun a vender de mantener y tambin redujo su precio objetivo de 12 meses a 6 dlares de 9,50 dlares. Fuentes financieras aseguran que Sun se ha estado ofreciendo en el mercado por meses y que aparentemente no apareci ningn otro interesado ms que IBM. Las fallidas negociaciones con IBM implican que Sun debera tomar una oferta an menor, o peor an, ninguna oferta. Otros creen que Sun podra venderse en partes a distintas empresas de software que no quieren, o no pueden pagar, la empresa en su totalidad.

Otro Yahoo!

dente ejecutivo, Jerry Yang, rechaz una oferta de Microsoft por 47.500 millones de dlares el ao pasado. Yang eventualmente renunci en medio de fuertes crticas y fue reemplazado por Carol Bartz. Algunos analistas han dicho que de haber aceptado la oferta de Microsoft se habra creado 30.000 millones de dlares de valor para los accionistas de Yahoo. De verdad esperamos que a los accionistas no les toque un Yahoo, dijo Keith Wirtz, presidente de inversin de Fifth Third Asset Management, que tienen acciones tanto de Sun como de IBM. Si bien IBM ha estado negociando el precio de la adquisicin a la baja, segn una fuente, su ltima oferta an representaba un premio de un 89 por ciento frente al precio de los ttulos de Sun cuando por primera vez se habl de las discusiones a mediados de marzo. Dado el tamao del premio y considerando que el directorio de Sun ha encabezado una baja de las acciones de la empresa en los ltimos ocho aos desde los 250 dlares a menos de 5 dlares, creemos que Sun va a enfrentar un malestar significativo de los accionistas, dijo el analista Toni Sacconaghi de Sanford C. Bernstein. Sun es actualmente encabezada por Jonathan Schwartz, quien reemplaz a Scott McNealy en el 2006. McNealy, uno de los fundadores del pionero de Silicon Valley, se mantiene como presidente del directorio.

Publicada la versin 2.6.29 del kernel Linux

Linus Torvalds ha hecho oficial la disponibilidad del kernel Linux 2.6.29, tras meses despus de la publicacin del 2.6.28. Esta nueva versin, adems del cambio temporal de mascota, cuenta entre sus nuevas caractersticas con el soporte de modesetting del subsistema grfico, integracin de la tecnologa WiMAX, soporte de puntos de acceso Wi-Fi, el sistema de archivos SquashFS, una versin preliminar de Btrfs, una versin ms escalable de RCU, cifrado de nombres de archivos con eCryptfs, modo no journaling de ext4, checksums para metadatos de OCFS2, nuevos drivers y muchas otras mejoras menores. http://softlibre.barrapunto.com/softlibre/09/ 03/24/1044208.shtml
G-Monster PCIe: PhotoFast anuncia un SSD de 1TB de capacidad

Una noticia de hardware. Como ya hemos comentado en varias ocasiones anteriormente, el desarrollo de discos SSD sigue avanzando a pasos agigantados. Ahora la compaa japonesa Photofast ofrece las unidades de 256GB, 512GB y 1TB de capacidad. Igual de sorprendente es la velocidad de lectura y escritura de estas, ya que alcanzan tasas de transferencia de 750 y 700MB/s en cada caso. http://www.fayerwayer.com/2009/03/g-monster-pcie-photofast-anuncia-un-ssd-de-1tb-decapacidad/
EVO Smart: una nueva consola basada en Linux

Algunos pronostican que Sun puede exponerse a la ira de sus accionistas, como le ocurri http://www.emol.com/noticias/tecnologia/ a Yahoo cuando su fundador y entonces presi- detalle/detallenoticias.asp?idnoticia=352520

Envizions ha anunciado que ya se puede reservar su propia consola Linux, es la EVO Smart. Si la analizamos bien nos daremos cuenta que es un ordenador con forma de consola ya que tiene un procesador AMD Athlon 64 x2 5600 a 2.4 GHz, 2 GB de memoria RAM DDR2, su disco rgido es de 120 GB de almacenamiento y tiene una tarjeta grfica ATi HD 3200. No menos destacable es que la EVO Smart usa una versin de Fedora de arranque rpido (conocida como Mirrors) y que Envizions tiene planeado vender juegos desde la web en tarjetas SD por un precio de 20 . http://www.evosmartconsole.com/
Mandriva ayuda a portar K3B a Qt4

Muchos analistas creen que tomar la oferta de IBM hubiese sido la mejor opcin para Sun, que est perdiendo participacin de mercado

Mandriva decidi ayudar a portar el popularsimo y premiado software de grabacin de CDs y DVDs K3B a Qt4. Dos ingenieros del equipo de KDE de Mandriva comenzarn a trabajar con Sebastian Trueg, el desarrollador principal de K3B, para que su renovada versin pueda lanzarse ms temprano y as incluirse en la versin final del prximo Mandriva 2009.1 "Spring". El resultado ser que K3B podr usar todo el poder de la plataforma de KDE4, como Solid, Phonon y todo el entorno Plasma. http://www.vivalinux.com.ar/eventos/ mandriva-k3b-a-qt4

www.lpmagazine.org

11

novedades Ubuntu seccin llevada por Francisco Javier Carazo Gil ubuntu@lpmagazine.org

Fedora 11 vs Ubuntu 9.04

Los seguidores de Ubuntu estamos acostumbrados a no poder disfrutar de lo ltimo en las versiones ms actuales de nuestra distribucin preferida. Por slo poneros un ejemplo, mirad esta comparativa entre Ubuntu y Fedora: Kernel: 2.6.29 (Fedora) vs. 2.6.28 (Ubuntu), Firefox: 3.1 (Fedora) vs. 3.0 (Ubuntu), Thunderbird: 3.0 (Fedora) vs. 2.0 (Ubuntu), OpenOffice: 3.1 (Fedora) vs. 3.0 (Ubuntu). Como podis apreciar Fedora 11 viene mucho mejor equipada en cuanto a ltimas versiones de software muy importantes que Ubuntu 9.04, pero por qu Canonical no incorpora las ltimas versiones? La estabilidad es uno de los aspectos que ms se le critica a la distribucin de Canonical en comparacin con otras como Debian o Slackware que aseguran fiabilidad en todas las circunstancias. La empresa creada por Shuttleworth ha llegado a una solucin de compromiso entre tener versiones modernas del software y tener versiones estables. Las versiones que trae consigo Fedora son tan modernas que estn llenas de bugs, como el tan comentado del sistema ext4, y que pueden tener consecuencias nefastas. En el caso de Ubuntu, el software que se incopora est ms pulido y tenemos la seguridad de que su estabilidad es superior, aunque no est tan contrastada como las versiones veteranas y no modificadas que incorporan otras distribuciones.
Quinto cumpleaos...

a ltima versin de Ubuntu ya est disponible y con ella, todas las novedades que se esperan de la distribucin ms popular del mundo GNU/Linux en el mercado del escritorio. Antes de comenzar a comentar las novedades que incluye, como siempre, vamos a conocer el significado de las dos palabras clave que lo identifican. Jaunty significa alegre y el Jackalope, es un animal mitolgico mezcla de liebre y antlope. Ya podemos empezar a comentar las novedades de sta, como siempre, esperadsima versin.

Ubuntu 9.04 Jaunty Jackalope

Soporte para el sistema de ficheros ext4

El sistema de ficheros ms extendido del mundo GNU/Linux, el ext, tanto en su versin 2 como en la 3 tiene ya un sustituto llamado ext4. Mucho se ha hablado de si merece la pena incorporarlo por las mejoras en rendimiento que ofrece y por los problemas que han surgido en la fase beta del mismo. Por ahora, personalmente no lo recomiendo y en lugar de usar ext4 utilizaras reiserfs si queris probar algo distinto a ext3. El soporte est incluido, por lo que los ms valientes tenis libertad para probarlo.

Gnome 2.26

La primera novedad es la inclusin de la nueva versin del entorno de escritorio Gnome. Sin lugar a dudas, es una de las partes ms importantes del sistema puesto que es la que la mayora de lo usuarios utilizan para comunicarse con el mismo. Adems de mejoras menores, incluye Brasero por defecto como grabador de CDs en sustitucin de Gnome Baker (algo que ya hizo Ubuntu en la versin anterior) y aparte un mejorado sistema de manejo de mtiples monitores.

Soporte para suspender e hibernar mejorado

Dos de los aspectos ms criticados en sistemas GNU/Linux, la no posibilidad en muchas ocasiones de suspender e hibernar, han sido objeto de un importante esfuerzo para mejorar la compatibilidad con todo tipo de sistemas hardware, en especial, con los porttiles y ultraporttiles que son los dispositivos que ms manejan esta opcin, debido al ahorro de energa que suponen.

Soporte mejorado para hotkeys

Servidor X.org 1.6

Y ahora que lo pienso me parece que fue ayer cuando en la universidad o hablar a un compaero de una distribucin llamada Ubuntu. La primera impresin, con los tonos marrones, no me result buena en absoluto y tuvo que pasar 1 ao para que me decidiera a sustituir mi antigua Mandrake por esta distribucin de la que cada vez lea ms lneas en la red. Su nombre Ubuntu, la versin con la que empec la 5.10 y aunque he probado otras muchas, ninguna me ha gustado tanto como Ubuntu (al menos hasta el momento). Esperemos que este cumpleaos, el quinto, sea slo uno ms y que se repitan durante aos y podamos ver cada 6 meses novedades y una mejor posicin para batallar contras los otros sistemas operativos de escritorio.
...cumpliendo los plazos

Nueva versin del servidor X (el que soporta todos los grficos en el sistema). Incluye un soporte mejorado para muchas tarjetas grficas y aparte mejoras de rendimiento tanto en 2D como en 3D en muchas otras.

Arranque mejorado

Si algo caracteriza a Ubuntu es su exquisita puntualidad con respecto a otras distribuciones y proyectos de software libre a la hora de cumplir los plazos de salida. Hace ya un tiempo, en la versin que debi ser la 6.04, hubo un retraso y al final sali en Junio, por lo que su nombre cambi a 6.06. A excepcin de este caso, las faltas de puntualidad han sido mnimas y la posibilidad de ver la planificacin del proyecto a meses vista es todo una ventaja tanto para los usuarios domsticos como para los profesionales. Ni siquiera proyectos comerciales cumplen los plazos en la medida en que lo hace Ubuntu.

Mejoras en el sistema de arranque para rebajar el tiempo en que el sistema es utilizable por los usuarios. ste ha sido uno de los aspectos que Ubuntu siempre ha procurado mejorar respecto a otras distribuciones desde hace tiempo. Se han paralelizado procesos y se han hecho ms eficientes otros para mejorar el tiempo de carga Kerneloop La instalacin por defecto de kerneloop posibidel sistema sin perder estabilidad. lita que en caso de un fallo kernel, incluso de un Kernel 2.6.28 kernel panic, error que deja al sistema totalmenGracias a l Ubuntu soporta ahora ext4 (punto te bloqueado como a lo mejor habis probado del que hablaremos a continuacin) y ade- alguna vez vosotros mismos, la informacin ms trae otras novedades importantes, como del mismo se almacene y se transmita en el sison: GEM, un gestor de la memoria grfica; guiente arranque a un servidor donde se gestiosoporte de Ultra Wide Band (UWB); USB nar dicho error para ver las posibles fuentes del inalmbrico; y UWB-IP, escalabilidad de la ges- mismo y evitar que se produzca de nuevo. stas tin de memoria, adems de otras muchas y algunas novedades ms, como el nuevo sistemejoras tcnicas que podis consultar en la ma de notificaciones del que se ha modificado la red. Adems de por supuesto las mejoras en esttica y se han aadido transparencias, hacen compatibilidad hardware que trae cada nuevo de esta versin, una lanza ms en la larga guerra kernel. de los sistemas operativos de escritorio.

Las hotkeys, las combinaciones de teclas que permiten modificar aspectos como el brillo de la pantalla, subir el volumen o permutar la salida de grficos, son de especial importancia cuando se trata, al igual que en el caso de las suspensin y la hibernacin, de dispositivos como los porttiles y los ultraporttiles. Se ha mejorado la compatibilidad aunque desde Canonical se pide que los dispositivos en los que no funcione esta posibilidad sean notificados para as poder aumentar el nmero de dispositivos compatibles. La gran cantidad y variedad presente en el mercado impide una compatiblidad total cuando los fabricantes de hardware no dan demasiadas facilidades.

12

Linux+ 6/2009

seccin llevada por Juan Gamez mandriva@lpmagazine.org

novedades Mandriva

ientras esperamos la publicacin de la nueva Madriva 2009 Spring con KDE 4.2, Gnome 2.26, firefox 3 y otras muchas novedades que ya comentaremos en su debido tiempo, querra hablaros un poco de lo que est haciendo Mandriva como divulgador y como optimizador del mundo GNU/Linux y del software libre en general. Es decir que es lo que Mandriva est aportando y ayudando fuera de su distribucin y dentro del software GNU/Linux. Hace poco en el blog oficial de Mandriva (http://blog.mandriva.com/) leamos que Mandriva haba decidido ayudar a portar el famoso software de grabacin de Cd y DVD k3b a qt4.2. es decir que ingenieros del equipo KDE de Mandriva trabajaran junto al lder de desarrollo del proyecto de k3b, Sebastian Trueg, para que la nueva versin de este popular programa fuera publicada lo antes posible, incluso a tiempo de ser incluida en Mandriva 2009.1 Spring. Con este trabajo se conseguir que k3b utilice toda la potencia de la plataforma KDE4. Segn nos cuenta en el blog He portado el soporte para arrastrar y soltar, arreglado la gestin de plugins, y algunas otras cosas que se rompieron con el cambio de KDE3 a KDE4. Esto generar una aplicacin an mejor y ms depurada. As mismo en su versin 2009.1 Spring Mandriva ha decidido incluir el Qt Creator, un IDE multiplataforma orientado al desarrollo con C++ y Qt desarrollado por Qt software, nombre con el que renombr Nokia a Trolltech el 29 de septiembre de 2008, meses despus de su compra. Con este IDE podremos crear proyectos en C++, adems incorpora un diseador de

Mandriva impulsando el software libre

Mandriva Enterprise Server 5 beta

formularios, autocompletado y reconocimiento de propiedades y mtodos, y como es usual en los productos de Trolltech, una abundante documentacin integrada. Adems incluye una herramienta de debugger y abundantes nuevas opciones. Mandriva es una de las primeras distribuciones de GNU/Linux que ofrece este IDE desde sus repositorios, estando, a partir de Mandriva 2009.1 Spring, a disposicin de los usuarios dentro del repositorio Main. Estos son solo dos de los ejemplos ms recientes, a estos podemos incluir el impulso que dio Mandriva a Pulse Audio al ser la primera distribucin en incluirla, o bien, la fuerte apuesta que ha realizado Mandriva en el rea de escritorios 3D, tanto con Compiz como con su escritorio propio Matisse. Todo esto hace que Mandriva sea una de las distribuciones que ms a la vanguardia se encuentra en el mundo GNU/Linux. Incorpora en cada lanzamiento las ltimas versiones y novedades tanto del ncleo como de aplicaciones. Esto podra llevar asociado una inestabilidad de la distribucin, pero gracias al duro trabajo de los ingenieros de Mandriva, siempre se encuentra un equilibrio entre lo nuevo y lo estable. Por todo ello, Mandriva sigue siendo nuestra distribucin favorita, no solo por su calidad sino por el inters y compromiso tanto con el software libre como con su comunidad de usuarios, esto ltimo, muy valorable pues no debemos de olvidar el carcter de empresa privada que es Mandriva.

Se ha anunciado el inicio del periodo de pruebas de Mandriva Enterprise Server 5. Este producto es el sustituto del Corporate Server 4 y est basado en la versin 2009.0 de Mandriva. Entre las caractersticas ms destacables tenemos: Si se escoge un entorno grafico se instalar un sistema GNOME con los mnimos requisitos. Nueva gua de configuracin va web para las funcionalidades propias de un servidor: correo electrnico, servidor de impresin, servidor de archivos, etc. Todos los servicios son gestionables desde Mandriva Directory Server. Vitalizacin con Xen y KVM. Mandriva est interesada en recabar toda la informacin, errores, etc. de las pruebas que realicen los usuarios. Podis descargarla de: https:// my.mandriva.com/mes5/beta/

Mandriva y el Google Summer of Code 2009

Mandriva ha anunciado su disposicin de apoyar a participantes en el Google Summer of Code. Para ello debemos proponer nuestros proyectos en el wiki de Mandriva (http://wiki.mandriva.com/ en/Google_Summer_of_Code_2009_ Ideas). Google Summer of Code 2009 consiste en el patrocinio por parte de Google a desarrolladores de software libre para llevar a cabo el proyecto propuesto. Un proyecto debe de ser guiado por un mentor, en este caso los mentores perteneceran a Mandriva.
Mandriva Pulse 2 v.1.2

Mandriva ha anunciado la publicacin de Mandriva Pulse 2 en su version 1.2. Mandriva Pulse 2 es una herramienta Open Source para la gestin de ordenadores porttiles y sobremesa, as como servidores. Mandriva Pulse 2 mantiene un inventario del software y hardware de cada ordenador en su base de datos, as como el despliegue y actualizacin de aplicaciones. Otras caractersticas incluyen el diagnstico y los mdulos de control remoto. Podis bajaros una versin de evaluacin (como imagen de WMware) de: https://my.mandriva.com/pulse-2/ preview/ Mandriva Pulse 2 v.1.2

www.lpmagazine.org

13

novedades Fedora seccin llevada por Diego Rivero Montes linux@lpmagazine.org

Segn se ha publicado en el diario Pblico en su pgina web, el padre del movimiento del Software libre no dej ttere con cabeza en su conferencia ofrecida el da 4 de marzo en el Medialab Prado de Madrid. Arremeti segn el peridico contra Microsoft y Apple porque son ...representantes de una industria que quiere imponer la dictadura de los programas privativos.... Los fabricantes de mviles no se quedaron sin su racin, manifestando adems Sera ms cmodo para m tener mvil, pero hay cosas ms importantes que la comodidad, pero la mayor concentracin de su ira se la dedic a Linus Torvalds y su creacin, No es justo que el trabajo que hemos hecho desde hace 25 aos se atribuya a uno [en referencia a Torvalds] que est en contra de los valores del software libre, dijo Stallman entre el silencio de los asistentes. http://www.publico.es/ciencias/206550/ stallman/linux/software/libre
Fedora 8 EOL

Stallman contra Linux?

Para los usuarios que an siguen aferrados a Fedora 8 sta es sin duda una mala noticia, ya que lo que anunciamos es el fin del soporte para la versin octava de Fedora. Pues s, ya en enero se produjo el End of life, lo que significa que desde entonces los que an disfruten de las bondades de esta release ya no tienen actualizaciones de ningn tipo para las aplicaciones implementadas en ella y que los bugs que se hayan encontrado para esta versin en especial se darn como cerrados sin solucionar. Bueno, todo no va a ser malo, para todos aquellos que an sean usuarios e esta versin les animamos a actualizarse y migrar a una versin ms reciente que de lo ms seguro no les defraudar en absoluto.
Fedora Paraguay

qu tenemos la ltima entrega del escritorio GNOME, uno de los ms populares entornos de escritorio. GNOME es sin duda uno de los que ms han sido enfocados a la facilidad de uso, con unas caractersticas en lo que se refiere a estabilidad e internacionalizacin que pocos se acercan a lograr adems de poseer una accesibilidad digna de encomio. Adems de tratarse por supuesto de Software Libre, lleva consigo las ms usuales herramientas que todos necesitamos y deseamos encontrar en un equipo de nuestros tiempos ya sea si queremos enviar un e-mail, chatear, visitar webs, gestionar grupos de trabajo y archivos, jugar, etc. Igualmente para aquellos que se dedican al desarrollo no se ha dejado de lado esta vertiente de la plataforma, convirtindose e una de las ms potentes en vas a la creacin tanto para escritorio como si se trata de dispositivos mviles. El proyecto GNOME se centra en los usuarios y la usabilidad, y contina en GNOME 2.26 con cientos de arreglos y mejoras pedidas por los usuarios. Este impresionante nmero de mejoras hacen imposible listar cada cambio que se ha realizado pero esperamos resaltar algunas de las caractersticas orientadas al usuario ms excitantes de este lanzamiento de GNOME:

GNOME 2.26 para Fedora 11

GNOME 2.26

Soporte para mltiples monitores y proyectores, Comunicacin casi teleptica, Barra de direcciones de Epiphany, Integracin de lector de huellas.

Y muchos otros cambios que harn el deleite de los usuarios.

El nacimiento de nuevas comunidades en Linux siempre es una buena noticia y en este caso an ms ya que se ha producido el lanzamiento del sitio oficial de Fedora Paraguay, lo cual deja patente que la comunidad Fedora es una comunidad viva, unida y que crece da a da. En efecto en marzo inici su andadura en la web y desde aqu queremos dar la ms cordial felicitacin a los que han hecho posible esta gran idea. http://proyectofedora.org/paraguay/ No es de extraar al menos para la comunidad Fedora que el resto del mundo Linux se vea sorprendido gratamente por las cualidades de las ltimas versiones de esta distribucin. Las estadsticas, aunque siempre fras, no dejan lugar a dudas y nos muestran un incremento del 15% de usuarios en Fedora 10 respecto a la anterior versin. Entre los motivos que se apuntan como responsables de este aumento de usuarios podemos citar: el hecho de que la innovacin sea un compromiso del equipo realizador, que la calidad sea una conditio sine qua non, y que es acreedora de una de las mayores y mejores comunidades de apoyo de Linux.
Fedora Cada vez ms usuarios

No se trata slo del escritorio, GNOME 2.26 es la ltima versin de la plataforma de desarrollo GNOME. Los desarrolladores saben bien lo que es esto, se trata de un conjunto de bibliotecasAPI yABI disponibles bajo la licencia GNU LGPL que se pueden usar para desarrollar aplicaciones multiplataforma. Segn la web, a partir de GNOME 3.0 se empezarn a eliminar diversas partes de GNOME obsoletas, como libgnome, libgnomeui, libgnomeprint, libgnomeprintui, libgladey libgnomevfs. Para las aplicaciones que se incluyen en el Escritorio GNOME, se han llevado a cabo ciertas tareas de limpieza para asegurar que no se usa ningn cdigo obsoleto. Nueva grabacin de discos completa, Esto asegurar una transicin suave a GNOComparticin de archivos simple, Evolution evoluciona su migracin desde ME 3.0. Desde la pgina oficial del proyecto, se Windows, urge a los desarrolladores que sigan el ejemplo Mejoras en el reproductor multimedia, Control de volumen integrado con Pulse- en sus propias aplicaciones. Audio,

Novedades para los desarrolladores

Quin dira que podemos tener iniciado el sistema en 5 segundos? Yo por supuesto que no... Acabo de leer que en la Linux Plumber Conference o sea la conferencia sobre fontanera Linux, es decir lo que hace funcionar un Linux en las entraas, que segn se comenta ha sido lo ms interesante de los ltimos aos en lo que a nuestro sistema se refiere. Pues bien los ingenieros de Intel que se dedican a Linux han hecho una demostracin pblica de algo sorprendente, un sistema Linux que tarda en cargar nicamente cinco segundos. El sistema en cuestin se trata de un EEE PC de Asus y adems con la parti-

La velocidad en extremo

cularidad de que estaba equipado con un disco duro flash, si se equipase con un disco duro tradicional la velocidad se vera reducida y tardara unos 10 segundos. Aunque a simple vista pudiera parecer algo tpico de Hackers y de dudosa utilidad para distribuciones de uso comn, no es algo tan descabellado. Segn se desprende de lo visto en la conferencia, en los sistemas de escritorio el 95% se podra sustentar en un kernel con algunos mdulos compilados estticamente y el 5% restante con un kernel alternativo que lleve initrd.

14

Linux+ 6/2009

Si no puedes leer el disco DVD y no notas ningn tipo de deterioro mecnico, por favor, prubalo en al menos dos unidades de disco diferentes.

6/2009

En caso de problemas, escribir a: dvd@lpmagazine.org

Cloud Computing Cloud Computing: El sistema operativo EyeOS

Cloud Computing:
El sistema operativo EyeOS
Jos B. Als Alquzar

Bajo el trmino Cloud Computing, se engloba un conjunto de soluciones tecnolgicas que permiten ofrecer servicios de computacin a travs de los protocolos TCP-IP, de forma que todo aquello que pueda ofrecer un sistema informtico concreto, tanto a bajo nivel como a nivel de aplicacin, es accesible a usuarios ajenos a ste.

n el paradigma Cloud Computing, de conformidad a lo establecido por IEEE Society, la informacin se almacena de forma permanente en servidores conectados a la red, siendo enviada a las cachs temporales de cada cliente, como equipos de sobremesa, porttiles, y por supuesto, los novedosos Netbooks a fin de lograr un mejor aprovechamiento de los recursos ofertados por el hardware actual. Esto es especialmente importante de cara a no confundir con la computacin Grid, en la que el propsito final es la produccin de un supercomputador virtual integrado por diferentes nodos remotos actuando conjuntamente para realizar actividades de proceso masivo de clculos y datos. Cualquier usuario al conectarse a Internet puede encontrar numerosos ejemplos de todo ello, como los ofertados por Google Apps, Amazon EC2 y Microsoft Azure, que permiten acceder a aplicaciones comunes a partir de un navegador Web aprovechando la generalizacin de las tecnologas AJAX y Web 2.0. Aun cuando existe una tendencia generalizada a confundir los trminos Cloud Computing y Grid Computing, el motivo fundamental que explica su aparicin es la necesidad de albergar aplicaciones como servicios externos (SaaS) a un

linux@software.com.pl

En este artculo aprenders ...


Instalacin, configuracin y administracin del SO eyeOS. Configuracin bsica de eyeOS.

determinado dispositivo o computador, de forma que sean fcilmente accesibles a los usuarios de estos, sin necesidad de poseer una copia local de estas instaladas en sus equipos. Cloud Computing no es ms que el resultado de la evolucin lgica de la informtica iniciada en la dcada de los 60 y 70 con los mainframes y continuada en los 80-90 con los equipos personales. Otra alternativa, para evitar la posible dependencia de cdigo no libre y que tanto preocupa a los responsables de la GNU Foundation son los sistemas FLOSS o SO libres para Clould Computing. En este sentido, el proyecto eyeOS nace como respuesta a estas necesidades, adems de proporcionar una compatibilidad con soluciones propietarias actualmente en uso as como a desarrollos cerrados de WebOS como Microsoft Azure.

16

Linux+ 6/2009

Cloud Computing Cloud Computing: El sistema operativo EyeOS

Lo que deberas saber ...


Nociones bsicas de tecnologas Cloud Computing y Web 2.0. Conocimientos de sistemas Unix a nivel de desarrollador. Instalacin de paquetes en sistemas GNU/Linux. Configuracin de servidores HTTP Apache 2.x.

Caractersitcas fundamentales de eyeOS

El sistema operativo eyeOS proporciona los servicios bsicos descritos con antelacin de los sistemas WebOS de cara a satisfacer la necesidad de que las aplicaciones sean accesibles remotamente por los usuarios desde un navegador compatible con los estndares W3C: Gestin de ficheros, permite la carga y descarga (upload/download) de mltiples fi- cheros con capacidades de compresin ZIP/ USTAR as como su visualizacin. Gestin de informacin personal y contactos, incluyendo calendario con mltiples vistas, gestor de contactos y posibilidad

El advenimiento de las tecnologas Web 2.0 ha conducido al desarrollo de sistemas operativos basados en esta estructura, denominados como WebOS y que se prev conduzca al nuevo paradigma Web 4.0 en el futuro. EyeOS es un sistema operativo orientado Listado 1. Instalacin de los mdulos PHP a la computacin distribuida y que require hospedaje HTTP para su instalacin y posterior # yum install mod_suphp puesta en marcha elaborado por www.eyeos.org y liberado bajo la licencia GPL Affero (AGPL ========================================================================= ======= versin 3).
Package eyeOS=Internet + Ficheros + Aplicaciones Size ========================================================================= ======= Installing: mod_suphp 89 k php i386 0.6.3-1.fc9 fedora Arch Version Repository

de exportacin e importacin de estos en formato vCard. Aplicaciones ofimticas; incorpora un procesador de textos, hoja de clculo y motor de presentaciones, todos ellos compatibles con MS Office y las suites ofimticas OpenOffice y StarOffice. Comunicaciones; posee un sistema de mensajera interna para los usuarios de eyeOS, un bulletin board, cliente proxy FTP as como un lector de semillas RSS. Administracin del sistema; permite la instalacin de paquetes y cuenta adems con un novedoso repositorio basado en ports, caracterstica asimilada de los sistemas FreeBSD/NetBSD adems de la gestin de usuarios y grupos.

El propsito fundamental de eyeOS consiste en la creacin de un producto de fcil instalacin, configuracin y gestin, que permita a un usuario de sistemas UNIX poseer su propio sistema de cloud computing bajo su entero control, permitiendo adems la participacin en una comunidad de usuarios y desarrolladores cada vez ms amplia, con la finalidad de desarrollar sus propias aplicaciones para este sistema. En cualquier caso, los responsables del proyecto ofrecen como alternativa a la instalacin del producto, la apertura de una cuenta de usuario en su sistema a fin de poder evaluar las bondades del producto. Para mayor informacin, conectar con http://www.eyeos.info amn de numerosos documentos y podcast informativos acerca de este.

Installing for dependencies: i386 i386 i386 1.2 M php-cli 2.3 M php-common 228 k

5.2.6-2.fc9 5.2.6-2.fc9 5.2.6-2.fc9

updates-newkey updates-newkey updates-newkey

Listado 2. Instalacin del soporte multilenguaje PHP


# yum install php-mbstring ========================================================================= ======= Package Size Arch Version Repository

Acrnimos y abreviaturas
CVS : Control Version Source, DAV : Web-based Distributed Authoring and Versioning, DSO : Dynamic Shared Object, EC2 : Elastic Cloud Computing, FLOSS : Free Libre Open Source Software, ODF : Open Document Format, SaaS : Software As A Service, SVN : Subversion Management System.

========================================================================= ======= Installing: php-mbstring 1.1 M Transaction Summary ========================================================================= ======= Install Update Remove 1 Package(s) 0 Package(s) 0 Package(s) i386 5.2.6-2.fc9 updates-newkey

Total download size: 1.1 M

www.lpmagazine.org

17

Cloud Computing Cloud Computing: El sistema operativo EyeOS

Figura 2. Acceso y autentificacin de usuarios en eyeOS

legios de lectura y escritura en los directorios resultantes de la descompresin del fichero ZIP; esto es, por debajo de eyeos/ a fin de poder iniciar el proceso de instalacin propiamente dicho.

Figura 1. Instalacin del sistema operativo eyeOS

Uno de los puntos ms importantes que permite En el directorio DocumentRoot, descomeyeOS es la posibilidad de gestionar mltiples primir el fichero eyeOS_1.8.0.4.zip: # cd /var/www/html instancias de una misma aplicacin. # unzip eyeOS_1.8.0.4.zip Por otra parte, eyeOS viene con un conjunto de aplicaciones instaladas aunque existe Posteriormente, seleccionar la URL http:// localhost/eyehost y el proceso de instala posibilidad de migrar aplicaciones propias, lacin del producto se iniciar de forma simplificando ostensiblemente los costes de automtica. administracin y mantenimiento, o desarrollar nuevas aplicaciones para el sistema. Evidentemente, el usuario utilizado para ejecuRequisitos previos tar los demonios httpd(8) deber poseer priviLos requisitos de instalacin son los siguientes: Servidor HTTP con soporte PHP5 para cadenas multibyte UTF-8, o superior, como Apache 2.0.39 o superior. Cliente HTTP compatible con las especificaciones W3C como Mozilla Firefox 2 o MSIE 6.

Sin duda y debido a la apariencia de eyeOS, no faltar quien piense que no se trata ms que de otra aplicacin Web 2.0. Nada ms lejos de la realidad, ya que eyeOS posee un sistema propio de planificacin y gestin de procesos, como puede verse en la Figura 5. Las tareas tpicas de administracin de usuarios y grupos se pueden realizar a partir del men System Preferences que muestra una ventana repleta de enlaces para la configuracin del escritorio, modificacin de datos de usuario, as como la creacin de usuarios y grupos, y finalmente, la definicin de repositorios.

Tareas bsicas de administracin en eyeOS

Listado 3. Habilitacin del mdulo UserDir en Apache


<IfModule mod_userdir.c> # # Esta directiva requiere habilitar el control de acceso de los # directorios /home/*/public_html mediante <Directory>...</Directory>. # UserDir enable UserDir public_html </IfModule> <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory>

Generalmente, aunque la mayora de las distribuciones Linux incorporan el servidor Apache por defecto, los mdulos DSO PHP no son instalados. Para obviar este inconveniente, es preciso descargar dicho servidor. En un sistema basado en la distribucin de paquetes RPM, se podra realizar esta operacin mediante yum. que adems deposita el fichero de configuracin php.conf necesario para la carga de dicho mdulo por el servidor Apache. Finalmente, es preciso instalar el modulo mbstring para habilitar el soporte UTF-8 para aplicaciones PHP: Una vez realizada la configuracin del servidor HTTP, el proceso de instalacin es muy simple teniendo en cuenta el fichero de configuracin httpd.conf del servidor Apache:

18

Linux+ 6/2009

Cloud Computing Cloud Computing: El sistema operativo EyeOS

Figura 6. Administracin del sistema eyeOS

Es importante recordar que la habilitacin del soporte para los ficheros MS Office/Open Office requiere OpenOffice.org junto con la instalacin macro de cara a poder utilizar esta funcionalidad con eyeOS Word Processor.

Gestin de Contactos: EyeAddressBook


EyeOS incorpora por defecto un gestor de contactos con una coleccin de funcionalidades Figura 3. Escritorio del sistema operativo eyeOS semejantes a las existentes en otras aplicaciones Cada usuario eyeOS posee por defecto sus Por otro lado, un usuario puede adscribirse a un similares, permitiendo tambin la definicin de propias carpetas donde se almacenan tanto sus grupo concreto, lo cual resulta de gran inters al grupos de contactos, la importacin de imgeficheros como los parmetros de configuracin generalizar el uso de eyeOS a entornos comple- nes, as como datos binarios. de estos: jos e incluso de carcter empresarial.
./files/Documents: ./files/Images: ./files/Music: ./files/Videos: ./public: ./swap: ./tmp: ./trash:

Descripcin de Aplicaciones

Gestin multimedia audio: EyeMedia

Figura 4. Aplicaciones disponibles

EyeOS introduce en su escritorio sustanciales mejoras, como una barra de aplicaciones minimizada indicando qu aplicacin se est utilizando en cada momento, as como en la gestin de ventanas, que indica en todo momento la ventana activa; o como una nueva coleccin de iconos. Adems, existe la posibilidad de utilizar un escritorio menos pesado, ya existente en las versiones eyeOS 1.x y conocido como Light Desktop junto con la capacidad para utilizar extensiones adicionales como Fusion y Oxigene, disponibles en la seccin Theme, correspondiente al men System Preferences. Dentro de este contexto, y teniendo en cuenta que eyeOS se encuentra todava en fases tempranas de madurez (especialmente en lo concerniente a la documentacin accesible), vamos a detallar alguna de las aplicaciones ms importantes disponibles en la versin objeto del presente artculo.

A fin de mejorar las prestaciones de eyeMP3, como aplicacin disponible en anteriores versiones de eyeOS, Hunter Perrin ha desarrollado eyeMedia, que permite gestionar listas de msica o playlists de cara a convertir eyeOS en una especie de reproductor de msica online tal y como se muestra en la Figura 9.

Comparticin de ficheros con otros usuarios eyeOS


El cuadro de dilogo Share with accesible tanto desde el men contextual de eyeOS co-

Procesadores de textos: EyeOS Word Processor

Figura 7. Procesado de textos eyeOS Word Processor

Figura 5. El gestor de procesos de eyeOS

Dotado de una apaciencia similar a los procesadores de textos existentes en la actualidad, tal y como aparece en la Figura 7, eyeOS Word Processor incorpora un diseo de pgina mejorado, con nuevas herramientas accesibles a travs de una barra de herramientas y la posibilidad de trabajar con formatos MS Word, OpenDocument Figura 8. Gestin de contactos. eyeAdressBook (ODF) adems del formato nativo eyeOS.

www.lpmagazine.org

19

Cloud Computing Cloud Computing: El sistema operativo EyeOS


de instalacin se iniciar de forma automtica, siempre y cuando se disponga de conexin a Internet. Opcionalmente, actualizar el cdigo a la ltima versin mediante el comando:
$ svn update

Desarrollo de aplicaciones en eyeOS

Figura 9. Aplicaciones multimedia. eyeMedia

Figura 10. Comparticin de ficheros en eyeOS

mo desde el panel Actions presente en Files Manager permite la copia directa de ficheros a los grupos de usuarios creando enlances entre los ficheros privados de usuario y los grupos de usuarios compartidos, tal y como se indica en la Figura 10, a fin de hacer posible la distribucin de ficheros, siempre y cuando se posean los permisos necesarios para ello. Tambin, y como colofn, es posible descargar e instalar o actualizar el sistema eyeOS a travs del enlace Donwloads page presente en el escritorio; actividad a tener presente debido a que el desarrollo de eyeOS se encuentra en permanente evolucin.

Resulta interesante tambin aleccionar a la comunidad de desarrolladores interesados en colaborar con el desarrollo de eyeOS como sistema webOS sobre los pasos a seguir de cara al trabajo dentro de este mbito. El cdigo fuente de eyeOS es accesible a travs del repositorio SVN desde la siguiente URL: https:// eyeos.svn.sourceforge.net/svnroot/eyeos/ eyeOS/branches/production/. que contiene la rama de desarrollo estable actual. A tal efecto, debern instalarse en el equipo local los interfaces CLI de Subversion, disponibles en http://subversion.tigris.org. Tngase en cuenta que la revisin de eyeOS dentro del repositorio Subversion est especficamente concebida para su utilizacin en un entorno de desarrollo de software y no est en absoluto pensada para los usuarios finales. De este modo, la obtencin del cdigo de desarrollo puede resumirse en tres pasos detallados a continuacin: Ejecutar el comando svn(1):
$ svn checkout https://eyeos.svn .sourceforge.net/svnroot/eyeos/ eyeOS/branches/production

Una posibilidad interesante reside en utilizar el mdulo userdir en el servidor Apache editando el fichero httpd.conf tal y como se muestra en el Listado 1, de tal modo que descarguemos la rama de desarrollo eyeOS dentro del directorio public_dir. Este mdulo, permite la adicin de un directorio definido previamente en el fichero de configuracin httpd.conf cada vez que se inicie en el navegador WWW una solicitud que contenga la cadena ~user. Para ello deben satisfacerse las siguientes condiciones: El rbol de directorios que llevan hasta public_html deben ser accesibles al usuario que ejecuta el servidor HTTP. El directorio ~userid debe poseer permisos 711. El directorio ~userid/public_html debe poseer permisos 755.

En caso de no procederse de la forma indicada, el servidor HTTP lanzar como resultado el error 403. Forbidden. Tras lo cual, deber procederse de nuevo a la parada y arranque del servidor HTTP mediante el comando: $ apachectl stop && apache ctl start a fin de efectuar la carga del nuevo mdulo.

Instalacin de nuevas aplicaciones


Uno de los puntos dbiles de eyeOS en el momento actual es la ausencia de repositorios consolidados para la descarga de aplicaciones, as como su estado de madurez. No obstante, eyeOS permite la instalacin de nuevas aplicaciones mediante un sencillo procedimiento que se describe a continuacin. Seleccionar el men Applications AT, Acceder al men Install Apps, Una vez aparece en pantalla la ventana con el ttulo Packages Manager, seleccionar Update.

Figura 11. Configuracin de eyeSync

De este modo, a la izquierda del escritorio eyeOS aparece el listado Categories que permite seleccionar la o las aplicaciones deseadas. Una vez realizada esta seleccin, nicamente es preciso seleccionar el botn Install y el proceso Figura 12. Configuracin de eyeSync

20

Linux+ 6/2009

Cloud Computing Cloud Computing: El sistema operativo EyeOS


a partir de la URL http://www.eyeos.org/downloads y seguir los siguientes pasos: Verificar que el sistema anfitrin posee los siguientes paquetes instalados: Qt 4.3 o superior, Extensin Python pyQt4 disponible en http://www.riverbankcomputing.co.uk/ pyqt, Extensin PyNotify, disponible en http:// pynotify.sourceforge.net para monitorizacin de sistemas de ficheros. Figura 14. Jugando al ajedrez con eyeOS

Figura 13. Sincronizacin de directorios en eyeOS

Una vez obtenido el cdigo fuente de eyeOS, es necesario dotarse de las herramientas de desarrollo cliente, presentes en eyeOS toolkit, que permitirn la realizacin de operaciones de depuracin sin necesidad de volver a ejecutar la aplicacin. Para ello, siempre y cuando el desarrollador utilice Firefox como navegador por defecto, es conveniente descargar el addon Firebug desde http://addons.mozilla.org. Firebug es un complemento ideal no slo para el desarrollo de aplicaciones eyeOS sino para cualquier tipo de aplicaciones web gracias a su integracin con el navegador. En cualquier caso, y como conclusin, el siguiente paso ser la lectura de la documentacin asociada: eyeOS Application Manual y Developers Reference, disponibles en http://wiki.eyeos.org/ Developers_Reference_Index.

Sincronizacin remota mediante eyeSync

EyeSync es una aplicacin que permite sincronizar ficheros entre plataformas locales de usuario como MS Windows XP, MacOS X Leopard y, por supuesto, GNU/Linux para hacerlos accesibles a eyeOS. Para la utilizacin, es preciso descargar el paquete de instalacin. Desgraciadamente, slo est disponible el paquete DEB, por lo cual, vamos a realizar la instalacin a partir del cdigo fuente, $ tar xvfz
eyeSync_1.0_Alpha_Source.tar.gz && cd eyeSync-1.0Alpha/

Sobre el autor
Jos B. Als es administrador de sistemas especializado en SunOS 5.x/HP-UX/AIX desde 1999 de la mano de EDS, desarrollando su trabajo en Telefnica de Espaa, S. A. U.; y lleva trabajando con sistemas GNU/Linux desde los tiempos del ncleo 1.2.13. Ha sido profesor de la Universidad de Zaragoza. Est especializado en sistemas de Alta Disponibilidad y posee un doctorado en Ingeniera Nuclear.

En caso contrario, proceder a su instalacin. Conclusiones finales En distribuciones GNU/Linux basadas en Tras esta breve introduccin a eyeOS como RPM, la forma ms simple es mediante la uno de los exponentes ms prometedores de la nueva generacin de sistemas webOS para utilidad YUM: Cloud Computing, debe tenerse en cuenta la # yum install PyQt.i386 pythongran cantidad de posibilidades que encierra, inotify.i386 especialmente con los esfuerzos de la comunidad de desarrolladores de nuevas aplicaciones. y para sistemas basados en Debian: Para ello nada mejor que utilizar el repositorio SVN donde pueden encontrarse las ltimas # apt-get install python-pyinotify versiones disponibles de la documentacin python-qt4 sobre este sistema. Uno de los aspectos ms destacables de Ejecutar el script Python eyeSync utilizan- eyeOS es la posibilidad de contar, adems del do un usuario eyeOS con permisos de es- nivel de soporte Open Source, con un soporte critura en este, que da como resultado una profesional, que ofrece a las empresas unos pantalla tal y como se muestra en la Figura tiempos de respuesta a incidencias sustan11 para su configuracin preliminar: cialmente ms reducidos (que llega incluso a niveles de asistencia in-house para el nivel En el men 'Preferences' deber seleccionarse de soporte Premium). la URL de acceso al sistema eyeOS, tras lo cual, No contentos con ello, el proyecto eyeOS debe reiniciarse eyeSync. posee tambin tres niveles de formacin, dirigidos a usuarios finales, administradores del Finalmente, seleccionar los directorios del sistema y desarrolladores del mismo, respecsistema operativo local que se deseen sin- tivamente. Adems, eyeOS ha sido selecciocronizar con eyeOS tal y como se indica nado para la prxima Cloud Computing Expo en la Figura 12. 2009 a celebrar en Nueva York como alternativa libre. El resultado de esta operacin, puede apreciarse directamente en la Figura 13 al iniciar una sesin en eyeOS, donde podemos ver los ficheros correspondientes a este artculo directamente En la red en nuestro entorno Cloud Computing. EyeOS Web SO Main Site: Conviene no olvidar que eyeSync es una http://www.eyeos.org aplicacin independiente que debe ser ejecu Comunidad de desarrolladores tada por cada usuario definido en eyeOS con EyeOS: permisos de lectura/escritura, por lo que su inshttp://eyeos.org/en/developers talacin en el equipo local deber ser accesible EyeOS Wiki Main Site: a todos los usuarios que deseen utilizarla. http://wiki.eyeos.org Otra actividad importante es la realizacin Apache HTTP Server Main Site: de copias de seguridad, mediante eyeBackup, http://www.apache.org que estar disponible en un futuro prximo. De PHP Language Main Site: momento, la opcin ms razonable, es la realihttp://www.php.net zacin de copias de seguridad tradicionales o Subversion (SVN) Main Site: bien mediante software dedicado como Bacula, http://subversion.tigris.org NAS Backup o BackupPC.

www.lpmagazine.org

21

Cloud Computing Cloud Computing: La gran oportunidad para Linux?

Cloud Computing:
Diego Gernan Gonzalez

La gran oportunidad para Linux?


Desde la liberacin en 1992 de las primeras distribuciones se viene vaticinando el gran despegue de Linux. 17 aos despus ni el inters de grandes empresas como IBM, ni la aparicin de una distro orientada especficamente al pblico masivo como UBUNTU, ni el atractivo innegable para el usuario sin conocimientos de proyectos como COMPIZ han permitido perforar el techo del 1% del mercado.

n cuanto al tan deseado aluvin de nuevos usuarios que se esperaba a causa de la desilusin con Windows Vista se qued en algunos miles, el resto de los no conformes se volvi a XP. Digmoslo de esta manera, la batalla por el mercado de los sistemas operativos de escritorio est terminada y la gan Microsoft. Significa eso que debemos resignarnos a ser una minora? No, segn algunos especialistas la industria informtica tal cual la conocemos est por cambiar y con ese cambio la relacin de los usuarios con sus computadoras. En los ltimos tiempos en los portales y publicaciones dedicados a la informtica se est hablando mucho de la computacin en nube o Cloud Computing, algunos creen que ser un punto de inflexin que marcar la nueva era en Internet. Para otros sin embargo es slo la forma en que la industria de la tecnologa de la informacin aplica una vieja tcnica de los fabricantes de productos de consumo masivo, cambiar el envase para hacer creer que un producto es nuevo. En este artculo vamos a explicar por qu creemos, o mejor dicho, deseamos que la computacin en nube sea una revolucin en el mercado de la informtica y por qu en caso

linux@software.com.pl

de serlo es lo que Linux en particular y el cdigo abierto en general estaban necesitando.

Caractersticas de la Cloud Computing

Estoy escribiendo el borrador de este artculo en mi Palm z22, para corregirlo lo pasar por medio del programa JPILOT al disco rgido de mi computadora. Una vez terminado ir como archivo adjunto en un e-mail a la redaccin de la revista, la cual lo guardar y reenviar a los betatester, que a su vez lo archivarn en sus respectivos dispositivos de almacenamiento. Imaginen en cambio que yo desde mi Palm lo mandar va web a un servidor, ingresar a l desde mi computadora para hacer las correcciones y despus comunicar a la revista que ya est listo para su revisin. Ellos a su vez habilitarn un acceso restringido a los betatester para hacer los comentarios que consideren convenientes, la cantidad de hardware necesario y de copias se reduce notablemente. Esa es la idea, el usuario con un equipo con las capacidades suficientes para conectarse a Internet puede acceder por medio de sta al software y hardware que le haga falta slo cuando le haga falta.

22

Linux+ 6/2009

Cloud Computing Cloud Computing: La gran oportunidad para Linux?


Detrs de la computacin en nube hay una tecnologa y un concepto clave: virtualizacin y escalabilidad. La virtualizacin permite que varios usuarios utilicen en un mismo servidor diferentes sistemas operativos y aplicaciones. Cuando la capacidad de ese servidor se ve sobrepasada, el exceso de trabajo se transfiere automticamente a otro servidor conectado en lnea, eso es escalabilidad. Algunas de las consultas ms comunes en los foros tienen que ver con el reemplazo de programas de Windows en Linux, existen casos de aplicaciones muy especficas que todava no tienen equivalencia. Con la tecnologa de la computacin en nube podramos usar una de esas aplicaciones en Windows, hacer la cartula del informe en Mac y mandarla por e-mail con la versin Linux de Thunderbird, y todo sin resetear. En un documento conocido como El manifiesto de la nube abierta del cual hablaremos ms tarde, se da una muy buena descripcin sobre las posibilidades de esta tecnologa. La caracterstica principal de la nube es la posibilidad de ofrecer servicios de computacin escalables a un costo eficiente permitiendo al usuario utilizar todo su poder sin necesidad de tener que manejar las complejidades subyacentes a la tecnologa. Ya sea que la nube resida en la red privada de una organizacin o est en Internet, sus ventajas son las siguientes: Processes y en la descripcin del tem los autores se refieran claramente a actividades comerciales, bien podemos permitirnos una interpretacin ms amplia. En la redaccin original se habla de organizaciones, sus asociados y sus proveedores compartiendo una infraestructura tecnolgica que les permita intercambiar informacin y reducir costos dedicndose a sus actividades especficas. Sin embargo el modelo bien puede aplicarse a otros mbitos. Alumnos preparando un trabajo prctico a travs de un software de colaboracin en red, el profesor calificndolo y la nota ingresando automticamente al expediente de cada uno. Todo hecho con una misma nube alojada en el datacenter de la Universidad. y que por una vulnerabilidad en la base de datos de las claves de acceso, una de las empresas logra tener acceso a los planes de desarrollo de nuevos productos de la otra. Las prdidas de la empresa perjudicada seran varias veces mayores que el ahorro de costos en tecnologa de la informacin. Pero no slo puede darse esta situacin por neglicencia sino tambin por corrupcin, los empleados de la empresa que administra la infraestructura podran utilizar su acceso privilegiado para ganarse un sueldo extra. Se trata entonces de establecer unos adecuados procedimientos en materia de autenticacin, validacin, medios de acceso y utilizacin de los servicios, adems de normas de control interno para el personal que garanticen la transparencia de las operaciones.

Reduccin de los costos de inicio


Toda actividad nueva requiere una inversin de puesta en marcha y difcilmente en la actualidad se pueda emprender alguna que no requiera la utilizacin de recursos computacionales. La nube pone a disposicin de estos proyectos un datacenter ya funcionando permitiendo destinar ms fondos a otras partes del proyecto. Desde ya que no hay rosas sin espinas, analicemos brevemente algunos de los desafos y barreras que segn los signatarios del manifiesto deben tenerse en cuenta.

Interoperabilidad entre datos y aplicaciones


Para que las ventajas de la computacin en nube sean posibles es necesario que datos y aplicaciones alojados en diferentes lugares fsicos puedan interactuar entre s.

Portabilidad de datos y aplicaciones

Adaptacin del tamao segn las necesidades


Tanto las organizaciones como las personas debemos hacer frente a un entorno cambiante, cambios que requerirn diferentes soluciones computacionales. El organismo recaudador de impuestos de una zona de veraneo tiene que optar por ver colapsados sus equipos en los tres meses de mayor trabajo, o verlos subutilizados los otros nueve. Un juego en red requiere diferentes capacidades grficas que un procesador de textos, sin embargo, cuando escribimos, la tarjeta grfica sigue estando ah. El aporte de la cloud computing es, se paga por lo que se usa.

Uno de los factores que tendr en cuenta cualquier organizacin a la hora de optar por Seguridad servicios de computacin en nube es la depenSupongamos que Coca Cola y Pepsi utilizan dencia de su proveedor, es decir la facilidad el mismo proveedor de servicios de nube con que puede migrar a otro o volver a un

Reduccin del centro de datos


Para cualquier organizacin tener un centro de datos significa una importante inversin en tecnologa, programas, personal que lo opere e instalaciones adecuadas para su funcionamiento.

Mejoramiento de procesos de negocios


Aqu aunque opt por mantener una traduccin literal del original ingls Improving Business Figura 1. Participacin de mercado de sistemas operativos en marzo 2009

www.lpmagazine.org

23

Cloud Computing Cloud Computing: La gran oportunidad para Linux?


datacenter tradicional. Es muy fuerte la tenta- cin de muchas compaas del sector a tener clientes cautivos por lo que se hace necesario el establecimiento de estndares que permitan el cambio. Adopta la API de Amazon EC2, Cualquiera utilizando herramientas de cdigo abierto como Eucalyptus pueda crear su propia nube, Facilidad de creacin de AMI'S (Amazon Machine Image) de Ubuntu, adaptadas a las necesidades de cada usuario, Creacin de herramientas para utilizar en Amazon EC2 tan fciles de utilizar como APT para el manejo de paquetes, Uso eficiente del consumo de energa para reducir al mnimo su consumo cuando el hardware no es utilizado.

Linux en el mercado

Administracin
Las polticas de licencias, manejo del ciclo de vida y clculo de costos utilizados en el esquema tradicional del manejo de tecnologa de la informacin no son aplicables a la Cloud Computing por lo que deben crearse otros ms adecuados.

Medicin y monitoreo
Para tomar decisiones es necesario tener informacin, para poder comparar informaciones de orgenes diferentes es necesario que exista una consistencia. Es mejor proveedor A o B? Conviene crear una nube privada o utilizar una basada en Internet? Todo esto lleva a la necesidad de creacin de un sistema de medicin normalizado que permita comparar los datos de funcionamiento brindados por las diferentes compaas proveedoras de servicio y organismos verificadores que determinen la veracidad de las mismas. La importancia que pueden tener los servicios de computacin en nube pueden verse en dos de las distribuciones liberadas a principios de este ao, Ubuntu Jaunty Jackalope y Novell Suse Enterprise Edition.

Novell

La versin 11 de Suse Enterprise Edition lanzada en marzo de este ao, promete grandes avances en materia de virtualizacin, interoperabilidad, alta disponibilidad e informtica de escritorio. Incluye el monitoreo de mquinas virtuales (plataforma de visualizacin que permite utilizar simultneamente ms de un sistema operativo) Xen 3.3, y est optimizada para correr en otros hipervisores como VMware ESX o Microsoft Hyper-V. En abril lanzar SUSE Linux Enterprise JeOS (Just enough Operating System), una versin que traer solamente las partes del sistema operativo necesarias para el desarrollo de aplicaciones virtuales. Esta versin est certificada para funcionar en la plataforma Amazon EC2.

Hace un tiempo escrib en el foro de esta revista mi opinin en el sentido de que el software libre si bien deba seguir siendo libre, debera dejar de ser gratuito y que su desarrollo debera dejarse en manos de empresas. Mi argumento era el siguiente: en la actualidad al ser el trabajo de desarrollo realizado en su mayor parte por voluntarios, el software libre no logra el nivel de calidad del software propietario. Es cierto que cualquiera de las distros es mejor que Windows; pero Gimp no tiene las prestaciones de Photoshop, OpenOffice.org Calc no tiene todas las funciones de Excel, ni Cinelerra la de SONY VEGAS. Otro tema es el de los foros de ayuda, muchos de los participantes se quejan de contestar siempre las mismas preguntas, y muchos de los que necesitan ayuda de no encontrar respuestas. El poder pagar personas que se puedan dedicar full time a programar y contestar preguntas mejorara notablemente la calidad del software. Adems el tener que competir en el mercado eliminara la superabundancia de distros que no aportan nada. A decir verdad en cada foro que plante esta postura no tuve ninguna adhesin, aunque ms all de lo extremista de mi postura es un hecho de que las organizaciones con fines de lucro tienen cada vez mayor participacin en el desarrollo. En un estudio sobre la evolucin y contribuciones al kernel se detalla que

Ubuntu

Quienes probaron la versin beta de Jaunty Jackalope o la final, que al momento de publicacin de este artculo es probable que est disponible, habrn notado dos cosas. Los dineros que Mark Shuttleworth decidi gastarse en pagar a diseadores grficos dieron sus frutos en una mejora del aspecto visual (al menos en la pantalla de inicio) y la inclusin en los repositorios de Eucalyptus (Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems), un proyecto de la Universidad de California en Santa Brbara destinado a generar una infraestructura de software de fuente abierta para la implementacin de proyectos de Cloud Computing. Pero lo de Jaunty apenas son atisbos de lo que traer Karmic Koala, la versin a liberarse en octubre de este ao. En un e-mail enviado a los desarrolladores Shuttleworth explica cuales sern las caractersticas vinculadas al tema de la nube. Estar a la vanguardia de Cloud Computing Figura 2. Participacin segn versin utilizando software libre,

24

Linux+ 6/2009

Cloud Computing Cloud Computing: La gran oportunidad para Linux?


en su mayor parte fueron hechas por programadores e ingenieros de software de grandes corporaciones norteamericanas, exactamente un 74,2%. Las principales contribuciones son de Red Hat, Novell, INTEL e IBM. Y si vamos ms all del ncleo, con excepcin de Debian, las distros ms usadas, Ubuntu, OpenSuse y Fedora estn apoyadas por empresas. Openoffice.org cuenta con el respaldo de Sun, el principal financiador de la fundacin Mozilla (Firefox y Thunderbird) es Google, Canonical paga desarrolladores y diseadores grficos para GNOME y KDE. Como muchos de nosotros utilizamos versiones gratuitas tendemos a creer que desarrollar Linux es gratis, sin embargo siempre segn la Linux Foundation, el costo de desarrollar la versin 9 de Fedora puede calcularse en 10,8 billones de dlares (en EE.UU. un billn son mil millones) a lo que hay que sumarle 1,4 billones en desarrollo del kernel. Para todos los que estudian la disciplina del marketing, los libros de Philip Kotler son el equivalente de la Biblia para los telogos. Para entender el por qu sostenemos el fracaso de Linux permtanme un breve resumen de lo que dice este autor sobre la estructura de los mercados competitivos. Este autor divide a los participantes en un mercado segn sus fortalezas y debilidades en: Dominante: este participante en el mercado puede controlar el comportamiento de los dems participantes. Fuerte: este participante en el mercado puede mantener su independencia y libertad de accin. Favorable: este participante tiene posibilidades de mejorar su posicin en el mercado, obtiene resultados lo suficientemente buenos para justificar su continuidad pero su existencia depende de lo que haga el competidor dominante y no est en sus manos mejorar su posicin. Sostenible: este participante en el mercado obtiene resultados lo suficientemente buenos para justificar su continuidad pero su existencia depende de lo que haga el competidor dominante y no est en sus manos mejorar su posicin. Dbil: este participante tiene un desempeo insatisfactorio pero hay posibilidades de mejorar. Inviable: este participante no tiene un desempeo satisfactorio ni tampoco posibilidad de mejorar. Si bajamos el anlisis al detalle de utilizacin por versin, Linux desciende al sexto lugar detrs de: Windows XP 62,85%, Windows Vista 22,91%, Mac OS X 10.5 6%, Mac OS X 10.4 2,66%, Windows 2000 1,24%.

Segn su actitud pueden calificarse en:

Competidor rezagado: no reacciona con rapidez ni fuerza a las acciones de los otros participantes. Competidor selectivo: solamente responde a determinado tipo de acciones de los otros participantes. Competidor tigre: reacciona rpidamente a todas las acciones de los otros participantes. Competidor aleatorio: nadie sabe a qu, cmo y por qu va a reaccionar. Segn el tipo de posicin competitiva que uno ocupe en el juego podr adoptar distintas estrategias.

El comparativo con mayo del ao pasado nos permite ver que Windows XP perdi un 9,27% mientras que el vapuleado Vista creci un 8,34%, como dato anecdtico la beta de Windows 7 alcanz en 30 das un 0,26%, es decir ms de la cuarta parte de la porcin de mercado que Linux tiene despus de 17 aos. De acuerdo al esquema de Kotler no es difcil decidir que Microsoft es el competidor en posicin dominante. Un escenario pesimista? Bueno, tengo otro peor, el del sitio gs.statcounter.com correspondiente al perodo 1 de julio de 2008 - 31 de marzo de 2009: WinXP: 74,82%, WinVista: 18,48%, MacOSX: 1,96%, Win2000: 1,13%, Linux: 0,66%.

Estrategias de competencia
Ampliacin de mercado: si el nmero de usuarios aumenta, los ingresos lo harn en funcin de la participacin en el mercado. Defensa de la participacin del mercado: se trata de impedir que los competidores quiten clientes al competidor dominante. Aumento de la participacin en el mercado: se trata de quitarles sus clientes a los dems competidores. Nicho de mercado: se trata de encontrar un sector del mercado que no est explotado por no haber sido descubierto o ser considerado no rentable por los dems participantes.

Conozco la frase de Mark Twain existen tres grandes mentiras: las pequeas, las medianas y las estadsticas. Tambin s que las estadsticas son como la minifalda, muestran algo muy interesante pero ocultan lo esencial. Adems prest la suficiente atencin en las clases de la Facultad para saber que hay que tomar con pinzas el resultado de un muestreo hecho en base a las visitas a sitios web por ms que entre esos sitios figuren la Fundacin Mozilla, el New York Times, la CNN y Fortune, pero son las estadsticas que tenemos para trabajar y basta con salir a la calle para confirmarlo. A cuntos familiares y amigos nuestros hemos convencido de que instalaran Linux por propia voluntad? Hagamos el ejercicio de aplicar las categoras de Kotler a los sistemas operativos: Competidores tigres seran Microsoft con Windows y Canonical con Ubuntu, Competidor selectivo sera Apple y en el mercado empresarial Red Hat y Novell, Competidor rezagado sin dudas Debian al privilegiar la estabilidad por sobre la actualidad.

Utilicemos este modelo terico en el anlisis del mercado de los sistemas operativos de escrito- rio. Segn las estadsticas de Net Applications a marzo de 2009 la situacin es la siguiente:

Figura 3. Participacin a lo largo del ao

Windows en sus diferentes versiones tiene el 88,14% de la porcin de mercado contra el 9,77 de Mac y el 0,90 de Linux, Comparado con abril de 2008 Windows perdi 2,94%, Mac creci 1,94% y Linux Se podra decir que Linux no fracas sino que un 0,22%. simplemente ocupa un nicho de mercado, tam-

www.lpmagazine.org

25

Cloud Computing Cloud Computing: La gran oportunidad para Linux?


macin en sus propias manos, en lugar de entregarlos a un tercero. Una razn por la que no deben usarse aplicaciones web es que se pierde el control. Dijo adems: Es tan malo como utilizar un programa propietario. Utilizar un programa propietario o una aplicacin web lo pone en manos de quien desarroll el software. Tal vez sea una postura un poco extremista pero sus preocupaciones son atendibles a tal punto que un grupo de organizaciones cre el antes mencionado Manifiesto de la Nube Abierta que postula los siguientes principios: Los proveedores de servicios de Cloud Computing deben trabajar juntos para responder a los desafos que presenta su adopcin: seguridad, integracin, portabilidad, interoperabilidad, manejo y administracin, medicin y seguimiento. Estos deben abordarse a travs de una colaboracin abierta y el uso adecuado de estndares. Los proveedores de servicios de Cloud Computing no deben utilizar su posicin en el mercado para obligar a los consumidores a permanecer en sus plataformas o limitarles sus opciones de elegir proveedores. Los proveedores de servicios de Cloud Computing deben utilizar y adoptar los estndares existentes siempre que sea apropiado. La industria de tecnologa de la informacin ha invertido mucho en la creacin de los estndares existentes y en la creacin de organismos para dictarlos y aplicarlos por lo que no hay necesidad de reinventarlos o duplicarlos.

Figura 4. Pgina web de Net Applicactions

bin tenamos pendiente el explicar el por qu para m Linux estaba en una posicin sostenible y no favorable. Para eso volvamos al libro de Kotler. La historia de cualquier producto puede dividirse en cuatro etapas: Introduccin: el producto va siendo lentamente adoptado por los consumidores adictos a las novedades, Crecimiento: la cantidad de nuevos usuarios del producto aumenta velozmente, Madurez: el producto fue aceptado por la mayora de los consumidores potenciales, Decrecimiento: el ingreso de nuevos usuarios disminuye y aumenta el cambio de usuarios actuales a otros productos.

tiene un nombre, recesin, nuevas reglas, gastar lo menos posible y un nuevo escenario, la nube. Si todo el mundo habla sobre la computacin en nube, Richard Stallman fundador de la Free Software Foundation no iba a ser la excepcin, su opinin sobre el tema fue: la computacin en nube es una trampa para obligar a ms y ms gente a comprar siste- mas propietarios cerrados que les costarn ms y ms caros con el tiempo. Es estpido, peor que estpido es una campaa de marketing publicitario, hay quienes dicen que es inevitable, y cuando alguien dice eso se puede estar seguro que detrs hay una campaa de marketing. Los usuarios de computadoras deben estar dispuestos a mantener su infor-

El mercado de los sistemas operativos de escritorio evidentemente lleg hasta donde poda llegar, qu ms pueden ofrecernos que animaciones ms bonitas sin ninguna aplicacin prctica? Como dijo Matt Assay de la consultora Alfresco: gran parte del fracaso de Vista es que Microsoft no pudo ofrecer una buena razn para dejar XP.

El futuro es abierto

Si nos gusta el ftbol seguramente la emocin de jugar un partido contra Messi o Ronaldinho nos compensar por el hecho de que nos llenen de goles, ahora si lo que queremos es ganarles lo mejor es proponerles una partida de ajedrez, lograr que jueguen a un juego en donde sus habilidades no sean tiles y las nuestras si. En la industria informtica el nuevo juego Figura 5. Pgina web de StatCounter

26

Linux+ 6/2009

Cloud Computing Cloud Computing: La gran oportunidad para Linux?

www.lpmagazine.org

27

Cloud Computing Cloud Computing: La gran oportunidad para Linux?


web, sistemas operativos o tecnologas. Linux por muy bonito visualmente que sea KDE 4 o inspirador el discurso del software libre no logra alcanzar los dos dgitos de participacin en el mercado. Durante mucho tiempo las relaciones econmicas se entendieron como una guerra, para que el competidor A ganara tena que perder (y de ser posible desaparecer) el competidor B, el bienestar econmico de los trabajadores era incompatible con la rentabilidad de la empresa. Si es necesario aumentar los precios para obtener ms ganancias se aumenta y que los clientes se arreglen como puedan. En palabras del escritor Gore Vidal, no es suficiente tener xito, otros tienen que sucumbir. Ese tipo de pensamiento trasladado a la informtica le dio muy buen resultado a Microsoft y en menor medida a Apple, en cambio para el software de cdigo abierto fue un fracaso, Linux tiene apenas un 1% del mercado. El modelo que necesitamos tiene nombre, Coopetencia. Quien lo bautiz fue Ray Norda, fundador de Novell, tal vez sea por eso que Novell fue la primera empresa en establecer acuerdos de colaboracin con Microsoft. La coopetencia es una dinmica en la que uno al mismo tiempo compite y coopera con otros participantes en un mismo mercado. De acuerdo a Nalebuff y Brandenburger, dos autores que desarrollaron la idea de Norda, el mercado puede imaginarse como un juego en el que intervienen cuatro tipos de participantes. Clientes, Proveedores, Competidores y Complementadores. Los dos primeros definen a los dos ltimos. Desde el punto de vista de los compradores: Competidores: A y B son competidores cuando el consumidor valora ms el producto de A cuando no existe el producto de B. Ejemplos Gnome y KDE, Complementadores: A y B son complementadores cuando la gente valora ms el producto A si tiene el producto B. Ejemplos Windows XP y Norton Antivirus.

Figura 6. Pgina web de Open Cloud Manifesto

La creacin de nuevos estndares o la modificacin de los ya existentes, de ser necesario, debe hacerse de forma juiciosa y pragmtica. La funcin de los estndares es fomentar la innovacin y no inhibirla. Los esfuerzos de la comunidad de la nube abierta deben estar dirigidos a satisfacer las necesidades de los clientes y no solamente la de los requerimientos tcnicos de los proveedores de servicios de Cloud Computing. Debe probarse y verificarse que realmente se est respondiendo a sus requerimientos. Las organizaciones reguladoras de estndares, los grupos de promocin de la tecnologa de Cloud Computing y la comunidad deben trabajar de manera conjunta y coordinada para evitar que sus esfuerzos se superpongan y entren en conflicto.

Desde el punto de vista del proveedor: Competidores: A y B son competidores cuando a un proveedor le es ms conveniente venderle solamente a uno de los dos que a los dos, Complementadores: A y B son complementadores cuando a los proveedores les es conveniente venderles a los dos que a uno solo.

El gran cambio de la computacin en nube con el modelo tradicional de la computacin de escritorio es que convierte a Linux y Windows de competidores en complementadores. Para entender esto debemos dividir a la nube en tres capas: Infraestructura como un servicio: se refiere a la capacidad de ofrecer servicios

Es evidente que las corporaciones estn dndose cuenta de que el modelo tradicional de negocios no funcionar en los aos venideros por lo que se hace necesario crear uno acorde a las nuevas realidades. En 1913 el uso de automviles en Estados Unidos no estaba demasiado difundido, por lo tanto no haba sido necesaria una red vial en condiciones, la inexistencia de una red vial en condiciones trababa la venta de automviles y sto la de partes para autos fabricadas por terceros. Cuatro fabricantes de automviles (General Motors, Packard y Wyllis Overland), un fabricante de neumticos (Goodyear) y uno de faros (Prest -O-LITE) unieron esfuerzos para pavimentar diversos sectores de carretera a lo largo del pas. La gente vio la practicidad del nuevo medio de transporte y exigi a sus gobernantes la construccin de ms caminos modernos. La analoga se puede extender al mercado informtico. Vista termin por demostrar lo que Firefox, Opera y Google Chrome ya haban insinuado, Microsoft por s solo no puede imponer nada que el consumidor no quiera aceptar, ya se trate de estndares Figura 7. Pgina web de Linux Fundation

28

Linux+ 6/2009

Cloud Computing Cloud Computing: La gran oportunidad para Linux?


de almacenamiento, procesamiento y velocidad de transmisin del hardware, Plataforma como un servicio: se refiere al sistema operativo virtualizado y servicios adicionales como motores de bases de datos, Software como un servicio: se trata de las aplicaciones que queremos usar dentro del sistema operativo virtualizado. org pueden competir en prestaciones con Photoshop y Microsoft Office por no hablar de necesidades como diseo CAD e investigacin cualitativa en la que las versiones Linux estn varios aos atrasadas. Gran parte de la culpa de sto lo tiene la comunidad; como dijo Frank Feldman jefe de producto de Red Hat para el mercado asitico: puede ser difcil encontrar una cantidad de desarrolladores entusiasmados por crear una aplicacin para calcular el pago de impuestos. No se trata de renunciar al mercado de las aplicaciones ni convencer a la gente de las virtudes del software libre. Como definen Nalebuff y Branderburger lo que debemos hacer es cooperar para crear un nuevo mercado y despus competir por una mayor parte de l. Microsoft en su preocupacin por generar dividendos a sus accionistas no duda en aplicar prcticas monoplicas y presiones judiciales contra pequeas empresas que podran aportar grandes innovaciones para todos. Dentro de la comunidad de usuarios de productos de cdigo abierto estamos ms entretenidos en pelearnos entre nosotros que en mejorar el producto final para hacerlo accesible a todos los usuarios. Si algo demostraron los ltimos aos (y ahora no estoy hablando solo de informtica) es que el esquema tradicional de pensamiento en el que el triunfo de uno depende del fracaso de los dems no dio resultado. Estamos viviendo una poca difcil desde el punto de vista econmico, millones de personas quedarn sin trabajo, empresas que eran sinnimo de slidez estn al borde de la quiebra. Ms alla de un sistema operativo, linux es una forma de trabajo. Una forma de trabajo en la que lo que cada uno sabe est a disposicin de todos. Eso es lo que tenemos para aportar a un mundo que necesita soluciones diferentes a problemas nuevos. Pero esas soluciones tienen que ser fciles de aplicar y entendibles por todos. Esa es la leccin que podemos aprender de Microsoft.

El servicio bsico de la nube es el de infraestructura, es decir capacidad de almacenamiento y clculo, independientemente del sistema operativo y aplicaciones. El proveedor ms conocido Amazon EC2, permite seleccionar un sistema operativo o bien virtualizar uno seleccionado por el usuario. Se factura nicamente el tiempo de procesamiento, el espacio de almacenamiento y el ancho de banda. Existen tambin alternativas de cdigo abierto como el ya mencionado proyecto Eucalyptus que tiene una interfaz compatible con el servicio comercial de Amazon. Otra es Enomalism que adems de proveer funcionalidades similares a los otros dos incorpora Turbo Gear y Python. Aqu vemos bien cmo funciona el concepto de complementarios. Las empresas de hardware que manufacturen los equipos necesarios para la cloud computing necesitan software lo suficientemente potente como para sacarles el mximo provecho. Para los clientes de la cloud computing es necesario que existan aplicaciones que cubran sus necesidades y que no requieran un excesivo tiempo de aprendizaje cumpliendo adems con los requisitos de interoperabilidad y portabilidad. Los tres servicios de infraestructura mencionados estn basados en Xen, un proyecto de cdigo abierto de la Universidad de Cambridge que permite que varios sistemas operativos se ejecuten simultneamente en un solo equipo. Puede encontrarse en los repositorios de las distribuciones ms importantes. Es indudable que las mejores aplicaciones estn disponibles para Windows, ni siquiera proyectos como Gimp u OpenOffice.

Palabras finales

El borrador original de este artculo llevaba por ttulo La nube y el elefante, lo de nube ya se imaginarn por qu es. El proboscideo era una metfora basada en el famoso poema de John Saxe Cox en el que unos ciegos tocando cada uno una parte del animal sacan conclusiones sobre cmo es el animal completo. Al final tuve que renunciar a la idea porque hasta para lo que es habitual en mi el enfoque era demasiado raro. Sin embargo la metfora me sigue gustando, cada uno de nosotros, ciegos por la venda de nuestras expectativas, valores, creencias y actitudes ve una sola parte del estado actual de la informtica. Stallman, con su postura de que todo lo que signifca software privativo es una amenaza, critica duramente a usuarios cuyo nico inters es mandar facilmente mails, chatear con sus hijos que trabajan lejos o compartir con sus antiguos compaeros de colegio la foto de su nieto recin nacido.

En la red
http://www.netapplications.com/, http://gs.statcounter.com/, http://www.opencloudmanifesto.org/, http://www.linuxfoundation.org/, http://www.xen.org/, http://eucalyptus.cs.ucsb.edu/, http://www.enomaly.com/.

PUBLICIDAD

Sobre el autor
Diego Germn Gonzalez maneja las reas de Marketing y Sistemas de una pequea empresa textil, adems asesora a otras pymes sobre la utilizacin de soluciones de cdigo abierto.

www.lpmagazine.org

29

Cloud Computing Cloud Computing y Open Source

Cloud Computing
cobra su mayor sentido en una aproximacin Open Source
Jos Manuel Rodrguez, director de Software de Sun Microsystems Ibrica

La consolidacin de Internet como medio de acceso y comparticin de la informacin y como plataforma de comunicaciones por parte de ciudadanos, empresas y gobiernos (ya es utilizada por ms de 1.000 millones de personas diariamente en todo el mundo, una cifra que se habr doblado en 2011) ha forzado a los grandes proveedores de tecnologas de informacin a evolucionar sus estrategias hacia el aprovisionamiento de todo tipo de servicios informticos a travs de la red como si de un servicio bsico y a medida se tratara.

onceptos como pago por uso de la tecnologa -incluyendo hardware, software de base y aplicaciones- o SaaS (Software as a Service) son cada vez ms habituales para el usuario, de modo que entramos en una nueva etapa en la que los proveedores de tecnologa pasamos, en gran medida, a seguir la estela de los suministradores de agua o electricidad. El modelo Cloud Computing permite, bsicamente, eso, pero aplicado al aprovisionamiento de tecnologas de la informacin. Cuando hace 25 aos Sun escogi como lema The Network is the Computer, -la red es el ordenador-, se sentaron las bases de lo que hoy todos conocemos como Cloud Computing. La expresin tiene actualmente, as, ms vigencia que nunca y, de hecho, es la materializacin de lo que ser una revolucin en la informtica corporativa en los prximos aos.

Una apuesta frrea por el modelo Open Source Primeros servicios


Desde el punto de vista de Sun, el modelo Cloud Computing tiene mayor sentido y fuerza si lo abordamos desde una aproximacin Open Source. Por ello, la compaa ha presentado recientemen-

te la primera plataforma Cloud Computing abierta del mercado. Bajo el nombre Sun Open Cloud la propuesta de Sun est basada en sus tecnologas de software open source -incluyendo el lenguaje de programacin Java, la base de datos MySQL y el sistema operativo Open Solaris - y toda su innovacin en almacenamiento Open Storage. Se trata de dar al mercado una alternativa clara y viable en sus aproximaciones al Cloud Computing que, adems, supone un cambio paradigmtico frente a los modelos cloud propietarios que limitan las opciones para el cliente e incrementan significativamente los costes ligados a licencias, especialmente de software. En nuestra opinin, slo triunfarn en Cloud Computing aquellas compaas que logren atraer a un mayor nmero de integradores y programadores para sus tecnologas. La comunidad Open Source es la mejor va para el desarrollo del Cloud Computing del futuro.

En la base de Sun Open Cloud estarn los dos primeros servicios Sun Cloud Storage Service y Sun Cloud Compute Service ya disponibles para desarrolladores y que lo estarn tambin

30

Linux+ 6/2009

Cloud Computing Cloud Computing y Open Source


para empresas y gobiernos el prximo verano. Los clientes podrn beneficiarse del modelo Open Source para sus aproximaciones al modelo Cloud Computing a travs de Sun Open Cloud para acelerar el suministro de nuevas aplicaciones reduciendo los riesgos totales y obteniendo mayor escalabilidad y capacidad de almacenamiento. Nuestra propuesta Open Cloud pone a disposicin de la comunidad todas las tecnologas y servicios necesarios para que cada cliente pueda construir sus propias nubes, pblicas o privadas, asegurando la interoperabilidad entre ellas y el resto. Adems de la apuesta clara por el Open Source, otra de las claves para que una nube tenga xito es que las tecnologas que se necesitan para crearla sean fciles de usar en todos sus mbitos, es decir, desde el despliegue de aplicaciones, al suministro de recursos, pasando por todas las fases intermedias. En este sentido, Sun Cloud Compute Service est basado en las capacidades Virtual Data Center (VDC) adquiridas mediante la compra de la compaa Q-Layer por parte de Sun el pasado mes de enero de 2009, que ofrecen todo lo que un equipo de proyecto necesita para construir y poner en funcionamiento un centro de datos en la nube. El VDC proporciona un interface unificado e integrado para ejecutar una aplicacin que pueda correr sobre cualquier sistema operativo dentro de una nube, incluyendo OpenSolaris, Linux o Windows. Lleva consigo un mtodo de arrastrar y soltar, adems de interfaces de programacin de aplicaciones -APIs- especficos y un interface de lnea de comando para suministrar recursos de procesamiento, de almacenamiento y de conectividad a travs de cualquier navegador. Por otra parte, el Sun Cloud Storage Service soporta

protocolos WebDAV para un acceso sencillo a los ficheros y APIs de almacenamiento de objetos compatibles con los APIs S3 de Amazon. Como parte del compromiso de la compaa con la creacin de comunidades, Sun tambin ha abierto sus APIs cloud para que puedan revisarse y comentarse por todos los desarrolladores de la comunidad Open Source, de forma que stos puedan crear nubes pblicas o privadas mejoradas y totalmente compatibles con Sun Open Cloud. Las especificaciones de los APIs de Sun Open Cloud han sido publicadas bajo licencia Creative Commons, que permite a cualquier persona el uso de las mismas de cualquier forma. Los desarrolladores podrn desplegar aplicaciones en Sun

Cloud de forma inmediata, aprovechando VMIs (Virtual Machine Images) pre-empaquetadas del software open source de Sun, eliminando la necesidad de descargar, instalar o configurar software de infraestructura.

Una oportunidad para todos

Uno de los beneficios ms evidentes del Cloud Computing es la mejora de utilizacin de los recursos informticos disponibles. El cambio econmico inherente al pago por uso que el modelo Cloud Computing trae de la mano es una de las principales virtudes de este modelo. Slo se paga por lo que se utiliza, y las tarifas son generalmente inferiores al coste de desarrollo y mantenimiento interno de los servicios equivalentes. Este modelo permitir a las empresas, grandes y pequeas, y a los gobiernos sustituir fuertes inversiones en infraestructura informtica (CAPEX) por gastos de operacin (OPEX), adaptando de forma flexible la oferta a la demanda. Los desarrolladores sern uno de los colectivos ms importantes para la apuesta de Sun por el Cloud Computing. Ejemplo claro de ello son las ampliaciones que la compaa ha realizado en algunos de sus programas ms conocidos. En una versin de la suite ofimtica OpenOffice, especialmente desarrollada para este fin, los usuarios podrn utilizar la nube pblica de Sun para almacenar y recuperar documentos de la red, en lugar de emplear su ordenador; y con VirtualBox, nuestro producto de virtualizacin de escritorio, los usuarios podrn acceder a un servicio de carga cuando deseen ejecutar diferentes Sistemas Operativos o aplicaciones en la nube de Sun. Cloud Computing es el futuro, sin duda. Pero mejor, sobre el modelo Open Source.

www.lpmagazine.org

31

Cloud Computing Cloud Computing: Stairway To Heaven?

Cloud Computing: Stairway To Heaven?


Lino Garca Morales

A mediados de los 90 Marc Andreessen (cofundador de la empresa Netscape Communications Corporation y coautor de Mosaic, uno de los primeros navegadores web con interfaz grfico) predijo que Microsoft Windows estaba destinado a ser un pobre conjunto de drivers ejecutndose en Netscape Navigator.

etscape desapareci en Marzo del 2008, sin embargo, su prediccin va camino de cumplirse en algn Navegador web. En el artculo LINO Operating System [Linux+ 3/2009, pp: 42-45] se cuestiona el papel de los sistemas operativos en la actualidad en un mundo interconectado a alta velocidad llamado internet. Internet se puede considerar como un superordenador cuya potencia est distribuida por todo el globo. El paradigma de la computacin distribuida, divide y vencers, convive a diferentes escalas (segn la aplicacin y unidades de proceso involucradas): uso de mltiples ordenadores en una empresa en lugar de uno solo centralizado (aplicado desde finales de los 70s), uso de mltiples ordenadores en red distribuidos en un rea geogrfica extensa o en el mundo entero (va internet) o el uso de mltiples dispositivos inteligentes en red; todo ello para resolver un solo problema (con la ilusin de muchos a la vez). Segn TryCatch en su blog sobre programacin: Web y tecnologa: Sin miedo a las excepciones... (http://trycatch. lacoctelera.net/post/2008/12/15/cloud-computing-1-defi nicion-es-y-caracteristicas), Cloud Computing no es una tecnologa nueva ni una arquitectura o framework de desa-

rrollo Web ms gil y ms productivo. Sino un concepto, una comunin de ideas, como en su momento lo fue Web2.0, que engloba tanto nuevas tendencias como la evolucin de servicios ya existentes. La IEEE la define como un paradigma en el cual la informacin est permanentemente almacenada en servidores de Internet y es cacheada temporalmente por los clientes que incluye desktops, mviles, monitores, sensores, porttiles, etc. Qu es todo esto? Que tanto datos como procesos ya no estn en nuestros equipos sino en la nube. Nuestro sistema es un simple accesorio con escaleras al cielo (navegador/cuenta/ internet) para acceder y utilizar servicios (conjunto integrado de procesos) sin tener conocimientos expertos ni necesidad de controlar y configurar esas tecnologas o servicios. La Figura 1 ilustra las clases de Cloud Computing que se describen a continuacin. SaaS (Software As A Service). Modelo de distribucin de software donde una empresa sirve el mantenimiento, soporte y operacin que usar el cliente durante el tiempo que haya contratado el servicio. Ejemplos: Salesforce (http://www.salesforce.com/es/), Basecamp (http://www. basecamphq.com/).

32

linux@software.com.pl

Linux+ 6/2009

Cloud Computing Cloud Computing: Stairway To Heaven?


PaaS (Platform As A Service). Modelo en el que se ofrece todo lo necesario para soportar el ciclo de vida completo de construccin y puesta en marcha de aplicaciones y servicios web completamente disponibles en internet. Da soporte directamente al software que corre en la nube con la infraestructura contratada por el cliente. No hay descarga de software que instalar en los equipos de los desarrolladores. PaaS ofrece mltiples servicios, todos, como una solucin integral en la web. Ejemplos: Google App Engine (http://code.google.com/ intl/es-ES/appengine/). IaaS (Infrastructure As A Service). Modelo de distribucin de infraestructura de computacin como un servicio (se suele considerar como la capa ms inferior del modelo, incluyendo la capa HaaS o, como muestra la Figura 1, la zona intermedia de toda la arquitectura), normalmente mediante una plataforma de virtualizacin. En vez de adquirir servidores, espacio en un centro de datos o equipamiento de redes, los clientes compran todos estos recursos a un proveedor de servicios externo (hosting, capacidad de cmputo, mantenimiento y gestin de redes, etc.). Una diferencia fundamental con el hospedaje (hosting) virtual es que el aprovisionamiento de estos servicios se hace de manera integral a travs de la web. Ejemplos: Amazon Web Services (http://aws.amazon.com/) y GoGrid (http://www.gogrid.com/). DaaS (Data Storage As A Service). Almacn de datos como servicio. Proporciona la gestin y el mantenimiento completo de los datos del cliente. Trabaja al mismo nivel que IaaS. CaaS (Communication As A Service). Provee el equipamiento de redes y la gestin de las comunicaciones como servicio (balance de carga, por ejemplo). Trabaja al mismo nivel que IaaS. Software Kernel. Gestin de los servidores fsicos a travs del sistema operativo, software de virtualizacin, middleware de gestin de clsteres y de la grid, etc. HaaS (Hardware As A Service). Gestin del hardware (elementos fsicos de la nube) como servicio. Normalmente centros de datos gigantescos con todo tipo de mquinas que proporcionan cmputo, almacenamiento, catlogos, etc. Otras tecnologas consideradas Cloud Computing son: Web2.0 Herramientas y aplicaciones como redes sociales, blogs, wikis, foros, etc. Web Os (sistemas operativos en la Web). Web Semntica o Web 3.0, etc. Grid Computing. Evolucin natural de la nube. Es una arquitectura de procesado en paralelo, que permite compartir/distribuir los recursos de proceso de muchas mquinas a travs de la red de manera que funcionen como un super-computador gigante. Por raro que parezca, los procesadores estn ociosos la mayor parte del tiempo y este tiempo se puede poner en funcin de la solucin de problemas computacionales enormes. Un ejemplo de ello es el Programa para la Bsqueda de Inteligencia Extraterrestre (SETI, Search for Extraterrestrial Intelligence, http://setiathome .ssl.berkeley.edu/). La Grid Computing, tambin se conoce como Peer-to-peer Computing (red punto a punto o P2P), Utility Computing, o simplemente Distributed Computing. Las principales caractersticas de Cloud Computing provienen de las tecnologas que forman la nube y de las nuevas capacidades provenientes de la fusin de estos servicios: Escalabilidad. El sistema trabaja de forma eficiente aumentando o disminuyendo el uso de recursos segn demanda, de forma automtica y transparente para el usuario. Virtualizacin. El usuario puede hacer uso de la plataforma o entorno que desee, ya sea contratndolos o crendolos l y pasndoselas al servicio. Existe una total independencia entre datos y hardware; las aplicaciones corren en servidores y el acceso se suele realizar desde un navegador. Calidad de Servicio. Se rige por un Acuerdo de Nivel de Servicio (SLA, Service Level Agreement), que define varias polticas como: rendimiento, tiempos de acceso, capacidad de trfico, picos de conexin soportados, etc. Calidad de servicio y escalabilidad estn directamente relacionados; el sistema se encarga de gestionar los recursos segn estos trminos. Accesibilidad. Debido a las propiedades anteriores la nube es accesible desde un amplio abanico de dispositivos.

Peldaos, plantas y desniveles

Figura 1. Clases de Cloud Computing

Que nuestros datos y relaciones no estn en nuestros equipos ni dependan del sistema operativo de nuestras mquinas no es nada nuevo. Todo lo contrario, es anterior incluso de la aparicin del primer ordenador personal, cuando nos conectbamos a las mquinas grandes (Supercomputer, Mainframes, Minicomputer, utilizadas principalmente por grandes organizaciones para aplicaciones crticas como el proceso de una enorme cantidad de datos) a travs de un terminal tonto (dummy). Desde un punto de vista estrictamente tcnico no es exactamente lo mismo. Nos comunicamos a internet a travs de algn mdem ADSL o interfaz inalmbrica como poco, en lugar de un solo superordenador gigante accedemos a muchos de menor potencia que interactan entre s para conseguir mayor funcionalidad y prestaciones, etc. Pero, desde un punto de vista funcional, s. El navegador (browser) es una especie de versin superior del XTerm, y nuestro PC un terminal avanzado respecto al tonto en trminos multimedia.

www.lpmagazine.org

33

Cloud Computing Cloud Computing: Stairway To Heaven?


posible entrar incluso a los museos y acercarse a las obras hasta el milmetro; sealizacin), Youtube (probablemente la videoteca ms grande del mundo), Blogger (diarios digitales, bitcoras, narraciones compartidos, periodismo...). Todo este entramado de servicios est influyendo notable y positivamente en nuestro modo de vida en la medida en que facilitan su uso a menor complejidad y coste. Gracias a estas nubes los cientficos pueden realizar clculos en superordenadores de potencia ilimitada, un msico compartir sus creaciones, un cineasta sus pelculas, un escritor sus libros, narraciones o poesas, un grupo de amigos puede mantenerse en contacto, un conductor planificar su viaje de vacaciones, un turista reservar su itinerario de vacaciones, un amante de la cocina compartir una buena receta, un inventor sus ideas, una empresa mantener sus documentos a salvo, etctera, etctera, etctera. La computacin en nube es una vuelta al futuro. Llegar el da en que, aquellos que lo deseen, puedan olvidarse de los drivers, las tediosas instalaciones, la enorme espera del arranque del sistema operativo, la gestin de su equipo informtico y puedan concentrarse en lo que realmente les importa; ese da, por fin, la inmersin digital ser una experiencia realmente placentera, habremos tocado el cielo.

Figura 2. Cloud Computing everything and kitchen sink

Cuando entramos en http://picasaweb. google.es/ a subir fotos para compartirlas con familiares y amigos desde cualquier lugar del mundo slo necesitamos un navegador, acceso a internet y una cuenta gmail. No sabemos dnde estn, ni cmo son administradas, ni nos interesa; slo que podemos verlas siempre que queramos, desde cualquier ordenador y lugar del planeta, cambiarlas o establecer permisos y restricciones de uso (a quin permitimos verlas, a quin descargarlas, etc.). Detrs de este servicio, puede haber mucho ms de un ordenador (de diferente tecnologa incluso) que valida la cuenta, sirve e interacta con los usuarios. Incluso si toda esta tecnologa cambia, mientras que el servicio se mantenga igual, no notaremos ninguna diferencia. Por qu todo esto? Pues porque no hay nada que instalar localmente, no nos ocupa espacio, no tenemos que preocuparnos de averas o fallos, la mayora de los servicios son gratuitos o de menor coste que si intentramos hacerlo por nuestra cuenta y son segu-

ros (Amazon ofrece un 99,95% de fiabilidad; tan solo 4,38 horas de cada al ao). Eso s, la informacin queda en manos de terceras personas; el propio Richard Stallman, considerado padre del software libre, ha dicho el Cloud Computing es una trampa; pero bajo determinadas condiciones legales (esa letra pequea que, aunque resulte un incordio, conviene leer) y medidas de seguridad (respecto al acceso, uso, distribucin, etc.) y no al libre albedro. Paradjicamente, con ordenadores cada vez ms potentes, el uso de estos servicios slo requiere ordenadores cada vez ms tontos (cierta capacidad multimedia y conexin a red) pero esto tiene su lado positivo y es que aumenta el abanico de dispositivos desde dnde acceder/utilizar a/los servicios.

Sobre el autor
Graduado de Ingeniera en Control Automtico, Mster en Sistemas y Redes de Comunicaciones y Doctor por la Universidad Politcnica de Madrid. Ha sido profesor en Instituto Superior de Arte, Universidad Pontificia Comillas y la Universidad Melndez Pelayo. Actualmente Profesor de la Escuela Superior Politcnica de la Universidad Europea de Madrid y Director del Mster Oficial en Acstica Arquitectnica y Medioambiental. Lidera grupo de investigacin transdisciplinar en la interseccin Arte, Ciencia, Tecnologa y Sociedad. Ha recibido becas por la Agencia Espaola de Cooperacin Internacional (AECI), la Fundacin para el Desarrollo de la Funcin Social de las Comunicaciones (FUNDESCO), el Consejo Superior de Investigaciones Cientficas (CSIC) y la Universidad Politcnica de Madrid.

Conclusiones

La computacin en nube es una realidad y permite tanto a, usuarios como a empresas, mayor flexibilidad para ofrecer/consumir servicios. La interconexin de estas nubes permitir crear/usar servicios cada vez ms complejos de manera ms simple y desde un mayor nmero de dispositivos, incrementar y compartir el patrimonio cultural, democratizacin de la informacin, y as, un largo etctera. Ah estn los ejemplos de servicios de Google: Scholar (enorme conjunto de artculos de inters educacional, cientfico...), Maps (mapas callejeros, planificadores de rutas ptimas, pginas amarillas), Books (biblioteca digital gigantezca), Talk (comunicacin, bsqueda de contactos), Earth (visin tridimensional del planeta; navegacin en cualquier parte del mundo, es

34

Linux+ 6/2009

software Juegos seccin llevada por Francisco J. Carazo Gil

ste mes la seccin comienza con un juego que mezcla dos gneros distintos consiguiendo un resultado divertido a la vez que original. Se trata de Zero Ballistics, un juego comercial pero gratuito que bajo el lema Fcil de aprender pero difcil de dominar sus desarrolladores han conseguido una mezcla muy buena entre gneros un tanto dispares. Los FPS, rpidos y de poco pensar como suelen decir al ms puro estilo Quake junto con la estrategia y las posibilidades de todo juego de tanques. La mezcla consigue un equilibrio muy bueno, acaparando de cada uno caractersticas que se complementan. La rapidez de un FPS con la estrategia y el planeamiento de todo juego de tanques. Los grficos son otra parte muy conseguida del juego. Adems de estar muy cuidados, tienen unas escenas de paisajes alpinos con mucho detalle. Adems el juego incorpora un motor fsico que mejora an ms la percepcin de calidad. Los tanques disponen de tres armas principales y tres armas secundarias. Para poder llegar a ser un gran jugador,

Zero Ballistics

PyChess

Figura 1. Zero Ballistics

tendremos que llegar a dominar los tres parmetros de los que depende el xito de nuestro disparo: la velocidad de nuestro oponente, la trayectoria que coger el obs y la distancia real entre el objetivo y nosotros. Disponemos de multitud de posibilidades distintas de tanques, para las ms diversas situaciones. Adems de las distintas armas disponibles, tambin tenemos a nuestra disposicin tanques y capacidad para sanar. Utilizamos tanto el ratn como las flechas del teclado para controlar nuestro tanque y tenemos posibilidad de jugar en red. Las dos modalidades de juego son all vs. all o el juego por equipo. Respecto a las necesidades hardware del equipo para ejecutarlo no necesitamos un gran equipo, porque aunque sean de calidad y estn muy cuidados, la cantidad de polgonos en movimiento no es demasiado grande. Respecto a versiones disponibles para otros sistemas operativos, existe una versin para Windows, adems de la existente para Linux. Es una pena que no sea software libre, pero como tiene suficiente calidad y es gratuito creo que a muchos no os importar. En definitiva, un juego que combina dos gneros de manera original y con un resultado divertido y completo. La capacidad de jugar en equipo a travs de la red, abre muchas posibilidades, ya que adems del tpico todos contra todos, el modo de juego en equipo favorece el crear estrategias en grupo y hacer un planteamiento previo muy interesante. Desde mi punto de vista personal, pasados los aos y cuando los FPS se me empiezan a hacer algo repetidos ya, el aire fresco que da este ttulo me ha resultado muy divertido y creo que a todos vosotros os pasar lo mismo. http://www.zeroballistics.com/

NOTA

ace ya mucho tiempo, all por el nmero 45 de la revista si no me engaa mi base de datos, coment un juego dedicado a los solitarios llamados PySol y si lo lesteis probablemente sigis usando para matar los ratos muertos. La inclusin del archiconocido solitario de Microsoft Windows, como juego por defecto en una versin del sistema operativo de Microsoft que ya ni recuerdo, implic el resurgir de este tipo de juegos. En un mundo tan digitalizado como el actual y en una actividad en la que slo hace falta una persona, como es la de jugar a un solitario, nada mejor que un programa de ordenador con cientos de variantes para tener posibilidades distintas para jugar ao tras ao. Pero bueno, este no es nuestro tema ahora en el segundo juego que cierra la seccin de este mes. El tema que nos ocupa es PyChess y como podris deducir de su nombre es un juego de ajedrez, implementado en Python. Sus creadores creo que no guardan relacin alguna con los creadores de PySol, pero al igual que ocurre con los programas que comienzan o tienen una letra k significada que pertenecen a Proyecto KDE, la Py se est convirtiendo en todo un distintivo de los programas realizados con Python. En este caso el diseo es para Gnome y bajo su sencilla esttica se esconFigura 2. PyChess de un potentsimo juego de ajedrez para jugar contra la mquina o con un amigo ya sea en persona o mediante la red (caracterstica de la que pocos juegos de ajedrez libres puede presumir). Tenemos tambin opcin de modificar la IA de la mquina, es decir, descargar otro motor de inteligencia artificial para jugar a ajedrez y cambiarlo, de manera que tendremos oponentes virtuales muy dispares. Por ejemplo, fruit y crafty son dos ejemplos de este tipo de motores de IA que adems son software libre. Rybka, es otro famoso motor de IA, pero su cdigo no es abierto. Esta caracterstica, junto con la de la red, hacen de l un juego nico. Por cierto, en la Wikipedia en su versin inglesa encontraris ms motores de inteligencia artificial para juegos de ajedrez. El juego es software libre y actualmente se encuentra en su versin 0.10 de nombre Staunton en fase Alfa 2. A pesar de ser una versin 0.10 ya han salido unas cuantas versiones anteriormente del juego, ya que la numeraci comenz con el 0.1. Existen paquetes descargables tanto en formato RPM como en formato DEB as como el cdigo fuente comprimido y empaquetado en un tarball. En definitiva, un juego simple que al igual que PySol nos permitir desconectar fcilmente del trabajo y que nos permitir adems tener unas posibilidades que con la prctica totalidad de los otros juegos similares no podemos disfrutar como el cambio de motor de IA y la posibilidad de jugar a travs de red. Como punto final, comentaros que se encuentra en pleno proceso de desarrollo (un desarrollo muy activo por cierto) por lo que cada poco tiempo podremos disfrutar de nuevas versiones y funcionalidades. http://pychess.googlepages.com/

NOTA

jugabilidad grficos sonido

jugabilidad grficos sonido N/A

36

Linux+ 6/2009

Pedido de suscripcin
Por favor, rellena este cupn y mndalo por fax: +31 (0) 36 540 72 52 o por correo: EMD The Netherlands Belgium, P.O. Box 30157, 1303 AC Almere, The Netherlands; e-mail: software@emdnl.nl
Nombre(s) ................................................................................................... Apellido(s) ..................................................................................................

Direccin .............................................................................................................................................................................................................................. C.P. .............................................................................................................. Telfono ..................................................................................................... Poblacin .................................................................................................... Fax ...............................................................................................................

Suscripcin a partir del No ................................................................................................................................................................................................... e-mail (para poder recibir la factura) .................................................................................................................................................................................. o Renovacin automtica de la suscripcin

Ttulo
Linux+DVD (1 DVD) Mensual con un DVD dedicado a Linux

nmero de ejemplares al ao

nmero de suscripciones

a partir del nmero

Precio

12

69

En total

Realizo el pago con:

tarjeta de crdito (EuroCard/MasterCard/Visa/American Express) nO

CVC Code

transferencia bancaria a ABN AMRO Bank,

Vlida hasta

Randstad 2025, 1314 BB ALMERE, The Netherlands Nmero de la cuenta bancaria: 59.49.12.075 IBAN: NL14ABNA0594912075 cdigo SWIFT del banco (BIC): ABNANL2A

Fecha y firma obligatorias:

software Interconexin de Sistemas Abiertos

Interconexin de Sistemas Abiertos


Lino Garca Morales

El modelo de referencia de interconexin de sistemas abiertos (OSI, Open System Interconnection) fue desarrollado por la ISO (Organizacin Internacional de Normalizacin) en 1977 para describir las arquitecturas de redes y compatibilizar la comunicacin entre los fabricantes de ordenadores.

res dcadas despus, el modelo ha demostrado sobradamente su eficacia y, probablemente, ha sido uno de los proyectos de las tecnologas de la informacin y comunicaciones mejor pensado. El objetivo de este modelo fue la bsqueda de la integracin/ desagregacin natural de los componentes de un sistema segn su funcionalidad para conseguir.

linux@software.com.pl

La formalizacin de un modelo de interconexin corresponde a un amplio catlogo de normalizacin. Tales normas se pueden dividir en dos categoras: Las normas de facto (de hecho), Las normas de jure (por ley).

Interoperabilidad
Posibilidad de trabajo interactivo entre terminales.

Las primeras se establecen sin ningn planteamiento formal; simplemente se imponen por su prctica. Las ltimas son formalizadas y adoptadas por un organismo internacional.

Independencia
Implementacin del modelo sobre cualquier arquitectura.

La organizacin de una red de elementos informticos en niveles funcionalmente independientes, construidos sobre la base Extremos abiertos de sus predecesores y ordenados jerrquicamente, garantiza la Capacidad de comunicacin entre terminales que corren reduccin de la complejidad, el aumento de la modularidad de distinto software. los diseos, interfaces entre mdulos bien especificadas y documentadas, posibilita la estandarizacin, etc. Interconectividad El diseo de una red, por compleja que sea, se reduce Define las reglas que posibilitan la interconexin fsica y la a la desagregacin en pequeos mdulos, montados unos sotransmisin de datos entre terminales diferentes (hardware/ bre otros. La filosofa de este modelo es dividir un problema software). grande en muchos problemas pequeos. Cada capa o nivel

Capas, protocolos e interfaces

38

Linux+ 6/2009

software Interconexin de Sistemas Abiertos

Protocolo

OSI
N

2 Interfaz Nivel

El modelo de interconexin de sistemas abiertos (OSI, Open System Interconnection) es un modelo de referencia para las comunicaciones entre sistemas abiertos propuesto por la organizacin internacional de normalizacin (ISO, International Standard Organization). Este modelo, ISO 7498, define un conjunto de normas y protocolos que permiten la interconexin de diversos sistemas TIC.

Figura 1. Capas, protocolos e interfaces

utiliza la funcionalidad proporcionada por las capas inferiores y crea, a su vez, un nuevo nivel de funcionalidad para las capas superiores (cada eslabn o nivel da solucin a un nuevo problema teniendo en cuenta lo que ha solucionado el eslabn anterior). La funcionalidad de cada capa, el nmero de capas, la comunicacin entre capas y el nombre de cada capa vara de una red a otra. Sin embargo, en general para todas las redes el propsito de cada capa es ofrecer ciertos servicios a su nivel superior. La conversacin o dilogo entre las estaciones/ puntos terminales se realiza por capas (la capa N de un sistema interacta con la capa N de los otros) y es controlada por un conjunto de reglas y convenciones de manera tal que no exista ambigedad o incoherencia en el dilogo. Al conjunto de reglas y procedimientos que rige el dilogo entre dos niveles de igual orden en las estaciones que interactan se le denomina protocolo y el nmero de orden de tal protocolo est en correspondencia directa con el nivel para el cual se establece (procedimientos iguales pertenecientes a un mismo nivel de orden N en mquinas diferentes, dialogan o se comunican a travs de un protocolo de nivel N). Dentro de la estructura jerrquica de la red los protocolos definen las reglas para la comunicacin armnica entre procesos situados en niveles jerrquicos equivalentes. La comunicacin establecida entre niveles equivalentes no es fsica sino virtual. Cada capa pasa la informacin de datos o control que desea enviar a su nivel equivalente slo a travs de su nivel inmediato inferior que la propaga por cada nivel hasta llegar al ms bajo que es, en realidad, quien verdaderamente realiza el enlace o conexin fsica. Igualmente, los niveles inferiores pasan informacin de control o respuesta slo a su nivel inmediato superior hasta que llegue al nivel al cual va dirigida. Las reglas de comunicacin entre procesos situados entre niveles jerrquicos diferentes se denominan interfaces. Estos son los servicios que las capas inferiores ofertan a su capa inmediata superior. En la comunicacin parece como si una parte del nivel o capa se comunicara directamente con

su contraparte a travs del protocolo correspondiente; pero, en realidad, los datos pasan a la capa inferior a travs de la interfaz. Cada capa obtiene los servicios de la capa inferior a travs de la interfaz correspondiente. La comunicacin entre los elementos de una capa o nivel en la estructura a travs de una interfaz comn se denomina comunicacin jerrquica. Existen muchas formas de estructurar las capas y definir sus funciones. Uno de los aspectos ms importantes para los diseadores de redes es precisamente decidir la cantidad de niveles y sus funciones; as como las especificaciones acerca de las operaciones a realizar por cada interfaz entre un nivel y otro, de forma tal que minimice el volumen de informacin a transitar entre niveles a travs de su correspondiente interfaz. Al conjunto de niveles con sus respectivos protocolos se le denomina arquitectura de red. Las especificaciones de la arquitectura deben contener informacin suficiente para la implementacin de los protocolos de cada nivel. Los detalles de la implementacin y las especificaciones de las interfaces no forman parte de la arquitectura (en todas las estaciones de la red las interfaces entre niveles no tienen porque ser iguales; la correspondencia es necesaria slo respecto a los protocolos que rigen los diferentes niveles).
Aplicacin Presentacin Sesin Transporte

Niveles funcionales

El modelo OSI define una jerarqua de siete capas de protocolos, cada uno de los cuales utiliza a los de nivel inferior para ofrecer un determinado servicio, al mismo tiempo que complementa los servicios proporcionados por los protocolos de nivel superior. Los trabajos sobre la interconexin de sistemas abiertos comenzaron cuando los usuarios comprendieron que no se podran llevar a la prctica todas las posibilidades potenciales de las redes de datos y de los sistemas pblicos de conmutacin de paquetes; si cada dispositivo interconectado a la red exigiese el conjunto de protocolos que determinase su fabricante. Tradicionalmente los sistemas informticos siempre fueron cerrados, es decir, los dispositivos se ajustaban nicamente a las normas de interconexin establecidas por el fabricante o diseador del sistema. Los protocolos que utilizaban los terminales estaban determinados por las caractersticas del ordenador o controlador de comunicaciones. Un terminante para emular el modelo especificado de otro fabricante, e incluso del mismo fabricante pero de otra familia de productos, difcilmente poda conectarse al sistema, sin antes ser modificado convenienteme Esta situacin result aceptable mientras el nmero de dispositivos a integrar en un sistema era reducido y bajo el estricto control de un solo
Aplicacin Presentacin Sesin Transporte

Protocolo de Aplicacin Protocolo de Presentacin Protocolo de Sesin Protocolo de Transporte

Red Enlace Fsico

Red Enlace Fsico

Red Enlace Fsico

Red Enlace Fsico

Medio Fsico de Interconexin Protocolo interno de la Subred de Transporte

Figura 2. Modelo OSI de la ISO

www.lpmagazine.org

39

software Interconexin de Sistemas Abiertos


ordenador. Sin embargo el avance de las tcnicas informticas, en las tcnicas de interconexin a red y la proliferacin de ordenadores y equipos relacionados con ordenadores, ha sido de tal magnitud que actualmente es inaceptable el concepto de red cerrada. Por el momento, tanto usuarios como fabricantes, coinciden en el beneficio que reporta establecer una serie de normas o estndares para la interconexin de sistemas abiertos que permita la integracin de funciones operacionales de los equipos a todos los niveles. El modelo de referencia de la ISO supone el primer intento serio hacia la consecuencia de ese objetivo. de servicio que imponen las aplicaciones y la calidad de servicio ofrecida por las redes.

Sobre el autor
Graduado de Ingeniera en Control Automtico, Mster en Sistemas y Redes de Comunicaciones y Doctor por la Universidad Politcnica de Madrid. Ha sido profesor en Instituto Superior de Arte, Universidad Pontificia Comillas y la Universidad Melndez Pelayo. Actualmente Profesor de la Escuela Superior Politcnica de la Universidad Europea de Madrid y Director del Mster Oficial en Acstica Arquitectnica y Medioambiental. Lidera grupo de investigacin transdisciplinar en la interseccin Arte, Ciencia, Tecnologa y Sociedad. Ha recibido becas por la Agencia Espaola de Cooperacin Internacional (AECI), la Fundacin para el Desarrollo de la Funcin Social de las Comunicaciones (FUNDESCO), el Consejo Superior de Investigaciones Cientficas (CSIC) y la Universidad Politcnica de Madrid. Adems ha formado parte de las bandas Cartn Tabla y Msica d Repuesto. Discografa: Las palabras vuelven, Se fue, Bags, Flags, Faqs, Fotos d parque, These little things that keep inside, Mr. Fro (colaboracin con Alejandro Frmeta), El eje del mal, Av abuc, Variaciones en la cuerda VOL. I. Y ha publicado una novela: Islas. lino@madrid.com

Sesin
Ofrece mecanismos para que la aplicacin pueda gestionar su dilogo, sincronizar y re-sincronizar el flujo de datos. Para ello establece y libera conexiones de sesin; establece correspondencia entre direcciones de sesin y transporte; segmenta y concatena; gestiona testigos; sincroniza y re-sincroniza; etc. Es la autntica interfaz del usuario hacia la red (con procedimientos de identificacin de usuario mediante el uso de contrasea).

Fsico
Proporciona el soporte de transmisin o medio material para que establecer y mantener el flujo de informacin entre varios terminales remotos y la sealizacin necesaria para la gestin de errores. Este nivel define y caracteriza las propiedades mecnicas, elctricas y funcionales de los dispositivos involucrados en el enlace fsico.

Presentacin
Independiza a la aplicacin de los problemas relativos a la presentacin de los datos (sintaxis de transferencia). Esta capa negocia y transforma sintaxis de transferencia, traduce alfabetos etc. Define una sintaxis comn para la representacin de los smbolos (cada terminal o punto deber establecer una correspondencia entre tal sintaxis y la correspondiente a su arquitectura interna).

Enlace
Garantiza un servicio de transferencia de datos libre de error (en trminos de mnima probabilidad). Esta capa es la responsable de establecer y liberar conexiones de enlace, dividir la informacin en tramas, delimitar y sincronizar, secuenciar, controlar el flujo de datos, detectar y recuperar errores, controlar el acceso al medio, etc.

Aplicacin
Proporciona los medios para que un proceso de aplicacin acceda al entorno OSI. Es el nico nivel que conoce la semntica asociada a la transferencia de informacin. La segmentacin funcional de las capas permite el intercambio de ellas sin perjudicar al sistema. Por ejemplo, el RS232 es un protocolo de nivel fsico punto a punto, mientras que el RS485 es de tipo bus. La capa fsica define la topologa de la red: rbol, bus, anillo, etc. y la capa de enlace el protocolo de acceso. Sin embargo es posible sustituir un enlace RS232 punto a punto por un enlace inalmbrico multipunto IEEE 802.11g sin que cambie la funcionalidad de los niveles por encima de la subred de transporte. Esta flexibilidad garantiza la actualizacin/renovacin del hardware de comunicacin y el desarrollo de las aplicaciones independientemente de la tecnologa.

Red
Provee un servicio de conectividad universal independiente de la tecnologa (oculta a las capas superiores las diferencias tecnolgicas de las subredes) a la vez que ofrece una calidad de servicio. Sus funciones ms importantes son el encaminamiento de la informacin (y almacenamiento y reenvo), la multiplexacin, etc.

Transporte
Proporciona un servicio de transferencia de datos fiable y efectivo en coste a la vez que mantiene la calidad de servicio. Bsicamente, realiza tres servicios: establecimiento de conexin, difusin de la informacin a mltiples destinatarios, posibles transacciones.

Conclusiones

Para ello debe establecer la correspondencia entre las direcciones de transporte y de red; multiplexar y dividir; establecer y liberar conexiones de transporte; segmentar, agrupar y concatenar; etc. Esta capa independiza las aplicaciones de comunicaciones y media entre los requisitos de calidad

El modelo OSI ataca el problema de la compatibilidad entre terminales (procesador, velocidad, almacenamiento, interfaz de comunicacin, cdigo de caracteres, sistema operativo, etc.) mediante la formalizacin de diferentes niveles o capas de interaccin. Esta desagregacin provee dos beneficios muy importantes: posibilita una mayor comprensin del problema a la vez que permite optimizar la solucin de cada problema especfico. En esta arquitectura la informacin que genera/entrega un proceso a la capa de aplicacin baja hacia la subred de trans-

porte y sube hacia la aplicacin destino para su entrega al proceso correspondiente. Cada capa aade informacin redundante (adicional), para garantizar su servicio, en el proceso de descenso, mientras que la elimina, en el proceso de ascenso. Cada capa realiza tareas nicas y especficas; slo tiene conocimiento de los niveles adyacentes, utiliza los servicios de la capa inferior y presta servicios a la capa superior. Este modelo (con las definiciones de servicios y protocolos asociados) es muy complejo y extenso y, por supuesto, no es perfecto. Muchas son las crticas que ha recibido durante todos estos aos. Sin embargo aporta un mtodo para enfocar la complejidad de un sistema (facilita la comprensin al dividir un problema complejo en partes ms simples), normaliza los componentes de red y permite el desarrollo por parte de diferentes fabricantes (los cambios de una capa no afectan las dems capas y stas pueden evolucionar ms rpido), garantiza la comunicacin entre procesos libre de error, evita los problemas de incompatibilidad (e indirectamente la obsolescencia), simplifica el aprendizaje, y as, un largo etctera, que prorroga su caducidad.

40

Linux+ 6/2009

soluciones para empresas Mquinas virtuales

Maquinas virtuales,
parte II
Daniel Garca

En esta segunda entrega nos adentraremos en los detalles de implementacin sobre el entorno de prueba. Se detallar paso a paso una instalacin de Debian, para los principiantes, clonacin de mquinas virtuales y configuracin de diversos servicios red, entre ellos: un firewall perimetral, un proxy cache transparente, un servidor DNS, etctcera.

xplicados los conceptos, ms o menos tericos, vamos a instalar paso a paso una mquina virtual. Se intentar detallar lo mximo posible este proceso para que pueda ser seguido con la mayor sencillez posible. El sistema que instalaremos ser Debian. El motivo es su sencillez, el bajo nmero de recursos necesarios, el poco espacio que ocupa en disco y el hecho de resolver dudas en cuanto a la instalacin, que mucha gente tiene.

Creando una nueva mquina virtual

Para comenzar pulsaremos el botn Nuevo que se encuentra en la parte izquierda superior de la ventana. Nos aparecer un asistente que nos dar la bienvenida. Pulsamos sobre Siguiente (o Next, dependiendo del idioma). Se nos pedir que le demos un nombre a nuestra nueva mquina (Figura 1). El nombre puede ser cualquiera, pero sera conveniente elegir uno descriptivo. En concordancia al sistema que vayamos a instalar. Tambin es una buena prctica no usar espacios para el nombre para evitar posibles problemas posteriores con la codificacin de carcteres que podran tenerse en algunos sistemas. En su lugar podemos sustituir el espacio por la barra baja (_). Nosotros llamaremos a nuestra mquina. Debian_base.

En el desplegable que aparece debajo hemos de indicarle el sistema operativo que vamos a instalar. Seleccionamos Debian. Como curiosidad, se puede observar que, dependiendo del sistema operativo que elijamos, a la derecha aparece su logotipo asociado. Podemos ver en la imagen cmo como nos ha de quedar el cuadro de dilogo y la espiral de Debian. Una vez hecho esto pulsamos el botn de Next. En esta pantalla podemos elegir la cantidad de memoria que queremos asignar a la mquina virtual (Figura 2). Este parmetro depende de varias cosas. La primera es la cantidad de memoria fsica de la que dispongamos. La segunda es el sistema operativo que vayamos a virtualizar. Por ejemplo, para un Windows XP, la cantidad de memoria no debera de ser menor de 512MB si queremos que su funcionamiento sea aceptable. En nuestro caso, al no instalar un entorno grfico, y disponer solamente de la funcionalidad bsica con 64 MB de RAM sera suficiente. Por lo tanto asignamos esa cantidad. Si nos fijamos bien VirtualBox tiene almacenada la cantidad de requisitos mnimos de memoria necesarios, segn el fabricante, para el correcto funcionamiento del sistema operativo y nos sugerir dicha cantidad de memoria. Presionamos Next para continuar. Aqu nos aparecen los, ya explicados, discos duros virtuales. Nos aparecer una pantalla

42

linux@software.com.pl

Linux+ 6/2009

soluciones para empresas Mquinas virtuales

Instalacin de Debian

Figura 1. Seleccin del nombre de la mquina y sistema operativo

como la de la Figura 3. Puesto que no tenemos ningn disco duro creado con anterioridad, pulsamos el botn de Nuevo. VirtualBox nos mostrar entonces otro asistente que nos permitir crear un nuevo disco virtual. Al igual que antes nos dar la bienvenida. Pasamos a la siguiente pantalla pulsando Next. En el siguiente cuadro nos parecer el tipo de disco deseado. Elegimos el tipo de Imagen de expansin dinmica y avanzamos de nuevo. Se nos pedir un nombre para el nuevo disco y un tamao mximo. Considero que es una buena costumbre el poner nombres descriptivos. Por eso llamaremos al disco: Debian_base_hd0. Este sufijo indica Hard Disk 0. Esta nomenclatura es idnea si posteriormente quisiramos aadir nuevos discos. Si lo hiciramos podramos llamarlos: Debian_base_hd1, Debian_base_hd2, etctera. En cuanto al tamao que nos asigna VirtualBox por defecto es excesivo para el tipo de instalacin que pretendemos hacer. Sera una buena idea asignar esa cantidad en un sistema Windows, Ubuntu o cualquier otro en que vayamos a almacenar cierta cantidad de informacin. En nuestro caso nos bastar con 4GB. Por tanto escribiremos (o moveremos el indicador) hasta 4,00 GB. Hecho esto, en el siguiente paso se nos mostrar un resumen con las caractersticas elegidas. Presionamos el botn Finish y nuestro disco estar preparado. Finalizado el asistente de creacin de discos volvemos al punto donde nos quedamos. Como podemos observar en la Figura 4, el disco es seleccionado de forma automtica como maestro. Esto, al igual que un PC fsico, significa que ser desde ese disco duro desde donde la mquina virtual arrancar. Si despus lo deseamos podemos aadir ms discos esclavos. Tambin vemos donde nos ha guardado los archivos que usa para emular el disco duro. Normalmente, a no ser que se le diga lo contrario, lo guardar en la carpeta personal del usuario. En un directorio oculto llamado .VirtualBox/VDI. Con el siguiente paso, en el que se nos muestra un resumen de todo lo elegido, finalizamos la creacin de nuestra nueva mquina.

Si hemos seguido correctamente los pasos del punto anterior, ahora estamos en disposicin de instalar nuestro sistema operativo. Esta instalacin nos servir como sistema base para el resto de pruebas y ejemplos que se hagan. Mucha gente no instala Debian porque, dicen, es muy complicada su instalacin. Nada ms lejos de la realidad. Por eso se har una instalacin extremadamente detallada para que nadie se pierda durante el proceso. En primer lugar hemos de conseguir el CD de instalacin de Debian. Podemos descargar la imagen desde la pgina oficial o seguir directamente este enlace: http://cdimage.debian.org/ debian-cd/5.0.0/i386/iso-cd/debian-500-i386netinst.iso. VirtualBox nos da la posibilidad de instalar el sistema sin necesidad de copiar la imagen en un cdrom, as que usaremos este mtodo. Abrimos el men de configuracin de la mquina que creamos en el apartado anterior. Seleccionamos el men, que se encuentra a la izquierda, CD/DVD-ROM. Pulsamos cuadro de chequeo para activar del CDROM y marcamos la opcin Archivo de imagen ISO. Pulsamos en el botn derecho para seleccionar la imagen que descargamos. Nos aparecer una nueva ventana. En ella tan solo tenemos que pulsar en Agregar y seleccionar el archivo que descargamos. Hecho esto pulsamos en seleccionar y se nos cerrar esa ventana. Volvemos a aceptar en el men de propiedades. Ahora arrancaremos, por primera vez, nuestra mquina virtual. Pulsamos el botn Iniciar. Cada vez que arranquemos una mquina virtual nos aparecer una ventana que nos informa sobre la captura del teclado para la mquina virtual. Cuando iniciamos un sistema virtualizado es necesario disponer de todos los dispositivos fsicos mnimos para funcionar, como es el teclado. El problema es que solo tenemos un teclado y no puede ser usado a la vez en el ordenador fsico (u otras mquinas virtuales) y en el virtual. Por lo tanto hay que elegir, o se utiliza en uno o en otro. Por eso, cuando ponemos en funcionamiento el sistema virtual, ste se aduear del teclado. Para expropirselo y que el sistema operativo de la mquina fsica vuelva a recuperarlo han de pulsarse una combinacin de teclas. Esto es as para cualquier entorno de virtualizacin. En VMWare, por ejemplo, es la combinacin CTRL + ALT. En VirtualBox es la tecla control de la parte derecha del teclado. La izquierda no liberar el teclado. Volviendo al mensaje, si lo leemos, eso es lo que nos dice. Si no queremos que cada vez que iniciemos una mquina virtual nos aparezca, basta con marcar el botn de chequeo, que se encuentra en la parte inferior de la pantalla. Aceptamos y continuamos

con la instalacin. La primera pantalla que se nos mostrar es la del gestor de arranque del CD (Figura 5). Salvo que queramos aadir algn tipo de parmetro no escribiremos nada, solamente pulsaremos Intro. Se empezar a cargar el kernel, los mdulos necesarios y una serie de servicios. Acabado esto nos aparecer como primer paso una pantalla en la que deberemos de seleccionar el idioma. Elegiremos Spanish como idioma y pulsamos Intro. En la siguiente pantalla se nos preguntar en qu idioma deseamos configurar el teclado. Por defecto, y si hemos elegido espaol, nos marcar por defecto castellano. Por tanto solo tenemos que pulsar Intro nuevamente. Entonces Debian empezar un proceso de reconocimiento de todo el hardware de su PC y carga de todos lo mdulos necesarios para su correcto funcionamiento. Aunque estamos en un mquina virtual, el sistema de virtualizacin emula unos drivers y un sistema fsico que requieren de su deteccin Exactamente igual que si estuviramos en un PC real. Este proceso puede tomar algn tiempo, dependiendo del resto de programas que tenga abiertos ocupando el procesador, o la potencia de ste ltimo. Ahora tendremos que ponerle un nombre a nuestra mquina virtual (Figura 6). Este nombre lo usar el sistema, sobre todo, para servicios de red. Nosotros hemos usado como nombre el de revista, pero sin el signo +, por no ser un carcter permitido como nombre. El lector puede usar el nombre que mejor le parezca. Una vez introducido pulsamos Intro para continuar. En la siguiente pantalla se nos pedir un nombre de dominio. Este tiene sentido cuando pretendemos instalar un sistema que, junto con el nombre de la mquina, identificar al PC en la red. Puesto que no es nuestro caso, sencillamente lo dejamos en blanco y pulsamos Intro para continuar. En el siguiente paso se nos pedir que seleccionemos una rplica de red. Las rplicas (o mirrors) son sistemas servidores, todos idnticos entre si, que contienen todos los paquetes existentes, y disponibles, para un sistema Debian.

Figura 2. Seleccin del tamao de la memoria

Figura 3. Nuevo disco duro virtual

Figura 4. Resultado aadir nuevo disco virtual

www.lpmagazine.org

43

soluciones para empresas Mquinas virtuales


mento de preparar los discos duros: particionarlos, seleccionar de forma correcta los puntos de montaje, seleccin del sistema de archivos y formateado de las particiones. Existen varias formas de hacer esto: manualmente y automticamente. Con la primera se pueden ajustar todos los parmetros ms detalladamente. Este sera el mtodo ideal de instalacin si furamos a usar el sistema para cualquier otra cosa que requiriera un mnimo de planificacin. La segunda es realmente cmoda y para el fin de esta gua ser ms que suficiente, aunque se explicar qu son cada uno de los ajustes que decide por nosotros el asistente. Para comenzar el particionado debemos de elegir el disco duro. En nuestro caso, al tener solamente uno, no hay lugar a equivocacin. Puesto que el disco duro lo est emulando VirtualBox, en el lugar que le correspondera al fabricante aparece VBOX HARDDISK (Figura 8). Por tanto pulsamos, sencillamente, Intro. La nueva pantalla es la que nos dar la posibilidad de elegir el tipo de particionado que queremos. Como dijimos antes seleccionaremos el particionamiento bsico. Por tanto elegimos la opcin Particionamiento guiado (Figura 9). Este tipo de particionado crea automticamente todas las particiones necesarias, que sern dos. Una para los archivos del sistema y otra para el espacio de intercambio o swap. Para crearlas ocupa todo el espacio del disco duro virtual. El sistema de fichero usado por defecto es ext3. Un sistema probado a lo largo de los aos. Demostrando, una y otra, vez su eficiencia y tolerancia a fallos. Despus de seleccionar esta opcin se nos mostrar un nuevo men. En ste elegiremos la opcin en la que poner, entre parntesis, para novatos. Como ltimo paso se nos mostrar un cuadro de confirmacin para autorizar la creacin de las particiones en el disco. Elegimos S. Acto seguido nos aparecer, de forma fugaz, un dilogo en que se indica que se est configurando la zona horaria y el reloj del sistema. Este proceso es automtico porque estos datos son tomados de la BIOS del PC. Posteriormente se nos pedir la contrasea de superusuario (o administrador o root). Puede elegir la que le parezca conveniente. Nosotros elegiremos una muy usual en entornos de pruebas: holamundo. Este paso tendremos que repetirlo dos veces. Una vez hecho tendremos que agregar un nuevo usuario al sistema. Primero se nos pedir una descripcin para el usuario. Se ha puesto una descripcin acorde a este artculo (Figura 11): Creacin de un entorno de pruebas con VirtualBox. A continuacin de la descripcin se nos pedir el nombre del usuario con el que se acceder al sistema (Figura 12). En este ejemplo: linuxplus. Al igual que para el superusuario ha de introducirse la contrasea para el nuevo usuario.

Listado 1. Eliminacin de servicios del arranque del sistema

(paramos squid y lo eliminamos del inicio) # /etc/init.d/squid stop # update-rc.d -f squid remove (paramos apache y lo eliminamos del inicio) # /etc/init.d/apache2 stop # update-rc.d -f apache2 remove (paramos el servicidor DHCP y lo eliminamos del inicio) # /etc/init.d/dhcp stop # update-rc.d -f dhcp remove (paramos snort y lo eliminamos del inicio) # /etc/init.d/snort stop # update-rc.d -f snort remove (paramos mysql y lo eliminamos del inicio) # /etc/init.d/mysql stop # update-rc.d -f mysql remove (paramos exim4 y lo eliminamos del inicio) # /etc/init.d/exim4 stop # update-rc.d -f exim4 remove

Listado 2. Clonado de todas las mquinas de la infraestructura


(Creamos el IDS) # VboxManage clonevdi debian_base.vdi IDS.vdi (Creamos el servidor web) # VboxManage clonevdi debian_base.vdi servidor_web.vdi (Creamos el servidor de base de datos) (Creamos el servidor de control de versiones) # VboxManage clonevdi debian_base.vdi servidor_svn.vdi (Creamos la mquina que har de firewall y router) # VboxManage clonevdi debian_base.vdi router_firewall.vdi (Creamos el proxy y servidor DHCP) # VboxManage clonevdi debian_base.vdi servidor_proxy_dhcp.vdi (Creamos el cliente uno) # VboxManage clonevdi debian_base.vdi cliente1.vdi (Creamos el cliente dos) # VboxManage clonevdi debian_base.vdi cliente2.vdi

Listado 3. Configuracin de la tarjeta red de Apache


auto eth0 iface eth0 inet static address 10.10.1.10 netmask 255.255.255.0 gateway 10.10.1.1

Cada vez que queramos instalar cualquier software usando el gestor de paquetes de Debian ser de ah de donde lo descargar. Por tanto cuanto ms rpida sea la conexin de ese servidor antes bajaremos los paquetes. En internet existen listas con los mejores servidores. Si no sabe cual escoger, eljalo de forma aleatoria, o el que se corresponda con su pas. Atendiendo a este ltimo criterio, habr seleccionado el servidor de Espaa. Una vez seleccionado nos aparecer

una lista con los mirrors pertenecientes a ese pas. Salvo que sepamos que el rendimiento de alguno de ellos es mejor que el del resto podemos elegirlo al azar. A continuacin tendremos que introducir la configuracin del proxy (Figura 7). Salvo que salga a internet a travs de uno, ha de dejar esta pantalla en blanco. Las siguientes pantallas son las que ms cuestan a los usuarios principiantes. Es el mo-

44

Linux+ 6/2009

soluciones para empresas Mquinas virtuales

Figura 7. Seleccin del disco maestro en la instalacin

Figura 5. Configuracin del nombre del PC

Como el objetivo del artculo no es la instalacin de un sistema de produccin, ni reforzar las medidas de seguridad, usaremos la misma contrasea que para el root. Despus de este paso el sistema empezar a instalarse, definitivamente. Este paso puede llevar un poco de tiempo, aunque los paquetes instalados son mnimos: nica y exclusivamente los paquetes necesarios para el arranque del sistema, con pocas opciones ms.

Recordemos que la idea es crear un sistema base para que pueda ser usado como punto de partida para otros sistemas. Por ejemplo: un servidor web. De esta manera solo tendramos que clonar la mquina (se explica ms adelante este proceso) e instalar el software de servidor. Cuando el sistema haya finalizado su instalacin nos aparecer un men que puede resultar curioso (Figura 13): Encuesta de popularidad de

paquetes. Este nos pide autorizacin para enviar a los desarrolladores de Debian informacin acerca de qu programas usa habitualmente. No se enva ningn otro tipo de informacin y la intencin no es espiar a nadie. Esta informacin ser usada con fines estadsticos. Con ella se podrn tomar decisiones sobre el software ms usado, aadir nuevo, quitar el que no se use, etctera. La siguiente pantalla nos dar la posibilidad de instalar software adicional (Figura 14). Como ya se ha dicho se pretende crear una instalacin lo ms liviana posible y por tanto no se instalar nada. De hecho la opcin de Sistema base tambin la desmarcaremos (para hacerlo nos situamos encima y pulsamos la barra espaciadora), porque instala una serie de paquetes que, a nosotros, nos resultan innecesarios y lo nico que conseguirn es ocupar espacio en disco. Si se quisiera instalar algn tipo de software para un entorno de escritorio o para servidor podra hacerse en esta pantalla, aunque yo no lo aconsejo, porque realmente no se tiene el control de qu se instala. Si seleccionramos Base de datos SQL, realmente sabemos qu gestor de bases de datos instalar? Podra ser MySQL, PostgreSQL o las libreras necesarias para usar SQLite. Por este motivo es ms conveniente aadir el software que necesitemos a posteriori. Finalizado este paso, el asistente revisar si hemos seleccionado algn tipo de paquetes para su instalacin. Dado que no es nuestro caso, este paso ser muy rpido.

Figura 6. Configuracin del proxy de instalacin

Figura 8. Seleccin del tipo de particionado

www.lpmagazine.org

45

soluciones para empresas Mquinas virtuales

Listado 4. Cdigo php para pgina de ejemplo


(creamos el archivo con nano) nano -w /var/www/index.php (escribimos el contenido) <? echo "<html>";

echo "<title>Pagina de prueba</title>"; echo " echo " <body>"; </head>";

echo " <head>";

Figura 9. Descripcin de usuario nuevo

for($i=0; $i<10;$i++){ }

echo "<p><b>Hola mundo</b>!</p>"; </body>";

echo " ?>

echo "</html>";

Listado 5. Configuracin de la tarjeta red de MySQL


auto eth0

iface eth0 inet static address 10.10a.1.11 gateway 10.10.1.1 netmask 255.255.255.0

Figura 10. Nombre de nuevo usuario

Despus de la instalacin del software se pedir confirmacin para la instalacin del gestor de arranque (Figura 15). Debian instala por defecto Grub. Actualmente, salvo contadas excepciones, debera de ser el gestor usado por la mayor parte de los usuarios ya que incorpora caractersticas que otros no hacen. Antiguamente era usado Lilo, pero se encuentra en desuso. El gestor de arranque es imprescindible. De no contar con uno, el PC no sabra dnde encontrar el sistema operativo para arrancarlo. Esto es as porque, entre otras responsabilidades, el gestor de arranque indica al PC en qu particin se encuentra el sistema operativo que se quiere arrancar. Finalmente se nos presentar un ltimo mensaje confirmndonos que la instalacin se realiz con xito y que solo nos queda quitar el CDROM y reiniciar (Figura 16). Puesto que nosotros no pusimos un CDROM, sino una imagen, hemos de ir al men de configuracin de la mquina virtual (cuando est apagada), a la seccin del CD/ DVD. Ah podemos elegir deshabilitar el lector

Listado 6. Aadir un usuario a MySQL


(Nos conectamos al servidor MySQL) # mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 55 Server version: 5.0.32-Debian_7etch8-log Debian etch distribution (Tecleamos el comando SQL) Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

(Damos los permisos adecuados al usuario) IDENTIFIED BY "PASSWORD";

mysql> CREATE USER 'USUARIO'@'10.10.1.10' IDENTIFIED BY 'PASSWORD'

mysql> GRANT ALL ON *.* TO 'USUARIO'@'10.10.1.10' (Aplicamos los cambios) mysql>FLUSH privileges; (Salimos del gestor) mysql>quit

Listado 7. Configuracin de la tarjeta red de SubVersion


auto eth0

iface eth0 inet static address 10.10.1.12 gateway 10.10.1.1 netmask 255.255.255.0

Listado 8. Creacin del repositorio SubVersin


(Creamos el directorio del trabajo del servidor) # mkdir /var/svn (Creamos el nuevo repositorio, llamado linuxplux) # svnadmin create /var/svn/linuxplus (Arrancamos el servidor) # svnserve -d -r /var/svn/

Figura 11. Encuesta de popularidad de Debian

46

Linux+ 6/2009

soluciones para empresas Mquinas virtuales


sumamente incmodo. Por eso, normalmente, se crea un sistema base, como hicimos nosotros. A partir de ste sacaremos tantas rplicas como necesitemos. De ah la importancia de la correcta instalacin del sistema base. En VirtualBox no existe ningn asistente que nos facilite este proceso, con lo que tendremos que hacerlo de forma manual en un terminal. Otros programas de virtualizacin, como VMWare, s que lo llevan integrado. En este sentido VirtualBox ha de mejorar considerablemente. Para crear una copia de la mquina virtual abriremos un terminal. Nos situamos en nuestra carpeta personal y entramos en el directorio oculto .VirtualBox. En l estn, por defecto, todos los archivos con nuestra configuracin personal y mquinas virtuales. Dentro de este, en el directorio VDI, estn nuestros discos duros virtuales, que es lo que buscamos. Entonces tecleamos los siguientes comandos:
# cd /home/USUARIO/.VirtualBox/VDI/ test -x /usb/bin/svnsrve || exit 0 case "$1" in start) echo "Arrancando servidor de SubVersion" svnserve -d -r /var/svn/ echo "Servidor SubVersion arrancado" ;; stop) echo "Apagando el servidor de SubVersion" killall -9 svnserve echo "Servidor de SubVersion apagado" ;; *) echo "Usar: $0 {start|stop}" exit 1 esac exit 0 # vboxmanage clonevdi Debian_base.vdi Debian_maquina1.vdi

Listado 9. Configuracin del acceso a SubVersin

[] anon-access = none auth-access = write password-db = passwd []

Listado 10. Script de inicio para SubVersion


auto eth0, eth1 iface eth0 inet static address 10.10.3.2 netmask 255.255.255.0 gateway 10.10.3.1 iface eth1 inet static address 10.10.2.1 netmask 255.255.255.0

Listado 11. Configuracin de la tarjeta red del proxy

Listado 12. Configuracin del servidor DHCP


option domain-name "linuxplus"; option domain-name-servers 10.10.2.2; option routers 10.10.2.1; default-lease-time 3600; subnet 10.10.2.0 netmask 255.255.255.0 { arrange 10.10.2.3 10.10.2.254; }

Donde USUARIO es el usuario con el que hemos accedido al sistema. El comando vboxmanage permite numerosas opciones y nos permite gestionar completamente todas nuestras mquinas. Le indicamos que queremos clonar (clonevdi), le decimos la mquina que queremos clonar (Debian_base.vdi) y cmo se llamar la nueva (Debian_maquina1.vdi). Con este sencillo paso ya habremos creado nuestro clon. Para poder usarla habremos de ir a VirtualBox y seleccionar la opcin de nueva mquina virtual. Se seguirn los pasos, como ya se explicaron, con la salvedad de que cuando lleguemos a la pantalla de configuracin de los discos virtuales elegiremos la opcin existente y seleccionaremos el que acabamos de crear. Ahora s, ya esta lista nuestra nueva mquina.

Configuracin de una red interna de mquinas virtuales. Conceptos y configuracin

Anteriormente se hizo un breve comentario sobre este tipo de configuracin para las inter-

o elegir la primera opcin y vincularlo a la unidad ptica del ordenador fsico. Llegados a este punto, ya tenemos nuestro sistema GNU/Linux, con la distribucin Debian, lista para ser usada.

por televisin u otros medios de comunicacin. Y eso es exactamente en lo que consiste: obtener un rplica exacta de algo que ya tenemos. Esto es sumamente til cuando tratamos con mquinas virtuales. En el punto anterior instalamos un Clonacin de mquinas sistema virtualizado. Si no tuviramos la posibilivirtuales: Conceptos y uso dad de clonar mquinas, cada nuevo sistema que El concepto de clonacin es bastante intuitivo. desesemos deberamos de crearlo desde cero, Estamos, incluso, acostumbrado a escucharlo repitiendo este proceso una y otra vez, lo que es Figura 12. Seleccin de programas a instalar

www.lpmagazine.org

47

soluciones para empresas Mquinas virtuales


faces de red. A pesar de no ser muy popular, puede resultar extremadamente til si se desea montar un entorno de laboratorio o de pruebas. El concepto es bastante simple. Se crear una red virtual, sin salida al exterior, en la que todas las mquinas cuya interfaz de red est aadida a dicha red, tendrn visibilidad entre ellas. Como puede comprobar, esto es lo que nosotros estamos buscando para montar nuestro propio entorno de pruebas. La configuracin de las interfaces es realmente simple en VirtualBox (Figura 17). Seleccionamos la mquina virtual que queramos aadir a la red privada. Abrimos su men de configuracin y nos dirigimos a la pestaa de red. Seleccionamos un adaptador de red que no tengamos en uso. En el segundo cuadro desplegable, con nombre Attached to o Aadido a, seleccionamos Red Interna (recuadro rojo en la figura). Hemos de darle un nombre a nuestra red. En nuestro caso se ha llamado red_pruebas (recuadro azul en la figura). Ahora solo nos queda guardar los cambios. Cualquier nueva mquina que queramos que pertenezca a esta red, tan solo habramos de seguir los mismos pasos. Cabe sealar que cuando seleccionamos tipo de configuracin para la red, no dispondremos de ningn servidor que nos asigne la IP de forma automtica. Por lo que tendremos que ponerla de forma manual. Este proceso se ver con detalle en el ejemplo de arquitectura que se muestra ms adelante. Como ltima puntualizacin, decir que podemos crear tantas redes virtuales como queramos. El nico requisito es que, obviamente, tengan nombres diferentes.

Listado 13. Configuracin del script de inicio del iptables del proxy
(Escribimos el contenido del fichero) test -x /sbin/iptables|| exit 0 case "$1" in start)

echo "Arrancando iptables"

/sbin/iptables -t nat -A PREROUTING -i echo "Iptables arrancado" stop) ;;

eth1 -p tcp -s 10.10.2.0/24 dport 80 -j REDIRECT -to-ports 3128

echo "Apagando iptables" /sbin/iptables -F /sbin/iptables -Z

/sbin/iptables -t nat -F echo "Iptables apagado" *) ;;

echo "Usar: $0 {start|stop}" exit 1

esac

exit 0

Listado 14. Configuracin de la tarjeta red del DNS


auto eth0 iface eth0 inet static address 10.10.2.2 gateway 10.10.2.1 netmask 255.255.255.0

Listado 15. Configuracin de las zonas de resolucin del DNS


zone "servidor_web.com" { type master; file "/etc/bind/db.servidor_web";

};

zone "servidor_mysql.com" { type master; file "/etc/bind/db.servidor_mysql";

};

Definicin de una infraestructura de red

zone "servidor_subversion.com" { type master; file "/etc/bind/db.servidor_subversion";

};

Listado 16. Configuracin de la zona servidor_web.com


; Archivo ; ; @ db.servidor_web

; BIND data file for local loopback interface $TTL 604800

IN

SOA servidor_web.com. root.servidor_web.com. ( 604800 2419200 86400 1 ; Serial ; Retry ; Refresh ; Expire

; @ @

604800 ) NS A

; Negative Cache TTL servidor_web.com 10.10.1.10

IN IN

En estos momentos estamos en disposicin de crear cualquier tipo de mquina virtual y obtener de ella tantos clones como gustemos. El objetivo de este artculo no es solamente la explicacin del proceso de creacin de una mquina virtual o la instalacin de Debian. Se pretende llegar ms all. Por eso se simular una red completa. Esta arquitectura ser implementada con VirtualBox ms adelante. La definicin que se ha seguido para el diseo de la infraestructura es el que se puede encontrar de forma ms tpica en cualquier intranet de una empresa media-grande. La Figura 18 expone esta arquitectura. Para cada figura del diagrama se indica su funcionalidad y su IP dentro de la intranet. Para aquellos que no estn familiarizados con los esquemas de red, el elemento azul circular es un router y los otros dos elementos del mismo color son switches. Explicando brevemente el

48

Linux+ 6/2009

soluciones para empresas Mquinas virtuales


ra todo el trfico, con el fin de analizarlo. A la izquierda del switch no encontramos una lnea que desemboca en un router. Todas las salidas y entradas desde, y hacia, internet estn controladas por un firewall (pared de ladrillo en dibujo). Estos dos elementos de la red sern simulados por una sola mquina, que tendr funciones de routing y de cortafuegos, mediante Netfilter. De la segunda lnea o interfaz del router cuelga el proxy, intermediario entre los clientes y el resto de la intranet e internet. El cometido de ste es, sobre todo, acelerar las cargas de los contenidos que solicitan los clientes. Para ello almacena una cach interna, o espacio temporal, del contenido de los lugares visitados anteriormente por los usuarios. Cuando un usuario solicita una pgina web, por ejemplo, el proxy comprueba si esa pgina ya ha sido visitada por otro usuario. De ser as servir la peticin con la copia de la pgina que tiene guardada en su cach interna. En caso contrario obtendr la web y la almacenar para futuras peticiones de otros usuarios. Este proceso acelera considerablemente la navegacin por parte de los clientes, ya que para contenido que desean consultar no han de acceder directamente a internet, con el tiempo que ello conlleva. Ya que siempre ser ms lento el acceso a internet que a la red local, que interconecta al cliente con el proxy. Despus de la explicacin del funcionamiento del proxy tiene sentido el que los clientes cuelguen de l, pasando a travs suyo.

Listado 17. Configuracin de la zona servidor_mysql.com


; Archivo ; ; BIND data file for local loopback interface ; $TTL @ IN 604800 SOA servidor_mysql.com. root.servidor_mysql.com. ( 1 604800 86400 2419200 604800 ) ; @ @ IN IN NS A servidor_web.com 10.10.1.11 ; Serial ; Refresh ; Retry ; Expire ; Negative Cache TTL db.servidor_mysql

Listado 18. Configuracin de la zona servidor_subversion.com


; Archivo ; $TTL @ IN 604800 SOA servidor_subversion.com. root.servidor.subversion.com. ( 1 604800 86400 2419200 604800 ) ; @ @ IN IN NS A servidor_web.com 10.10.1.12 ; Serial ; Refresh ; Retry ; Expire ; Negative Cache TTL db.servidor_subversion

; BIND data file for local loopback interface

Listado 19. Configuracin de las tarjetas de red del router/firewall


auto eth0, eth1, eth2 iface eth1 inet static address 10.10.1.1 netmask 255.255.255.0 iface eth2 inet static address 10.10.3.1 netmask 255.255.255.0 (Si se tiene IP esttica para acceder a internet) iface eth0 inet static address IP_OPERADOR netmask MASK_OPERADOR gateway GW_OPERADOR (Si ha configurado en modo NAT o se tiene IP dinmica) iface eth0 inet dhcp

Un ejemplo prctico: Montaje y configuracin de una red completa

diagrama, de derecha a izquierda. En primer lugar nos encontramos los servidores corporativos (suponemos siempre una intranet corporativa): servidor web (Apache, IIS...), un sistema gestor de bases de datos (Oracle, SQLServer, DB2, MySQL, PostgreSQL...), un sistema de control de versiones (CVS,SubVersion...). Del switch tambin cuelga Snort. Snort es un IDS (Sistema de Deteccin de Intrusos). Este ser

el encargado de detectar comportamientos sospechosos en la red y guardar las alertas de todas las incidencias que puedieran ocurrir. Esta informacin puede ser usada para mejorar el firewall, hacer seguimientos de ataques que se hayan recibido o, simplemente, para fines estadsticos. En la prctica toda la informacin que pasar por el switch sera replicada al puerto en que estuviera conectado. De esta manera recibi-

Segn el esquema planteado anteriormente, se explicar cmo montar cada mquina paso a paso, instalando y configurando cada servicio de forma adecuada para crear un ejemplo prctico que pueda servir como sistema de aprendizaje. Aunque probablemente despus deba ajustarlo a sus necesidades. Debido a la cantidad de mquinas necesarias para montar la infraestructura completa, es aconsejable que se centre en la parte que pueda interesarle. Si necesita hacer pruebas para un perfil de desarrollador, tal vez necesite solamente el segmento en el que se encuentran los servidores. Si lo que quiere es hacer pruebas con entornos de redes podra decantarse por implementar la parte en la que se encuentran los clientes, proxy, firewall y cortafuegos. Finalmente, si desea hacer pruebas de seguridad en un entorno lo ms realista posible, lo ideal sera que implementase la infraestructura completada. Aprovechando el ejemplo ya explicado en el que se detallaba una instalacin de Debian

www.lpmagazine.org

49

soluciones para empresas Mquinas virtuales


El siguiente paso es instalar todo el software anteriormente mencionado. Para eso hemos de usar el gestor de paquetes avanzado de Debian: aptitude. Aptitude tiene la misma funcionalidad que apt (y mucha ms) pero tiene un mayor soporte a la hora de resolver dependencias, lo que nos evitar ms de un dolor de cabeza. El software que se instalar es: squid (proxy), apache (servidor web), mysql (gestor de bases de datos), subversion (sistema de control de versiones, para desarrolladores), php y mdulos php para apache (lenguaje de scripting ampliamente usado para desarrollo web), dhcp (servidor de DHCP), snort (IDS, sistema de deteccin de intrusos). Para instalarlo ejecutaremos el siguiente comando. Si le aparecen ventanas para introducir informacin aceptaremos sin ms. Modificaremos las configuraciones ms adelante: mos el fichero: /etc/network/interfaces. Y pondremos el texto del Listado 3. El siguiente paso ser aadir el servidor Apache al inicio del sistema. Teclearemos el siguiente comando para ello:
# update-rd.d apache2 defaults

Figura 13. Instalacin del gestor de arranque: GRUB

para una mquina virtual, se va a tomar como punto de partida dicha instalacin. Dependiendo del uso final de la maqueta podramos instalar el entorno de dos formas: Usar esta primera mquina virtual e instalar todos los servicios que se van a usar en el entorno (apache, mysql, ) y a partir de esta mquina crear clones y, dependiendo de la posicin dentro la maqueta, activar unos servicios u otros. Esto, que a priori, puede resultar un mtodo poco adecuado es sumamente cmodo. Tan solo instalaremos todo el software necesario una vez, y a partir de ah configuraremos individualmente cada mquina. El otro mtodo es instalar y configurar cada mquina de forma independiente. Si se desea un entorno realista, tal vez, debera decantarse por esta posibilidad que, aunque de instalacin ms lenta, ser ms ptima. Por comodidad se usar el primer caso, hacindose clones a partir de esta mquina. Como primer paso instalaremos todo el software necesario para nuestra red. Para ello seleccionaremos nuestra mquina virtual base. Configuraremos la tarjeta de red en modo nat y acto seguido la arrancamos. Es importante sealar que la conexin a internet es imprescindible. Una vez arrancada nuestra mquina accederemos con nuestro usuario (linuxplus) y contrasea (holamundo). Lo primero que debemos de hacer es habilitar el uso de la red, por eso lo primero es demandar un IP al servicio de nat de VirtualBox. Para ello escribiremos en la consola:
# dhclient eth0

Donde eth0 es la interfaz de red. Si no tenemos configurada ninguna tarjeta ms, esta ser la que nos aparezca por defecto. Una vez hecho esto se nos asignar una IP con la que tendremos acceso a la red.

Figura 14. Tarjetas de red en modo Red Interna

Deberemos de cambiar los permisos del directorio en el que se servirn las pginas web. Antes de probar nuestra conectividad habremos de asegurarnos que, en la interfaz de red, hemos seleccionado la opcin Red Interna y pusimos el nombre de una red comn, compartida por el resto de servicios. Nosotros elegiremos la red llamada red_servidores. /var/www. Todo lo que se encuentre incluido en l ser interpretado por Apache y servido a los clientes. # aptitude install squid apache2 php5 Como pgina de prueba, crearemos una libapache2-mod-php5 mysqlsencilla pgina en php. Esta tan solo nos devolserver-5.0 ver un famoso hola mundo. dhcp3-server subversion snort Creamos un archivo llamado index.php en bind9 /var/www (Listado 4). Con este ejemplo tan simple y tonto ya Cuando se hayan instalado estos paquetes, por tendremos nuestra pagina en "php" lista para defecto, todos estos servicios nuevos sern servirse. puestos en funcionamiento y arrancarn de forma automtica en cada inicio del sistema. Co- Configuracin de MySQL mo no en todas las mquinas necesitamos tener En nuestro caso de pruebas, el servidor de todos los servicios, ya que sera un consumo de Apache que mont en el punto anterior, har recursos innecesario, los pararemos todos y se uso de un gestor de bases de datos. El gestor irn arrancando en aquellas que sea necesario. usado, en nuestro caso, ser MySQL. Habremos de seguir el mismo procedimiento que Para esto tecleamos el texto del Listado 1. Parados los servicios innecesarios, y lista para Apache y asignarle una direccin IP de nuestra mquina maestra, clonaremos todas las forma esttica, segn el diagrama de red su Ip mquinas necesarias. Antes de ejecutar los co- ser: 10.10.1.11. Pondremos la interfaz de red mandos, asegrese de que tiene suficiente espa- en modo Red Interna, con el nombre de la red cio en el disco duro, una nica mquina ocupar ser red_servidores, y editaremos el fichero sobre 1,5 GigaBytes. Si tiene en cuenta que se de configuracin: /etc/network/interfaces, que crearn ocho clones, el tamao total alcanzar deber de quedar como se presenta en el Listasobre 8 GigaBytes. Para hacer el clonado escri- do 5. El siguiente paso ser aadir el servidor biremos los comandos del Listado 2. Ya tenemos preparadas todas nuestras m- MySQL al inicio del sistema: quinas. Ahora tan solo queda interconectarlas. Comenzaremos por la parte de servicios. Este # update-rd.d mysql defaults no pretende ser un artculo en el que se expliquen todos los entresijos de los servicios que Para poder trabajar con MySQL debemos de instalarn a continuacin. Por ello se explicar, agregar un usuario con permisos para manejar a modo de ejemplo, como configurar de manera las bases de datos. Para conseguir esto tendrebsica todos ellos y tan solo aquello que sea mos que acceder, en modo consola, a la configuracin del gestor, pero primero tendremos necesario. que arrancarlo (puesto que estaba apagado). Configuracin de apache Arrancamos el gestor: Clonada nuestra mquina, que har las veces de servidor web, tendremos que configurarla. En # /etc/init.d/mysql start primer lugar debemos de asignarle una direccin IP de forma esttica, segn el diagrama de Hecho esto es el momento de aadir nuestro red explicado anteriormente. Para ello editare- usuario. Para eso accederemos a la gestin de

50

Linux+ 6/2009

soluciones para empresas Mquinas virtuales


Listado 20a. Creacin del firewall y script su script de inicio
(Escribimos el contenido del fichero) test -x /sbin/iptables|| exit 0 # Definimos la configuracin de las interfaces de red que disponemos. Sern usadas en el resto # del script. Si varan nuestras interfaces de red tan solo tendremos que modificar estos valores. IN_IFACE=eth0 SERVER_IFACE=eth1 CLIENTS_IFACE=eth2 function aplicar_reglas(){ # # Activarmos, en el KERNEL, una serie de medidas de seguridad # # Rechazamos los mensajes ICMP echo-request enviados a direcciones broadcast o multicast echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Rechazamos los paquetes a los que se les ha modificado el recorrido de enrutado en la cabecera IP echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route # Nos protegemos frente al ataque SYN flood echo 1 > /proc/sys/net/ipv4/tcp_syncookies # Evitamos la rediccecin de routas y puertas por defecto con mensajes ICMP. Tanto de envo como # de recepcin echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects # Habilitamos la proteccin contra spoofing en las irecciones IP origen echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter # Guardamos un registro con las IP de origen no vlidas echo 1 > /proc/sys/net/ipv4/conf/all/log_martians # # Establecemos las polticas por defecto para el filtrado. Se denegar todo el trfico no autorizado # expresamente. # iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # Eliminamos todas la reglas anteriores que puedieran existir iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT iptables -F -t nat # Permitimos el acceso a la interfaz de red local iptables -A OUTPUT -o lo -j ACCEPT # # Creamos una serie de reglas genricas para poder ser usadas en todas las interfaces # # Filtrado del flood iptables -N flood iptables -F flood iptables -A flood -m limit --limit 30/second --limit-burst 60 -j RETURN iptables -A flood -j REJECT # Filtrado ICMP iptables -N ICMP_NON iptables -F ICMP_NON iptables -A ICMP_NON -p icmp --icmp-type redirect -j REJECT iptables -A ICMP_NON -p icmp --icmp-type router-advertisement -j REJECT iptables -A ICMP_NON -p icmp --icmp-type router-solicitation -j REJECT iptables -A ICMP_NON -p icmp --icmp-type address-mask-request -j REJECT

iptables -A flood -m limit --limit 30/second --limit-burst 60 -j LOG --log-prefix "flood: "

www.lpmagazine.org

51

soluciones para empresas Mquinas virtuales


Listado 20b. Creacin del firewall y script su script de inicio
iptables -A ICMP_NON -p icmp --icmp-type address-mask-reply -j REJECT # Filtramos los paquetes invlidos y mal formados iptables -N PKT_FAKE iptables -F PKT_FAKE iptables -A PKT_FAKE -m state --state INVALID -j REJECT iptables -A PKT_FAKE -p tcp ! --syn -m state --state NEW -j REJECT iptables -A PKT_FAKE -f -j REJECT # Filtramos los paquetes TCP con combinaciones de flags no permitidas, usadas normalmente # cuando se realizan escaneos iptables -N FLAG_SCAN iptables -F FLAG_SCAN iptables -A FLAG_SCAN -p tcp --tcp-flags SYN,FIN SYN,FIN -j REJECT iptables -A FLAG_SCAN -p tcp --tcp-flags SYN,RST SYN,RST -j REJECT iptables -A FLAG_SCAN -p tcp --tcp-flags ALL FIN -j REJECT iptables -A FLAG_SCAN -p tcp --tcp-flags SYN,FIN,PSH SYN,FIN,PSH -j REJECT iptables -A FLAG_SCAN -p tcp --tcp-flags SYN,FIN,RST SYN,FIN,RST -j REJECT iptables -A FLAG_SCAN -p tcp --tcp-flags SYN,FIN,RST,PSH SYN,FIN,RST,PSH -j REJECT iptables -A FLAG_SCAN -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j REJECT iptables -A FLAG_SCAN -p tcp --tcp-flags ALL NONE -j REJECT iptables -A FLAG_SCAN -p tcp --tcp-flags ALL ALL -j REJECT iptables -A FLAG_SCAN -p tcp --tcp-flags ALL FIN,URG,PSH -j REJECT iptables -A FLAG_SCAN -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j REJECT # # Filtros para la interfaz eth0, de entrada de internet a la red # # Filtrado de direcciones privadas iptables -t nat -A PREROUTING -i $IN_IFACE -s 10.0.0.0/8 iptables -t nat -A PREROUTING -i $IN_IFACE -s 172.16.0.0/12 -j DROP -j DROP -j DROP -j DROP

# Si se conecta la interfaz en modo gridge, descomente estas lneas # iptables -t nat -A PREROUTING -i $IN_IFACE # iptables -t nat -A PREROUTING -i $IN_IFACE iptables -t nat -A PREROUTING -i -s 192.168.0.0/24 -s 192.168.0.0/16

$IN_IFACE -s 127.0.0.0/8 -j DROP

# Filtrado de direcciones en la que no se ha iniciado la conexin desde dentro de la subred iptables -A INPUT -i $IN_IFACE -p tcp ! --syn -m state --state NEW -j DROP # Pasamos los fitros definidos anteriormente iptables -A INPUT -i $IN_IFACE -p tcp -j iptables -A INPUT -i $IN_IFACE -p tcp -j iptables -A INPUT -i $IN_IFACE -p tcp -j iptables -A INPUT -i $IN_IFACE -p tcp -j iptables -A INPUT -i $IN_IFACE -p tcp -j # Denegamos el udp y icmp iptables -A INPUT -i $IN_IFACE -p udp -j iptables -A INPUT -i $IN_IFACE -p icmp -j # # Filtros para la interfaz eth1, de acceso a los servidores # # Pasamos los fitros definidos anteriormente a todo el trfico que se dirija a los servidores iptables -A OUTPUT -i $SERVER_IFACE-p tcp -j iptables -A OUTPUT -i $SERVER_IFACE -p tcp -j iptables -A OUTPUT -i $SERVER_IFACE -p tcp -j iptables -A OUTPUT -i $SERVER_IFACE -p tcp -j iptables -A OUTPUT -i $SERVER_IFACE -p tcp -j flood ICMP_NON PKT_FAKE FLAG_SCAN FLAG_SCAN DROP DROP DROP flood ICMP_NON PKT_FAKE FLAG_SCAN FLAG_SCAN

# Denegamos el udp y icmp a todo el trfico que se dirija a los servidores iptables -A OUTPUT -i $SERVER_IFACE- -p icmp -j # Aceptamos solamente el trfico que venga de nuestra red iptables -A INPUT -i $CLIENTS_IFACE -s 10.10.1.0/24 -p tcp -j ACCEPT

52

Linux+ 6/2009

soluciones para empresas Mquinas virtuales


Listado 20c. Creacin del firewall y script su script de inicio
# # Filtros para la interfaz eth2, de acceso a los clientes # # Pasamos los fitros definidos anteriormente a todo el trfico que se dirija a los clientes o venga de # ellos iptables -A OUTPUT -i $CLIENTS_IFACE-p tcp -j iptables -A OUTPUT -i $CLIENTS_IFACE -p tcp -j iptables -A OUTPUT -i $CLIENTS_IFACE -p tcp -j iptables -A OUTPUT -i $CLIENTS_IFACE -p tcp -j iptables -A OUTPUT -i $CLIENTS_IFACE -p tcp -j iptables -A INPUT -i $CLIENTS_IFACE-p tcp -j iptables -A INPUT -i $CLIENTS_IFACE -p tcp -j iptables -A INPUT -i $CLIENTS_IFACE -p tcp -j iptables -A INPUT -i $CLIENTS_IFACE -p tcp -j iptables -A INPUT -i $CLIENTS_IFACE -p tcp -j flood ICMP_NON PKT_FAKE FLAG_SCAN FLAG_SCAN flood ICMP_NON PKT_FAKE FLAG_SCAN FLAG_SCAN

# Aceptamos solamente el trfico que venga de la ip del proxy iptables -A INPUT -i $CLIENTS_IFACE -s 10.10.3.2/32 -p tcp -j ACCEPT # Denegamos el udp y icmp a todo el trfico que se dirija a los clientes o venga de ellos iptables -A OUTPUT -i $CLIENTS_IFACE -p udp -j iptables -A OUTPUT -i $CLIENTS_IFACE -p icmp -j iptables -A INPUT -i $CLIENTS_IFACE -p udp -j iptables -A INPUT -i $CLIENTS_IFACE -p icmp -j } case "$1" in start) echo "Arrancando iptables" aplicar_reglas echo "Iptables arrancado" ;; stop) echo "Apagando iptables" /sbin/iptables -F /sbin/iptables -X /sbin/iptables -Z /sbin/iptables -t nat -F echo "Iptables apagado" ;; *) echo "Usar: $0 {start|stop}" exit 1 esac exit 0 DROP DROP DROP DROP

mysql y crearemos el usuario en su propio lenguaje (SQL), segn el Listado 6. Solamente resta cambiar USUARIO y PASSWORD por los que elijamos. Entonces, para acceder a la base de datos, tan solo tendremos que conectarnos a la IP 10.10.1.10, con nuestro usuario y contrasea, al puerto 3306.

Configuracin de SubVersion

La configuracin para el servidor de control de versiones es prcticamente idntica al de los otros dos servidores. Tan solo tendremos que poner la interfaz de red en modo Red Interna con el valor red_servidores, como hicimos an-

teriormente, y cambiar su IP, modificando el fichero: /etc/network/interfaces. Pondremos el texto del Listado 7. Ahora tendremos que crear un repositorio para nuestros proyectos. En l ira su cdigo fuente. Para hacerlo primero creamos el directorio donde queremos alojar estos fuentes y despus dicho repositorio. Acto seguido arrancaremos el servidor, indicndole donde se encuentra el directorio raz a partir del cual tendr que trabajar. Escribimos el contenido del Listado 8. Si queremos aadir un mnimo de seguridad a nuestro servicio deberamos de editar

un par de ficheros de configuracin. En ellos modificaremos los derechos de acceso, exigiendo la autenticacin para acceder y deshabilitando el acceso annimo. Para cambiarlo, editamos el archivo: /var/svn/linuxplus/ conf/svnserve.conf. Habremos de asegurarnos que las siguientes lneas se encuentran descimentadas y con los siguientes valores. Es muy importante no dejar ningn espacio entre cada parmetro y el principio de la lnea, segn se muestra en el Listado 9. Ahora aadiremos un usuario, con su contrasea, al que daremos acceso al repositorio que acabamos de crear. Para esto editamos

www.lpmagazine.org

53

soluciones para empresas Mquinas virtuales


(o creamos) el fichero: /var/svn/linuxplus/conf/ passwd. Aadimos la siguiente lnea:
[] usuario_pruebas = holamundo []

Listado 21. Aadidos para las funciones de routing


function aplicar_routing(){ # # Mandamos las peticiones de los clientes a los servidores internos # # Enviamos el trfico al servidor web iptables -A POSTROUTING -t nat -s 10.10.3.0/24 -o eth1 -d 10.10.1.10 dport 80 -j SNAT --to-source x 10.10.1.1 # Enviamos el trfico al servidor MySQL iptables -A POSTROUTING -t nat -s 10.10.3.0/24 -o eth1 -d 10.10.1.11 dport 3306 -j SNAT --to-source x 10.10.1.1 # Enviamos el trfico al servidor SubVersion iptables -A POSTROUTING -t nat -s 10.10.3.0/24 -o eth1 -d 10.10.1.12 dport 3690 -j SNAT --to-source x 10.10.1.1 # # Habilitamos el acceso a internet para el proxy # iptables -A POSTROUTING -t nat -s 10.10.3.0/24 -o eth1 -j MASQUERADE } [] start) echo "Arrancando iptables" aplicar_reglas aplicar_routing echo "Iptables arrancado" ;;

Donde usuario_pruebas es el nombre de usuario que hemos elegido, podra ser cualquiera. Y holamundo es la contrasea para dicho usuario. Este fichero tiene que tener tanta lneas, idnticas a esta, como usuarios queramos permitir el acceso al repositorio. Para probar nuestro nuevo servidor, importaremos el repositorio y aadiremos un comentario. Suponiendo que los cdigos fuente que queremos importar estn en el directorio: /home/linuxplus/prueba, ejecutaremos:
svn import /home/linuxplus/prueba svn: //servidor/linuxplus -m "Primer primer import" -username usuario_pruebas

Si quisiramos tener una copia local, con el usuario usuario_pruebas, del repositorio creado anteriormente, necesitamos hacer un checkout. Para ello nos situamos en el directorio donde tenemos los fuentes y ejecutamos:
svn checkout /home/linuxplus/prueba svn://servidor/linuxplux -username usuario_pruebas

Listado 22. Script de autoarranque de la infraestructura


#!/bin/bash

Con Apache y MySQL hemos aadido el servicio al arranque del sistema con los scripts preconfigurados que nos trae la distribucin para esto. En el caso de SubVersion no se nos presenta esta posibilidad de forma automtica. Por lo tanto nos haremos nosotros nuestro propio script de arranque. Para esto copiaremos el siguiente cdigo en un archivo al que llamaremos subversion enas, del repositorio creado anteriormente, necesitamos hacer un checkout. Para ello nos situamos en el directorio donde tenemos los fuentes y ejecutamos: el directorio: /etc/init.d/. Esto es necesario hacerlo como root. Con el editor nano, o el que prefiramos, escribimos:
(Creamos el fichero con nano) # nano -w /etc/init.d/subversion

VboxManage startvm servidor_web & VboxManage startvm servidor_mysql & VboxManage startvm servidor_svn & VboxManage startvm router_firewall & VboxManage startvm servidor_proxy & VboxManage startvm cliente1 &

Escribimos el contenido en el fichero (Listado 10). En el script comprobamos, con test, si existe el ejecutable para evitar errores posteriores. Despus se implementan la opcin de iniciar, start, y parar, stop, el servicio. Tambin se contempla la posibilidad de que no se pasen parmetros al programa. Tan solo nos falta aadirlo al inicio. El sistema reconocer el patrn usado

y llamar automticamente al programa con el Interna. La nica diferencia ser la red a la que parmetro start. Para aadirlo hacemos, al igual la aadiremos. Para este ejemplo el nombre que con Apache y MySQL: elegido ha sido: red_proxy. En la segunda interfaz diferenciamos, de# update-rd.d subversion defaults pendiendo del tipo de cliente que queramos conectar. Si queremos conectar clientes virtuales, Configuracin del proxy aadiremos una nueva interfaz con la misma y servidor DHCP configuracin de red que la anterior, pero que Situado en este punto empezamos a definir la pertenezca a la red red_clientes. Si queremos red desde el otro punto, la parte de los clientes. clientes reales tendremos que habilitar una seLas diferencias que encontraremos aqu sern, gunda interfaz y crear un bridge (como se explientre otra las direcciones IP usadas y la red a la c en un apartado anterior) con una de las interque tendremos que aadir las mquinas. faces reales del PC. La interfaz real tendra que ir En este punto tendremos una de las op- conectada a un switch real, en que se conectaran ciones ms interesantes de esta arquitectura. todos los PC de los clientes que se deseasen. Podremos configurar esta mquina virtual para Cuando se haya decidido cul es la confiLa primera interfaz de red (eth0) tiene la guracin deseada, la configuracin es exactamisma configuracin que los otros servidores mente la misma para ambos casos, ya que para que hemos montado hasta ahora, es decir, Red la mquina virtual esas configuraciones son

54

Linux+ 6/2009

soluciones para empresas Mquinas virtuales


totalmente transparentes. Como se ha hecho anteriormente, configuraremos las interfaces de red. Se debe de tener cuidado a la hora de activarlas en el entorno de configuracin de VirtualBox. La primera interfaz es la que debe de pertenecer a la red red_proxy y la segunda, dependiendo de su eleccin, es la que debera de estar bridgeada o pertenecer a la red red_ clientes. De no ser as la configuracin que aqu se expone no coincidir con la que usted tiene y no funcionara. Editamos el fichero: /etc/network/interfaces, modificndolo hasta que sea como en el Listado 11. Configuramos Squid editando el fichero: /etc/squid/squid.conf. La configuracin aqu mostrada es muy bsica. Tan solo se crearn una serie de filtros de acceso, se aumentar el tamao de la cach y poco ms. Puesto que el fichero de configuracin es inmensamente largo se especificar, por comodidad, el nmero de linea en que se encuentra el parmetro (aunque podra variar). Aqu estn los parmetros con una pequea explicacin. Para comentar una lnea tan solo hay que poner el carcter almohadilla (#). Para descomentar se har a la inversa, cuidando de no dejar ningn espacio entre el parmetro descomentado y el principio de la lnea: Lineas 608-609: acl localnet src 172. 16.0.0/12 y acl localnet src 192.168. 0.0/16. Comentamos estas dos lneas y con esto estamos indicando que no permitimos el acceso a esas dos redes, ya que no pertenecen a nuestra red. Lnea 607: acl localnet src 10.0.0.0/8, la cambiamos por acl localnet 10.10. 2.0/24. Aadimos otra lnea, igual que la recin aadida, con el texto acl localnet 10.10.1.0/24. Lnea 1110: http_port 3128, la cambiamos por http_port 3128 transparent. Con esto aadiremos la funcionalidad de proxy transparente (explicada ms adelante). Lnea 1694: hierarchy_stoplist cgibin ?, esto lo cambiamos por hierarchy_
stoplist cgi-bin jsp do cfm asp aspx php php4 php5 ?. Con esto evitamos que Squid guarde en su cach las pginas con contenido dinmico. Lnea 1732: "cache_mem 8 MB". Descomentamos esta lnea y cambiamos el valor 8 por 24. El valor ideal es un tercio de la memoria RAM. Lnea 4627: "ipcache_size 1024", la descomentamos y cambiamos el valor 1024 por 2048. Este valor indica el tamao que reserva Squid para las direcciones IP almacenadas en su cach.

Una vez modificados estos parmetros bsicos, Configuracin de los clientes tendremos nuestro Squid listo para funcionar. Hayamos escogido el tipo de clientes que Tan solo nos queda aadirlo al arranque del deseemos, virtuales o reales, la configuracin sistema. Ejecutaremos: # update-rd.d squid para todos ellos tiene que tener, al menos, un defaults. punto en comn. Este punto escriba en la confiAhora configuraremos un servidor DHCP. guracin de la IP que el PC tendr para acceder Para evitar que cada cliente tenga que asignarse a la red. En ambos casos tendremos que usar manualmente una IP, montaremos este servicio. un cliente DHCP. Esto es indistinto del tipo de Segn se defini en la infraestructura, se asig- sistema que se encuentre instalado en los sisnarn IPs del rango: 10.10.2.3-10.10.2.254. Pa- temas de usuario. Tanto Windows, Linux, Mac ra establecer esta configuracin modificaremos OS, FreeBSD, etctera, disponen de un cliente el fichero que define al servidor: /etc/dhcp3/ DHCP. Windows o Mac traen de manera predhcpd.conf. Escribiremos el texto presentado determinada este tipo de configuracin, al igual en el Listado 12. que algunas distribuciones de Linux, como Hecho esto, ya tenemos nuestro servidor Ubuntu. Por lo que no tendr que tocar nada en preparado. Lo aadimos al arranque: los equipos de cliente de su red. Si quiere configurar alguna de las mqui# update-rd.d dhcp3-server defaults. nas que se clonaron anteriormente como cliente y activarle el DHCP, tan solo ha de configurar la Puesto que se pretende hacer un proxy traspa- tarjeta de red en modo Red Interna y establecer rente, en el que no es necesario que el usuario el nombre de la red en red_clientes. Despus aada ningn tipo de configuracin en su nave- tendr que modificar la mquina virtual y camgador para que pueda salir a travs de l, habre- biar el archivo de configuracin: /etc/network/ mos de incluir unas cuantas reglas de iptables. interfaces, y ha de poner lo siguiente: Iptables nos permite filtrar el trfico de la red e incluso hacer tareas de enrutamiento. Lo que auto eth0 le indicaremos ser que todo el trfico que entre iface eth0 inet dhcp por la interfaz eth1, en la que estn conectados los clientes, sea redirigido de forma automtica Con esa sencilla configuracin, cada vez que a Squid. Para el usuario ser un proceso trans- arranque el sistema, el equipo pedir IP al serparente. Para hacer esto habremos de aadir lo vidor DHCP que instalamos anteriormente. Por que llamamos reglas. Estas son las que le indi- su puesto ste ha de estar encendido. can a iptables qu ha de hacer con el trfico que Configuracin del servidor DNS recibe el sistema. Escribiremos en la consola: Toda intranet que se precie, y ms teniendo en (redireccionamos para cuenta que existen equipos con IPs fijas, debera la transparencia del proxy) disponer de un servidor DNS. Es sumamente inc# iptables -t nat -A PREROUTING -i modo el recordar estas IP aunque tan solo sean 3. eth1 -p tcp -s 10.10.2.0/24 dport 80 Por eso les asignaremos unos nombres que nos -j REDIRECT -to-ports 3128 encargaremos de traducir estas IP con el servicio. Como primer paso, configuraremos la inComo queremos que este comando se ejecute terfaz de red, como hemos hecho hasta ahora. automticamente al inicio de cara arranque Pondremos la interfaz en modo Red Interna del sistema, tendremos que fabricarnos, igual y introduciremos como nombre de red la red_ que hicimos con SubVersion, un script que se clientes. Editamos el archivo de configuracin encargue de ello. Para hacerlo crearemos el para asignarle una IP: /etc/network/interfaces fichero: /etc/init.d/iptables. Y escribiremos lo (Listado 14). siguiente: El servidor que usaremos es el archiconocido Bind9. Solmente se har una configuracin (Creamos el fichero con nano. CTRL+X bsica, que nos servir para nuestra red de para salvar) pruebas. # nano -w /etc/init.d/iptables Los nombres que les asignaremos a los servidores sern los siguientes: al servidor web Aadimos el cdigo, que podemos encontrar en servidor_web.com, al servidor mysql servidor_ el Listado 13. mysql.com y al servidor SubVersion servidor_ Para finalizar solo hay que aadir iptables subversion.com. Con estas premisas, y coal inicio del sistema: nocidas sus IP, configuraremos Bind9. Editamos el fichero de configuracin: /etc/ # update-rd.d iptables defaults bind/named.conf.local. En l aadiremos los

www.lpmagazine.org

55

soluciones para empresas Mquinas virtuales


tres servidores con sus resoluciones. Aadiremos estas lneas al fichero (Listado 15). Creamos los ficheros de configuracin a partir de uno que ya existe, y que viene con la instalacin del paquete: db.local. Creamos las tres copias:
# cp db.local db.servidor_web # cp db.local db.servidor_mysql # cp db.local db.servidor_subverion

Editamos, uno a uno, estos archivos de configuracin. Quedndonos como sigue en los listados: Listado 16, Listado 17, Listado 18. Con esos archivos le hemos indicado a Bind9 como ha de resolver los nombres de dominio. Ahora, cualquier usuario podr introducir en su navegador la URL www.servidor_web.com y la ip que buscar para obtener la pgina ser la del servidor de la red interna. Ahora tendremos que aadir el servidor DNS al inicio del sistema:
# update-rd.d bind9 defaults

Todo el entramado de mquinas virtuales e interconexiones entre ellas no servira de nada si no tuviramos un router que fuera capaz de hacer fluir el trfico con el camino adecuado. Sin l, las peticiones de los clientes al servidor web no sabran cmo llegar si no hubiera nadie que los dirigiera. Por esto nos hace falta un router. Si bien es cierto que podramos haber conectado todo con una topologa de BUS y ahorrarnos tanta complicacin, esta estructura es muy poco escalable, eficiente, segura y, en general, una muy mala decisin. El proceso de routing se har con iptables que, como se dijo anteriormente, tiene soporte para ello. En la misma mquina virtual se incluir el firewall perimetral. Este ser el encargado de decidir qu entra y sale a la intranet. En toda red corporativa es imprescindible. El filtrado tambin est soportado por iptables, y ste ser en el que confiaremos la seguridad de la barrera de entrada de internet. Esta es la mquina virtual en la que ms se complicar la configuracin de las interfaces de red. Si contamos en el diagrama que se present, necesitaremos tres. Una que conecte a la red de los servidores (eth1), otra a la de los clientes (eth2) y una tercera que ser por la que se saldr a internet (eth0). Esta ltima depender mucho de cmo desee hacer el acceso a la red externa. Si no desea este acceso puede incluso deshabilitarla. Si quiere que haya salida al exterior, pero Figura 15. Diagrama de la infraestructura de red a crear

Configuracin del firewall y router

Como ltimo punto para nuestra red de ejemplo hemos dejado a Snort. Este, como ya se coment, es un complejo sistema de deteccin de intrusos. Consta de infinidad de filtros y multitud de opciones. Para modificar los parmetros de configuracin editaramos el fichero:/etc/snort/ snort.conf. En nuestro caso, al ser un entorno de maqueta, nos valdr tal y como est. Existen alguna opciones que merece la pena comentar, entre ellas las variables de entorno que se pueden asignar en Snort. Ejemplos de las mismas son: HOME_NET, DNS_SERVERS, SMTP_SERVERS... stas le indicarn al IDS las redes que tiene que monotorizar. En Snort existen unas cosas llamadas preprocesadores. Estos permiten extender su funcionalidad. De esta manera que el usuario pueda acceder a los paquetes capturados antes de que lo haga motor de Snort. Existen, tambin, los llamados plugins de salida. Configurndolos de manera adecuada le (Creamos el fichero con nano. CTRL+X ponemos cmo queremos que se nos muestre para salvar) la informacin obtenida del anlisis del trfico. # nano -w /etc/init.d/iptables Los ms comunes suelen ser la salida al fichero de log /var/log/snort/alert, donde podramos Aadimos el cdigo, que se encuentra en el consultar las alertas, y la posibilidad de guardar Listado 20. toda la informacin en una base de datos. Esta

no necesita permitir el acceso desde l, bastar con configurar la tarjeta en modo NAT. De querer que esta infraestructura pueda servir como ejemplo real, y ofrecer una serie de servicios al exterior, deber de configurarla en modo bridge y disponer de una segunda interfaz fsica en el PC. Si desea hacer pruebas reales desde la red externa, como puede ser el caso de una PYME, probablemente tenga una IP esttica, para acceder a internet, que le haya asignado su operador. En este caso deber de ser configurada tal y como se ha venido haciendo hasta ahora. En el caso del la configuracin NAT la IP ser asignada automticamente por DHCP. Vamos a configurar nuestras tarjetas de red. Como ya se ha dicho la nica configuracin que vara es la de la tarjeta eth0, que tambin se contemplar. Editamos, como siempre, el fichero: /etc/network/interfaces. Y escribimos el contenido del Listado 19. Donde IP_OPERADOR es la IP que nos ha asignado el perador, MASK_OPERADOR la mscara de red y GW_OPERADOR la puerta de enlace. Hecho esto es el momento de implementar el filtrado y las funciones de routing. En primer lugar aadiremos las funciones de firewall. Para esto crearemos un script de arranque automtico del sistema, como ya se ha hecho en otros ejemplos. Cogeremos el cdigo que se us para las reglas de redireccionamiento en el proxy transparente y le aadiremos las reglas adecuadas. Creamos por tanto el fichero iptables en el directorio /etc/init.d/ y aadimos las siguientes reglas (se comentar la funcionalidad una a uno):

A pesar de que pueda parecer muy extenso, quedaran por implementar varias cosas, dado que el objetivo del artculo es la creacin de firewalls, con este ejemplo ser mas que suficiente. Ahora tan solo nos quedan las funciones de routing. Para implementarlas solo tendremos que aadir una funcin a nuestro script anterior. No se escribir todo el cdigo, solamente la funcin y cmo quedara en el nuevo caso de arranque del script (Listado 21). Tan solo nos queda anadir el script al inicio, como hemos venido haciendo hasta ahora:
# update-rd.d iptables defaults.

Configuracin de Snort

56

Linux+ 6/2009

soluciones para empresas Mquinas virtuales


ltima puede permitir analizar la informacin recogida por un software que se encargue de mostrarnos un resumen. Un ejemplo de esto es el ACID. Esta es una interfaz, en formato web, que muestra la informacin ordenada (entre otras posibilidades). Ya que el fin del artculo no es explicar la configuracin de Snort, y puesto que no es necesario para el correcto funcionamiento de nuestra infraestructura, lo dejaremos con la configuracin por defecto. Deberemos de poner su interfaz de red en modo Red Interna, aadindolo a la red red_servidores. La interfaz ser configurada, por Snort, en modo promiscuo. Por tanto no es necesario asignarle ninguna IP. Tan solo nos queda aadir el servicio de snort al arranque del sistema: # update-rd.d snort
defaults.

Escribimos los siguientes comandos:


# VBoxManage covnvertdd NUEVA_ IMAGEN.bin IMAGEN_VIRTUALBOX.vdi # VBoxManage modifyvdi IMAGEN_VIRTUALBOX.vdi compact.

Sobre el autor
Daniel Garca es Diplomado en Ingeniera Tcnica Informtica por la Escuela Politcnica Superior de Informtica de Albacete. Especializado en seguridad informtica, trabaja actualmente como auditor de seguridad para Arcitel Ibrica S.A., en divisin de seguridad de Telefnica I+D. Puede localizarse en la web en la que colabora, o en el correo electrnico: Web: www.iniqua.com E-mail: dani@iniqua.com E-mail: dani@domandhost.com

Usando como referencia el nombre del fichero de salida obtenido con Qemu, han de pasarse los parmetros tal y como se muestran. IMAGEN_VIRTUALBOX.vdi es la imagen final que contendr la conversin de la mquina virtual.

Conversin de mquinas virtuales VirtualBox a mquinas de VMWare

Miscelanea: Conversin de mquinas virtuales VMWare a mquinas de VirtualBox

Muchas veces, si ya se es usuario habitual de otro tipo de software de virtualizacin, nos resistimos a migrar a cualquier otro. El problema es que, seguramente, tengamos todas nuestras mquinas virtuales configuradas y adaptadas para ese entorno. Por ello se va a explicar el proceso, mediante el cual, se puede convertir una imagen de VMWare en una de VirtualBox. Antes de comenzar necesitamos instalar software adicional. Bien con el gestor de paquetes Synaptics, apt o emerge, debemos de instalar Qemu. Qemu tiene una serie de caractersticas que, para nuestro caso, nos resultarn (Conversin al formato raw) muy tiles. Para instalarlo tecleamos: En Debian/Ubuntu: En Gentoo:
# apt-get install Qemu # emerge qemu

Al igual que a veces es necesario migrar mquinas de VirtualBox a VMWare, otras podramos encontrarnos en la situacin de necesitar realizar el proceso inverso. Antes de hacer la conversin hay que llevar a cabo una serie de pasos para preparar los discos para el formato adecuado necesario para VMWare. Aunque el proceso de conversin se puede hacer de diferentes maneras, existen problemas asociados a la compatibilidas si no se hace con procedimiento adecuado, siguiendo unos pasos rigurosos. Como primer paso tendremos que hacer un proceso de conversin del disco duro virtual, obteniendo un sistema archivo de tip raw. En el siguiente paso se aplicar el formato adecuado para VMWare. Para esto haremos uso de la herramienta de administracin de VirtualBox, VboxManage, y qemu. Los comandos necesarios son:

levantar todas las mquinas virtuales que desee. En el Listado 22 se presenta el cdigo. script presentado arriba, se encarga de arrancar todas las mquinas que se han creado durante el artculo. Tan solo habra que guardarlo y darle permisos de ejecucin. Esto se puede hacer as:
# nano -w arrancar_maquinas.sh [] (damos permisos de ejecucin) # chmod 744 arrancar_maquinas.sh

# VboxManage internalcommands converttoraw ORIGEN.vdi DESTINO.raw (Conversin a formato VMWare) # qemu-img convert -0 vmdk DESTINO.raw MAQUINA_VMWARE.vmdk

En general, si queremos aadir una nueva mquina que hayamos creado, tan solo hemos de aadirla al script segn el formato: VbovManage startvm MAQUINA &. Tendr que cambiar la palabra MAQUINA por el nombre de la suya. El ampersand (&) es utilizado para que cada mquina no tenga que esperar a la anterior hasta que se acabe el proceso y puedan arrancar todas a la vez.

En la red
VirtualBox: http://www.virtualbox.org/ MySQL: http://doc.ubuntu-es.org/MySQL, http://www.desarrolloweb.com/ manuales/41/ Subversion: http://www.abbeyworkshop.com/howto/ misc/svn01/ Ejemplo firewall: http://www.kalamazoolinux.org/ presentations/20010417/ jamesiptables.html Ejemplo avanzado de firewall: http://www.hacktimes.com/?q=node/49 Snort: http://www.linuca.org/ body.phtml?nIdNoticia=13

Una vez instalado Qemu, haremos uso de l para convertir la mquina de VMWare a un formato binario. Este tipo de formatos, cuya caracterstica principal es, precisamente la ausencia de formato, se les llama formato en crudo o raw. Realizaremos la conversin tecleando:
# qemu-img convert IMAGEN_VMWARE.vmdk NUEVA_IMAGEN.bin

Donde ORIGEN.raw es el disco duro virtual que queremos convertir. DESTINIO.raw es la imagen, tipo raw, que se crea como paso intermedio y MAQUINA_VMWARE.vmdk es la que tendremos que abrir como nueva mquina virtual en VMWare.

Arrancando toda la infraestructura con un solo comando

Donde IMAGEN_VMWARE.vmdk es la mquina que queremos convertir. Todas las imgenes de VMWare tienen la misma extensin, siendo fcilmente reconocibles. Y NUEVA_IMAGEN.bin es la imagen en crudo, anteriormente explicada. Ahora haremos uso de la herramienta de administracin de VirtualBox para acabar la conversin.

Si ha seguido el artculo paso ha paso, y ha creado todas las mquinas virtuales que se indican en el ejemplo, se habr dado cuenta que cada vez que necesita arrancar todas ellas tiene que iniciarlas una a una desde el gestor grfico. Debido a esta incomodidad se propone a continuacin un pequeo script que har esta tarea por usted. Con solo ejecutarlo, se encargar de

www.lpmagazine.org

57

seguridad Seguridad de datos

Su informacin,
a salvo?
David Puente Castro (blackngel)

De qu servira un ordenador si no pudisemos almacenar informacin en l? Absurda mquina si esto ocurriese. Pero aun no siendo as, de nada sirve si no podemos mantener esta informacin lejos de curiosos atacantes. El problema es claro. Hasta qu punto la privacidad de nuestros datos est garantizada?

lo largo de este artculo podr ver cmo los datos que usted toma como definitivamente eliminados, no son tal. Cmo estos pueden ser recuperados y cmo esto afecta a su seguridad. Pero para ello haremos un breve viaje a travs de los medios de almacenamiento, el concepto de informtica forense y los fallos ms comunes de los sistemas operativos en materia de administracin de ficheros. Daremos tambin un paseo por el software de borrado seguro y sus enemigas las herramientas de anlisis forense. Cmo no, haremos nuestra propia implementacin de borrado seguro y para concluir realizaremos unas pruebas sencillas acerca de cmo recuperar un documento borrado en un medio de almacenamiento comn haciendo uso de las aplicaciones anteriormente mencionadas. Durante el transcurso del artculo se hablar tanto sobre Linux y entornos Unix, como de Windows, haciendo las pruebas ms importantes sobre el primero de ellos, como era de suponer. Pero entonces, para qu tratar el segundo? Cuando descubra sus fallos, podr tomrselo como un consejo para cambiar definitivamente de sistema operativo. Si estaba indeciso, dejar de estarlo.

linux@software.com.pl

Pero todo esto no son ms que palabras. Pasemos a la accin...

Informtica forense

Podemos definir la informtica forense como la ciencia de manipular, en cualquier sentido de la palabra, los datos que han sido procesados electrnicamente y que se encuentran almacenados en un medio computacional. Muchas veces, debido a las connotaciones, uno relaciona este trmino con el F.B.I. y esto no est totalmente equivocado, ya que ellos son uno de los primeros cuerpos en desarrollar software para la recoleccin de evidencia. Cabe decir que desarrollan mucho ms software de tipo catalogado y para fines desconocidos. Con la informtica forense se logran 3 objetivos principales: Compensacin de daos. Persecucin y procesamiento judicial de los criminales. Creacin y aplicacin de medidas preventivas.

Los analistas forenses utilizan muchas herramientas para hacer ms fcil su labor a la hora de presentar puntos de evidencia.

58

Linux+ 6/2009

seguridad Seguridad de datos


Para detalles de la construccin fsica y composicin interna de un disco duro puede echar un vistazo a la Figura nmero 1.

Platos

Cmo se escriben los datos?

Cabeza lectora

Motor

Los ordenadores almacenan datos en un disco magntico, al que conocemos como Disco Duro, en un sistema de numeracin binario, es decir, una secuencia consecutiva de unos y ceros. Los bits se transforman en una onda de corriente elctrica que es transmitida por medio de cables al rollo de la cabeza de escritura. Un bit 1 se corresponde a un cambio en la polaridad de la corriente, mientras que un bit 0 corresponde a una ausencia de este cambio en la polaridad de la corriente de escritura. Los unos almacenados aparecen donde se produce una inversin en la direccin magntica en el disco, y los ceros residen entre los unos.

Figura 1. Composicin interna de un Disco Duro

Uno de los programas ms conocidos para estas labores es EnCase hecho por Guindace Software Inc. Puede encontrar ms informacin en la siguiente direccin: http://www.guidancesoftware. com. La desventaja ms desagradable es que su precio no est al alcance de un usuario que solo desea hacer pruebas personales. The Coroner Toolkit. Esta herramienta fue utilizada por Wietse Venema y Dan Farmer (dos conocidos expertos en seguridad informtica) en una demostracin de Unix Forensics, en la que dieron conocimiento de sus grandes posibilidades en la extraccin de informacin tanto del sistema de ficheros como de la red. Aquellos que se pasen por la pgina: http:// www.porcupine.org/forensics, podrn encontrar, adems del cdigo fuente de esta herramienta y muchos de sus diferentes parches, un libro que han escrito los dos autores titulado Forensic Discovery y que puede ser ledo online. La premisa del libro, como en el mismo se indica es que: La informacin forense puede ser encontrada en cualquier sitio que uno mire. Entre las herramientas forenses podemos clasificar las de monitorizacin, logueo, marcado de documentos e incluso herramientas de hardware para el anlisis exhaustivo. Decir que los estudios que se hacen mediante dispositivos hardware son ms conocidos como anlisis de laboratorio. Cabe decir que, los peores inconvenientes para un analista forense, pueden tratarse sobre todo de temas judiciales. No es tan sencillo como parece presentar evidencias y cargos contra alguien en una corte. Aunque sea poco lo que le dificultemos nosotros (o un anti-forense) la tarea, mucho ms difcil ser para ellos demostrar que

la evidencia recolectada tiene un carcter realmente fiable. No dejaremos esta seccin sin mencionar el famoso principio de Locard, por el cual se rige toda la tcnica de la informtica forense. Dice que: Todo contacto deja un rastro. Y esto es ineludiblemente cierto.

Para realizar la lectura de los datos previamente almacenados se hace uso de una tcnica llamada efecto GMR que es utilizado por la cabeza de lectura. Al pasar una corriente por el elemento GMR, unos y ceros segn convenga. Existe un problema bastante desagradable, y es que, como todo componente elctrico, las fuentes magnticas generan ruido y esto puede ser mal interpretado por una cabeza de lectura, Almacenamiento de datos con sus consecuentes errores que a veces se Aqu mencionamos los cuatro fenmenos uti- vuelven irreversibles. lizados para el almacenamiento de datos en un Zonas sensibles medio magntico: Estudiaremos ahora las zonas dbiles que imple Una corriente elctrica produce un campo mentan los Sistemas Operativos en los conocidos sistemas de ficheros. Estas zonas son controladas magntico. Algunos materiales se magnetizan con faci- por el Sistema Operativo pero tambin es sabido lidad cuando son expuestos a un campo ma- que pueden ser manejadas por software especialgntico dbil. Cuando el campo se apaga, el mente diseado para tal objetivo. Pueden ser utilizadas para la recoleccin material se desmagnetiza rpidamente. Se conocen como Materiales Magnticos de rica y variada informacin, por este motivo, debemos ser conocedores de las mismas y aseSuaves. En algunos materiales magnticos suaves, la gurarnos de que no ofrezcan datos sensibles. resistencia elctrica cambia cuando el material es magnetizado. La resistencia regresa File slack a su valor original cuando el campo magne- Para entender este concepto, es requisito comtizante es apagado. Esto se llama Magneto- prender mnimamente la estructura de un sisteResistencia, o efecto MR. La Magneto-Re- ma de archivos y cmo estos son almacenados sistencia Gigante, o efecto GMR, es mucho en nuestro disco duro. Todas las diferentes versiones de Windows mayor que el efecto MR y se encuentra en sistemas especficos de materiales de pelcu- dividen el disco duro en pequeos bloques denominados clusters, su tamao es especfico las delgadas. Otros materiales se magnetizan con dificul- dependiendo del tamao del disco y del sistema tad (es decir, requieren de un campo mag- de archivos. Por ejemplo, para NTFS se decide ntico fuerte), pero una vez se magnetizan, del modo que puede ver en la Tabla nmero 1. Para ser ms estrictos, debemos decir que mantienen su magnetizacin cuando el campo desaparece. Se conocen como per- la unidad ms pequea de informacin que contiene un disco duro se conoce como Sector, manentes.

Cmo se leen los datos?

www.lpmagazine.org

59

seguridad Seguridad de datos


Puede ver un ejemplo de configuracin en la Figura 2 de este artculo. Estos son los archivos de almacenamiento: Windows 9x/Me win386.swp pagefile.sys

Si bien es posible deshabilitar el uso de la memoria virtual o modificar su tamao, ello no es nada conveniente, ya que provoca problemas frecuentes en el sistema y, por otro lado, hay gran cantidad de software que hace uso de estos archivos. En vez de esto, la mejor opcin sera cifrar su contenido; ello, por ejemplo, es una gran posibilidad que nos ofrece la fantstica herramienta BCWipe. Linux: Linux utiliza un rea de tamao definido por el usuario en la instalacin del sistema en el que se almacenan tambin datos de la memoria principal. Normalmente este rea es una particin que se crea junto la particin raz de Linux y que no debera de sobrepasar el mismo tamao de nuestra memoria RAM o el doble. Por otro lado, Linux hace uso de un dispositivo de caracteres, que se encuentra en /dev/ kmem. Es una imagen de la memoria principal del ordenador. Ambos medios son un buen lugar de comienzo para un investigador interesado en nuestras propiedades.

Unallocated file space


Figura 2. Configuracin de la Memoria Virtual

pero los sistemas de archivo agrupan varios de estos en un cluster a efectos de administracin y mejora de rendimiento. Actualmente lo ms normal es encontrarnos con un tamao de clster igual que el de una pgina de memoria, es decir, 4 kilobytes. Para comprender el almacenamiento en una distribucin Linux recomiendo una atenta lectura a los fuentes del sistema de archivos EXT2 (recientemente nos encontramos con EXT3, con journaling). En el archivo de cabecera linux/ ext2_fs.h pueden encontrarse las siguientes estructuras:
struct ext2_super_block

bir a un fichero. Veamos un ejemplo. Suponiendo que queremos guardar un archivo que ocupa unos 2 kilobytes y el tamao del cluster definido por el sistema es de 4 kilobytes, estaremos desperdiciando otros 2. Este espacio sobrante, entre el final del archivo y el final del cluster real, es al que llamamos file slack. Este espacio es sin duda una gran y valiosa fuente de informacin porque los sistemas operativos de Microsoft lo utilizan para almacenar datos que se encuentran en la memoria principal.

Cuando los usuarios de Windows confan en el simple borrado que realiza el sistema, estn cometiendo realmente dos errores, el primero de ellos es que este no es seguro. El segundo, y ms peligroso, es que estos no son realmente borrados. Lo que ocurre en realidad con los ficheros es que son removidos a un rea de espacio noasignado, de tal forma que los datos siguen existiendo pero se encuentran ocultos a los ojos

Formato del Debemos de diferenciar el sentido de este Superbloque. concepto para cada sistema operativo. Windo struct ext2_group_desc Formato del ws: Este utiliza un archivo que hace las veces de descriptor de grupo. repuesto para la memoria principal del sistema struct ext2_dir_entry Formato de las (la RAM) y almacena informacin de acceso entradas de directorio. aleatorio en el mismo. El usuario no es conocedor struct ext2_inode Formato de un inodo. de este suceso y por tanto se da una considerable vulnerabilidad. El tamao de este archivo no es La ltima que hemos mostrado sea quizs la fijo y puede ser modificado. En WinXP puede enms relevante, ya que un inodo es el bloque de contrarse en: Panel de control >Sistema>Op. construccin bsico del sistema de archivos. Y Avanzadas>Configuracin(Rendimiento)> Figura 3. Bobina Tesla destruyendo un CD contiene toda la informacin que puede descri- Op.Avanzadas>Cambiar(M. Virtual).

rea de SWAP

60

Linux+ 6/2009

seguridad Seguridad de datos


Una vez este llegue a ser cero, el espacio se Eliminacin de CD's queda en un estado disponible para otros archi- Daremos ahora un rpido vistazo a las opciones vos, pero ahora se plantean nuevos problemas: de que disponemos para la eliminacin de los datos en soporte CD. Claro es de suponer que cual Qu ocurre mientras este espacio no es quiera de ellas provocara la inutilizacin total del mismo, pero ese es el principal objetivo. utilizado? Se podra acceder a este espacio? Retirar la lmina reflectante con algn elemento cortante. Pueden seguir manteDesgraciadamente el inodo sigue manteniendo nindose datos en el policarbonato. informacin sobre el archivo al que hace referencia; esto significa que aunque se han modi- Introducir el CD en un microondas. Esto trae consigo ciertos inconvenientes, puede ficado los meta-datos o en este caso el inodo causarse un cortocircuito debido al contea efectos de link con el valor de 0, y seguir el nido de metales en el CD. puntero de bloques hasta llegar exactamente al contenido del fichero. Al igual que cualquier Rayar la parte superior del CD que es la que contiene los datos. persona se preocupa de lo que sucede en su casa, su coche, y el resto de sus pertenencias, tambin Cortar el CD en la mayor cantidad de trozos posibles asegurndose de que la lmina redebera preocuparse de lo que ocurre con su flectante queda destruida. informacin y de lo que alguien podra llegar a Utilizacin de productos qumicos sobre el hacer con ella. No sean conformistas. soporte. Ser suficiente con cualquier tipo Eliminacin de disquetes de cido corrosivo. Desde aqu no nos haceNostalgia me produce el hablar de los tan conomos responsables de las ideas que tengas en cidos disquetes, pero sin duda alguna muchos mente. seguimos an utilizndolos para pequeos tra- Incineracin del CD, la mas efectiva. Reibajos y tambin para algunas preciadas miniteramos nuevamente la problemtica amdistribuciones de Linux biental. Por s solos son medios bastante frgiles, Si nuestro CD es regrabable, podemos hacer pero siguen siendo fuentes significativas de uso de la reescritura, pero aun despus de informacin y aqu expondremos diferentes varias pasadas, podra llega a sacarse inmodos para conseguir la destruccin completa formacin. Aunque este es un proceso muy de los mismos o, en su defecto, un borrado de complejo y costoso. datos seguro. Y por ltimo, para los ms atrevidos y/o con medios disponibles a tal efecto, pueden Pasar un imn sobre la superficie electroprobar a destruir un CD mediante descargas magntica del disquete har que los datos elctricas producidas con el uso de bobinas se pierdan irremediablemente ya que estos Tesla (vean la Figura 3 para ms detalles). son almacenados mediante pulsos electromagnticos y cualquier fuerza proveniente Aplicaciones de una de estas fuentes provoca su cambio de borrado seguro Las siguientes herramientas aqu presentadas, o prdida. Incineracin. No requiere de ms explica- han sido analizadas y descritas bajo el punto de cin. El nico inconveniente es la conta- vista del autor de este artculo. Para un mejor minacin ambiental. El que se tome esto a conocimiento de cada una de estas utilidades, broma, le recomiendo se lea el How-To en deben ser utilizadas con detenimiento. espaol de Ecologa y Linux. Vertido de alguna substancia corrosiva MS-DoS & Windows sobre la superficie magntica del disquete. BCWipe: Estupendo producto de la casa Jetico. Cortar en trozos el disquete asegurando que Su mayor defecto es que no es gratuito, fuera de el disco interior queda convenientemente esto, sus caratersticas son ampliamente destadestruido. Se pueden recuperar datos de cables. Una de sus facetas ms interesantes es la de Cifrado de la Swap; con ello elevaremos de cada uno de los trozos. Sobrescritura del contenido del disquete. forma considerable nuestro grado de seguridad. No es el mtodo ms bueno pero si el mas Los algoritmos de cifrado disponibles son: sencillo y prctico. Cuantas ms veces se reescriba el mismo, ms complicada ser la Rijndael 256-bit recuperacin de datos. Es ms eficiente uti- Blowfish 448-bit lizar un programa que realice las iteraciones GOST 28147-89 256-bit Twofish 256-bit de sobrescritura de forma automtica.

Figura 4. Logo Oficial de Helix3

de los usuarios (que no a software especialmente diseado para leer este espacio). En los sistemas Windows 9x/Me, cuando un archivo es borrado, la FAT (Tabla de Asignacin de Ficheros) marca el espacio de este archivo como libre para as poder ser sobrescrito con nuevos datos, pero mientras esto no ocurre, la informacin se mantiene intacta con los consiguientes problemas de seguridad que ello conlleva.

Archivo de hibernacin

El archivo de hibernacin, como muchos saben, es un archivo de sistema que utilizan los sistemas de Microsoft antes y despus del estado de hibernacin (o estado S4). Es una imagen del sistema que se escribe al disco antes de entrar en dicho estado y, cuando el usuario reinicia su sesin, este fichero se carga y todo vuelve a la normalidad (al estado anterior). Piensen framente ahora. Qu mejor ocasin para un atacante, que tener toda la configuracin del sistema en un solo archivo? La herramienta BCWipe tiene una opcin que se encarga de este archivo y es conveniente hacerlo con regularidad, ms fcil si lo activamos como tarea programada.

Borrado en Linux

Aqu la otra cara de la moneda. Lo que Linux hace para borrar un archivo de nuestro sistema, es modificar el contador de enlaces del inodo correspondiente al fichero a borrar a 0, eliminando a su vez el nombre del mismo de las entradas de directorio. No vamos a mostrar aqu la estructura definida por EXT2 para un inodo, ya que esta es bastante amplia dado que contiene informacin administrativa como el UID del propietario, el tamao del fichero, las fechas de acceso y modificacin, el numero de bloques, sus direcciones y mucho ms. Lo que s mostramos es el elemento al que hacemos referencia como contador de enlaces: __u16 i_links_count; /* Links
count */.

www.lpmagazine.org

61

seguridad Seguridad de datos


Este software dispone de diversas opciones que duro, desde los sistemas operativos hasta la pueden ser modificadas a gusto del usuario. Los tabla de particiones. Usa el mtodo del US mtodos de borrado seguro son: DoD de 7 pasadas. Evidentemente, eficaz si su sistema pasara por las manos de algn in Mtodo Gutmann de 35 pasadas. vestigador forense. Esto se lo pondra dif El recomendado en el manual NISPOM cil. del US DoD, 7 pasadas. Y continuamos. BCWipe Task Manager. Con Una pasada aleatoria. esta aplicacin podemos programar las tareas que queremos realizar cada cierto tiempo con Esta fantstica herramienta trae consigo una BCWipe. Su uso es extremadamente sencillo, utilidad llamada BCWipePD.exe, su objetivo por ello no me detendr aqu y seguiremos con es el de borrar todo el contenido de un disco mas descripciones generales.
Listado 1. Script bsecdat.pl
#!/usr/bin/perl

Norton Utilities: Este gran kit de herramientas trae consigo al omnipresente Wipe. Puede encontrarlo en Inicio>Programas> N. Utilities >Wipe Info. Una vez abierto, nos da la posibilidad de borrar archivos, carpetas y el espacio libre del disco duro. Los mtodos de borrado que nos ofrece son los siguientes: Fast Wipe 1 pasada, sobrescribe con ceros pero el valor puede ser cambiado (0 a 255), 246 recomendado gubernamentalmente. Government Wipe Sigue las indicaciones del manual NIPSON, 7 pasadas, sobrescritura de ceros y unos alternada, tiene varios parmetros modificables.

##################################### # Nombre: Bsecdat V. 1.0 # By: blackngel print "\n\n"; # #

##################################### print " @@@@@@@@@@@@@@@@@@@@@@@@ \n"; print " @ Bsecdat by blackngel @ \n"; print " @@@@@@@@@@@@@@@@@@@@@@@@ \n"; print "\n\n"; print "Que archivo desea eliminar?: "; $archi=<STDIN>; chop $archi;

Antes de culminar con el proceso de borrado, esta aplicacin mostrar un resumen con todas las opciones que hemos elegido, as podr asegurarse de que todo est en el orden correcto. PGP: Su gran amigo Pretty Good Privacy dispone de dos utilidades de cierta importancia: Wipe Se encarga de la eliminacin segura de ficheros de nuestro sistema. FreeSpace Wipe Se encarga de el borrado del espacio libre disponible en el medio de almacenamiento. Solo debemos de elegir la unidad deseada y el nmero de pasadas que nos parezcan.

print "\nNumero de sobrescrituras?: "; $num=<STDIN>; chop $num;

open (ARCH,"+<$archi") or die "El documento no se ha abierto o no existe."; # Extraemos la informacin del archivo para obtener su tamao -> $tam $uino, $tambloqIO, $IO) = stat (ARCH); sobreescribir(); truncate(ARCH, 0); close(ARCH); renombrar(); ($dev, $ino, $info, $links, $IDuser, $IDgrp, $IDdev, $tam, $uacc, $umod, # Sobrescribe el archivo 'num' veces # Trunca el tamao del archivo a 0 # Cambia la fecha de ltima modificacin

La segunda herramienta tiene la bondad de indicar el tiempo aproximado que tardar en realizar la operacin.

utime(0, 0, $archi);

# Nota: El archivo es renombrado y eliminado despus de ser cerrado unlink($archi); # Renombra el archivo # Elimina el archivo

UNIX & LINUX


THC-Secure Deletion: Esta herramienta, desarrollada por THC (The Hackers Choice) es un conjunto de utilidades que mantienen la seguridad de los datos que no podemos controlar en nuestro sistema o los cuales deseamos eliminar. Este paquete incluye: srm Borrado seguro de ficheros. sfill Borrado seguro del espacio libre de un disco. sswap Borrado seguro del area de swap. smem Borrado seguro de datos en la RAM.

sub sobreescribir

for($i=0; $i < $num; $i++){ seek(ARCH, 0, 0);

# Funcin o algoritmo de sobrescritura {

for($j=0; $j < $tam; $j++){ printf ARCH "%c", $car; $car = rand(255);

sub renombrar

$n = rand(255);

# Funcin que genera un nombre aleatorio {

$nom = sprintf("%f", $n); } rename($archi, $nom);

El proceso utilizado por srm se basa 5 pasos bsicos:


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n"; @@@@@ Bsecdat V. 1.0 by blackngel @@@@@ black @ set-ezine.org @@@@@\n"; @@@@@\n";

print "\n\n"; print " print " print " print " print "\n";

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n";

Sobrescribe 38 veces. Flush de la cache de disco entre cada pasada. Truncamiento del fichero. Renombramiento del fichero. Llamada a unlink( ).

62

Linux+ 6/2009

seguridad Seguridad de datos


The Defiler's Toolkit: Formada por dos herramientas complementarias, esta herramienta es conocida como una utilidad anti-forensics. Las dos utilidades que incluye son: necrofile y klismafile. En un sistema de archivos Unix/ Linux cualquiera de las siguientes partes contendr evidencia de la existencia de archivos: I-nodes (inodos) Directory Entries (entradas de directorios) Data Blocks (bloques de datos) DBAN: Es un disco de arranque que borra de un modo seguro cualquier disco duro que pueda detectar en un ordenador. Tal y como nos indica la propia pgina oficial, es la herramienta perfecta para un borrado automtico de emergencia (Vaya directamente a las referencias para ms informacin). Helix3: Se trata de una distribucin Li nux basada en la ya ampliamente conocida Ubuntu, desarrollada por la empresa e-fense, que est dedicada de una forma especfica al campo del anlisis forense y la respuesta ante incidentes. Se proporciona como Live-CD, de modo que pueda ser ejecutada sobre el orCuando hablo de imagen hago referencia a una denador que est siendo objetivo del anlisis imagen creada con la aplicacin dd (disponible o estudio, y su estructura est especialmente diseada con el fin principal de no alterar en en cualquier Linux) de un dispositivo. modo alguno a ste, y no comprometer as Manipulate_data cualquier evidencia que haya podido ser enconPaquete con tres herramientas simples pero trada. bastante eficientes, su cdigo fuente es fcil de comprender y se centra estrictamente en su ob- Prueba de concepto Estamos a punto de realizar una prueba simjetivo. Las tres utilidades son las siguientes: ple pero de la cual aprenderemos bastante. search_data Busca una cadena en el dis- Trataremos de recuperar un archivo previapositivo de bloques y muestra el nmero mente borrado de un disquete. Lo haremos en este medio por la simple razn de que sera un correspondiente donde se encuentra. read_data Lee tantos bytes como el poco angustioso que cada uno tuviera que anusuario especifique a partir del nmero de dar jugando con su disco duro, de esta forma nos evitamos todos problemas y el autor no se bloque dado. write_data Sirve para escribir en el dis- hace responsable. De todas formas, en cualquiera de los casos positivo. bastara con cambiar las referencias a /dev/fd0 Para encontrar esta herramienta, puede buscar por /dev/hdx donde la x ser variable para cada en este estupendo repositorio: http://fux0r.pha sistema. Primero crearemos un archivo de texto thookups.com/tools. dentro del disquete, esto seria algo as: unrm Recupera datos de un dispositivo. grave-robber Informacin del sistema. mactime Fechas de acceso y modificacin. bcat Contenido de un dispositivo de bloques. blockcalc Crea un mapa de bloques. fls Lista entradas de directorio. find_file Dado un inodo e imagen determina el archivo. find_inode Dado un bloque e imagen determina el inodo. istat Informacin de un inodo dado inodo e imagen.

Entre necrofile y klismafile, se aseguran de eliminar cualquier rastro de informacin en las estructuras anteriormente mencionadas. Necrofile Se encarga de la implementacin de borrado seguro en los i-nodos y de eliminar cualquier contenido de los bloques de datos. Klismafile Su objetivo es sobrescribir las entradas de directorio que han sido eliminadas. La sobrescritura se realiza con ceros.

Puedes encontrar este set de herramientas en formato uuencode en el interior del fabuloso artculo creado por grugq, Defeating Forensics Analysis on Unix, publicado en el nmero 59 de la revista Phrack (Vea referencias para ms detalles).

OTROS
PM WIPE: Este herramienta es para el sistema OS/2, slo tiene que elegir los archivos a eliminar y listo. Tiene una interfaz bastante amigable. OS/2 tambin hace uso de un archivo de swap para el almacenamiento de datos en memoria. Existen otras herramientas que solo borran directorios y otras de pago. Como siempre, Google puede echarle una mano con sus necesidades.

HEXDUMP

Nos centraremos nicamente en las caractersticas principales de cada utilidad. Para una informacin ms detallada puede consultar las pginas man e info disponibles en cada una de ellas.

Herramientas forenses

TCT
Veamos el objetivo de cada una de las utilidades que conforma este fantstico kit y tambin las del paquete TCT Utils que lo complementa: file Busca archivos. Icat Contenido de un inodo. Ils Informacin de un inodo. lastcomm ltimos comandos ejecutados. lazarus Recupera datos de un dispositivo.

Esta fantstica utilidad viene incluida prcticamente en cualquier distribucin Linux estndar. Realiza un volcado en hexadecimal. Para nosotros es muy til porque conseguimos pasar toda la informacin de un dispositivo a un fichero con el cual podremos trabajar despus. La ventaja est en que mediante sus argumentos podremos especificar el formato de salida. El que ms nos interesa en este caso es el de ASCII, as encontraremos de una forma ms cmoda cualquier texto plano.

$ cd /media/floppy #Aqu debera de estar montado el disquete $ echo 'Tenemos 5 misiles' > pruebas.txt

Como es de suponer, ahora solo queda borrarlo:


$ rm pruebas.txt

Utilizaremos el kit Manipulate Data para nuestro objetivo. Tan solo harn falta las utilidades Otros search_data y read_data. Con la primera Algunos otros nombres para los que deseen buscaremos una cadena de la que nos acordebuscar ms informacin: mos, dar por supuesto que esta palabra es misiles. El comando se ejecutara de esta forma: Partition recovery $ search_data -i /dev/fd0 "misiles" Data Recovery Software Magic Undelete La opcin -i har que no se distingan mayscu RIP las de minsculas. La salida del programa ser LDE (Linux Disk Editor).

www.lpmagazine.org

63

seguridad Seguridad de datos


un nmero de bloque que nos indicar dnde se Tabla 1. Tamaos especficos de cluster encuentra la cadena deseada, algo as: Tamao del HD
found at 17418: misiles

Tamao del cluster 512 bytes 1 KByte 2 KByte 4 KBytes

512 MB o menos 513 MB - 1024 MB 1025 MB - 2048 MB

Ahora solo nos queda valernos de read_data para encontrar el resto del archivo. Como el 2049 MB o ms texto completo que buscamos esta ms atrs que misiles, tendremos que utilizar un nme- $ lazarus -hB -D blocks -H html -w ro de bloque inferior y buscar ms cantidad de html /dev/fd0 bytes para alcanzar el final. Esto lo lograramos -h Salida en formato HTML. con el comando: -B No escribe bloques de binarios. $ read_data /dev/fd0 17408 30 -D Directorio donde se guardarn los archivos con el contenido de los bloques. La salida nos ofrecer lo que buscamos y, ade- -H Igual que el anterior pero aqu se ms, unos bytes de sobra que pueden o no tener guardan los archivos con extensin .html. informacin. Lo encontraremos en un archivo -w Igual que el anterior (que alguien me lo explique). con el nombre 17408.30 en el directorio actual:
Tenemos 5 misiles_____________ #El subrayado representa datos desconocidos

Otro mtodo que tambin es efectivo, es utilizar en conjunto las dos herramientas de recuperacin: lazarus y unrm. Por ejemplo:
$ ./unrm /dev/fd0 > salida $ ./lazarus -h salida

Mtodo 2
Mediante el uso de hexdump volcaremos el contenido del disquete a un archivo esttico para despus examinarlo con calma. El comando que podemos utilizar es:
$ hexdump -c /dev/fd0 > datos.txt

La opcin -c provocar que la salida sea en formato hexadecimal y ASCII al mismo tiempo. Como bien puede comprobar, redireccionamos la salida hacia un fichero que analizaremos seguidamente en busca de la cadena deseada.
$ grep -i 'misil' datos.txt

La salida sera algo parecido a esto:


00004400 misile| 54 65 6e 65 6d 6f 73 20 |Tenemos 5 35

20 6d 69 73 69 6c 65

Ahora solo tendramos que buscar en el archivo, a partir de ese desplazamiento (00004400), el resto de la informacin.

Los siguientes pasos son idnticos a los explicados anteriormente. En el primer comando, el fichero salida tiene que estar en un dispositivo diferente al examinado. Tambin cabe decir que cada una de estas tareas lleva cierto tiempo Ahora buscamos entre los archivos del directo- segn el sistema. rio blocks, cual de ellos contiene el texto que a nosotros nos interesa. Puede utilizar un coman- Script de borrado seguro Presento aqu una vaga implementacin de un do como el siguiente: programa de borrado seguro. Como podrn $ strings -af *.txt | grep -i 'misil' comprobar, utiliza las funciones principales 18.t.txt: Tenemos 5 misiles pero, sin duda alguna, est dispuesto a sutiles mejoras, tanto de rendimiento como de Segn la documentacion de lazarus tambien seguridad. podra usar algo parecido a esto: Por qu utilizamos el lenguaje perl? Fcil respuesta. Por su gran potencial, rapidez $ egrep -l 'misil' blocks/*.txt > teniendo en cuenta que es un lenguaje interallfiles pretado y lo compacto que resulta resolver cualquier problema. Debido a la portabilidad Y buscar entre los archivos listados en allfi- de este lenguaje, no debera de tener ningn les. Para las imgenes bastara con ejecutar problema a la hora de ejecutar este programa lo siguiente: $ xv blocks/*.gif blocks/ tanto en plataformas Linux como en Win*.jpg. dows. Los ficheros del directorio anterior terminaExcluyendo los logotipos que le dan algo rn con diferentes extensiones segn lazarus de vida al script, este ha sido escrito de forma interprete el contenido de los mismos. Puede que sea altamente legible. Usted mismo puede observar un listado de las posibles extensiones realizar diversos cambios en el cdigo y adapen la Tabla nmero 2. tarlo a sus necesidades especficas. Con un poco de suerte, en nuestro caso, Posibles mejoras: y sabiendo que el archivo se trataba de un txt, podramos reducir las posibilidades y el tiempo Entrada de datos como argumentos. de localizacin de esta forma: $ strings -af Operacin sobre mltiples ficheros. *.t.txt | grep -i misil. Flush de la cache de disco.
Tabla 2. Extensiones de archivo de TCT Extensin A C E F H I L Formato Archivo Codigo C ELF Sniffer HTML Imagen Log Extensin M O P Q R S T Formato Mail Null Programa Mailq Eliminado Lisp Texto Extensin U W X Z . ! Formato UUencoded Contraseas EXE Comprimido Binario Sonido

Mtodo 3
En este ltimo caso utilizaremos las herramientas que nos proporciona TCT, estas suelen acompaar con frecuencia a cualquier forense de entornos Unix. Con la ayuda de lazarus conseguiremos recuperar los datos del disquete, expuesta por bloques. Presento aqu el comando y paso a explicar cada uno de sus argumentos:

64

Linux+ 6/2009

seguridad Seguridad de datos


Algoritmos ms complejos (y ms lentos). Otros... este horario sea aleatorio pero con sentido comn, ya que de esta forma, por ejemplo, si realizramos el borrado todos los martes de cada semana, un atacante se encargara de sacarnos la informacin los lunes; de otra forma, manteniendo una buena aleatoriedad, tendran que tener suerte para encontrar algo entre nuestra basura. Utilice un sistema de archivos que no este al alcance de una herramienta de anlisis forense, como ocurre con Ext2, UFS, etc... No olvide nunca los mtodos de destruccin de medios porttiles. Estos pueden dar sorpresas el da menos esperado. Hay que ser responsable y saber qu es lo que se guarda y dnde. A ser posible, utilice un sistema de archivos cifrado o, para ms seguridad, uno Pero la nica verdad es que esta seguridad es una lucha, y sabiendo que la informacin es poder, nosotros solo ponemos las armas en manos de aquellos que deseen empuarlas. Al final de este artculo, lo nico que su autor desea, es que el lector se haya quedado con algo ms que la idea de introducir un CD-ROM en su microondas.

Algunos consejos

Antes de terminar, me ofrecer a compartir algunos consejos que quizs sean de utilidad al lector ms concienciado. Son gratuitos y, por lo tanto, libres de ser tenidos en cuenta: Ante todo, mantenga siempre cifrada la informacin que permanezca esttica en su ordenador (no nombrar las herramientas de cifrado como siempre, esto quedar a eleccin propia). Si una herramienta le permite elegir entre varios mtodos de cifrado, a no ser que sea necesario, trate de elegir una de las opciones que no estn por defecto, ya que este mtodo sera el primero en ser atacado por alguien con malvadas intenciones. Utiliza siempre herramientas de borrado seguro, al fin de todo siempre merece la pena. Hoy por hoy podemos encontrar multitud de utilidades GUI amigables para el usuario, adaptadas a diferentes entornos y Sistemas Operativos. Mantenga una buena programacin del horario de administracin. Procure que

En la red
The Coroner Toolkit en: http://www.porcupine.org/ forensics Ecologa y Linux HowTo en: http://docs.linux-es.org/ HOWTO/translations/es/ Ecologia-y-LinuxCOMO BCWipe en: http://www.jetico.com Norton Utilities en: http://www.norton-online.com/es Pretty Good Privacy en: http://www.pgp.com The Hackers Choice en: http://freeworld.thc.org/welcome

Conclusin

Con lo visto hasta ahora, es posible que se encuentre todava ms concienciado de que la informacin es un bien que debe ser protegido. Cierto, todo lo que hemos proporcionado puede ser interpretado tanto desde el lado del usuario domstico que intenta protegerse como desde el lado de un atacante que busca nuevas formas de burlar la seguridad de los anteriores. PUBLICIDAD

www.lpmagazine.org

65

programacin Curso de Programacin en Gambas

Gestin Potente de Procesos:


Jorge Emanuel Capurro

Creacin de FrontEnds en Gambas


GNU/Linux posee infinitas alternativas a distintos programas de aplicacin. Muchas de estas son de interfaz de modo texto, lo que lleva al usuario principiante/intermedio a una difcil interaccin con el programa. Gambas pens en este problema, por lo que como era de esperar, nos trae una solucin: La creacin de FrontEnds.

in duda esta caracterstica de Gambas, como muchas otras, son las que lo convierten en un lenguaje de programacin nico bajo GNU/Linux. Muchos de los programas utilizados por los usuarios son en realidad, FrontEnds de aplicaciones en modo texto. Como ejemplo, podemos mencionar al legendario grabador de cd's K3B, que en realidad es la cara visible de aplicaciones en modo texto como cdrecord o mkisofs. Pero la principal pregunta radica en... Qu es un FrontEnd? La respuesta es simple. Un programa del tipo FrontEnd es aquel que se encarga de mostrar y/o generar la interfaz grfica de un programa que no la tiene. Como contraejemplo, podemos citar el termino BackEnd, el cual hace referencia a la inteligencia o lgica del programa en s, sin hacer hincapi en las caractersticas de interfaz de usuario grficas que este requiere (si es necesario). En el mundo del diseo web, las definiciones FrontEnd y BackEnd hacen referencia a la visualizacin del usuario navegante por un lado (front-end), y del administrador del sitio con sus respectivos sistemas por el otro (back-end). Igualmente, la idea es la misma. Pero.. Por qu separar una aplicacin en FrontEnd y BackEnd? La idea fundamental radica en que el FrontEnd se encargue de recolectar los datos del usuario para que luego,

mediante el BackEnd, estos se procesen y arrojen un resultado. Otra de las ventajas radica en que, si el programador no desea o no le es necesario que su programa tenga una interfaz grfica para el usuario comn, puede slo desarrollar el BackEnd y hacerlo completamente funcional, y si en un futuro lo requiere, podr desarrollar el FrontEnd sin problema alguno. En la Figura 1, podemos observar a modo conceptual, como sera la interaccin entre el FrontEnd y el BackEnd. En esta entrega, veremos cmo desarrollar un frontend para una aplicacin en particular. Tambin, veremos cmo desarrollar nuestro BackEnd y enlazarlo con nuestro FrontEnd. Dejemos para ms adelante estos temas tan interesantes y empecemos con otras caractersticas de Gambas que nos van a ser de suma utilidad y necesitaremos de ellas: Los Arrays y el Control de Excepciones.

linux@software.com.pl

Arrays

Un Array ( tambin conocido como arreglo, vector o matrices) es un tipo de variable especial que puede agrupar muchos valores del mismo tipo de datos, en el cual estos valores son accedidos mediante un ndice que representa su ubicacin dentro del mismo. Los Arrays son muy utilizados en programacin cuando se

66

Linux+ 6/2009

programacin Curso de Programacin en Gambas


requiere almacenar muchos valores y no se desea manejar una variable por cada valor a manipular, lo cual facilita mucho la tarea del programador y hace a los programas ms legibles y eficientes. Por ejemplo, pensemos en un programa que requiera que se generen 1000 nmeros aleatorios para luego ordenarlos de mayor a menor, y que cualquiera de estos nmeros pueda ser accedido en forma individual cuando se requiera. Con los conceptos vistos hasta el momento, solamente podramos declarar 1000 variables (Una verdadera Locura!) y generar un numero aleatorio en cada una de ellas. Con el concepto de Array, es posible generar un Array que contenga 1000 posiciones, en el cual se generen los nmeros aleatorios automticamente y luego accedamos a un valor en particular mediante su ndice. En la Figura 2, veremos la estructura de un Array. Las letras corresponden a los elementos del Array, es decir, a los valores tiles, mientras que los nmeros son el ndice, el cual utilizaremos para hacer referencia a un valor en particular. Existen diferentes tipos de Arrays: Los unidimensionales y los multidimensionales. La nica diferencia entre ellos es la cantidad de ndices que cada uno maneja. Por ejemplo, los Arrays de tipo unidimensional manejan un solo ndice, mientras que los multidimensionales pueden manejar 2 o ms ndices. Cuanto ms ndices tenga el Array, ms complejo se hace manipularlo de manera ptima. Debido a que el uso del Array ms comn se da con los unidimensionales, simplemente nos remitiremos a ellos.
Listado 1. Ejemplo de Utilizacin de Arrays
#!/usr/bin/env gbs2 DIM Numero[1000] AS Integer DIM SumaArray AS Integer DIM i AS Integer PRINT "Uso asmo de Arrays \n" 'Asignacion de un Valor en la Posicion 285 del Array Numero[285] = 10 PRINT "Valor de Posicion 285 del Array: " & Numero[285] 'Genero Numeros Aleatorios Array RANDOMIZE FOR i = 0 TO 999 Numero[i] = Rnd(0, 10) NEXT 'Array en Pantalla FOR i = 0 TO 999 PRINT "\n Posicion [" & i & "] - Valor: " & Numero[i] NEXT 'Suma de Todos los Elementos del Array FOR i = 0 TO 999 SumaArray = SumaArray + Numero[i] NEXT 'Suma de Array en _Pantalla Dim Valor AS Intenger Valor = Numeros[285]

Para explicar la utilizacin de Arrays, nos valdremos de otra de las grandes caractersticas que posee Gambas: La posibilidad de utilizarlo como lenguaje de programacin del tipo Script. Un lenguaje de programacin del tipo Script, es aquel que no requiere ser compilado, es decir, solamente basta con tener un archivo de texto con cdigo compatible para que este pueda ser ejecutado. Los lenguajes Script son tambin conocidos como Lenguajes Interpretados. Los ejemplos ms populares de este tipo de lenguajes son Bash y PHP, Python, LISP, entre otros. Esto en Gambas se hace posible gracias a un pequeo ejecutable que permite ejecutar cdigo Gambas desde cualquier archivo de texto: el gbs2 (Gambas Scripter 2). Para poder crear un programa de Gambas Script, solamente nos hace falta tener un editor de texto cualesquiera, ya que como se mencion, no hace falta un compilador para poder crear el archivo ejecutable.

Los Comandos PS y TOP


La consola de GNU/Linux nos provee de dos comandos de suma utilidad a la hora de evaluar el estado de un proceso, ver la cantidad de recursos que consume, consultar su PID, etc. Estos comandos son ps y top. El primero de ellos, nos provee informacin esttica acerca de los procesos que se estn ejecutando en ese momento dado. Es informacin esttica puesto que saca una foto de las propiedades de los procesos en el momento en que se ha invocado el comando. Por el contrario, top nos provee informacin dinmica. La informacin se va actualizando constantemente con el transcurso del tiempo. Vale aclarar que ambos comandos tienen muchas opciones disponibles, las cuales pueden consultarse en las pginas del manual.

Utilizacin Bsica de Arrays

Empecemos con la declaracin de Arrays. La que tener en cuenta que la primera posicin del Array es la numero cero. Por ejemplo, si se quiere Sintaxis es la Siguiente: declarar un Array que contenga 10 nmeros, este DIM NombreDelArray [CantElementos] se tendr que declarar con 9 elementos (0-9). AS Tipo Tipo: Cualquier tipo de dato manejado por Gambas. Por ejemplo, as se declarara un Array NombreDelArray: Es el identificador del Array. que pudiese albergar 1000 nmeros enteros: DIM Tiene las mismas caractersticas que el nombre Numeros[999] AS Integer. Para poder referenciar a un elemento en de una variable normal. CantElementos: Es la cantidad de posicio- particular del Array, se debe hacer mediante el nes y valores que podr almacenar el Array. Tiene ndice. Por ejemplo, la siguiente sentencia se encarga de recuperar en una variable del tipo Integer llamada Valor, el contenido de la posicin 285 del Array.

Para poder verificar estos conceptos, nada mejor que con un ejemplo. Este ejemplo lo haremos mediante Script, para que el lector pueda apreciar una caracterstica ms de las que brinda Gambas. Vale la pena aclarar que la utilizacin de Arrays no slo se limita al lenguaje Script de Gambas, sino que se puede aplicar sin ninguna modificacin

IDEas C
IDEas C es el primer FrontEnd desarrollado bajo Gambas para el excelente compilador gcc, el cual es de mi autora. Posee resaltado de sintaxis y compilacin automtica, entre otras caractersticas interesantes. Se centra principalmente en el lenguaje de Programacin C. Para ms informacin visite http://ideasc.sourceforge.net.

www.lpmagazine.org

67

programacin Curso de Programacin en Gambas


Gambas (puede ser que se necesite permisos de administrador, para ello anteponer el comando sudo): gbs2 ./NombreDelArchivoNumero. En la Figura 3, se muestra una parte de la posible salida del programa.

Ordenando de mil y una formas


En la actualidad existen libros enteros y personas que han dedicado toda su vida al estudio de la Algoritmia. Es por ello, que no slo existe un mtodo para poder llevar a cabo la tarea de ordenar un algoritmo. Muchos mtodos son igualmente (o ms) eficientes que el Mtodo de Burbujeo Optimizado, obviamente todo esto dependiendo de la circunstancia y entorno donde se aplique. Algunos constan de varias ventajas, otros no. En definitiva, existen infinidad de mtodos con sus caractersticas que los destacan a cada uno en particular. Entre los ms conocidos o clsicos mtodos se encuentran el ordenamiento por insercin (Insertion sort), ordenamiento por seleccin (Selection sort), ordenamiento por rbol binario (Binary tree sort), ordenamiento rpido (Quicksort), etc.

FrontEnds para ffplayer


S, lamentablemente no podremos hacernos ricos con nuestro desarrollo. Existen varios FrontEnds muy buenos desarrollados para ffmpeg que tienen cientos de caractersticas que nos sern de utilidad. Entre los ms conocidos podemos mencionar a WinFF, Hyper Video Converter, y Movic entre otros. Para ms informacin, visite su sitio web oficial.

Algoritmos Especficos aplicados a Arrays

Existen diversos algoritmos que son ampliamente utilizados en el mundo de la programacin, en este caso nos acotaremos a los especficos y ms comnmente vistos que se aplican a los Arrays. Estos algoritmos son los de ordenamien- to y bsqueda de elementos en un vector. En las secciones siguientes analizaremos los algoritmos que se mencionan a continuacin:

Bsqueda: Algoritmo de Bsqueda Secuencial. Algoritmo de Bsqueda Binaria, Ordenamiento: mtodo del Burbujeo Optimizado,

Listado 2. Implementacin del Algoritmo de Bsqueda Secuencial


#!/usr/bin/env gbs2 DIM Numeros[9] AS Integer DIM ValorBuscado AS Integer DIM Encontro AS Boolean DIM Posicion AS Integer 'Inicializo Variable Encontro = FALSE 'Inicializo Array como en la Figura 4 Numeros[0] = -6 Numeros[1] = 1 Numeros[2] = 16 Numeros[3] = 20 Numeros[4] = 21 Numeros[5] = 35 Numeros[6] = 37 Numeros[7] = 42 Numeros[8] = 80 PRINT "\n Ingrese el Valor a Buscar: " INPUT ValorBuscado PRINT "\n\n Buscando el Numero " & ValorBuscado & "... \n" 'Empieza el Algoritmo de Busqueda Secuencial WHILE (Posicion < 8 AND Encontro = FALSE) INC Posicion IF Posicion < 8 THEN IF Numeros[Posicion] = ValorBuscado THEN 'Eureka, hemos hallado el Numero! Encontro = TRUE ENDIF ELSE Encontro = FALSE ENDIF WEND 'Termina el Algoritmo de Busqueda Secuencial 'Verificamos si el valor se encontro IF Encontro = TRUE THEN PRINT "El Valor se encuentra en la Posicion " & Posicion & " del Array" ELSE PRINT "El valor no se encuentra" END IF

a los programas realizados con interfaz grfica. Empecemos abriendo nuestro editor de texto favorito, como puede ser el gedit, nano, emacs, o vi. Una vez all, ingresamos lo que se muestra en el Listado 1. Este programa se encarga de declarar un Array o Vector de nmeros enteros, y mostrar los contenidos vistos hasta el momento. Luego de escribir el programa, abrimos un terminal, nos posicionamos sobre el directorio donde guardamos el archivo de texto y ejecutamos el siguiente comando que se encarga de pasarle como parmetro nuestro programa al Scripter de

Qu es un Algoritmo?
Podemos definir un algoritmo como una sucesin finita de pasos bien especficos, no ambiguos y que estn relacionados entre s de una manera sumamente lgica. Dicho de otra forma, un algoritmo nos indica los pasos que tenemos que seguir para llegar a una determinada meta. Por ejemplo, si nosotros queremos ir de compras al mercado, nuestros pasos sern ms o menos as: Primero nos despertamos luego de descansar un largo rato. Segundo, vamos al bao para luego tomar un desayuno. Tercero, terminamos de desayunar y nos vestimos. Cuarto, cogemos dinero y nos dirigimos hacia la cochera. Quinto, encendemos el motor del auto y nos dirigimos hacia el mercado. Como vemos en este ejemplo absurdo, nuestro algoritmo nos indica los pasos a seguir de manera lgica para poder realizar una determinada accin. Este concepto se aplica, en mayor o menor medida, igual en los algoritmos computacionales.

68

Linux+ 6/2009

programacin Curso de Programacin en Gambas

Definicin de Proceso
Bsicamente, podemos conocer a un proceso como un sinnimo de programa. Esto no es del todo cierto. Considerando la definicin de programa, podemos decir que este es una entidad pasiva, mientras que un proceso es una entidad activa. Cuando un programa pasa de estar pasivo en el cdigo fuente a estar ejecutndose en el CPU, ocupando recursos de este, se lo pasa a denominar proceso. En definitiva y muy burdamente, podemos considerar a un proceso como un programa en ejecucin, cuya entidad pasa a ser activa en el momento de su carga en memoria.

Por cuestiones de simplicidad, la comprobacin prctica de ellos la realizaremos igual que en el modo anterior; es decir, mediante programacin de Script Gambas.

Figura 1. El FrontEnd y el BackEnd trabajando en conjunto

Este mtodo, tambin conocido como Bsqueda Lineal, consiste en recorrer el Array empezando desde la primera posicin, comparando el valor a buscar con el elemento del Array actual, de forma secuencial; es decir, avanzando de a un elemento hasta que el Array se termine. Este mtodo es muy eficiente si el elemento a buscar se encuentra en las primeras posiciones del Array, pero pierde mucha eficiencia y tarda mucho ms que la bsqueda binaria, si el elemento se encuentra cerca de la ltima posicin del Array. La bsqueda termina con xito si el elemento a buscar es encontrado, de lo contrario se debe informar de que el elemento no existe. Como ventaja, no es condicin necesaria que el Array se encuentre ordenado para poder realizar la bsqueda, y su implementacin y compresin es muy sencilla. Supongamos que tenemos un Array de nmeros enteros de 9 posiciones y deseamos buscar el elemento 46. Este escenario puede apreciarse en la Figura 4. Como vemos, la bsqueda secuencial debe realizar 8 comparaciones hasta llegar al elemento buscado, de un total de 9 comparaciones si se hubiese recorrido todo el Array. Ojo! Si el numero 46 hubiese estado en la segunda posicin, la situacin sera completamente diferente. Este es un claro ejemplo de la pobre performance que puede llegar a tener este algoritmo. Este mismo escenario puede implementarse en Gambas, tal cual lo muestra el Listado 2. El funcionamiento de este cdigo es muy sencillo. Primero, inicializamos un Array como lo ilustra la Figura 4. Luego, almacenamos en una variable el valor que el usuario quiere buscar. Acto

Bsqueda de Elementos en un Array: Mtodo Secuencial

seguido, implementamos el mtodo de Bsqueda bucle, se van comparando los valores actuales Secuencial, que simplemente se recorre el Array con el valor a buscar. Sencillo, no? mediante el bucle WHILE hasta que se encuentre Antes de pasar al mtodo de ordenamiento el elemento o se haya llegado al final. Dentro del de Bsqueda Binaria, aprenderemos cmo ordeListado 3. Implementacin del Algoritmo de Ordenamiento Burbujeo Optimizado
#!/usr/bin/env gbs2 DIM Numeros[4] AS Integer DIM N AS Integer DIM ORD AS Boolean DIM AUX AS Integer DIM I AS Integer 'Inicializo Array como en la Figura 5 Numeros[1] = 1 Numeros[2] = 3 Numeros[3] = 2 PRINT "\n Orden Actual del Array \n" FOR I=0 TO 3 PRINT " [" & Numeros[I] & "] " NEXT 'N es igual al Tamao del Array N = 4 'Al comenzar, se asume que el Array esta desordenado ORD = FALSE WHILE (ORD = FALSE) ORD=TRUE N = N 1 FOR I=0 TO N -1 IF (Numeros[I] > Numeros[I+1]) THEN 'Swapping AUX = Numeros[i] Numeros[I] = Numeros[I+1] Numeros[I+1] = AUX ORD=FALSE ENDIF NEXT WEND PRINT "\n\n Orden del Array luego del Metodo de Burbejeo Optimizado \n" FOR I=0 TO 3 PRINT " [" & Numeros[I] & "]" NEXT

www.lpmagazine.org

69

programacin Curso de Programacin en Gambas

Listado 4. Implementacin Completa del Algoritmo de Bsqueda Binaria


' Gambas class file (Seccion de Declaracion) PRIVATE Numeros[9] AS Integer PUBLIC SUB verArray() DIM I AS Integer 'Cada ves que se llama a esta funcion, se limpia el ListView lstArray.Clear FOR I = 0 TO 8 'Agregamos el valor en el ListView en la Posicion I. La funcion CStr convierte un Integer en un String 'que es el tipo de dato que pide el primer parametro del metodo Add. lstArray.Add(CStr(I), Numeros[I]) NEXT END PUBLIC SUB ordenarArray() DIM N AS Integer DIM ORD AS Boolean DIM AUX AS Integer DIM I AS Integer 'N es igual al Tamao del Array N = 9 'Al comenzar, se asume que el Array esta desordenado WHILE (ORD = FALSE) ORD = TRUE N = N 1 FOR I = 0 TO N 1 IF (Numeros[I] > Numeros[I + 1]) THEN 'Swapping AUX = Numeros[i] Numeros[I] = Numeros[I + 1] Numeros[I + 1] = AUX ORD = FALSE ENDIF NEXT WEND END PUBLIC FUNCTION busquedaBinaria (ValorBuscado AS Integer) AS Boolean 'Mantiene el Elemento Central del Array DIM IndiceCentral AS Integer DIM IndiceMenor AS Byte IndiceMenor = 0 IndiceMayor = 8 WHILE (IndiceMenor <= IndiceMayor) 'Determina el Inidice Central (Ver Paso A) IndiceCentral = (IndiceMayor + IndiceMenor) / 2 'Si el Valor Central coincide con el Buscado, retornamos TRUE IF ValorBuscado = Numeros[IndiceCentral] THEN Message.Info("Valor Encontrado en la Posicion ENDIF 'Finalizamos el Programa QUIT END DIM IndiceMayor AS Byte 'Mantiene el "tope" de los SubArray " & IndiceCentral & ". \n Salimos de la funcion busquedaBinaria...") RETURN TRUE ENDIF 'Si el Valor Buscado es menor que el elemento central, establece un nuevo valor de Alto 'que sera el nuevo SubArray IF (ValorBuscado < Numeros[IndiceCentral]) THEN IndiceMayor = IndiceCentral 1 ELSE IndiceMenor = IndiceCentral + 1 ENDIF WEND 'Si nunca se encontro y salimos del While, retornamos FALSE RETURN FALSE END PUBLIC SUB Form_Open() 'Hasta que no se ordene el Array, no lo habilitamos btnBinaria.Enabled = FALSE 'Inicializo Array Numeros[0] = 42 Numeros[1] = 1 Numeros[2] = 21 Numeros[3] = 20 Numeros[4] = 16 Numeros[5] = 80 Numeros[7] = -6 Numeros[8] = 35 verArray() END PUBLIC SUB btnOrdenar_Click() btnOrdenar.Enabled = FALSE 'Mostramos el Array en el ListView, lo ordenamos y lo volvemos a mostrar verArray() ordenarArray() verArray() btnBinaria.Enabled = TRUE END PUBLIC SUB btnBinaria_Click()

' Metodo del Burbujeo Optimizado

'Buscamos explicitamente el Numero 42 IF busquedaBinaria(42) = TRUE THEN Message.Info("La busqueda binaria encontro el valor") ELSE Message.Error("La busqueda binaria NO encontro el valor")

70

Linux+ 6/2009

programacin Curso de Programacin en Gambas


nar un Arreglo mediante el Mtodo del Burbujeo Optimizado, ya que esto es condicin necesaria para poder implementar la Bsqueda Binaria.

Listado 5. Claro ejemplo de Error Lgico

IF Numero > 1 THEN Message.Info("El Numero es Positivo") ELSE Message.Info("El Numero es Negativo") ENDIF

Ordenamiento de un Array: Mtodo del Burbujeo Optimizado

Listado 6. Ejemplo de Error Sintctico No se utiliza END WHILE, se utiliza WEND


WHILE (Paises > 1) INC Contador IF contador < 100 THEN Paises = Paises + 10 EDN IF END WHILE

Listado 7. Ejemplo de Error en Tiempo de Ejecucin. El programa se interrumpe en el transcurso de su ejecucin


DIM Arreglo[100] AS Integer DIM I AS Integer FOR I = 0 TO 100 Arreglo[I] = InputBox("Ingrese un Valor: ") NEXT

Cuando se aprende un lenguaje de programacin y se est enseando los Arrays, el algoritmo preferido para el ordenamiento de un vector es el de Mtodo de Burbujeo. En este caso, haremos caso omiso a dicho algoritmo, ya que existe una variable que conserva mucha ms performance a la hora de actuar y que puede llegar a consumir muchos menos recursos. Nuestro algoritmo ser una extensin del clsico Mtodo del Burbujeo al que llamaremos Mtodo del Burbujeo Optimizado. Este mtodo, como cualquier otro, permite ordenar un Array de N elementos en orden creciente o decreciente. Su implementacin es sencilla, pero requiere de cierto detalle par su compresin. Para ello, examinaremos la Figura 5, en la cual se muestra una representacin grfica de cmo acta dicho algoritmo. El algoritmo realiza los siguiente pasos: Se empieza a recorrer el Array desde el principio. Compara el elemento N del Array con el siguiente, es decir N + 1. Si el elemento N es mayor que el elemento N + 1, debern de intercambiar la posicin, es decir N = N + 1 y N+1 = N. Se sigue recorriendo el Array hasta que este est totalmente ordenado.

Listado 8. Cdigo que no valida la entrada de datos, propenso a generar una excepcin

PUBLIC SUB btnDividir_Click() IF txtNumero1.Text <> "" AND txtNumero2.Text <> "" THEN 'Codigo sin Manejo de Excepciones, propenso a errores Resultado = CFloat(txtNumero1.Text) / Cfloat(txtNumero2.Text) Message.Info("Resultado de la Division: " & Resultado) ENDIF END

Listado 9. Uso de CATCH para el Manejo de Excepciones


PUBLIC SUB btnDividir_Click() DIM Resultado AS Float IF txtNumero1.Text <> "" AND txtNumero2.Text <> "" THEN

Resultado = CFloat(txtNumero1.Text) / Cfloat(txtNumero2.Text) Message.Info("Resultado de la Division: " & Resultado)

CATCH 'Si se produce un error, ejecutamos las sentencias que se encuentran en CATCH Message.Error("Error: No es posible dividir por cero") 'Tambien podemos utilizar la Clase Estatica ERROR para describir el Error. Message.Error("Codigo: " & Error.Code & "\n Descripcion: " & Error.Text) ENDIF END

Observemos la Figura 5 y empecemos a analizarla. En un principio se muestra el Array desordenado, con los elementos en el orden de 4 1 3 2 (Ver Figura 5 (A) ). Luego, se realiza la primera comparacin, es decir, se compara el elemento 0 con el elemento 1 (Ver Punto 1). Lgicamente, en realidad se comparan los valores 4 con 1. Si el valor 4 es mayor que el valor 1, entonces se deben intercambiar, que es lo que sucede a la izquierda de la Figura 5 (A) (Ver Punto 2). Seguidamente, se procede a comparar los valores de los siguientes elementos del Array. Esto ucede en la Figura 5 (B). Observamos cmo ahora el Algoritmo compara los valores siguientes, empezando no desde el primer elemento, sino desde el ltimo valor que compar. El Array resultante se puede contemplar en la Figura 5 (B) del lado izquierdo. Estos pasos se realizan hasta llegar al final del Array. Una vez finalizada la primera iteracin, podemos observar cmo el Valor 4 del Array se encontraba, en un principio, en

www.lpmagazine.org

71

programacin Curso de Programacin en Gambas


la posicin 0 del Array, y termin estando en el ltimo lugar. Este desplazamiento de los valores sobre el Array es el que hace honor al nombre del Algoritmo. Los valores se desplazan hasta llegar a la posicin que les corresponde dentro del Array. Si el valor a comparar es cada vez ms grande, en posiciones ms altas del Array se ubicar. Similar es el desplazamiento de una burbuja dentro de un vaso de gaseosa. El Listado 3 muestra su implementacin en Gambas. Primero, inicializamos un Array igual al que se muestra en la grfica de la Figura 5. Luego, lo mostramos por pantalla. Una vez realizado esto, inicializamos las variables N y ORD. La variable N se encargar de llevar la cuenta de hasta qu posicin del Array hay que comparar. Primero, se deber comparar desde el 0 hasta N 1, luego desde 0 hasta N 2, y as sucesivamente. El recorrido de las posiciones del Array se va recortando ya que, como mencion anteriormente, el valor ms alto se va desplazando hasta el final del Array. Una vez que tengamos el valor ms grande del Array en la ltima posicin, ya no es necesario hacer comparaciones contra l, pues se sabe que es el elemento ms grande. La variable ORD (Ordenado?) es una variable del tipo Boolean que acta como Flag, indicando si el Array sigue desordenado o no.

Figura 2. Estructura de un Array Unidimensional

Listado 10. Uso de TRY/ERROR/FINALLY para el Manejo de Excepciones


PUBLIC SUB btnDividir_Click() DIM Resultado AS Float IF txtNumero1.Text <> "" AND txtNumero2.Text <> "" THEN

'Ajuntamos junto a TRY la sentencia propensa a errores TRY Resultado = CFloat(txtNumero1.Text) / Cfloat(txtNumero2.Text) 'Verificamos mediante ERROR si TRY capturo un error

IF ERROR = TRUE THEN Message.Info("Error: Error: No es posible dividir por cero") ELSE Message.Info("Resultado de la Division: " & Resultado) ENDIF 'Se halla o no producido error, FINALLY siempre se ejecuta FINALLY Message.Info("Fin del Programa") ENDIF END

Listado 11. Procedimiento videoToGif, una de los ms importantes de nuestro FrontEnd


PRIVATE SUB videoToGif() DIM Proceso AS Process Extension = Right$(txtArchivoSalida1.Text, 3) Extension = Lower$(Extension) IF Extension = "gif" THEN IF txtArchivoEntrada1.Text <> "" AND txtArchivoSalida1.Text <> "" THEN

DIM Extension AS String

Proceso = EXEC ["ffmpeg", "-i", txtArchivoEntrada1.Text, "-pix_fmt", "rgb24", txtArchivoSalida1.Text] Message.Info("Fin del Proceso " & Proceso.Id) txtArchivoEntrada1.Clear txtArchivoSalida1.Clear ENDIF ELSE Message.Error("El Archivo de Salida NO tiene extension GIF") txtArchivoSalida1.Clear txtArchivoSalida1.SetFocus ENDIF END

Esta variable es la que marca la gran diferencia con el Mtodo del Burbujeo normal, permitindonos as optimizar de manera notable el algoritmo. Se asume que el algoritmoest desordenado, por lo que se inicializa en FALSE. Luego, nos introducimos en un bucle WHILE, pudiendo salir de l solamente cuando el Array est ordenado (es decir, cuando ORD = TRUE). Aqu dentro, nos encargamos de recorrer el Array desde la posicin 0 hasta la N 1, esto lo hacemos mediante un bucle FOR... NEXT. All, comparamos el valor actual del Array (Numeros[i]) con su siguiente (Numeros[i+1]). Si la condicin es verdadera, realizamos lo que se conoce como swapping, que no es ms que intercambiar los valores de una posicin con la otra y viceversa. Pero ahora bien, aqu nos surge un problema. Para poder intercambiar los valores de una posicin con otra, tengo que poder almacenar alguno de estos valores en una variable auxiliar (AUX, en este caso); de lo contrario, cuando asigne Numeros[i] a Numeros[i + 1] no podre asignar Numeros[i+1] a Numeros[i], puesto que estos valores seran iguales, porque se habran superpuesto. Para ello, utilizamos la variable AUX que hace de contenedor temporal del valor para poder intercambiar los valores. Seguidamente, indicamos al flag ORD que el vector todava no est ordenado, por lo cual provoca que no salga del bucle WHILE y genere as otro nuevo ciclo de ordenamiento. Esto se repite las veces que sea necesario hasta que el Array est completamente ordenado. Se recomienda al lector repasar este mtodo y comparar el Cdigo Fuente 3 con la Figura 5, tratando de comprender bien su accionar. Es de mucha utilidad utilizar un lpiz y un papel para intentar recorrer el algoritmo de forma manual. Esto se utiliza mucho en programacin, y es lo que se conoce como la Prueba de Escritorio.

Bsqueda de Elementos en un Array: Mtodo Binario

Ahora bien, ya sabemos cmo ordenar un Array podremos aplicar el Algoritmo de Bsqueda utilizando el Mtodo Binario. Su funcionamiento es bsicamente el siguiente:

72

Linux+ 6/2009

programacin Curso de Programacin en Gambas


En primera instancia, se compara el dato buscado con el elemento en el centro del vector: Si coinciden, hemos encontrado el dato buscado. Si el dato es mayor que el elemento central del vector, tenemos que buscar el dato en la segunda mitad del vector. Si el dato es menor que el elemento central del vector, tenemos que buscar el dato en la primera mitad del vector. Como podemos deducir, mediante el paso B y C si el elemento a buscar no se encuentra, los elementos que hay que verificar para ver si son el dato a buscar se reducen a la mitad, ya que solo se verifica una mitad de Array. Es por esta razn que el Mtodo Binario requiere que el Array est ordenado. Pasemos a observar la Figura 6 para entender este mtodo mejor. En esta grfica, nos propondremos a buscar el elemento cuyo valor es 42 dentro del Array. Como vemos, de antemano el Array se encuentra ordenado, por ejemplo mediante el Mtodo del Burbujeo Optimizado. Para comenzar a realizar la Bsqueda Binaria, nos posicionamos en el elemento Central del Array, en este caso es el ndice 4, cuyo valor es 21. Luego, verificamos si el elemento central es igual al elemento buscado (Ver Paso A). Si es as, el Algoritmo termina con xito, de lo contrario, preguntamos si el elemento actual es mayor al elemento buscado. Esta condicin se verifica para poder lograr lo que se indica en el Paso B y/o C. Esto provoca el poder descartar una mitad del Array, bajo la lgica de que al estar el Array ordenado, no se encontrara el valor buscado en esa mitad. Paso siguiente, se vuelve a repetir el proceso hasta encontrar el valor buscado (si existe). Pasemos a ver cmo implementar este Algoritmo en Gambas. Al ser condicin estar ordenado el Array, primero tendremos que aplicarle el Mtodo del Burbujeo Optimizado y luego implementar el cuerpo de la Bsqueda Binaria propiamente dicha. En este ejemplo, mostraremos el uso de Arrays mediante un programa con interfaz grfica. Creamos un nuevo proyecto llamado Binaria, en el cual colocaremos los siguientes controles: Button: Name: btnOrdenar Button: Name: btnBinaria ListView: Name: lstArray

Listado 12. Procedimiento esperandoFinProceso(), que es llamado por videoToGif (Procesos Anidados)
PRIVATE SUB esperandoFinProceso(Proceso AS Process) lblEsperando.Visible = TRUE lblTitulo.Text = "Trabajando..." DO WHILE Proceso.State = Process.Running SELECT CASE lblEsperando.Text CASE String$(100, "|") lblEsperando.Text = String$(100, "/") CASE String$(100, "/") lblEsperando.Text = String$(100, "-") CASE String$(100, "-") lblEsperando.Text = String$(100, "\\") CASE String$(100, "\\") lblEsperando.Text = String$(100, "|") CASE ELSE lblEsperando.Text = String$(100, "|") END SELECT LOOP WAIT 0.1

lblTitulo.Text = "FfrontMpeg" lblEsperando.Visible = FALSE END

Listado 13. Los dos primeros eventos hacen uso de Dialog


PUBLIC SUB txtArchivoEntrada1_DblClick() Dialog.Title = "Abrir Archivo MPEG" Dialog.OpenFile txtArchivoEntrada1.Text = Dialog.Path txtArchivoSalida1.SetFocus END PUBLIC SUB txtArchivoSalida1_DblClick() Dialog.Title = "Guardar Archivo GIF" Dialog.SaveFile txtArchivoSalida1.Text = Dialog.Path IF Exist(txtArchivoSalida1.Text) THEN Message.Error("No se puede sobrescribir el Archivo") txtArchivoSalida1.Clear ENDIF PUBLIC SUB btnGenerar_Click() SELECT CASE TabStrip1.Index CASE 0 videoToGif() CASE 1 secuenciaVideo() CASE 2 convertirWavMP3() END SELECT END

El programa completo se muestra en el Listado 4. Dentro de este programa, podemos remarcar estos puntos importantes y de inters:

Figura 3. Posible salida del programa de ejemplo de uso de Arrays

www.lpmagazine.org

73

programacin Curso de Programacin en Gambas


con un numero positivo o negativo. Este, es un claro ejemplo de error lgico de programacin. Como podemos observar, el programador est evaluando si la variable es MAYOR que 1, es decir, EXCLUYE al numero 1 de los positivos (evaluara desde el numero 2 en adelante). Esto es un error muy grave de lgica de programacin Tambin, podemos observar que si el valor de la variable Numero es CERO, lo toma como negativo, y como todos sabemos esto no es cierto. Estos errores suelen provocarse por un mal diseo de la lgica e inteligencia del sistema y son uno de los errores ms difciles de depurar. Sintcticos: Los errores sintcticos son productos del mal tecleo por parte del programador. Estos errores impiden la compilacin del programa y en consecuencia, su ejecucin. Comnmente, el compilador sealar el nmero de lnea donde se encuentra el error. Por esta razn, son fciles de detectar y corregir. Un ejemplo de ello se encuentra en el Listado 6, donde para terminar una estructura WHILE, se utiliza (mal) END WHILE, en vez de WEND. Otro error es el mal tecleo de la instruccin END IF. Ejecucin: La ltima clase de errores es la de los errores en Tiempo de Ejecucin. Estos errores producen un bloqueo o cuelgue del programa, terminando su ejecucin de manera inmediata. A estos errores tambin

Inicio

-6

16

20

21

35

37

42

80

Fin Figura 4. Bsqueda del numero 46 mediante el Algoritmo de Bsqueda Secuencial

Podemos observar que se repite muchas veces, pero en mdulos distintos, la declaracin de la variable I. Esto se puede hacer, gracias a que cuando se utiliza esta variable en, por ejemplo, una funcin, y se declara dentro de ella, una vez finalizada la funcin la variable muere y puede ser utilizado el mismo nombre (puesto que no es la misma variable). Todo esto tiene una explicacin tcnica mucho ms compleja, que sobrepasa el alcance de este Curso. Tambin podemos observar el comportamiento del Control ListView. En su mtodo Add, que nos sirve para agregar un elemento al ListView nos pide como primer argumento el ndice en el cual queremos agregar un Valor. Se puede deducir que el Control ListView es un Array Grfico, que posee propiedades y mtodos en particular. Como ejemplo, posee la opcin de poder ordenar automticamente el ListView a medida que se agregan los valores en l (Ver Barra de Propiedades, la propiedad Sort).

utilizar excepciones desde serios problemas de hardware, como la avera de un disco duro, a los simples errores de programacin, como tratar de acceder a un elemento de un Array fuera de sus lmites. Comnmente, los errores que pueden captar las excepciones no son todas las clases de errores (Por ejemplo, si el cabezal del disco duro se daa, un simple manejo de excepciones con Gambas no podr hacer nada al respecto). En materia de programacin, los errores se dividen en tres clases fundamentales: Lgicos: Los errores lgicos son los que aparecen en la aplicacin, una vez que est funcionando. Estos errores no permiten que el programa no se ejecute, pero s provocan que lo hagan de una manera en la cual arrojen resultados inesperados. Por ejemplo, consideremos el Listado 5. Aqu, se est evaluando el valor de la variable Numero para ver si esta corresponde
Primera Iteracion

El Algoritmo de Bsqueda Binaria es sumamente simple. Se van realizando los Pasos descritos anteriormente, y se va ajustando el Array para poder descartar parte de este donde es seguro que no estar el valor a buscar. Este ajuste se logra limitando los extremos del Array (Ver variables InidiceMenor e InidiceMayor) dependiendo de si el valor a buscar es mayor o menor del elemento central. El Resultado de le ejecucin del Programa se muestra en la Figura 7. Se recomienda al lector repasar este algoritmo junto a la explicacin grfica. Tambin se sugiere modificar el cdigo fuente para alterar su comportamiento y poder as entender mejor el porqu de el porqu de su funcionamiento.

n-1=3

Segunda Iteracion

Control de Excepciones

4 n-1=2 4

En este apartado, abordaremos el manejo y control de Excepciones, pero para empezar definiE 1 3 2 4 1 2 3 remos qu es una excepcin. Una excepcin es un evento que ocurre durante la ejecucin del programa que interrumpe el flujo normal de las sentencias. Muchas clases de errores pueden Figura 5. Algoritmo de Ordenamiento: Mtodo del Burbujeo Optimizado

74

Linux+ 6/2009

programacin Curso de Programacin en Gambas


se los conoce como Errores Fatales, ya que una vez que se producen, no se puede hacer nada para recuperar la instancia del programa. Un ejemplo de ellos puede ser que se quiera acceder a un ndice ms alto del que posee un Array. Esto se ilustra en el Listado 7, donde queremos acceder al ndice 100 del Arreglo, siendo que este tiene desde 0 a 99 posiciones. Como bien mencionamos antes, Gambas no puede manejar todos los tipos de errores, por una cuestin lgica. Para las que s puede manejarlos y controlarlos son para las excepciones del Tipo en Tiempo de Ejecucin, que mediante una simple rutina, protegemos a un bloque de cdigo en que sea factible que se produzca un error. Esta rutina que envolver a nuestro bloque de cdigo est compuesta por la estructura
TRY.. CATCH.. FINNALY. Veamos el uso de mos un programa que tenga que dividir nmecada una de estas sentencias: ros, es imprescindible colocarle una rutina de control de errores. Consideremos el programa TRY: Se utiliza para proteger al cdigo que que se muestra en la Figura 8 cuya codificacin sea susceptible de error. se encuentra en se encuentra en el Listado 8. CATCH: Las instrucciones que la prosiguen Este cdigo no verifica el famoso error de solo se ejecutan si se ha producido un Divisin por Cero. Por ejemplo, si como primer error. Si existe una instruccin FINALLY, nmero ingresamos 10 y como segundo nmero ha de colocarse delante de CATCH. ingresamos 0, el programa rompery finalizar FINNALY: Las instrucciones que la prosi- inmediatamente (error fatal). Para solucionar guen han de ejecutarse siempre, se haya este inconveniente del cdigo que puede llegar producido o no error. a generar una excepcin, nos valemos de las sentencias TRY, CATCH, y FINALLY. El Listado Se puede verificar si se ha producido un error 9, muestra la versin del programa que hace consultando el valor de la sentencia ERROR. Pasemos a validar este tema con un ejemplo clsico: El error de la Divisin por Cero. Para el comn de la gente (y de las computadoras), la divisin por cero es un error. Siempre que haga-

Busqueda Binaria (Total Comparaciones) Inicio

-6

16

20

21

35

37

42

80

Si

21=42 No

Fin

21>42

-6

16

20

21

35

37

42

80

Si

21=42
No

Fin

21>42

Figura 7. Ejecucin del Proyecto Binaria

35

37

42

80

Fin
Figura 8. Programa de ejemplo para demostrar el Manejo de Excepciones

Figura 6. Algoritmo de Ordenamiento: Mtodo Binario

www.lpmagazine.org

75

programacin Curso de Programacin en Gambas


uso correcto de Manejo de Excepciones. Otra versin del uso de Manejo de Excepciones, puede verse en el Listado 10.

Introduccin a la creacin de FrontEnds

Como explicamos al comienzo de esta entrega, los FrontEnd son la cara visible de nuestras aplicaciones. Con Gambas, podemos manipular los procesos correspondientes a los BackEnd para que puedan interactuar de una manera fcil y cmoda con el FrontEnd. En esta seccin, abordaremos la creacin de un sencillo FrontEnd del famoso programa ffmpeg. El logo que identifica el programa puede verse en la Figura 9. Ffmpeg es una completa herramienta para la manipulacin y procesamiento de audio y vdeo. El proyecto originariamente fue desarrollado para GNU/Linux, aunque actualmente puede utilizarse en la mayora de los Sistemas Operativos, incluso Windows. El Proyecto est compuesto por un amplio abanico de herramientas, donde entre las ms importantes se encuentran las siguientes: ffmpeg: es una herramienta de lnea de comandos para convertir un vdeo de un formato a otro. Tambin puede capturar y codificar en tiempo real desde una tarjeta de televisin. ffserver: es un servidor de streaming multimedia de emisiones en directo que soporta HTTP (la compatibilidad con RTSP est en desarrollo). Todava no est en fase estable. ffplay: es un reproductor multimedia basado en SDL y las bibliotecas FFmpeg.

Figura 10. Aspecto de nuestro FrontEnd FFrontMpeg

mente nos dirigimos a nuestra querida consola de GNU/Linux y tecleamos sudo apt-get install ffmpeg Listo! Automticamente se nos descargar ffmpeg y se configurar para poder empezar a usarlo. La descarga e instalacin ocupan aproximadamente 1300Kb.

Conociendo ffmpeg

Para poder realizar las caractersticas antes mencionadas, nos hace falta conocer la sintaxis con la cual ffmpeg se maneja. A continuacin, presentamos los comandos que utilizaremos al interactuar ffmpeg con FfrontMpeg.

Antes de implantar nuestro FrontEnd de ffmpeg, al que he bautizado FFrontMpeg, pre- ffmpeg -i video.mpeg -pix_fmt rgb24 sentaremos las caractersticas que este sopor- imagen.gif tar: Aqu le indicamos a ffmpeg que tome como en Creacin de Imagen GIF a partir de un trada el parmetro video.mpeg y cree una imavdeo: tiles para hacer Avatares de Foros gen GIF con ese archivo, llamada imagen.gif. o querer tener un vdeo que ocupe poco Mediante la opcion -pix_fmt rgb24 le indicamos que la imagen resultante tome un formato espacio. Obtencin de Secuencias de Imgenes a de pxeles RGB24. partir de un Vdeo: til para poder tener Instalando ffmpeg un preview del vdeo en cuestin, para po- Obtencin de Secuencias Para poder crear un FrontEnd de ffmpeg es conder luego, por ejemplo, subirlo a internet. de Imgenes a partir de un Vdeo dicin necesaria tenerlo instalado. Si no dispo- Conversin de WAV a MP3: til para tener nemos de ffmpeg en nuestro ordenador, simpleun archivo de audio con menor tamao, ffmpeg -i video.avi imagenes%d.jpg y poder almacenarlo por ejemplo, en un En este lugar, le indicamos a ffmpeg que tome Reproductor de MP3 o en un Sitio Web. como entrada el parmetro video.avi y que Como vemos, nuestro programa tendr caracte- genera una salida de imgenes del vdeo, cuya Figura 9. Logo de ffmpeg secuencia ser imagenes%d.jpg. El valor de %d rsticas con orientacin a la web. En nuestro FrontEnd nos valdremos de la utilizacin de ffmpeg. Como vemos en su descripcin, claramente nos indica que es una utilidad de lnea de comandos, por lo cual nosotros seremos los encargados de realizar la interfaz grfica que interacte con la aplicacin. Por razones de espacio y tiempo, solamente desarrollaremos la GUI para un conjunto limitado de opciones disponibles de ffmpeg, ya que este trae muchas y no podramos abarcarlas todas en una sola entrega.

Caractersticas de FFrontMpeg

Creacin de Imagen GIF a partir de un vdeo

76

Linux+ 6/2009

programacin Curso de Programacin en Gambas


Tabla 1. Propiedades y Mtodos de la clase Dialog Nombre Filter Font OpenFile SaveFile SelectColor SelectDirectory SelectFont Title Descripcin Filtrado de Archivos (por ejemplo, solo GIF) Fuente utilizada en el Cuadro Llama al Cuadro de Dialogo de Abrir Archivo Llama al Cuadro de Dialogo de Guardar Archivo Llama al Cuadro de Dialogo de Seleccionar Color Llama al Cuadro de Dialogo de Seleccionar Directorio Llama al Cuadro de Dialogo de Selecionar Fuente Indica el Titulo contendra el Cuadro de Dialogo Tipo Propiedad Propiedad Metodo Metodo Metodo Metodo Metodo Propiedad
DIM Buffer AS String EXEC ["who", "-r"] TO Buffer message.info("Runlevel del Sistema: " & Buffer)

archivo MP3, ffmpeg nos muestra muchos datos acerca de cmo se est realizando la conversin. Al ejecutar EXEC sin la redireccin con TO, estos datos nunca los veramos, con lo que la salida de ffmpeg se perdera. En nuestro caso, la salida de texto de ffmpeg no nos sera de tanto inters, ya que en este ejemplo lo que en realidad buscamos es que nos genere el archivo MP3. A continuacin, se muestra un ejemplo del uso de TO:

ser reemplazado por el nmero de secuencia recibe como parmetro un proceso, y devuelve de la imagen. el descriptor de proceso. Este descriptor lo captaremos en un objeto de la Clase Process para Conversin de WAV a MP3 poder ir determinando su comportamiento. A lo largo del desarrollo del programa iremos viendo fmpeg -i original.wav -ab 32 -ar 44100 algunas propiedades de la clase Process. La sinsalida.mp3 taxis de EXEC se muestra a continuacin: Aqu, como vemos, especificamos varios parmetros. En primera instancia, el parmetro original.wav es la entrada para la posterior salida del archivo salida.mp3. Dentro de este comando especificamos algunos argumentos. -ab 32 indica que el bitrate del archivo ser de 32 kbps. Por ltimo, el argumento -44100 indica que el archivo de salida tendr una frecuencia de 44100Mhz. Estos parmetros pueden omitirse para que tomen el valor por defecto. Nota: La opcin -i que se especifica en todos los comandos, indica cul ser el archivo de entrada (Input). Para todos estos comandos existen varios parmetros. Por ejemplo, a la hora de crear secuencias de imgenes a partir de un vdeo, puede configurarse en tiempo entre cada imagen que va a ser captada. Por cuestiones de simplicidad y objetivos de este artculo, dichas opciones quedan como tarea al lector investigarlas y de querer as, poder implementarlas en el FrontEnd. Una vez conocidos los comandos con que nos vamos a manejar, ya estamos listos para crear la GUI del programa e interactuar con ffmpeg.
[ObjetoProcess =] EXEC [Comando] [ParametroN] [WAIT] (FOR (READ | WRITE | READ WRITE ) [TO String]

Por ltimo, el uso de READ o WRITE simplemente indican si el proceso ser slo para lectura, slo para escritura o ambos casos. Su uso no es obligatorio.

Para que los parmetros sean ms legibles, EXEC requiere que estos se pasen como un Array de Strings. Por ejemplo, para ejecutar el comando ls -al, tendramos que llamar a EXEC de la siguiente manera:
EXEC ["ls", "-al"]

Para la manipulacin de Procesos, Gambas nos provee de otro comando de utilidad, con ligeras diferencias con EXEC: El Comando SHELL. Este comando lo que hace es lanzar un Shell o intrpretes de comandos del sistema, comnmente BASH, y se le pasa el comando en cuestin como una cadena de caracteres continua. Esto permite, por ejemplo, darle instrucciones del tipo cd o export que son parte de BASH y no comandos independientes. Tambin se pueden usar pipes y comandos de redireccin del tipo 2>, >, <, tee, etc. La sintaxis de SHEEL es la siguiente:

El Comando SHELL

El parmetro Comando es el nico que se nece- [ObjetoProcess =] SHELL [Comando] [WAIT] sita como obligatorio. La palabra clave WAIT, se (FOR (READ | WRITE congelar hasta que este termine. Contemple| READ WRITE ) mos el siguiente ejemplo:
EXEC ["rm", "-rf", "$HOME"] WAIT message.info("Ha finalizado el Borrado del Directorio Home")

No abordaremos en particular el uso de SHELL, puesto que es muy similar a EXEC, siendo este ltimo desde mi punto de vista ms potente.

Para poder manipular procesos, Gambas nos provee una clase llamada Process. Gracias a ella, podemos sincronizar la ejecucin de dos programas (el FrontEnd y el BackEnd), comunicarse entre s leyendo y escribiendo la entrada y salida estndar, conocer el estado de ejecucin, y recibir mensajes de error. Esta clase nos provee de varias propiedades y mtodos que nos sern de utilidad a la hora de manejar procesos. La clase Process hace de contenedor del proceso, mientras que el encargado real de ejecutar el proceso es la sentencia EXEC. Este comando

La Clase Process y el Comando EXEC

Aqu, un directorio como HOME contiene todos los archivos del usuario en cuestin. Si nosotros ejecutamos esta instruccin SIN el uso de WAIT, el comando EXEC empezar a borrar todos los archivos del directorio HOME pero inmediatamente mostrar el mensaje de que ha finalizado el borrado, y esto no es cierto, ya que el comando que se encuentra dentro de EXEC seguir trabajando hasta que finalice su ejecucin. Es por ello que en estos casos, es recomendable el uso de WAIT, siempre y cuando se le informe al usuario de que el comando est realizando su labor. El uso de TO en una sentencia EXEC, lo que har es redireccionar la salida que produzca el proceso que se est ejecutando. Por ejemplo, a la hora de convertir un archivo WAV en un

Bien, ya estamos con todos los conocimientos necesarios para la creacin de nuestro primer FrontEnd. A lo largo del diseo, explicar el concepto y cmo se manipulan los procesos en Gambas. Esto nos servir para poder controlar el ffmpeg desde nuestro FrontEnd. El diseo de la GUI de FFrontMpeg se muestra en la Figura 10. Es un diseo sencillo, pero que nos ser de utilidad y bastar para realizar las tareas que nuestro programa tendr a cargo. En la imagen se ven tres capturas de pantallas diferentes, pero muy similares. Esto es porque para la creacin del FrontEnd, se utiliza el control TabStrip, donde podemos tener una especie de mltiples formularios dentro del

Diseando la GUI

www.lpmagazine.org

77

programacin Curso de Programacin en Gambas


mismo, manejados mediante pestaas. Con el control TabStrip podemos generar aplicaciones al mejor estilo Mozilla Firefox. No hay que confundirse, no son tres formularios diferentes, sino que son tres pestaas diferentes! Para este diseo, nos harn falta los siguiente controles: las propiedades se reinician. En realidad lo que sucede es que por cada pestaa, el control toma valores distintos, independientemente de cada pestaa en particular. As, si queremos ponerle la propiedad Text con el valor Conversin WAV a MP3, primero tenemos que seleccionar la pestaa a la que le queremos aplicar el texto, y luego ingresarlo. Las imgenes que se muestran en el programa son descargadas de Internet. Cada programador es libre de elegir la imagen que desee, o de disear su propia GUI para el FrontEnd; pero si quieres que tenga las mismas imgenes que el ejemplo, envame un email a jorge.capurro@li nuxmail.org. Una vez terminada la Interfaz Grfica del programa, podemos empezar a programar sus funciones. El funcionamiento genrico de cada una de ellas ser el siguiente: El usuario hace doble clic sobre el primer TextBox (Archivo de Entrada). Automticamente, se aparecer un Cuadro de Dialogo pidiendo que seleccione un Archivo en particular de audio o vdeo, segn sea la ocasin. Luego, el usuario hace doble clic sobre el segundo TextBox e ingresa el nombre de Archivo de Salida (con su correspondiente extensin, por ejemplo foto.gif). Como paso final, el usuario hace click sobre el botn Generar! y espera a que concluya el proceso. la funcionalidad necesaria para poder convertir un vdeo en un archivo de animacin GIF. Con los temas desarrolladores de este articulo, el lector estar lo suficientemente capacitado como para poder desarrollar las otras dos funciones por cuenta propia (La de Conversin de WAV a MP3 y la de Generacin de imgenes a partir de un vdeo) y de, si quiere, poder desarrollar FrontEnds de varias aplicaciones GNU/ Linux. Se propone al lector como reto personal agregarle ms funcionalidades al FrontEnd. En primera instancia, nos ocuparemos de desarrollar el procedimiento ms importante ahora: videoToGif. Esta funcin, como su nombre claramente indica, se encargar de tomar el archivo que se encuentra en el TextBox txtArchivoEntrada1, convertirlo a imagen GIF, y generar su salida como lo indica el TextBox txtArchivoSalida1. Aqu desarrollaremos la troncal principal de nuestra primera caracterstica del FrontEnd. Todo el desarrollo de esta funcin se muestra en el Listado 11. Analicemos este Cdigo. En primer lugar, se declara una variable del tipo String llamada Extensin y un objeto del tipo Process llamado Proceso. A partir de all, mediante la funcin $RIGHT obtenemos los ltimos 3 caracteres que se almacenan en el TextBox txtArchivoSalida1, para almacenarlo en la variable Extensin. Luego, verificamos que estos tres carcteres correspondan con la extensin GIF. Esto lo hacemos para validar que el archivo que se haya seleccionado como Salida sea un archivo GIF; de lo contrario nuestro proceso generar un error al querer convertir el vdeo a dicha extensin de imagen. Una vez validada la entrada del Archivo de Salida y verificado que los TextBox no estn vacos, es decir, que se hayan seleccionado los archivos, se procede a llamar al proceso mediante la la sentencia EXEC pasndole los parmetros correspondientes (Ver apartado Conociendo ffmpeg y La Clase Process y el Comando EXEC) . Observe como NO se hace uso de WAIT, pese a que este proceso puede tardar. Al contrario, se hace uso de un procedimiento personalizado que llamamos esperandoFinProceso(), el cual recibe un objeto del tipo Process. El desarrollo de esta funcin lo veremos ms adelante, por ahora basta decir que sirve para entretener al usuario mientras se realiza el proceso de conversin. Una vez terminada la tarea, se le informa al usuario que el proceso ha finalizado, indicando el nmero de identificacin de este (PID) que se almacena en el campo ID del objeto Proceso (Ver cuadro Los Comandos PS y TOP ). Por ltimo, se vacan los TextBox utilizados. Listo, ya tenemos nuestra primera funcionalidad realizada.

Control TabStrip, que se encuentra en la Categora Container del Cuadro de Controles. La propiedad Count indica la cantidad de pestaas, por lo cual tendremos que asignarle el valor 3. TextBox, que se llamarn txtArchivoEntradaX, donde X es el numero de Pestaa del TabStrip (por ejemplo, el primero se llamaria txtArchivoEntrada1). Controles TextBox, que se llamarn txtArchivoSalida1 (Pestaa 1, Conversin Video a Imagen GIF) y txtArchivoSalida3 (Pestaa 3, Conversin WAV a MP3). Control Buttom, llamado btnGenerar. Este botn ser NICO para todas las conversiones y, dependiendo en qu pestaa est el usuario, realizar la accin correspondiente. Varios Controles Labels. Uno de los label se llamar lblEsperando, con propidad VISI- BLE en FALSE, y se encontrar a la izquierda del Botn btnGenerar. Otro se llamar lblTitulo y tendr el texto FFRontMpeg. Todos los TextBox tienen que tener su propiedad READONLY en TRUE (Para que el Usuario no ingrese por error rutas de archivo invalidas).

Podemos notar que en tiempo de diseo, al se- Dejmonos de hablar y comencemos a prograleccionar distintas pestaas del control TabStrip, mar! En este apartado, desarrollaremos TODA

Desarrollando la Aplicacin Final

Figura 11. Resultado de la llamada a Dialog

78

Linux+ 6/2009

programacin Curso de Programacin en Gambas


Como vemos, es muy sencilla la manipulacin de procesos para la creacin de FrontEnds, aunque todava aprenderemos una caracterstica ms de nuestra apreciada Clase Process. Para que este procedimiento quede totalmente terminado, falta describir la codificacin del proceso esperandoFinProceso(). Su implementacin se muestra en el Listado 12. Aqu, se recibe un objeto del tipo Process para trabajar con el. Luego, modificamos el texto de nuestro lblTitulo para que indique que ahora se est trabajando en la tarea especificada por el usuario. Tambin, hacemos visible al label lblEsperando, para que pueda mostrar lo que incluiremos en l a continuacin. Se utiliza un bucle DO... WHILE que verifica que el estado del proceso (Proceso.State) est en ejecucin (Proceso.Running), es decir, que est trabajando. Mientras que esto sea verdadero, ejecutamos la pseudoanimacion que hemos creado dentro del bucle. La funcin $STRING se encarga de repetir la cadena de texto la cantidad de veces que se le pase como parmetro. Por ejemplo, la instruccin $STRING(5,Linux+) generar la cadena Linux+Linux+Linux+Linux +Linux+. Mediante la estructura SELECT CASE, verificamos cul es el texto que se encuentra actualmente cargado en el txtEsperando. Dependiendo del texto que haya, lo vamos modificando segn el tiempo que especifica WAIT, generando as un efecto de animacin. Una vez que el proceso haya finalizado y, por ende, se salga del bucle, restauramos los valores de los Labels a su original, y regresamos al procedimiento videoToGif, realizando las tareas que anteriormente describimos. Estos dos procedimientos deben estar en la seccin de Declaraciones de nuestro formulario. Si el lector lo desea, puede almacenarlos en un mdulo para su mayor compresin. De ser as, recuerde que debe llamarlos desde el FMain mediante NombreDeModulo. Procedimiento Es muy sencillo su uso. En primer lugar, asignamos el ttulo al Cuadro de Dialog. En el primer caso, es Abrir Archivo GIF. Luego, llamamos al cuadro de dilogo, que se muestra en la Figura 11. Cuando el usuario selecciona un archivo, la ruta del mismo (PATH) se almacena en txtArchivoEntrada1, que posteriormente ser utilizado como parmetro del comando EXEC. Aqu, se podra haber utilizado la propiedad Filter, para que slo muestre los archivos GIF. No se ha hecho para que el lector vea cmo pueden solucionarse problemas de distintas formas (por ejemplo, con el uso de funciones como $RIGHT). En el Listado 13 se muestra por ltimo el evento Clic del btnGenerar. Este botn, como dijimos anteriormente, realizar la tarea que le corresponda segn en qu pestaa se encuentre. Para verificar esto, consultamos el valor de INDEX (de ndice) del TabStrip. Las pestaas se numeran desde Cero hasta N, siendo N la cantidad de pestaas que contenga, especificada en la propiedad Count del control. Observe que en este cdigo tambin se mencionan los procedimientos secuenciaVideo() y convertirWavMP3(). Queda como tarea para el lector terminar la totalidad de las funciones del programa, agregarle ms funciones (si lo desea), empaquetarlo, crear el instalador y luego envirmelo a mi direccin de correo! propone al lector validar la entrada de este archivo, de la manera que le sea ms conveniente (mediante la propiedad Filter en el Dialog, o haciendo uso de RIGHT para verificar la extencion del Archivo). Intente desarrollar un Algoritmo que se encargue de desordenar un Array especifico. Se recomienda investigar el uso de Vectores Apareados para poder desordenar ordenando. Si conoce el Lenguaje de Programacin C, realizar un programa en el que se encargue de, por ejemplo, recibir un nmero como parmetro y que retorne su factorial. Mediante el uso de EXEC, realizar el FrontEnd del programa en Gambas en el cual llame a su programa de calculo de factorial y lo muestre en pantalla.

Se recomienda al lector realizar los ejercicios con el fin de poder fijar y realizar la prcticas de los temas estudiados.

Ejercicios Propuestos

Se deja al lector una serie de ejercicios para que pueda practicar los temas vistos en esta entrega. Buscar e Implementar en Gambas algoritmos de Ordenamiento que no se hayan visto aqu. Comprobar la eficiencia de cada uno, ventajas y desventajas. Sacar conclusiones. Crear un programa que se encargue de introducir el Nombre y Telfono de 1000 personas, y luego ordenarlo mediante Nombre en forma decreciente. Investigar el uso de Arrays o Vectores apareados, para poder tener tipos de datos distintos en correspondencia vlida. Pensar, disear y programar un FrontEnd para el uso de APT en Ubuntu. Investigar las propiedades y mtodos de la clase Dialog. Implementarlas en un ejemplo real. Agregar al Editor de Texto realizado en la Entrega N2 del Curso, la posibilidad de Abrir/Guardar un archivo mediante Cuadros de Dialogo. Mediante la funcin $RIGHT, hemos validado la entrada del txtArchivoSalida1. Puede comprobar el lector que, si en el txtArchivoEntrada1 introduce un archivo que NO es un vdeo, el programa fallar. Se le

En esta entrega del curso hemos desarrollado una cantidad considerable de temas, como lo son los FrontEnds, Arrays, Algoritmos de Ordenamiento, Algoritmos de Busqueda, manipulacin de procesos, Cuadros de Dilogos, Scripts, etc. Todos estos conceptos son muchos para captarlos de una sola vez. Es por ello que es recomendable repasarlos sin dejar ningn detalle de imprevisto. Recuerda que siempre puedes consultar tus dudas a jorge.capurro@linuxmail.org, tratar de responderte lo ms claro y rpido posible. Esto es todo por hoy. Nos vemos en la prxima entrega del Curso. Hasta la Vista!

Consideraciones Finales

Sobre el autor
Jorge Emanuel Capurro es estudiante de la Tec. Superior en Programacin, carrera dictada en la Universidad Tecnolgica Nacional - Facultad Regional Haedo, provincia de Bs As, Argentina. Principalmente, su rea de investigacin se centra en los Sistemas Operativos de tipo UNIX y de la programacin bajo esta plataforma. Es el creador del proyecto IDEas (http://ideasc.sourceforge.net), que es el primer frontend desarrollado bajo Gambas del compilador gcc (http://gcc. gnu.org), que se utiliza con fines didcticos. Actualmente realiza funciones de programador para la empresa IBM Argentina en el departamento de Applications Management Services, participando de diversos proyectos de desarrollo de software de carcter internacional.

Finalmente, nos queda la tarea de poder introducir los archivos de entrada y salida correspondientes. Para ello, como bien aclaramos antes, haremos uso de los cuadros de dialogo de que nos provee Gambas, valindonos de la clase esttica Dialog. Esta clase, contiene unas pocas propiedades y mtodos que nos sern de muchsima ayuda para conseguir que el usuario seleccione un archivo de manera cmoda. Las propiedades y mtodos de ella se listan en la Tabla 1. Esta clase la utilizaremos en los eventos Doble Clic de los TextBox txtArchivoEntrada1 y txtArchivoSalida1, tal y como se muestra en el Listado 13. Este Cdigo, genera lo que se muestra en la Figura 11.

ltimos Retoques..

www.lpmagazine.org

79

programacin Programando RIA con Flex y AMFPHP

Aplicaciones de Internet Enriquecidas (RIA):


Programando RIA con Flex y AMFPHP
Matas Barletta

Qu programador no quisiera darle a sus usuarios la mejor experiencia de uso, una herramienta intuitiva, fcil de usar y que tenga los beneficios de las aplicaciones web? Adems, que el desarrollo e implementacin sea sencillo y... placentero.

unque muchos de nosotros quisiramos esto, no todos tenemos la experiencia y el dominio de las herramientas que hacen eso posible. Sin embargo hoy por hoy las Aplicaciones de Internet Enriquecidas (RIA por sus siglas en ingls) y sus herramientas de desarrollo se convirtieron en una muy buena opcin para las empresas y desarrolladores que buscan brindar los beneficios de las aplicaciones online sin perder mucho de los privilegios de las aplicaciones de escritorio. Hoy en da podemos desarrollar aplicaciones en lnea que tienen muchos de los privilegios que antes estaban reservados a las aplicaciones de escritorio, como cortar, pegar, arrastrar, redimensionar, accesos multimedia, etc. En este artculo exploraremos el desarrollo de una aplicacin de Internet enriquecida utilizando una plataforma conocida como Flex.

Qu son las RIA?

Anteriormente a la aparicin de las RIA, las aplicaciones Web cotidianas y que an se ven por la web en demasa, son aplicaciones que necesitan recargarse constantemente, utilizan slo HTML/DHTML y un poco de Javascript, y ustedes pueden ver que son menos giles o ms lentas para el uso. El

tpico caso son los formularios donde uno escribe el contenido y finalmente hace clic en enviar, donde se vuelve a cargar otra pgina para as seguir el proceso sucesivamente. Estas aplicaciones tpicamente no tienen la capacidad de aprovechar el copy / paste de objetos de la pgina, tampoco pueden interactuar con la webcam ni el audio del equipo y ni hablar de arrastrar objetos para interactuar con la aplicacin. Para ver esto ms claro podemos utilizar la opcin HTML bsico en Gmail, que har que todas las funcionalidades RIA comunes a Gmail desaparezcan -chat, corrector ortogrfico, combinacin de teclas, entre otros-. Podrn tambin apreciar que cada accin tendr que ser procesada y la pgina recargada por cada operacin. En contraste con esto, las RIA (por lo general) son aplicaciones que se descargan casi completamente al iniciarse. Esto evita la necesidad de que se recargue cuando queremos ejecutar alguna accin. Ahora bien, en este punto ya pueden imaginarse a una gran aplicacin RIA como Gmail o Google Docs. En estas aplicaciones ustedes no tienen que esperar la recarga de todo el sitio para desarrollar una accin. Si seguimos con este ejemplo de Gmail, podemos ver que tiene la capacidad de

80

linux@software.com.pl

Linux+ 6/2009

programacin Programando RIA con Flex y AMFPHP


arrastrar y soltar los applets de contactos, calendario, documentos, etc. Se pueden mover estos applets dentro de Gmail sin necesidad de que se recargue todo el sitio, ubicarlos en otra parte, interactuar con ellos y/o deshabilitarlos. Tambin pueden ver que esta aplicacin recientemente comenz a interactuar con la cmara web, permitiendo hacer vdeo chat desde el explorador, lo cual es una gran hazaa para una aplicacin web (lamentablemente an no est disponible para nosotros, los usuarios de Linux). En definitiva, tenemos una aplicacin muy gil con acceso a funciones multimedia, que no consume mucho ancho de banda (no recarga todo el sitio -y sus imgenes- varias veces), que es visualmente ms atractiva y el usuario se siente ms cerca de la funcionalidad de una aplicacin de escritorio. Con este ejemplo de Gmail puede verse donde la misma aplicacin est desarrollada de manera bsica o avanzada (RIA) y podemos sentir la diferencia en prestaciones, comodidad, agilidad y simpleza. La tecnologa que usa Google en la mayora de sus aplicaciones se conoce como AJAX o Javascript Asncrono y Xml. Google es quizs el que ms ha impulsado esta tecnologa, han realizado muchas aplicaciones, extensiones y utilidades para facilitar la utilizacin de esta tecnologa AJAX. Por ltimo, vamos a ver un resumen de otras ventajas (Wikipedia): No necesitan instalacin (solamente es necesario mantener actualizado el navegador web). Las actualizaciones hacia nuevas versiones son automticas. Se pueden utilizar desde cualquier ordenador con una conexin a Internet sin depender del sistema operativo que ste utilice. Generalmente, es menos probable la infeccin por virus, que utilizando por ejemplo programas ejecutables. Ms capacidad de respuesta, ya que el usuario interacta directamente con el servidor, sin necesidad de recargar la pgina. Ofrecen aplicaciones interactivas que no se pueden obtener utilizando slo HTML, incluyendo arrastrar y pegar, clculos en el lado del cliente sin la necesidad de enviar la informacin al servidor. Evita la problemtica del uso de diferentes navegadores al abstraerse de ellos a travs de un framework. zacin elimina mucho gastos y dolores de cabeza a cualquier administrador de sistemas. En resumen y para terminar la idea, las RIA son la evolucin de las aplicaciones de Internet, que intentan asemejarse a las aplicaciones de escritorio al mismo tiempo que mantienen las cualidades de las aplicaciones Web, pueden tener bsicamente la misma apariencia pero son ms complejas y ofrecen mayor funcionalidad.

Tecnologas de RIAs: AJAX y FLEX

Como pueden ver, no son pequeas las ventajas relacionadas con las RIA contra las aplicaciones de escritorio o aplicaciones web antiguas. El solo hecho de que no necesiten instalacin y/o actuali-

Ahora que ya sabemos bien qu es una RIA, vamos a hablar sobre la tecnologa disponible para realizar estas aplicaciones. Existen 2 grandes corrientes en el desarrollo de RIA, una es mediante AJAX y la otra utilizando tecnologa basada en Flash conocida como Adobe Flex. En el caso de AJAX vern que no es algo muy distinto a lo que hacan con HTML y Javascript, mientras que Adobe Flex puede ser para varias personas un cambio radical. Cul es mejor? Como siempre, depende de qu se quiera hacer y cul sea el objetivo. Para una aplicacin como Gmail es difcil imaginrselo en Flex, pero tambin Flash es increblemente poderoso para las cuestiones multimedia y animaciones, incluso la versin 10 del reproductor ya soporta aceleracin 3D lo que permitir expandir las aplicaciones web a un mundo muy interesante. (Ver http://www.papervision3d.org/). La tecnologa AJAX es ya bastante conocida aunque no lo sepas, basta con utilizar cualquier aplicacin de Google para saber cmo se siente. Est basada en la ejecucin asncrona de cdigo Javascript. Por ejemplo, en Gmail cuando vamos a escribir un mensaje y comenzamos a escribir el nombre del destinatario, Gmail nos muestra un listado de nuestros contactos que coincida con lo que vamos tipeando. En este caso, cada vez que presionamos una tecla, el explorador ejecuta una funcin javascript que sin necesidad de recargar la pgina, ejecuta la instruccin al servidor y ah mismo muestra el resultado. Esto hace que se vea muy gil el uso de este sistema. Por otra parte tenemos la tecnologa de Adobe Flex, la cual se basa en utilizar la tecnologa de Flash para realizar nuestra aplicacin. Las aplicaciones realizadas en Adobe Flex son una combinacin de programacin utilizando ActionScript y XML. El cdigo fuente de una aplicacin Flex, como veremos ms adelante, es prcticamente archivos MXML (Macromedia XML) y Actionscript (parecido a Java) que al compilarse el proyecto el resultado (generalmente) es un archivo swf (por sus siglas ShockWave Flash) que no hace falta ms que un reproductor Flash para utilizarlo.

Figura 1. Pantalla de creacin de nuevo proyecto en Adobe Flex Builder Linux

Esta tecnologa impulsada por Adobe ha sido muy bien aceptada para la realizacin de aplicaciones corporativas, basta con echar un vistazo a los proyectos que figuran en Adobe.com para tener una idea. Adobe aprovecha su monopolio en cuanto a su reproductor Flash en un gran porcentaje de ordenadores del mundo. Esto hace posible que las aplicaciones basadas en Flex puedan ser ejecutadas en cualquier navegador y/o equipo que lo soporte. Adems, Adobe no debe esperar largos ciclos de mejora a protocolos o estndares, la adopcin de Flash es tan alta y los usuarios de Flash actualizan a las ltimas versiones tan rpidamente (en menos de 2 meses de liberada la versin 10 de Flash, el 55% de los ordenadores ya haban hecho el upgrade; pocos meses despus, la adopcin era casi de un 80%) que se puede dar el lujo de agregar y agregar funcionalidades y mejoras continuamente y saber que la gente buscar tener la ltima versin. En resumen tenemos 2 principales formas de realizar una RIA, utilizando AJAX o Flex. Lo recomendable sera que prueben ambas formas y se decidan por la que ms se adecua a sus necesidades. En este caso vamos a trabajar con Adobe Flex y vamos a dar una ayuda en muchos conceptos claves.

Estructura de una RIA

Al igual que las aplicaciones comunes de Internet, las RIA se basan en una estructura Cliente/
Listado 1. Creando la carpeta prueba1
CREATE TABLE 'prueba'.'contactos' ( 'nombre' varchar(10) NOT NULL,

default '0', increment,

'borrado' tinyint(1) NOT NULL

'id' int(11) NOT NULL auto_ PRIMARY KEY ('id')

) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1

www.lpmagazine.org

81

programacin Programando RIA con Flex y AMFPHP


miento, vamos a desarrollar una pequea aplicacin utilizando Adobe Flex y AMFPHP para poder probar nuestro conocimiento. El nico requerimiento para desarrollar este ejemplo es un poco de experiencia con PHP y MySQL en general para poder concentrarnos en el aprendizaje de Flex y AMFPHP. Utilizaremos Adobe Flex para desarrollar el cliente y un programa hecho en PHP en nuestro servidor. AMFPHP es el encargado de realizar la conexin entre PHP y Flex. AMFPHP se encargar de convertir los resultados del script de PHP en un formato AMF que Flex/Flash pueden comprender. AMF por sus siglas en ingls Action Message Format es un protocolo abierto muy eficaz para la transferencia de objetos y datos en general, ms eficaz que utilizar XML puesto que utiliza menos recursos de procesamiento y ancho de banda. Primero vamos a configurar nuestro entorno de desarrollo para luego hablar un poco ms de las herramientas. La aplicacin ser una pequea lista de nombre de contactos que se encuentra en una base de datos, y mediante una interfaz de administracin hecha en Flex, realizaremos un manejo muy bsico como Agregar/ Borrar/ Listar los datos. Recuerden que nuestro objetivo es ver la interaccin entre ambos sistemas y no aprender PHP. En el otro extremo tendremos una aplicacin realizada en PHP que estar accesando la base de datos utilizando Adodb el cual har ms fcil el proceso. Si no conocen Adodb no se preocupen, es muy sencillo dado que haremos uso de cuestiones bsicas. Asegurarnos que tenemos instalado el Apache HTTPD en Ubuntu y MySQL. (aptphp5 php5-mysql mysql-server-5.0). Crear una base de datos llamada prueba. Crear una tabla con el siguiente script. Descargar AMFPHP (http://sourceforge.net/ projects/amfphp/) y descargar Adodb para php (http://adodb.sourceforge.net/). Descomprimir ambos archivos en la raz de nuestro servidor web que en Ubuntu es /var/www. Luego vamos a renombrar la carpeta recin extrada de AMFPHP. 'mv /var/www'. Crear una carpeta llamada prueba1 en el directorio /var/www. amfphp-1.9.beta.20080120/amfphp get install apache2 libapache2-mod-

Figura 2. Configurando el servidor PHP

El ejemplo lo vamos a desarrollar utilizando Adobe Flex Builder y Eclipse. Todo esto utilizando como mquina de desarrollo un Ubuntu/ Kubuntu. Adobe Flex Builder para Linux tiene an unas diferencias con su homnima versin de Windows, carece de Vista de Diseo, Vista de Estados y otros: Desarrollando En nuestro caso utilizaremos el tipo 3 que nos una aplicacin en Flex Descargar Eclipse Europa 3.3. Deben ba- permitir realizar clases de PHP en el servidor, Para darle forma y color a todo este conocijar esta versin y no la 3.4 dado que Flex y acceder a sus mtodos desde el cliente. El mtoBuilder no es compatible con la versin 3.4. do 2 es utilizado para cuestiones muy sencillas y (http://www.eclipse.org/downloads/packages/ no os recomiendo para cosas complejas. El caso 1 release/europa/winter) es para cuando existen aplicaciones desarrolladas Descomprimir eclipse. de antemano con esta habilidad para distribuir el Descargar Adobe Flex Builder para Linux. servicio, pero no os recomiendo debido a que es (http://labs.adobe.com/downloads/flex- ms lento (para quien cobre la programacin por builder_linux.html). horas esto puede ser bueno) que RemoteObject Ejecutar en la consola del usuario lo- y verdaderamente ms complejo el desarrollo. gueado el instalador y seguir los pasos del instalador. Este instalador nos pedi- Ejemplo desarrollado Figura 3. Archivos generados al crear un proyecto r el directorio donde descomprimieron Comencemos con el desarrollo del ejemplo. Prien Flex mero vamos a crear los archivos como os exponeclipse.

Servidor, siendo el cliente el explorador (Firefox/ Opera/ Konqueror/ Explorer/ Safari, etc.) y el servidor web (Apache/ Tomcat/ IIS, etc.). En nuestro caso de Flex, tenemos como cliente al conjunto Explorador + Flash. En el caso de AJAX el cliente es solo el Explorador (que soporte Javascript). El cliente est encargado de administrar toda la interaccin con el usuario y procesar las respuestas del servidor. El Servidor est encargado de procesar todos los requerimientos que el cliente solicita, como acceso a la base de datos y a otros servicios, para finalmente enviarle el resultado para ser procesado. En definitiva la estructura de una RIA es bsicamente la misma que las aplicaciones Web, un cliente y un servidor a excepcin que el Cliente est mucho ms desarrollado y con muchas ms prestaciones, de hecho pueden desarrollar una RIA utilizando su viejo servidor. En definitiva la parte del cliente es la ms importante en una RIA dado que es aqu donde se dan las mayores prestaciones para el usuario. Para el desarrollo de toda la interfaz del cliente, se puede utilizar Adobe Flex o Ajax mientras que para el servidor se pueden utilizar diferentes sistemas, por ejemplo, un servidor Apache/ IIS/ ColdFusion, Flex data Services y otros. En el caso de utilizar Flex la eleccin del servidor es a veces compleja, existen muchas opciones y muchas diferencias que a veces son difciles de comparar.

Con estos pasos ya tenemos lo necesario para realizar aplicaciones utilizando Flex y AMFPHP. En dos primeros pasos descargamos e instalamos Flex. Antes de comenzar a realizar el ejemplo vamos a hablar un poco ms acerca de Flex y AMFPHP. La interaccin de un cliente en Flex con un servidor se hace por medio de diferentes mtodos: Primer mtodo: Servicios Web: Son servicios que se han creado especficamente para comunicacin entre mquinas y estn definidos por un WSDL. Segundo mtodo: Servicios HTTP: Son los ms comunes para los desarrolladores de sitios web, son llamadas HTTP como POST/GET. Este mecanismo es el menos recomendado pero tambin es muy sencillo de implementar, dado que podemos adaptar viejos servicios a Flex, exportando los datos a un XML. Tercer mtodo: Objetos Remotos: Son objetos de Java que se pueden acceder desde el cliente.

Software necesario

82

Linux+ 6/2009

programacin Programando RIA con Flex y AMFPHP


Listado 2. Editando el archivo prueba.mxml
<?xml version="1.0" encoding="utf-8"?><mx: <mx:method name="agregar" <mx:method name="borrar" </mx:RemoteObject>

Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundGradientColors="[#000000, #1D1D1D]" <mx:Script> creationComplete="init()" >

layout="absolute" backgroundGradientAlphas="[1.0, 1.0]"

result="addresultHandler(event)"/> result="addresultHandler(event)"/>

<![CDATA[

<mx:Panel x="199" y="162" width="526" height="327" layout="absolute" fontSize="12"> title="Prueba AMFPHP + FLEX" color="#000000" <mx:AdvancedDataGrid id="contactos" width="100%" height="100%"

import mx.controls.Alert;

import mx.collections.ArrayCollection;

import mx.rpc.events.FaultEvent; [Bindable]

import mx.rpc.events.ResultEvent; private var nombres:Array;

designViewDataType="flat" left="0" top="0" dataProvider="{nombres}" >

private var obj:Object=new Object(); private function resultHandler { (event:ResultEvent):void

<mx:ApplicationControlBar x="199" y="497" width="326"> <mx:Button label="Listar" click="init()"/> <mx:Button label="Agregar" click="agregar()"/> <mx:TextInput width="83" id="txtName"/> <mx:Button label="Borrar" click="borrar()"/>

</mx:Panel>

</mx:AdvancedDataGrid>

trace('Procesando resultado');

nombres = event.result as Array;

private function addresultHandler { (event:ResultEvent):void

&amp;lt;/mx:Application>

</mx:ApplicationControlBar>

amfPrueba.listar();

Alert.show('Exitoso!');

Luego debemos crear en el directorio 'src' <?xml version="1.0" encoding="UTF-8"?> <services-config> <services>

el siguiente archivo llamado 'services-config.xml'

private function faultHandler { }

(event:FaultEvent):void

<service id="amfphp-flashremoting-service"

Alert.show(event.fault.faultDetail, "Error");

class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages. RemotingMessage">

private function init():void{ amfPrueba.listar();

trace('Iniciando aplicacion');

<destination id="taskService"> <channels> <channel ref="my-amf"/>

private function agregar():void{ amfPrueba.agregar(obj); obj['nombre']=txtName.text;

</channels>

<properties>

private function borrar():void{ amfPrueba.borrar(obj);

obj['id']=contactos.selectedItem.id;

</services> <channels>

</service>

</destination>

</properties>

<source>*</source>

</mx:Script>

]]>

<channel-definition id="my-amf"

destination="prueba"

<mx:RemoteObject id="amfPrueba" source="prueba" fault="faultHandler(event)" > <mx:method name="listar" result="resultHandler(event)"/>

class="flex.messaging.endpoints.AMFEndpoint"/> </channels> </channel-definition>

<endpoint uri="\\localhost\amfphp\gateway.php"

class="mx.messaging.channels.AMFChannel">

</services-config>

go y luego veremos qu hace cada uno. Iniciemos Flex Builder y creemos un nuevo proyecto de Flex. En la primera pantalla (Figura1) le ponemos el nombre prueba como nombre de proyecto, luego elegimos la primera opcin en Application Type y, por ltimo, seleccionan PHP en Server Technology. En la prxima pantalla (Figura 2) tendremos que configurar el directorio donde

estn los documentos de Apache. Para quienes tienen Ubuntu, pueden seguir la imagen presentada en la Figura 2. Los que utilicen otra distribucin debern ajustarlo de manera acorde. Finalizada la creacin del proyecto Flex tendrn en la vista de archivos algo como la imagen presentada en l Figura 3. Luego editaremos el archivo llamado prueba. mxml que se encuentra en la carpeta src. (el

nombre del programa principal coincide con el nombre del proyecto). Dentro de este archivo vamos a colocar el contenido del Listado 2. Estos pasos han sido para la creacin del cliente en Flex. Antes de seguir con la parte del servidor debemos hacer un cambio en la configuracin del proyecto (luego veremos de qu se trata). Vamos a hacer click derecho sobre el nombre del proyecto y luego elegimos la ltima opcin lla-

www.lpmagazine.org

83

programacin Programando RIA con Flex y AMFPHP


mada Properties. Ah buscaremos la opcin denominada Flex Compiler y haremos el cambio tal cual indica la imagen presentada en el Listado 4. Luego debemos crear el siguiente archivo PHP que tiene que estar ubicado en la carpeta amfphp/services/ y se llamar prueba.php (Listado 3). Bien, ahora podemos elegir entre leer la explicacin primera o apretar CTRL+F11 para lanzar el programa y verlo funcionando. te. Esta parte est dividida en 2 secciones. Primero el archivo services-config.xml que contiene la configuracin del servidor. Es un archivo bastante genrico donde los factores ms importantes son: Destination: Este nombre se utilizar en el programa para identificar el servicio al cual me quiero conectar. Endpoint: Aqu est la direccin de amfphp.

Explicacin

El primer paso ser ver la parte del servidor dado que, como saben, PHP se puede ver de manera sencilla. AMFPHP tiene un directorio llamado services en el cual se aloja nuestro script. Cada archivo debe representar una Clase, y dentro de ese archivo debe estar definida la Clase utilizando el mismo nombre que se us para crear el archivo. En nuestro caso el archivo se llama prueba.php por lo cual la clase se llamar prueba. Dentro de esta clase estarn todos los mtodos que deseemos publicar. En nuestro caso tenemos un constructor que es el encargado de realizar la conexin a la Base de Datos y luego los 3 mtodos sencillos para nuestro ejemplo (Agregar/ Borrar/ Listar). En primera instancia definimos en el constructor las variables con respecto a la base de datos. Luego tenemos toda la lista de mtodos que toman como variable un Arreglo que ser enviada desde Flex. Dentro del arreglo tendremos ms variables que podrn ser utilizadas para ejecutar las funciones. En el caso de Agregar vemos que la variable $Objeto['nombre'] tendr el nombre del contacto y hacemos uso de esta variable para crear la Consulta que agregar el contacto. Seguridad: Si tienen que realizar algn sistema utilizando AMFPHP recuerden que este ejemplo es bsico y no implementa ningn mecanismo de autenticacin. AMFPHP trae algo que se conoce como Service Browser que permite revisar los servicios expuestos sin necesidad de un cliente. Lo pueden probar en nuestro caso accesando a la URL http://localhost/amfphp/browse. Continuemos ahora con la parte del Clien-

Si se fijan bien, notarn que el Destination tiene una propiedad llamada channels que vincula el Destino con el canal. Si desean volver a usar este ejemplo, solamente deben adaptar Endpoint para que apunte a otro servidor. Por ltimo llegamos al archivo principal prueba.mxml que contiene el cdigo fuente Flex. Como pueden ver es un cdigo muy legible y utiliza prcticamente el formato XML para definir la parte visual y ciertas cosas programticas. Sin embargo pueden ver que en la parte superior se encuentran la seccin de scripts donde estn las pequeas funciones en lenguaje Actionscript. Como pueden ver es muy parecido a ver un archivo HTML+Javascript excepto que se ve ms ordenado gracias al XML. En el XML podemos ver la definicin de la tabla que contendr todos los datos y es la siguiente lnea:
<mx:AdvancedDataGrid id="contactos" designViewDataType="flat" left="0" top="0" width="100%" height="100%"

Figura 5. Aqu se puede ver el resultado del programa en Flex

Figura 4. Configurando servicios en el Cliente

Eso es lo mismo que se haca en HTML con <table> excepto que mucho ms complejo y dinmico. Si ejecutaron el ejemplo pueden ver que es una tabla muy simple, bonita y que tiene incluidos efectos y funciones modernas que no hicieron falta programar. Pueden llenar la lista y vern como aparece una barra lateral, tambin pueden ver que el mouse por encima de cada fila cambia el color de la fila, si seleccionamos un tem ste queda iluminado, etc. Todo esto son funciones que trae lo que se conoce como Datagrid. Si seguimos observando vamos a ver el cdigo (Listado 4) que es el encargado de crear el objeto remoto, o sea el enlace entre el cliente y el servidor. Un objeto remoto lo pueden ver como si ustedes hubiesen programado una Clase en el servidor que pueden acceder desde el Cliente. Para poder usar esa clase (que se encuentra en AMFPHP) ustedes deben declararla con esa expresin que vemos arriba donde figuran los mtodos a los cuales quiero acceder con su respectivo manejador de resultados ResultHandler, as como el nombre de la clase - source='prueba' y el destino de ese objeto mediante Destination. En resumen, como hemos declarado un objeto remoto amfprueba con sus 3 mto-

dos Listar/Borrar/Agregar, ahora podremos dentro del cliente realizando por ejemplo amfprueba.listar(), lo que har que inmediatamente se ejecute el mtodo listar que est en la clase prueba. En la parte del script vamos a ver las funciones que se ejecutan al presionar los botones. Esto no requiere mucha explicacin, se van a sentir muy cmodos dado que parece un simple Javascript. Algo que podemos notar en este script es el uso de trace. Cada vez que elijamos hacer un debug de una aplicacin en Flex y tengamos Flash Debugger (ver Extras) vamos a poder ver en la consola de Flex Builder los argumentos que pasemos a trace. Es muy parecido al uso de error_log en PHP. Finalmente hablaremos de cmo llegan los datos al Datagrid y por qu no hemos definido columnas. El mtodo Listar en el servidor nos responde con un Arreglo, el cual sin hacer ninguna interaccin y/o modificacin lo tomamos y enviamos directamente al datagrid. Si, no ests soando, no hay que iterar mil veces para poder mostrar esa informacin. La magia reside en que el datagrid es lo suficientemente inteligente para crear las columnas y filas necesarias para mostrar la informacin que viene en ese arreglo. El datagrid absorbe todos los datos que hay en el parmetro DataProvider que en nuestro caso corresponde a un arreglo llamado nombres y el cual se actualiza con el mtodo listar.

Extras
Bueno, hemos llegado al final del ejemplo y an nos queda mucho por aprender, pero os dejo a vosotros para que sigan investigando este sencillo ejemplo. Espero que os haya gustado y lean la seccin Extras si desean comenzar la aventura de las RIA.

Debugueando Flex
Pueden hacer un debug a Flex utilizando Flash Debugger. Con solo instalar esta versin de Flash ustedes podrn hacer uso de la opcin Debug de Flex Builder y de esa manera tener un acercamiento al funcionamiento interno de la aplicacin.

84

Linux+ 6/2009

programacin Programando RIA con Flex y AMFPHP


Listado 3. Creando el archivo prueba.php
<?php

require_once("../../adodb5/adodb.inc.php"); class prueba{ public function __construct() { $host='localhost'; $user='root';

$pass='CLAVE_ROOT'; $db_name='prueba'; $this->qdb = & ADONewConnection('mysql'); $this->dbconn = $this->qdb;

das estas limitaciones se eliminan al realizar aplicaciones AIR puesto que tienen acceso a la PC al igual que cualquier otro software de escritorio. Todo esto sin necesidad de realizar muchos cambios a la aplicacin, lo que nos permite desarrollar una aplicacin Web con funcionalidades esenciales y luego una versin extendida que funciona en el escritorio y que permitiera muchas ms cosas.

$this->qdb->Connect($host, $user, $pass, $db_name); $this->qdb->SetFetchMode(ADODB_FETCH_ASSOC);

Frameworks: Marcos de Desarrollo


Los frameworks son Marcos de desarrollo que implementan facilidades, mejores prcticas y capas de abstraccin. En otras palabras simplifican el desarrollo de una aplicacin, a la vez que otorgan mejores prcticas y lineamientos para desarrollar una aplicacin ms segura, escalable y elegante (entre otras). Dentro del desarrollo en Flex existen varios frameworks entre los cuales se destacan: Craingorm, Swiz, PureMVC, Mate.

// " .$user . " // " . $db_name,0); } public function __destruct() { } $this->qdb->close();

error_log(" ::: DEBUG :: Coneccion usando ado------" . $host . "

function agregar($Objeto){

$insert="insert into contactos (nombre) values $result=$this->qdb->Execute($insert); if($result) else return true; return false; ('".$Objeto['nombre']."')";

public function listar() {

$query = "SELECT * FROM contactos WHERE borrado=0 "; if($rid=$this->qdb->Execute($query)){ while(!$rid->EOF){ $ret[]=$rid->fields; $rid->movenext();

public function borrar($Objeto){ id='".$Objeto['id']."'"; return true;

return (false);

}else

return( $ret );

Todos ellos merecen un artculo aparte, pero los incluimos aqu para que sepas por donde seguir con el desarrollo de una RIA. Personalmente te sugiero trabajar con Mate, es muy sencillo y claro, una vez que comprendes como funciona te har la vida muy sencilla, quizs hasta ms sencillo que este ejemplo. Quizs el prximo artculo trabajemos directamente con alguno de estos frameworks.

Opciones a AMFPHP
Existen varias opciones a AMFPHP que varan en detalles tcnicos, uso y escalabilidad. La opcin ms completa es Adobe Live Cycle y es el sistema que vende Adobe para realizar todo tipo de RIAs y est netamente integrado con Flex, Flex Builder. Existen muchas opciones para varios lenguajes, pero las ms conocidas son BlazeDS (Java), Red5 (Java/Jython/JRuby) y Zend (PHP).

$query = "UPDATE contactos SET borrado=1 WHERE $this->qdb->Execute($query);

}?>

Listado 4. Creando el enlace entre el cliente y el servidor


<mx:RemoteObject id="amfPrueba" source="prueba" destination="prueba" fault="faultHandler(event)" > <mx:method name="agregar" <mx:method name="listar" result="resultHandler(event)"/>

Sobre el autor
Matas Barletta di sus primeros pasos como desarrollador de tecnologa militar en Argentina para luego convertirse en Linux Admin para empresas radicadas en Argentina, Estados Unidos, Costa Rica e Inglaterra. Actualmente lidera un grupo de desarrolladores en implementaciones y desarrollos de software libre (SugarCRM, Asterisk) para varios pases de Amrica Latina. Su email: mrbarletta@gmail.com

</mx:RemoteObject>

<mx:method name="borrar" result="addresultHandler(event)"/>

result="addresultHandler(event)"/>

Flex al Escritorio: AIR


Adobe parece haber pensado en todo, si bien Flex permite realizar RIA basadas en tecnologas Web tambin ha desarrollado lo que se conoce como AIR (previamente conocido como Apollo) que permite llevar estas aplicaciones

Web al escritorio, expandiendo el potencial de desarrollo. Al desarrollar aplicaciones Flex nos encontramos con ciertas limitantes, por ejemplo acceso a dispositivos y perifricos directamente, acceso al disco (para tener informacin offline), etc. To-

www.lpmagazine.org

85

opinin Distribuidores polivalentes

os administradores de sistemas de las empresas suelen tener que sufrir una gran dicotoma en su trabajo: Windows o Linux? Es una batalla perdida. Por mucho que nos empeemos, la inmensa mayora de usuarios va a rechazar un cambio a Linux en los puestos de trabajo mientras sigan teniendo Windows en casa. Los administradores suelen confiar en Linux para determinadas misiones crticas en un entorno corporativo, como pueden ser los cortafuegos, los servidores web Pero en la otra punta, tenemos sistemas Windows: administracin, comercial Nos estamos acostumbrando a esta situacin, que no suele ser demasiado cmoda. A pesar de que lo ideal sera disponer de un siste-

Y si ya se sufren problemas en otros departamentos (los he conocido de cerca por el mero hecho de tener distintos proveedores de elementos de merchandising), en el de IT, que es crtico para el negocio, esos problemas se pueden multiplicar. La solucin pasa por los proveedores integrales de servicios que merezcan ese nombre. No es lo mismo tener tres departamentos que sepan de todo que un departamento que sepa de tres cosas. Cmo vamos a esperar un buen cableado si el departamento que lo monta no es capaz de entender cmo necesitamos la sala de servidores? Luego es posible que la factura llegue bajo un solo CIF, pero no hemos ganado nada en integracin. El reto de encontrar un proveedor as no es sencillo, desde luego, pero nos encontramos

Fernando de la Cuadra, director de Educacin de Ontinet.com

Distribuidores polivalentes
ma unificado, no se llega a ese punto nunca. Y lo peor de todo es que en muchos casos, los administradores se ven obligados a disponer de proveedores distintos en funcin del rea a la que se quiera atacar, Windows o Linux. Un proveedor que se encargue de los sistemas Windows no suele tener el chip adaptado a las soluciones Linux. No hay manera de explicar a esos distribuidores que s, que el servidor de bases de datos funciona bajo SQL, pero que hemos sido nosotros los que hemos modificado el cdigo para adaptarlo a los caprichos (perdn, quera decir necesidades) de la empresa. El choque es muy fuerte, reconozcmoslo. Como si le dijramos a un administrador de Linux que debe conectarse a un MS SQL Server sin tocar ni un solo punto del servidor ms all de las Opciones Avanzadas y Aceptar. Entonces, como he comentado, la solucin suele ser tener dos proveedores (o ms, normalmente) que puedan conocer nuestros problemas y los caprichos (otra vez perdn, necesidades) de la empresa, cada uno en un rea distinta. en un buen momento. La tan manida crisis est haciendo redoblar esfuerzos a muchos integradores, mejorando sus servicios, aumentando la cualificacin de sus tcnicos y elevando la calidad final del producto. Ya no vale la estrategia del tente mientras cobro que luego el administrador se encarga de sudar por las noches. No, no hace falta. Busquemos a los que nos puedan ayudar a tener una red en condiciones, los sistemas siempre funcionando (Windows, Linux, Mac, Solaris, DOS, CP/M u OS/2, lo que sea) y los usuarios de la red sin problemas. Que nos ofrezcan soluciones de verdad integrales, que aunque haya que recurrir a tres marcas distintas para un elemento, funcionen bien, integradas y sin que las horas extra que se hagan delante de una pantalla sean por culpa de una mala eleccin. Puede parecer extrao, pero os aseguro que estos distribuidores existen, y no son tan raros. Busqumoslos y una vez comprobado que existen, sometmoslos a los caprichos de la empresa: entonces s que sern necesidades.

86

Linux+ 6/2009

Pginas recomendadas

www.diariolinux.com

www.elguille.info

www.gatolinux.blogspot.com

www.opensourcespot.org

www.hispabyte.net

www.linuxdata.com.ar

www.linuxhispano.net

www.pillateunlinux.wordpress.com

www.usla.org.ar

www.mundopc.net

www.picandocodigo.net

www.linuxuruguay.org

entrevista Entrevista a Ignacio Molina Palacios, AXARnet Comunicaciones

Entrevista a Ignacio Molina Palacios,


Proyect Manager de AXARnet Comunicaciones
LiNUX+: Cmo naci la empresa? Ignacio Molina Palacios: AXARnet naci en 1996. En esa poca haba muy pocas empresas que ofrecieran este tipo de servicios ante un mercado emergente que requera soluciones y nuevas vas de expansin y a raz de esto se comenz con el proyecto. L+: Cmo se desarroll? I.M.P.: Prcticamente no tenamos nada en propiedad, nuestras instalaciones y mquinas eran alquiladas y dependamos de terceros para la conectividad, hardware e incluso soporte tcnico. Esta dependencia nos generaba inseguridad, adems de que nos limitaba muchsimo el tiempo de respuesta ante nuestros clientes. As comenz poco a poco un proceso de independencia que supuso grandes inversiones econmicas y de esfuerzo, compensados siempre por el apoyo y nimo de nuestros clientes que siempre se mantuvieron a nuestro lado en esos duros momentos. Hoy en da podemos enorgullecernos de todo lo conseguido, estamos en uno de los mejores Datacenters de Europa, tenemos conexiones BGP-4 multioperador, somos miembros del RIPE con nuestro propio sistema autnomo de direcciones ip, somos agentes registradores de ESNIC, somos partners de las grandes empresas de servidores como Dell y mantenemos acuerdos con HP, somos Platinum Partner de Parallels (empresa desarrolladora de software para soluciones de Hosting y Virtualizacin) y seguimos trabajando para mantener una infraestructura propia. L+: Nos podis presentar algunos casos de xito? I.M.P.: Cada cliente que parte de una idea, la materializa y consigue mantenerse, es para nosotros un caso de xito, tenemos casos de distribuidores nuestros que han empezado desde cero y poco a poco se han creado su propio mercado de clientes, tenemos empresas y particulares fieles que llevan con nosotros desde nuestro comienzo, e incluso empresas que a travs nuestra han contactado y han realizado colaboraciones conjuntas en sus actividades. Pero por supuesto el mrito es totalmente de ellos, nosotros simplemente les hemos dado las herramientas y en algunos casos ayudado y aconsejado para cumplir sus objetivos. L+: En el mercado espaol hay unas empresas muy grandes que ofrecen servicios de hosting (muchas veces internacionales) y muchas empresas pequeas cmo vis la situacin de la competencia en vuestro campo, es posible competir con los gigantes internacionales? Las empresas ms pequeas podrn sobrevivir? I.M.P.: Competir directamente con estas grandes empresas es un reto difcil y costoso para las pequeas y medianas empresas que tienen que recurrir a otras vas que les permitan entrar en este juego de la competitividad. AXARnet siempre se ha caracterizado por una postura ms cercana al cliente, basndose fundamentalmente en ofrecer un buen soporte y asesoramiento que refuerce su confianza. El objetivo que pretendemos es, en primer lugar estructurarnos, para potenciar la sensacin de confianza frente al cliente que cada vez es ms exigente. Esto repercutir en la imagen futura de la empresa de forma positiva permitindole crecer. Pensamos que stas son la pautas que tenemos que seguir las empresas ms pequeas. L+: En cuanto a Axarnet, cules son las ventajas para los clientes de vuestra empresa en comparacin con otras empresas? I.M.P.: Fundamentalmente tres: la transparencia, porque siempre asesoramos al cliente sobre qu es lo que necesita; la calidad, ya que trabajamos con las mejores marcas; y el soporte, que siempre est a su disposicin para cualquier contratiempo que se les pueda presentar. Gracias a sto nuestra oferta no est enfocada slo a clientes nacionales sino que tambin nuestro mercado se abre hacia empresas europeas y americanas. L+: De qu servicios disponen vuestros clientes? I.M.P.: En AXARnet disponemos de todos las soluciones de alojamiento para as poder cubrir cualquier necesidad, desde la ms bsica para el usuario domstico hasta las soluciones ms avanzadas para grandes empresas que requieran potencia, confiabilidad y seguridad. Registro de dominios: Es la parte bsica para cualquier particular o empresa que quiera tener presencia en internet. Registrar un dominio es obtener su marca registrada en internet. Nos sirve para que nos encuentren, para que nos recuerden y para que puedan contactar con nosotros. En AXARnet ofrecemos una amplia gama de extensiones de nombres de dominios, que cubren por supuesto las ms importantes .com, .net, .org y .es. Adems, al ser Agentes Registradores Autorizados por ESNIC (que es el departamento de la Entidad Pblica Empresarial RED.ES, autoridad competente para la gestin del Registro de nombres de dominio de Internet bajo el cdigo de pas .es) tendr la total garanta de que su dominio es registrado conforme establece la normativa espaola y sin ningn tipo de intermediarios. Adems al registrarlo a travs de un Registrador Acreditado obtendr precios muy competitivos, una rapidez y eficacia en la tramitacin y gestin de su dominio impecables. An slo con el registro de dominio, AXARnet ofrece

88

Linux+ 6/2009

entrevista Entrevista a Ignacio Molina Palacios, AXARnet Comunicaciones


gratuitamente un completo panel de control para configurar de forma fcil, entre otros, los contactos del dominio, la gestin de DNS y para crear redirecciones web y de correo. En este momento estamos en proceso de conseguir la acreditacin de la ICANN como registrador de dominios, con todos los beneficios que esto conlleva para los clientes, como la posibilidad de acceder a cualquier tipo de dominio a precios muy competitivos, gestionar directamente con nosotros cualquier trmite con los dominios e incluso hacerse distribuidores para que as quienes quieran registrar dominios para terceras personas o empresas puedan hacerlo obteniendo interesantes descuentos por volumen. Para aquellos usuarios que requieran de soluciones econmicas y sin demasiadas pretensiones en cuanto a requerimientos, caractersticas y configuraciones especiales podemos ofrecerles los Planes de Alojamiento Compartido, basados en servidores Windows y Linux, segn necesiten. Todos nuestros Planes de alojamiento incluyen las ltimas versiones del panel de control Plesk, desde donde podr gestionar su dominio (correo, ftp, directorios, bases de datos, ...). Como novedad, para clientes que deseen alojar varios dominios en su pack de hosting, hemos creado Planes Resellers, podr alojar ilimitados dominios desde un solo plan. Desde el panel de control Parallels Plesk, podr agregar, modificar y eliminar dominios de forma rpida y sencilla as como ofrecer a sus clientes un panel de control donde administrar su dominio, cuentas de correo, etc. Con nuestros Planes Reseller no tendr que preocuparse de la administracin de su servidor, pues es un servicio totalmente administrado, nosotros nos encargamos de todo para que solo tenga que preocuparse de lo realmente importante, dar servicio a sus clientes. Dentro de la gama de servicios avanzados podemos ofrecer los Servidores VPS que se comportan exactamente como un servidor dedicado y dispone de sus propios recursos garantizados, de forma que si un vps excede el uso de ram o cpu asignado, no afecta al funcionamiento de los dems vps alojados en el nodo. Como Platinum Partners de Parallels, desarrolladores de Virtuozzo, en AXARnet podr encontrar la gama ms amplia de servidores privados virtuozzo, tanto en plataforma linux como windows. La tecnologa Virtuozzo es increble, Virtuozzo crea mltiples VPS separados en un mismo equipo fsico para compartir hardware, licencias y esfuerzos de administracin con la mxima eficiencia. Cada vps funciona de la misma manera que un servidor dedicado normal desde el punto de vista de los usuarios y de las aplicaciones y puede ser reiniciado independientemente al igual que dispone de acceso root, direcciones IP, memoria, procesos, archivos, aplicaciones libreras de sistema y archivos de configuracin. Una carga muy baja y un diseo eficiente hacen de Virtuozzo la mejor solucin para servidores en produccin con contenidos y aplicaciones reales. Cada vps esta completamente aislado de los dems, disponiendo de un uso reservado de capacidad de almacenamiento, teniendo adems su propia configuracin de sistema, aplicaciones, libreras , panel de control , etc y su funcionamiento no interfiere con los dems servidores privados instalados en el mismo servidor o mquina fsica en cuestin. Adems podr, siempre que lo desee, generar una copia de seguridad de todo el sistema. Dicha copia se realiza en segundos e incluye no solamente sus datos de usuario sino tambin todos los programas y servicios. Podr restaurar dicha copia cuando lo necesite sin necesidad de grandes conocimientos, solamente con un clic. En su VPS tambin podr disponer del mejor panel de control del mercado, PLESK, para as poder realizar las tareas ms comunes de la forma ms fcil y amigable posible. Nuestros Servidores VPS pueden encontrarse tanto con el Sistema Operativo Linux como Windows y se ofrecen con diferentes configuraciones de potencia y recursos segn siempre las necesidades que tenga el cliente. As pues encontramos VPS con paneles de control Plesk y cPanel o sin paneles de control (Root), y DDS que son Servidores Dedicados con la tecnologa Virtuozzo inherente. Como producto estrella, tanto por sus caractersticas como por su precio, tenemos los Servidores Dedicados, una opcin cada da ms solicitada por su coste cada vez ms reducido y por su potencia. Es la opcin elegida por empresas o particulares que quieran ofrecer servicios de hosting a terceros, o para desempear tareas especficas, como servicios de VoIP, servidores de licencias, servidores de backups, ftp, streamming, o los que como bien destacis en vuestro actual nmero para implementar la tecnologa Cloud Computing. Es una mquina totalmente a su disposicin, que es entregada con el Sistema Operativo Windows o Linux y con los paneles de control Plesk si se van a utilizar para servicios de hosting. AXARnet garantiza la disponibilidad de red mediante contrato SLA, que se refiere al tiempo en que el servidor tiene disponible la conectividad a Internet en el puerto de red asignado. Para aquellos clientes que lo demanden disponemos de un servicio de administracin de servidores para que usted solo tenga que preocuparse de su negocio y no de los problemas que pueda encontrar en su servidor. Este servicio incluye entre otras, tareas de copia de seguridad y restauracin, configuracin de cortafuegos, monitorizacin 24/7, actualizaciones de software del servidor, actuacin y asesoramiento en caso de ataques, sustitucin de hardware o incluso del servidor en caso de daarse. En AXARnet contamos con un equipo de profesionales capaces de resolver cualquier problema relacionado con su servidor de inmediato. Por supuesto todos nuestros servicios son escalables de forma que si el cliente necesita ampliarlos pueda hacerlo con el menor impacto posible para su funcionamiento. L+: En todos los medios de la comunicacin nos hablan de la crisis econmica, habis notado sus efectos en vuestro negocio? En caso afirmativo, cmo os defendis de ellos? I.M.P.: Es indudable que la crisis est afectando en mayor o menor medida a todos los sectores empresariales, ahora todas las inversiones que las empresas y particulares dedican a las nuevas tecnologas, y fundamentalmente a Internet estn miradas con lupa y el cliente quiere cubrir sus necesidades con el coste justo. Nosotros, conscientes de esta situacin, ajustamos los precios y mejoramos el servicio. Creemos que es exactamente lo que el cliente necesita. L+: Este nmero tiene como tema central la tecnologa de Cloud Computing, muchas personas creen que es el futuro de la tecnologa, sobre todo en la situacin de crisis actual, estis de acuerdo con esta opinin? I.M.P.: Totalmente. La situacin actual del mercado requiere nuevas pautas de actuacin por parte de las empresas y del usuario final. Estas herramientas permiten un gran ahorro en costes de inversin, por otro lado permite mantener en contacto a los comerciales y distribuidores de diferentes sedes con la estructura central manteniendo siempre la informacin actualizada y accesible desde cualquier sitio y en cualquier momento, adems de romper totalmente con las barreras fsicas que impone la distancia. Podramos decir que centralizamos para ampliar nuestro campo de actuacin. Un producto ideal para este tipo de tecnologas son los Servidores Dedicados. L+: Qu planes de desarrollo tenis para el futuro prximo? I.M.P.: Seguiremos trabajando para ofrecer siempre el mejor servicio a nuestros clientes, para ello plantearemos nuevas estrategias de desarrollo que nos permitan ms autonoma, as como la posibilidad de seguir ofreciendo precios cada vez ms competitivos sin que ello repercuta en la calidad de los productos. L+: Muchas gracias por esta pequea entrevista. I.M.P.: Gracias a vosotros por hacernos partcipes.

www.lpmagazine.org

89

El tema principal del siguiente nmero de Linux+ ser:

Seguridad y Ethical Hacking


El prximo nmero incluir los siguientes artculos: Ethical Hacking utilizando BackTrack Historia de Hacking Prctico Hacking para Linuxeros Sistemas de encriptacin alternativos Seguridad en Linux y mucho ms...

La Redaccin se reserva derecho a modificar sus planes

Mensual Linux+ est publicado por Software-Wydawnictwo Sp. z o. o. Produccin: Marta Kurpiewska, marta@software.com.pl Redactora Jefe Paulina Pyrowicz, paulina.pyrowicz@software.com.pl Colaboradores: Francisco Javier Carazo Gil, Jos Carlos Cortizo Prez, David Puente Castro, Jorge Emanuel Capurro Correctores: Pablo Cardozo, Jose Luis Lz. de Ciordia Serrano Alberto Elas de Ayala Preparacin de DVDs: Ireneusz Pogroszewski, Andrzej Kuca DTP: Marcin Zikowski Graphics & Design Studio, www.gdstudio.pl

Diseo portada: Agnieszka Marchocka Grfico: ukasz Pabian "insane" Publicidad: adv@software.com.pl Suscripcin: suscripcion@software.com.pl Distribucin: Coedis, S. L. Avd. Barcelona, 225 08750 Molins de Rei (Barcelona), Espaa Direccin: SoftwareWydawnictwo Sp. z o.o., ul. Bokserska 1, 02-682 Varsovia, Polonia

La Redaccin se ha esforzado para que el material publicado en la revista y en los DVDs que la acompaan 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 Redaccin usa el sistema de composicin automtica 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 reproduccin total o parcial de esta ublicacin peridica, por cualquier medio o procedimiento, sin para ello contar con la autorizacin previa, expresa y por escrito del editor. Linux es una marca comercial registrada de Linus Torvalds.

Das könnte Ihnen auch gefallen