Spanish

warning: Creating default object from empty value in /home/gwolf/drupal6/modules/taxonomy/taxonomy.pages.inc on line 33.

Comparte tus fotos

Submitted by gwolf on Mon, 04/20/2009 - 17:36
Wolf G.  2007.  Comparte tus fotos. PC Magazine en español.

Una de las principales razones por las que las cámaras digitales se han popularizado tan rápidamente es la facilidad que nos dan para compartir nuestras vivencias de manera fácil y rápida con amigos y familia en todo el mundo. Muchas veces defendemos como principal ventaja de las cámaras digitales el que ya no tenemos que esperar para ver nuestras fotografías, o el que no es ya necesario pagar por el revelado - ¡Piensa tan sólo en lo incómodo que era antes llevar tu álbum de fotos para mostrárselo a un amigo o familiar! Más aún, ¿no temías que, por olvido o accidente, perdieras la única copia de las fotos de ese irrepetible momento? Es en este punto donde radica el gran cambio de la fotografía de los últimos años. No sólo nos hemos acostumbrado a cargar con nosotros una o varias cámaras, sino que la función de las fotografías mismas ha cambiado: Ya no sirven principalmente para registrar nuestra historia, sino para compartir nuestro presente.

Ahora bien, ¿cómo vamos a compartir nuestras fotos? Es común enviarlas por correo electrónico, sí, pero es también muy incómodo: A mucha gente no le gusta recibir mensajes con adjuntos muy grandes, y si queremos enviar la misma foto a varios amigos, el pecado se repite muchas veces. Y, claro, si no cuentas con una conexión de banda ancha, cada correo tomará el mismo tiempo en ser enviado. Puedes también usar servicios en línea de álbumes fotográficos, como el Flickr de Yahoo! (http://www.flickr.com/), Fotosite (http://www.photosite.com/) o muchos otros - pero tus fotos siempre irán acompañadas por publicidad, hay que aguantar límites de uso por mes, y... Bueno, muchas veces querrás compartir tus fotos sin depositarlas en un sitio administrado por desconocidos. Hoy en día, ser paranóico es ya la segunda naturaleza del internauta. Además, es de todos sabido que una de las principales características de los linuxeros es que nos gusta resolver los problemas con nuestras propias herramientas, que nos gusta hacer más que depender de terceros. ¡Manos a la obra!

En esta ocasión, vamos a revisar un programa muy popular para organizar y compartir nuestras fotos: Gallery (http://gallery.menalto.com/). Gallery es un programa escrito en PHP, hecho para funcionar con prácticamente cualquier servidor Web - Sí, para nuestros lectores menos aventureros, puedes instalar Gallery en Windows al igual que en Linux, aunque el proceso es un poco más tortuoso. En Debian, basta pedirle al gestor de paquetes que instale gallery2 (con "aptitude install gallery2"), y éste bajará automáticamente todos los paquetes de los que Gallery depende, y lo deja instalado y listo para usar. Hay, claro está, paquetes preparados para las demás las distribuciones de Linux - Mi recomendación va por Debian dado que es la distribución que más empeño pone en automatizar la instalación de modo que el usuario requiera del menor tiempo posible para tenerlo funcionando. Podemos usar a Gallery para compartir nuestras fotos ya sea si tenemos una conexión de banda ancha en casa y montamos un servidor Linux para controlarla, o en un servidor dedicado en el que tengamos acceso. Podemos también acudir a alguno de los proveedores de hosting que ofrecen instalaciones de Gallery como parte de su paquete de servicios - En la página de sitios referidos (http://gallery.menalto.com/wiki/Web_Hosting_Referral_Page) mencionan a varios.

Una vez que tenemos a Gallery instalado en nuestro sistema, entramos con nuestro navegador a http://localhost/gallery2 (u otra dirección, si es que así lo configuramos - Claro, si estamos trabajando con un servidor remoto y no estamos montando Gallery sobre nuestra propia computadora, tendremos que dar la dirección de dicho servidor en vez de "localhost"), y pasamos por una simple instalación con 11 pasos (muchos de los cuales son principalmente de confirmación, en los que basta con seleccionar "siguiente"). [imagen: config.png]. Gallery guarda la información relativa a nuestras fotografías en una base de datos, típicamente MySQL (puedes configurarlo para que use PostgreSQL, Oracle o DB2) - puede resultarte interesante asomarte a la estructura para aprender cómo está estructurado. Como parte del proceso de instalación, Gallery nos pide que le indiquemos los datos para crear una cuenta de usuario administrador [imagen: config_login.png].

Tras terminar la etapa de configuración, Gallery está listo para recibir visitas en la misma dirección con la que recién hicimos la configuración. Podemos entrar como nuevo usuario seleccionando "Login" en la esquina superior derecha [imagen: primer_login.png] y comenzar a subir nuestras fotos.

En Gallery podemos simplemente subir las fotos una tras otra, podemos organizarlas en álbumes, o incluso mezclar ambos estilos. Además, un álbum puede contener a otros varios álbumes, tal cual si fueran más bien directorios dentro de nuestro disco duro. [imagen: raiz.png]

Cada uno de los elementos en Gallery (sea un álbum o una fotografía) pueden tener nombre, título y descripción. Además, puedes permitir que los visitantes publiquen comentarios - Puedes convertir a Gallery prácticamente en un photoblog. Y hablando de blogs - Si quieres que tus amigos se enteren automáticamente de las fotos que vas subiendo a tu Gallery, basta con que den de alta al RSS que genera en su agregador de noticias favorito.

Ahora, ¿quedarás tú como responsable único de tu galería? ¡Claro que no! Gallery permite que participen en tu sitio tantos usuarios como quieras. El usuario que creaste al instalar el sistema es meramente el administrador de la galería - Puedes crear cuentas para tus amigos o familiares, para que ellos también puedan compartir sus fotografías. Y, claro, como administrador del sitio puedes agrupar los usuarios según diferentes criterios y configurar los permisos que tendrá cada uno de los grupos - Por ejemplo, permitir que todos puedan subir fotos a su álbum personal y a un álbum común a todos, pero que sólo puedan poner comentarios en las fotos de los demás usuarios. Un usuario puede inclusive definir "marcas de agua", que Gallery agregará automáticamente a todas las fotos que suba, identificándolas y evitando que terceros las usen sin su autorización. [imagen:
usuarios.png]

Cuando tienes un álbum con decenas de fotos, probablemente no quieras irle apretando "siguiente" a una tras otra. Puedes pedir a Gallery que te las muestre una por una ("ver presentación"), con demora de entre uno y veinte segundos entre foto y foto, y tanto en órden como de manera aleatoria. [imagen: slideshow.png]

Casi todas las cámaras digitales hoy en día manejan el campo Exif, que da información adicional respecto a cada una de las fotografías, como los parámetros de exposición, la cámara con que fue tomada, la hora y fecha, y mucho más. No tienes que preocuparte por poner todos estos detalles en la descripción de tus fotos, ya que Gallery los mostrará cuando el usuario le pida ver los detalles.

Podría seguirte describiendo las características de Gallery por muchas páginas más, y lo más probable es que no acabaría. Entre los criterios de diseño del sistema está el invitar a los usuarios a escribir plug-ins ofreciendo funcionalidad adicional - De este modo, si bien el núcleo de Gallery es relativamente pequeño y fácil de comprender, hay una enorme cantidad de plug-ins disponible que extiende la funcionalidad de Gallery en direcciones posiblemente nunca previstas por sus autores. [imagen: modulos.png]

Seguramente a lo largo de este artículo te encontraste con muchas características que ya te son conocidas, ya sea de otros programas que puedes emplear localmente en tu computadora (en Linux, Windows o MacOS) o de servicios en línea. En resumen, ¿qué ventajas nos ofrece sobre éstos Gallery? Primero que nada, el tener el control absoluto de tu información, sin depender de terceros. En segundo lugar, Gallery es un sistema muy eficiente, cómodo y ligero para el manejo de tu información - Conozco incluso gente que instala Gallery en sus computadoras personales pues les resulta más simple organizar su colección de imágenes que a través de los programas tradicionalmente utilizados para este fin. Y en tercer lugar, Gallery está programado de una manera muy clara y amigable, es un buen ejemplo de cómo se pueden hacer bien las cosas con PHP. Si quieres saber a detalle cómo se gestiona una gran cantidad de imágenes, cómo se transforman, cómo relacionarlas con sus usuarios, y un largo etcétera, no tengas miedo en asomarte a leer su código - Seguramente te sorprenderá de lo fácil que te resulta comprenderlo. Y, quién sabe, ¡puede que la siguiente versión de Gallery incluya ya cambios propuestos por tí!

Imagenes

  • config.png: Iniciando el proceso de configuración de Gallery
  • config_login.png: Durante el proceso de instalación, tenemos que crear una cuenta de usuario para administrar Gallery
  • primer_login.png: Gallery, recién configurado y listo para recibir nuestras fotos
  • raiz.png: La vista de nuestros álbumes ante un usuario
  • usuarios.png: Podemos definir cuantos grupos de usuarios queramos, y asignar permisos para que cada grupo tenga acceso a diferentes áreas de nuestra galería
  • slideshow.png: Podemos pedir a Gallery que muestre una presentación contínua con todas nuestras fotos, sin que tengamos que estarle picando "siguiente"
  • modulos.png: Gallery cuenta con una gran cantidad de plug-ins que extienden su funcionalidad mucho más allá de lo previsto por los autores
( categories: )

Cambia a un escritorio 3D

Submitted by gwolf on Mon, 04/20/2009 - 17:33
Wolf G.  2007.  Cambia a un escritorio 3D. PC Magazine en español.

Hay mucho movimiento a últimas fechas en el mundo del Software Libre, ese extraño mundo que nos brinda tantas posibilidades que llegan incluso a marearnos. Hablemos en esta ocasión de las últimas tendencias en entornos de escritorio: Revisaremos la tecnología que promete exprimir hasta la última gota de nuestras tarjetas de video por medio de entornos cargados de impresionantes efectos 3D, a través de Beryl.

Beryl (http://www.beryl-project.org/) toma su nombre del término con el que los conocedores designan al mineral base de varias piedras preciosas, entre las que destaca la esmeralda. Y el nombre es muy adecuado - La primera vez que veas Beryl en acción quedarás absorto, jugando con sus efectos tal como si estuvieras observando una finísima gema. ¿De qué se trata? De un entorno hecho para explotar al máximo la aceleración 3D que desde hace un par de años viene con prácticamente todas las computadoras de escritorio, empleándolo ya no sólo para jugar, sino para el uso cotidiano. Y tiene todo el sentido del mundo - Ya que tenemos el hardware, hay que sacarle provecho, ¿o no?

Beryl opera sobre las extensiones gráficas GLX y AIXGL, desarrolladas respectivamente por los equipos de RedHat y de Novell, y en el corto lapso de vida que lleva ha logrado ya avances extraordinarios - Hoy está listo para ser tu entorno primario de trabajo. ¿Qué te ofrece? Transparencias, animaciones, efectos especiales para facilitarte el trabajo con muchos programas simultáneos - y un rendimiento impresionante.

Instalar Beryl aún requiere de algo de manipulación a los archivos de configuración del entorno gráfico para activar las extensiones correspondientes - Te recomiendo seguir un mini-tutorial, acorde a la distribución de Linux que uses: Debian (http://fixxxer.cc/blog-es/?p=6), Ubuntu (http://www.biodesign.com.ar/blog/?p=23), Fedora
(http://wiki.beryl-project.org/index.php?title=Install/Fedora_Core), Gentoo (http://gentoo-wiki.com/Beryl) - Y, claro, ahora que Beryl es "lo de hoy", seguramente encontrarás más sin ningún problema. Claro está, puedes también probar Beryl sin instalarlo en tu sistema, utilizando un Live CD: La versión 5.1 de Knoppix (http://www.knoppix.org/) viene lista para correr Beryl, y Sabayon (http://www.sabayonlinux.org/) es un CD vivo pensado desde un principio para servir como herramienta de demostración de Beryl.

¿A qué me refiero, sin embargo, con "explotar la aceleración"? Esta vez más que nunca, los refiero a las capturas de pantalla que acompañan a este artículo: Prácticamente todo el manejo que hagamos de nuestras ventanas va acompañado de efectos 3D - Si movemos una ventana por nuestro escritorio, ésta parecerá hecha de gelatina, temblando hasta colocarse en la posición deseada. Al maximizar o minimizar una ventana, hay diferentes efectos que podemos elegir con los que la ventana "brinca" hasta ocupar la pantalla completa o se dobla sobre sí misma para minimizarse.

En el mundo de los escritorios Linux, desde hace más de una década ha sido común el uso de los escritorios virtuales - Un concepto muy sencillo, y que se vuelve tan importante para trabajar de manera inteligente y organizada que, al enfrentarnos ante un entorno Windows o MacOS, nos es imposible entender cómo la mayor parte de los usuarios del mundo no lo conocen. En vez de tener un sólo espacio donde abrir las aplicaciones, utilizamos varios escritorios distintos, y en cada uno de ellos abrimos las aplicaciones que correspondan. Por ejemplo, yo típicamente tengo abierto mi navegador y correo en un escritorio, los programas relativos a mi trabajo en otro, y la música en un tercero. ¿A qué viene esto? A que una de las características más promocionadas de Beryl es la representación del conjunto de escritorios como un cubo, en el que cada una de las caras es un escritorio, y al pasar de uno al otro lo hacemos rotar. Esto va más allá de una demostración meramente - Nos permite ver rápidamente el estado de algún proceso que tengamos pendiente, sin siquiera tener que
enfocarnos en ese programa, y volver a lo que estábamos haciendo. Además, activando la opción de ventanas 3D, al entrar al modo de cubo, las ventanas "vuelan" permitiéndonos verlas completas, no únicamente como están representadas en la cara plana sobre la cual estamos trabajando.

Beryl también es de gran utilidad para la gente con diferentes discapacidades físicas: Para personas con cansancio o debilidad visual, le podemos indicar que queremos trabajar con la pantalla amplificada, de modo que sólo veamos una porción de la misma, pero con mayor detalle. Le podemos indicar que nos presente determinada ventana en negativo, para aumentar su legibilidad. Para las personas con discapacidad motora, Beryl puede amplificar o reducir el movimiento del mouse - Y todo esto, de manera simple y configurable a través de combinaciones de teclas o de mouse que no presentarán problema para los usuarios discapacitados.

En suma, Beryl nos proporciona entorno sumamente ligero, sencillo de utilizar, y que sin duda impresionará a quien se lo muestres. Lo que es mejor, es un entorno que puede ayudarte a alcanzar una mucho mayor productividad. Sólo me resta hacer una advertencia: ¡Cuidado! Puede ser adictivo.

¿Cómo lo hacen?: Off-Screen Rendering

Viendo las capturas de pantalla en este artículo, probablemente creerás que es indispensable tener el último grito de la moda en hardware para utilizar Beryl, ¿me equivoco? Muy al contrario: aunque suene increíble, el sistema corre incluso más ligero que bajo los entornos tradicionales. ¿Por qué?

Recuerda que Linux, siendo un sistema tipo Unix, tiene un entorno gráfico orientado a red (lo que significa que puedes correr programas gráficos en diferentes computadoras y desplegarlos transparentemente en un sólo escritorio). Claro, eso significa que, para ahorrar ancho de banda, sólo las ventanas que en determinado momento están activas se dibujan por completo en la memoria de video.

Hoy en día, sin embargo, casi siempre trabajamos con la totalidad de las aplicaciones dentro de un sólo sistema, y lo que requerimos es más bien de mayor velocidad al cambiar entre aplicaciones - Para lograrlo, conviene que todas las ventanas estén en memoria de video todo el tiempo. ¿Pero cómo tenerlas en memoria de video sin que aparezcan en pantalla?

Es aquí donde entra en juego la aceleración 3D: La información de las ventanas se "dibuja" no directamente en el escritorio, sino que como texturas, y las ventanas son simples rectángulos planos, que pueden sufrir deformaciones como cualquier objeto 3D - Y es a éstos rectángulos a los que, claro, la tarjeta de video les aplica la textura de cada una de las aplicaciones. A esta técnica se le llama "Off-Screen Rendering", o "Representación fuera de pantalla".

Imagenes>

  • beryl_logo.png - Logotipo del proyecto Beryl
  • beryl_anim_minimiza.png - Podemos elegir entre varios efectos cuál nos aparecerá al minimizar una ventana. En este caso vemos a "Magic Lamp" en acción.
  • beryl_cubo_solido.png - Una de las características favoritas de Beryl es el cubo del escritorio.
  • beryl_cubo_transparente.png - Nuevamente el cubo del escritorio, pero con la transparencia habilitada, lo que nos permite ver las caras ocultas del cubo. Habilitamos también una separación 3D entre las ventanas, que de otro modo aparecerían una sobre otra (tal como están realmente en el escritorio)
  • beryl_dobla_ventana.png - ¿Estamos trabajando con una ventana maximizada, y queremos rápidamente qué hay detrás? No hay problema: La jalamos del borde para doblarla
  • beryl_multi_escritorios.png - Además de cambiar de escritorio por medio del cubo, podemos pedir que éste se "desdoble" y nos muestre en conjunto nuestros diferentes escritorios
  • beryl_transparencia.png - Vemos el efecto de transparencia y de fijar encima: El medidor de recursos del sistema no es en este momento la ventana activa, pero "flota" por encima del navegador. Además, le pedimos que fuera transparente, permitiéndonos tenerlo siempre a la vista, sin dejar de ver a nuestra aplicación

Ligas

( categories: )

Linux para seres humanos

Submitted by gwolf on Mon, 04/20/2009 - 17:30
Wolf G.  2007.  Linux para seres humanos. PC Magazine en español.

[imagen: logo_ubuntu.png]

Varios de nuestros lectores han expresado inquietud por leer acerca de la distribucion de Linux más popular hoy en día: Ubuntu (http://www.ubuntu.com/). Esta distribucion, contrario a lo que podrían imaginar, es relativamente nueva: Debutó apenas en octubre del 2004, e inmediatamente alcanzó los principales niveles de popularidad entre los usuarios. ¿Qué lo hace tan especial? ¿Qué lo impulsó para alcanzar tal éxito? Comencemos por lo más obvio: La identidad y filosofía básicas detrás de su creación.

El padre de Ubuntu, tanto en lo ideológico como en lo técnico y en lo financiero, es Mark Shuttleworth [imagen: shuttleworth.png] (https://wiki.ubuntu.com/MarkShuttleworth), un jóven sudafricano que, tras hacerse millonario al vender la empresa Thawte a Verisign y cumplir el sueño de su vida (¿Y cómo culparlo? ¡Debe ser el sueño de la vida de todos nosotros!) de viajar al espacio, a la Estación Espacial Internacional, ha financiado ya varios proyectos orientados a acercar a la población en general a la tecnología. El cargo oficial que desempeña Mark Shuttleworth en Ubuntu es el de Autoproclamado y Benevolente Dictador Vitalicio - Y fiel a la visión de Mark, Ubuntu (cuyo nombre proviene de una palabra africana que significa "humanidad hacia los otros"), busca crear una distribución de Linux que apunta no únicamente hacia la excelencia técnica, sino que de utilización fácil y natural para cualquiera, sin importar su nivel técnico.

Por otro lado, Ubuntu deriva -y mantiene una relación muy cercana- con otra muy importante distribución de Linux: El proyecto Debian. Debian, fiel a su lema "el sistema operativo universal", es un gran depósito de software de todo tipo, y si bien la calidad de empaquetamiento y de integración que tiene es probablemente la más alta de entre todas las distribuciones de Linux, el ser un proyecto completamente desarrollado por voluntarios con visiones del mundo tan distintas, ofrece tal variedad de software que puede dejar perplejos a los novatos. Además de esto, por los estándares de control de calidad y por la cantidad de paquetes que ofrece, Debian tiene ciclos de liberación muy largos. Ubuntu toma la rama de desarrollo de Debian cada seis meses, pule y personaliza su instalación, y ofrece un producto muy consistente y bien integrado.

Claro está, una de tus principales dudas para poder aprovechar este artículo debe ser cómo conseguir Ubuntu. Tienes dos opciones principales: bajarlo o pedir que te lo envíen. Si tienes una conexión a Internet suficicentemente rápida, definitivamente te recomiendo bajarlo desde http://www.ubuntu.com/products/GetUbuntu - En caso contrario, puedes pedir, desde esta misma página que te lo envíen.

Un primer vistazo

Visualmente [inicio.png], Ubuntu es muy diferente tanto de las otras distribuciones de Linux como de Windows y de MacOS - Mientras que casi todos usan combinaciones de colores basados en el azul, los desarrolladores de Ubuntu ofrecen un tema con mayor sensación de humanidad y calidez, con un color café-naranja. Y aunque esto a muchos parece un detalle menor, es una muestra dela importancia de estos pequeños detalles en su grupo de desarrolladores.

Otra característica fundamental de la filosofía de Ubuntu, siguiendo la línea de un sistema apto para ser utilizado por personas de carne y hueso, sin necesidad de preparación técnica, es la importancia que da a que el sistema entero esté disponible en la mayor cantidad posible de idiomas. Al iniciar con el CD de instalación de Ubuntu [imagen: seleccion_idioma.png], al realizar una instalación, o inclusive en cualquier momento con el sistema ya instalado, podemos elegir el idioma en que el sistema se presentará a nosotros. ¡Podemos arrancar el CD de instalación en cualquiera de sus 64 idiomas soportados, y en cualquier momento podemos elegir cambiar a otro! Lo que es más importante aún, especialmente en computadoras que son compartidas entre varios usuarios: Cada quién puede configurar en qué idioma prefiere que el sistema se dirija a él, y el sistema con todo gusto así lo hará. Cabe señalar que esta característica es común a todas las distribuciones de Linux - Pero Ubuntu hace especialmente fácil el instalar los paquetes necesarios para dar soporte a idiomas adicionales, a literalmente sólo un click de distancia.

El CD de instalación de Ubuntu es toda una obra de ingeniería: Además de ser un CD vivo (ver la columna publicada respecto a los CDs vivos en enero) que nos permite utilizar un entorno virtualmente idéntico al de un Ubuntu -aunque, claro está, sensiblemente más lento por tener que correr desde el CD- incluye todos los archivos necesarios para instalar un sistema que, como veremos a continuación, puede ser utilizado directamente para casi cualquier propósito. Y, por si esto fuera poco, ¡incluye también los programas libres más populares e importantes para Windows, por si aún no estás listo para cambiar, para que puedas irlos conociendo! La suite de oficina OpenOffice completa, el popular navegador Firefox, el lector de correo Thunderbird... Todo dentro de un CD de tan sólo 650MB. Impresionante.

Ubuntu busca proveer un entorno completo para el promedio de los usuarios, y en general, las aplicaciones y el entorno que viene configurado son muy atinados. Si estás familiarizado con otras distribuciones de Linux, te darás cuenta de que el entorno instalado por default es Gnome. Ahora bien, hay quien se siente más a gusto con el entorno de escritorio KDE. Puede ser, especialmente si tu computadora no es muy reciente, que prefieras usar un entorno más limitado, como XFCE - Puedes bajar versiones derivadas de Ubuntu, con soporte oficial, pero construídas con estos entornos - Kubuntu (http://www.kubuntu.org) o Xubuntu (http://www.xubuntu.org).

Como es ya la norma en los sistemas Linux, la instalación de Ubuntu es rápida y sencilla. Una vez que arrancamos con nuestro CD, basta dar doble click en el icono "Install" del escritorio, y responder a cinco sencillas pantallas: El idioma en que queremos que quede instalado por defecto el sistema, la región del mundo en que vivimos [imagen: inst_elige_ubicacion.png], la distribución de nuestro teclado, el nombre y contraseña que deseamos emplear, y cómo queremos particionar nuestro disco (no te espantes, basta indicarle que se encargue automáticamente de este paso). Nos muestra por último un resumen con nuestras elecciones para confirmarlas, y comienza a instalar el sistema. La instalación no dura más de media hora, y mientras la efectúa, podemos seguir usando la computadora -por decir algo- para navegar por Internet o para jugar uno de tantos jueguitos que incluye.

Navegando

Hoy en día, si acabas de instalar un sistema operativo nuevo, ¿cuál es tu prioridad? ¡Claro! Ver qué programas te ofrece para navegar en Internet, para leer tu correo, para chatear, etc. La instalación estándar de Ubuntu viene con todo lo necesario, aunque -como veremos más adelante- hay mucho software adicional que puedes instalar.

El navegador preconfigurado [imagen: firefox.png] no sorprenderá a nadie: Hay poca gente ya hoy en día que no conozca a Firefox, un navegador ágil y seguro, disponible en cualquier sistema operativo.

Para leer tu correo, gestionar tus contactos y calendario [imagen: evolution_calendario.png], Ubuntu viene con Evolution, el potente y amigable cliente de correo diseñado por el equipo de Ximian-Novell.

El programa para manejar los mensajeros es muy interesante: Gaim. No se limita, como es la norma, a funcionar como mensajero con un sólo protocolo (digamos, MSN, Yahoo! o ICQ), sino que nos ofrece desde un sólo programa podemos manejar todas las cuentas que utilicemos. [imagen: gaim.png] Y aprovechando que mencionamos a Gaim: Recuerda que uno de los componentes más importantes tanto de Ubuntu como de cualquier distribución de Linux es su comunidad. Uno de los mejores recursos en caso de que tengas alguna duda es el canal #ubuntu en la red de IRC irc.ubuntu.com.

Herramientas de oficina

Después de navegar un rato, encontrar información interesante y platicar con los amigos, querrás trabajar un rato - Ubuntu viene cargado con OpenOffice, [imagen: openoffice.png] una suite libre de oficina con todas las herramientas de productividad de oficina que necesites - Hoja de cálculo, procesador de palabras, presentaciones, base de datos, dibujos 3D, páginas Web, y más. Obviamente, estas aplicaciones -además de trabajar nativamente con los formatos estándar OpenDocument- son perfectamente compatibles con los documentos de
Microsoft Office.

Y si lo tuyo es la edición de imágenes o el retoque fotográfico, no puedes dejar de usar Gimp [imagen: gimp.png]. Es muy simple y potente para la edición de imágenes, y a través de sus "plug-ins" Script-Fu te permite la creación y automatización de interesantes y originales efectos.

Entretenimiento

La instalación por default de Ubuntu viene cargada con todo el software necesario para usar a nuestra computadora como estación básica de entretenimiento - Para multimedia [imagen: multimedia.png], con Totem podemos ver videos y películas; Rythmbox nos da todas las facilidades para organizar y utilizar nuestra colección de música, sintonizar estaciones de radio en línea y escuchar podcasts; Serpentine nos permite crear fácilmente CDs de audio; con Sound Juicer podemos leer nuestros CDs de música y convertirlos a una colección en nuestra computadora.

¿Juegos? Claro, ningún sistema operativo puede preciarse de completo sin su generosa dotación de jueguitos para matar el tiempo y romper el stress diario. Con la selección de juegos básicos de Gnome que viene instalada en Ubuntu, te garantizo horas de... ¿Entretenimiento? ¿Vicio? De tí depende cómo lo veas - Como sea, como parte de la instalación base de Ubuntu tienes 16 juegos para elegir. [imagen: juegos.png]

Instalando otros programas

Claro está, lo que hasta aquí platicamos no es más que la instalación básica de Ubuntu - Aunque para muchísima gente esto será suficiente para cubrir todas sus necesidades para el trabajo diario, tenemos a nuestro alcance una gran cantidad de software listo para ser utilizado. Basta con seleccionar la opción «añadir y quitar» desde el menú de aplicaciones, y tendrás frente a tí a Synaptic [imagen: synaptic.png], desde donde podrás elegir lo que te interese de entre literalmente miles de programas listos para instalar y utilizar.

Ligas

Imagenes

  • shuttleworth.png: Mark Shuttleworth, creador de Ubuntu
  • inicio.png: La pantalla de inicio tras instalación de Ubuntu
  • logo_ubuntu.png: El logotipo de Ubuntu
  • seleccion_idioma.png: Al arrancar con el CD de instalación, podemos elegir cualquiera de estos 64 idiomas
  • paquetes_idiomas.png: Para instalar paquetes de idiomas adicionales en Ubuntu, basta con indicar en las preferencias del sistema qué idioma queremos emplear. Los archivos necesarios serán descargados automáticamente.
  • inst_elige_ubicacion.png: Selecciona la parte del mundo donde vives, dando click sobre la ciudad más cercana. Esto le indica a Ubuntu cuál de sus servidores está más cerca de tí, permitiéndote descargar los archivos con comodidad, y en qué huso horario estás ubicado, para que no tengas que preocuparte por cambiar la hora de tu sistema al iniciar o terminar el horario de verano.
  • firefox.png: Para navegar en Internet, nada como el popular navegador Firefox
  • evolution.png: El calendario de Evolution es fácil de usar, pero nos da todo el poder necesario para usarlo como herramienta colaborativa con nuestro grupo de trabajo
  • gaim.png: El cliente de mensajería instantánea Gaim nos permite, desde un sólo programa, platicar con todos nuestros contactos de MSN, Yahoo!, ICQ, IRC, Jabber, y prácticamente cualquier otro esquema de mensajería instantánea
  • openoffice.png: OpenOffice tiene prácticamente todos los programas de productividad de oficina con los que trabaja el 90% de la gente. Su manejo no te representará ninguna diferencia, y tiene excelente compatibilidad con los formatos de otras herramientas de oficina.
  • gimp.png: Uno de los primeros y más maduros programas que no puede faltar en todo escritorio Linux: Gimp, para la edición de imágenes y retoque fotográfico
  • multimedia.png: Tienes preinstaladas las herramientas de multimedia necesarias para disfrutar de tu PC como una completa estación multimedia
  • juegos.png: Como parte de la instalación estándar de Ubuntu vienen 16 simples pero adictivos juegos
  • synaptic.png: Si quieres instalar software adicional -miles de programas a un click de distancia- entra a Synaptic
( categories: )

Cifrando nuestro disco duro

Submitted by gwolf on Mon, 04/20/2009 - 17:27
Wolf G.  2007.  Cifrando nuestro disco duro. PC Magazine en español.

Sea cual sea nuestro perfil, no hace falta buscar justificaciones para cifrar (o, como también se le dice, "encriptar") nuestra información - La privacidad es nuestro derecho. El presente número de PC Magazine está dedicado a hacer una comparativa entre diferentes computadoras portátiles, y prefiero ser visto como pingüino paranóico y no como ave de mal agüero - Un punto importante a considerar al adquirir una laptop es qué ocurrirá en caso de que nos la roben o que la olvidemos en el lugar equivocado. ¡Recuerda que en la oficina algún colega malintencionado puede querer dañar tu impecable avance, o que en un descuido en casa tu celosa novia puede ponerse a leer el registro de tus conversaciones por mensajería! No está por demás, pues, el considerar cifrar nuestra información.

Hago aquí un paréntesis: Desde hace años, hay muchas herramientas disponibles -para Linux, Windows, MacOS y para cualquier sistema operativo- para cifrar archivos en nuestro sistema, como el famosísimo PGP, de Phil Zimmerman (http://www.pgp.com/), originalmente declarado ilegal por usar algoritmos que ni el Departamento de Defensa de los Estados Unidos podía "romper" o GnuPG (http://www.gnupg.org), que reimplementó PGP de una manera completamente libre. Además, claro, hay versiones para Windows, como la de Coresecure (http://www.coresecure.com/v5/gnupg.html), que ofrecen una interfaz amigable a GnuPG, escondiendo parte de su complejidad. Estas son muy buenas y útiles, por ejemplo, cuando enviamos documentos confidenciales por correo - Pero si realmente nos importa nuestra privacidad, debemos ir un paso más allá.

¿A qué me refiero? A que si tenemos que cifrar cada uno de los archivos que consideramos confidenciales, seguramente terminaremos dejando archivos sin cifrar por mera omisión. Afortunadamente, Linux nos ofrece aquí una muy buena opción - y no sólo eso, nos la ofrece sin complejidad adicional.

Esta no es una característica en Linux, y sin embargo, muy poca gente la usa. ¿Por qué? Porque hasta hace muy poco, el proceso necesario para configurar el cifrado de particiones tenía que ser configurado manualmente, una tarea no tan fácil. Esta situación cambió con la reciente liberación de Debian "Etch" 4.0 (http://www.debian.org/), la más reciente versión de esta importante distribución de Linux. Una de sus novedades más importantes es el soporte, desde la misma instalación, de cifrado a nivel partición para todo el sistema. No entro en detalles técnicos, pero para quien esté interesado, basta mencionar que en el corazón de este sistema está LUKS (Linux Unified Key Setup, http://luks.endorphin.org/), un esquema que está en camino a estandarizarse entre las diferentes distribuciones de Linux, y permite guardar en la tabla de particiones toda la información relevante al cifrado. LUKS trabajará sobre de el Manejador de Volúmenes Lógicos, LVM, otro subsistema de acceso a los dispositivos de nivel profesional que sin duda merece que lo desmenucemos en otra ocasión.

Uno de los pasos ineludibles al instalar Linux es indicarle al particionador cómo queremos manejar nuestras particiones - Este es un paso que asusta a muchos novatos, dado que puede presentarnos demasiada información - Tipos de sistema de archivo, puntos de montaje, opciones de todo tipo. ¡No temas! Por lo general, los valores por omisión son los adecuados para la generalidad de los usuarios.

En el instalador de Debian, al llegar al paso del particionado, el sistema nos presenta cuatro opciones [IMAGEN: debian_1.png]. Si seleccionamos la tercera ("Guiado - utilizar todo el disco y configurar LVM cifrado), el instalador creará una pequeña partición no cifrada, en la que exclusivamente guardará lo necesario para iniciar Linux: El núcleo y las herramientas básicas para montar al resto del sistema. Tras un par de preguntas (y, reitero, basta responder "siguiente" si no tenemos una necesidad real de hacerlo de otro modo), nos pide la contraseña de cifrado, con la que estará protegida nuestra información. Sobra decirlo: Esta es una contraseña de grandísima importancia. Si la pierdes, la información en tu disco quedará completamente inutilizable. Pero bueno, ¿qué no es eso precisamente lo que estamos buscando? ;-)

Una vez que le indicamos nuestra contraseña, el instalador nos muestra cómo quedarán configuradas las particiones [IMAGEN: debian_2.png]. La instalación continúa sin mayor sobresalto, y tras reiniciar el sistema, como uno de los primeros pasos (y aún desde la consola de texto - Recuerda, el sistema completo está cifrado) nos pide que le proporcionemos la contraseña.

Tras responder a un par más de preguntas, relativas a qué tipo de programas nos interesa instalar, y de esperar unos minutos, el instalador terminará con su tarea. ¡Eso es todo! ¡Felicidades! Nuestro sistema Debian recién instalado está completamente cifrado. Cuando encendamos nuestra computadora, lo primero que encontraremos es que el sistema nos pide nuestra contraseña para entrar [IMAGEN: debian_3.png].

Claro está, podemos configurar el cifrado sobre discos duros, llaves USB, o particiones independientes en cualquier momento, no sólo a la hora de instalar el sistema. Para hacerlo, podemos emplear herramientas como LUKS-tools [IMAGEN: luks-tools.png] (http://www.flyn.org/projects/luks-tools/), y su manejo está ya integrado en el escritorio Gnome [IMAGEN: gnome-mount.png]. Cada vez más distribuciones están incluyendo como parte de su sistema básico el soporte para particiones cifradas, e incluso el equipo de LUKS está trabajando para agregar este soporte a Windows, a través de FreeOTFE (http://www.freeotfe.org/) [IMAGEN: freeotfe.png].

El camino andado por los programadores que tomaron para sí la tarea de crear un esquema robusto y seguro de cifrado de particiones o discos completos ha sido largo, pero a través de las herramientas que aquí reseñamos, hoy en día el contar con un esquema profesional de seguridad sobre de nuestra información queda ya al alcance de nuestras manos.

Ligas

Imagenes

  • debian_1.png - Dentro del instalador de Debian, seleciconando el particionador con cifrado automático
  • debian_2.png - Dentro del instalador de Debian, revisando las particiones a instalar
  • debian_3.png - Una vez instalado el sistema, al reiniciar, lo primero que nos pide es la contraseña para acceder al disco cifrado
  • luks-tools.png - LUKS-tools, herramientas para crear, montar y desmontar volúmenes cifrados con LUKS
  • gnome-mount.png - Gnome Mount, integrado con el escritorio Gnome, tiene ya soporte para identificar y montar discos cifrados
  • freeotfe.png - FreeOTFE, implementación de cifrado de discos en Windows, compatible con LUKS
( categories: )

Los CDs vivos

Submitted by gwolf on Mon, 04/20/2009 - 17:22
Wolf G.  2007.  Los CDs vivos. PC Magazine en español.

"¿Qué Linux me conviene instalarle a mi computadora", dice un amigo. "¿Conviene instalar Debian, Gentoo, RedHat o qué?", me pregunta otro. Alguien más, "Es que mi Linux viene más bonito que el tuyo". ¿A qué se debe esto?

Si bien, tal cual es lógico, hay un sólo proyecto llamado Linux, existen alrededor de éste -literalmente- cientos de distribuciones - grandes conjuntos de software integrados de manera consistente para brindar al usuario lo que requiere. Linux es, a fin de cuentas, únicamente el núcleo del sistema operativo, la parte más medular de la interacción entre los programas y el hardware. Todos los demás programas que utilizamos en conjunto con él -que rondan ya las decenas de miles, y eso contando únicamente los que están disponibles como software libre- los integramos normalmente a través de una distribución.

Sin embargo, elegir qué distribución usar no siempre es asunto fácil - Y es mucho menos atractivo aún si cada una que queramos probar nos significa llevar a cabo una instalación completa del sistema operativo a nuestro disco duro, con el siempre presente temor de que elijamos la opción equivocada y perdamos nuestra información. Además, lo más probable es que en primer instancia lo que nos interese es básicamente es ver si Linux es suficientemente cómodo, si los programas que vienen en una distribución son realmente lo que requerimos? Los CDs vivos son la solución: Son CDs con todo el software instalado y utilizable, que no requieren ser instalados al disco duro, y que típicamente ofrecen un programa para ser instalados en caso de que realmente nos convenzan. Los CDs vivos han sido uno de los principales mecanismos de la popularización de Linux en el escritorio en los últimos años.

Por otro lado, a través de los CDs vivos podemos responder a otra necesidad muy frecuente de todos los aficionados al cómputo: Podemos tener todas las herramientas necesarias para la recuperación de información, desde si se dañó nuestro sistema operativo -sea este Linux, Windows, MacOS o cualquier otro- hasta lo necesario para hacer un análisis forense tras una intrusión en la seguridad de nuestra red.

Veamos, pues, algunas de las distribuciones más representativas. Uno de los mejores recursos para encontrar más distribuciones de este tipo es la página de Frozentech (http://www.frozentech.com/content/livecd.php), donde encontramos más de 300 CDs vivos y categorizados.

La primer distribución viva en tener gran difusión, en gran medida por ser la primera en efectuar una exhaustiva autodetección de hardware y funcionar correctamente en prácticamente cualquier computadora tipo PC, es Knoppix (http://www.knopper.net/knoppix/index-en.html), creada por Klaus Knopper. Su última versión, 5.0.1, está disponible tanto en CD como en DVD. Ofrece un escritorio Linux con una cantidad y variedad tremenda de software instalado (he de ser franco: Nunca he usado una computadora con tanto software listo para ser utilizado como con el DVD de Knoppix - Incluso el CD tiene más de lo que uso día a día). Knoppix es una excelente herramienta para tener siempre a la mano en caso de que necesitemos recuperar un sistema dañado - Viene con soporte para prácticamente cualquier sistema de archivos, con herramientas para recuperación de datos, monitoreo de red, y un largo etcétera. Por omisión nos presenta un entorno de escritorio KDE, aunque podemos optar por usarlo con Gnome o con XFCE. Knoppix está basado completamente en Debian, y de hecho, si solicitamos la instalación al disco duro, se convierte simplemente en una instalación personalizada de Debian.

[imagen: knoppix.png]

Basándose en las ideas principales de Knoppix (su mecanismo de detección y configuración de hardware y el empaquetamiento de software derivado de Debian), Alex de Landgraaf inició el proyecto Morphix (http://www.morphix.org/), presentando ya no sólo una distribución viva, sino que un entorno que permite la generación de distribuciones a la medida, de una manera mucho más modular. Como ejemplo, tienen para descarga desde su sitio oficial MorphixLightGui (escritorio simple para computadoras de prestaciones limitadas), MorphixGnome, MorphixKDE (entornos completos de escritorio basados respectivamente en Gnome y KDE), MorphixLiveKiosk (orientado a quioscos, cibercafés y otros entornos en que buscamos ofrecer al usuario un entorno limitado a la navegación), MorphixGame (una gran cantidad de juegos instalados sobre un entorno ligero) y MorphingMorphix (con todas las herramientas necesarias para crear un Morphix a nuestra medida, sin siquiera tener que instalar al disco). Además de todo, tiene ligas hacia varios proyectos derivados de Morphix.

[imagen: morphix.jpg]

Freeloader, de Privare Systems (http://freeloaderlinux.sourceforge.net/), responde a un reclamo muy común: Puede que Linux sea muy fácil de usar, pero es simplemente diferente. Privare preparó una serie de videos instructivos, acompañados de textos escritos en formato de tutorial, enfocados a enseñar a los nuevos usuarios a dar los primeros pasos con Linux, partiendo de un entorno simple y sin distracciones. Puede ser un recurso muy útil para todo a quien la perspectiva de cambiar por completo de entorno le provoque nerviosismo.

[imagen: freeloaderlinux.png]

Muchos asiduos de Linux disfrutan mostrándole a sus amistades de lo similar que puede éste ser a Windows - No sólo en lo relativo a su uso, sino que inclusive a su apariencia. Entre la Faculdade Metropolitana de Guaramirim, Brasil, y la Universidad Austral de Chile diseñaron Famelix (http://www.famelix.uach.cl/es/), con la intención frontal de que la barrera psicológica que impone este cambio sea lo más baja posible, permitiendo a los usuarios más novatos y conservadores iniciar una migración sin siquiera darse cuenta. Buena parte de su trabajo se ha centrado en la automatización de detección de hardware, no sólo en el conectado directamente a la computadora en que corre Famelix, sino que a otros sistemas en la red local.

[imagen: famelix.jpg]

La distribución de Linux que, sin duda, encontraremos con mayor frecuencia en el ámbito empresarial es RedHat (http://www.redhat.com), en gran medida por los contratos de mantenimiento que ofrece y por las alianzas que esta empresa ha celebrado con diferentes proveedores independientes de software propietario. Si vamos a evaluar a Linux para aplicaciones empresariales, probablemente valga la pena acercarnos a través de CentOS (http://www.centos.org/), que sigue muy de cerca a RedHat, y que ofrece también un CD vivo (http://isoredirect.centos.org/centos/4/isos/i386/) con una instalación muestra.

[imagen: centos.png]

Claro está, no podemos olvidar al actual líder indiscutible en la popularidad de entre las distribuciones de Linux: Ubuntu (http://www.ubuntu.com/). Desde su aparición en 2004, basándose en una sincronización semestral con Debian (para asegurar a sus usuarios una gran selección de paquetes y una muy alta calidad) y en una política de sacar una nueva versión de su sistema cada seis meses con lo último de los programas libres, Ubuntu basa su instalación también en un CD vivo. Este CD no es tan ambicioso como muchos de los que aquí menciono, dado que debe incluir los paquetes para instalarse dentro del mismo disco, lo que limita el espacio total disponible, pero aún así es una alternativa interesante - Nos permite probar de primera mano su concepto de "Linux para seres humanos". Además, a través de su servicio Shipit (http://shipit.ubuntu.com/), no tenemos ni siquiera que bajar el CD; podemos pedirlo, y Ubuntu nos lo envía sin costo alguno.

[imagen: ubuntu.png]

Quantian (http://dirk.eddelbuettel.com/quantian.html) es una distribución en CD vivo con un propósito muy específico: Convertir a cualquier computadora en una estación de trabajo de alto rendimiento, lista para ser integrada a una red de procesamiento paralelo, para cómputo científico - Y claro, nuevamente, sin tener que instalar nada. No es ya tanto para el usuario casual que puede interesarse en Linux, sino para gente que requiere de una herramienta completa para solucionar problemas de estadística, bioinformática, matemática, física o visualización. Y no sólo cuenta con las aplicaciones necesarias para realizar los cálculos más pesados en todos estos ámbitos - Desde las herramientas de oficina tradicionales hasta aquellas necesarias para diseñar y controlar un cluster de cómputo masivo bajo Mosix, LVM o MPI.

[imagen: quantian.jpg]

¿Cómo diagnosticar una computadora que se está portando raro? ¿El problema es la memoria, el CPU, la comunicación entre estos, o algún componente adicional que está metiendo ruido? ¿O los componentes del sistema funcionan bien, y tengo más bien que buscar si el culpable es el software? ¿Cuál es la causa de la lentitud en el sistema o en su conexión a red? StressLinux (http://www.stresslinux.org/) busca servir como herramienta de diagnóstico de hardware, en una distribución realmente mínima (mide únicamente 33MB) para evitar cualquier elemento que pueda modificar el diagnóstico, y se antoja como una herramienta indispensable para todo quien se dedique al mantenimiento de equipo. Además, por su tamaño, podemos grabarlo directo a un llavero USB y usarlo como disco de arranque, lo cual nos libera de estar cargando nuestro CD a todos lados.

[imagen: stresslinux.png]

¿Y si el problema no está en el hardware, sino que en la red? Posiblemente estemos siendo víctimas de algún ataque de negación de servicio, de algún virus especialmente agresivo, o un atacante esté utilizando nuestros recursos para -¡horror!- atacar a terceros. Debemos tener las herramientas que nos permitan inspeccionar el tráfico en la red, analizar los patrones anómalos y aislar a los componentes hostiles. Un muy buen aliado para esto es Backtrack (http://www.remote-exploit.org/index.php/BackTrack), un verdadero arsenal para el auditor en seguridad, que nos permite no sólo buscar patrones hostiles en nuestra red, sino que encontrar qué equipos son vulnerables, permitiéndonos anticiparnos y prevenir otros posibles ataques.

[imagen: backtrack.png]

Como pueden ver, con este breve panorama describimos suficientes herramientas (y, claro, juguetes) para mantenernos ocupados más que un par de días. Hay muchas distribuciones vivas más, con todas las orientaciones que puedan imaginarse. Y todas sirven a la perfección, además, para disipar cualquier duda o miedo que podamos tener respecto a la conveniencia de usar Linux de manera cotidiana.

( categories: )

Con corazón de Linux

Submitted by gwolf on Mon, 04/20/2009 - 17:19
Wolf G.  2006.  Con corazón de Linux. PC Magazine en español.

Los pingüinos son animales muy interesantes. Son sorprendentes no sólo por lo que hacen, sino por lo distintos que son de lo que imaginamos de ellos en muy diversos aspectos.

[imagen: pinguino.jpg]

Hoy en día hay 17 especies de pingüino, habitando buena parte de los litorales del Hemisferio Sur. Si bien muchos asociamos directamente la amistosa imágen de "Chilly Willy" al gélido modo de vida de los pingüinos, algunos viven hasta en las Islas Galápagos, sobre la mismísima línea del Ecuador.

Hay pingüinos de todos tamaños, desde los pequeños Pingüinos Azules (Eudyptula minor), de 40 cm de altura y 1Kg de peso, hasta los Pingüinos Emperador (Aptenodytes forsteri), de 1.20m de altura y hasta 35 Kg. Los arqueólogos han encontrado incluso fósiles de pingüinos prehistóricos que alcanzaban 1.70m de altura.

[imagen: gentoo.jpg]

En tierra, parecen animales torpes. Caminan bamboleándose de lado a lado, por sus cortas piernas. Sin embargo, verlos nadar es increíble - Tienen la velocidad y destreza del ave voladora más elegante. Están perfectamente adecuados a su hábitat. A diferencia de otras aves capaces de zambullirse, los pingüinos no vuelan, por lo que pueden darse el lujo de tener un esqueleto macizo, pesado, que les proporciona la estabilidad y la capacidad de bucear más profundo y rápido que ningún otra ave.

Hay muchas otras características interesantes de los pingüinos - Vamos a dejarlas de lado por ahora. Esta es una revista, a fin de cuentas, dedicada a la computación, no a la zoología. Permítanme comentar un último punto del que pueden enorgullecerse los pingüinos: El pingüino Tux es la mascota oficial de Linux. ¿Por qué? Les invito a leer la explicación por parte nada menos que de Linus Torvalds, en http://www.linux.org/info/penguin.html

[imagen: tux.png]

...Y vamos sobre las similitudes que describí, para demostrarles que todo esto es cierto, no sólo en las costas del hemisferio sur, sino que en todo centro tecnológico que se precie de serlo.

Linux es un sistema operativo ideal para crear todo tipo de aplicaciones embebidas, todo tipo de sistemas miniatura que se dediquen a una tarea delimitada. Pero esto no es así sólamente por que un convencido de las virtudes de Linux como yo lo diga - Es inherente a la naturaleza modular, libre y abierta del modo en que fue concebido y desarrollado el sistema. Explico brevemente.

A diferencia de sistemas desarrollados de manera propietaria como Windows, una distribución de Linux es un gran conjunto de paquetes individuales, desarrollados de manera independiente. Linux no se refiere más que al mero núcleo, a la interfaz entre el hardware y cualquier otro programa que corra en la computadora. Linux es, pues, un sistema operativo tipo Unix, que implementa el estándar POSIX, sobre del cual corren decenas de miles de programas. Linux fue creado desde un principio para correr en sistemas reducidos - Cuando Linus Torvalds comenzó con su implementación en 1991, tenía una computadora relativamente potente, una 386, aunque era definitivamente mucho más reducida que cualquier estación de trabajo disponible comercialmente para correr sistemas Unix. La primer arquitectura a la que fue "portado" Linux fue la familia de CPUs Motorola 68000, que disfrutó de gran popularidad en los años 80 en computadoras como la Macintosh, Amiga o Atari ST, y que fue utilizado como corazón de las primeras generaciones de Palm. Claro está, Linux creció también en la dirección de las familias de procesadores más grandes, como el Digital Alpha o, más recientemente, a la arquitectura IBM s390. Con las distribuciones actuales de Linux,

Vamos, pues, a revisar algunos dispositivos embebidos que corren con Linux.

Lo más obvio y notorio, lo que más usuarios encontrarán atractivo a primera vista, son los handhelds. Agrego únicamente una nota: Si buscan en Internet, encontrarán reportes de cientos de usuarios que lograron correr Linux en diversos sistemas Palm o PocketPC - En esta ocasión, me concentro únicamente en aquellos sistemas que de fábrica vienen con Linux instalado.

La familia más popular de PDAs basada en Linux es la Sharp Zaurus, que desde el 2002 con su modelo 5000 corre con Linux, utilizando un conjunto de aplicaciones que se integran sobre el entorno Qtopia. Los modelos actuales, como la C3200, son verdaderamente computadoras portátiles completas, que si bien vienen con las aplicaciones que uno esperaría encontrar en una buena PDA, tienen el espacio y el poder de cómputo necesario para correr prácticamente cualquier programa que requiramos.

[imagen: sharp5000.png]
[imagen: sharp_c3200.jpg]

Uno de los productos que más ha llamado la atención, por presentar una propuesta claramente distinta de cualquier PDA, es la tableta Internet 770 de Nokia. Aunque a primera vista parece un organizador personal, su foco es muy distinto: Ofrecer acceso cómodo y móvil a todo tipo de contenido de Internet, a través de una plataforma cómoda y fácilmente extensible. El entorno operativo, Maemo, está fuertemente basado en Debian GNU/Linux - de hecho, varios de los desarrolladores de Maemo son también integrantes de Debian, y Nokia fue el principal patrocinador del congreso Debconf en Helsinki, Finlandia. A través de la página de Maemo podemos encontrar cientos de aplicaciones disponibles para el 770. Su pantalla cómoda y de alta resolución lo convierte además en uno de los dispositivos más cómodos y atractivos del mercado.

[imagen: nokia.jpg]

Y partiendo de una idea similar, pero enfocado a niños y adolescentes, tenemos a Zipit: Un cliente de mensajería instantánea (MSN, AOL y Yahoo) con un sencillo reproductor de MP3 del tamaño (y con apariencia similar) a la de cualquier videojuego portátil, que se conecta a través de cualquier red inalámbrica, de bajo costo (US$99).

[imagen: zipit.jpg]

Ahora bien, Linux siempre ha tenido especial fortaleza en los servidores - ¿Por qué enfocarnos únicamente en los pequeños aparatos que utilizamos para comunicarnos? Linux está también en los aparatos cuyo funcionamiento damos por sentado y a los que ni siquiera volteamos a ver.

La cantidad de funciones que puede realizar el Access Point de cualquier red inalámbrica es sorprendente: Ya quedó atrás la época en que los concentradores de red eran simples cajas haciendo puenteos eléctricos - Hoy en día, además de los roles básicos de comunicación, una simple cajita es capaz de manejar nuestra conectividad de banda ancha, convirtiéndose en un ruteador que hace menos de diez años podría valer varios miles de dólares. Por sí sólo, eso ya requiere de una computadora de propósito general. Linksys se dió cuenta de esto, y en vez de reinventar la rueda, construyó su Access Point y ruteador WRT54GL sobre una computadora basada en arquitectura MIPS - Que además de un AP es más que suficiente como servidor casero y, aunque apretado, tiene suficiente espacio para ser una divertida máquina para aprendizaje. La red comunitaria de Seattle, SeattleWireless, ha
recopilado en su sitio, http://www.seattlewireless.net/index.cgi/LinksysWrt54g, una gran cantidad de información y recomendaciones respecto a cómo aprovechar y jugar con nuestro AP.

[imagen: linksys_wrt54gl.jpg]

Con la flexibilidad que nos da un sistema tan modular como Linux, y con acceso completo a su código fuente, literalmente no hay límites a dónde este pequeño pingüino puede llegar.

Si este tema les interesa, los invito a visitar los sitios Web dedicados al desarrollo y promoción de dispositivos embebidos basados en Linux, como Linux Devices (http://www.linuxdevices.com) o Handhelds.org (http://www.handhelds.org).

Imágenes

pinguino.jpg: Pygoscelis antarctica, el tradicional pingüino de la Antártica
gentoo.jpg: Pygoscelis papua, el pingüino Gentoo
tux.png: Tux, la mascota oficial de Linux
sharp5000.png: El Sharp Zaurus 5000, el primero de la serie que corre
con Linux nativamente
sharp_c3200.png: El Sharp Zaurus C3200
nokia.jpg: La tableta de Internet Nokia 770
zipit.jpg: Zipit Wireless
linksys_wrt54gl.jpg: Linksys WRT54GL

Ligas

( categories: )

TV, audio y video

Submitted by gwolf on Mon, 04/20/2009 - 17:06
Wolf G.  2006.  TV, audio y video. PC Magazine en español.

Todos damos su lugar a Linux cuando hablamos de aplicaciones en servidor - Es un sistema operativo estable, robusto, modular, confiable... Pero es común que la gente siga dudando de si es lo más adecuado para las aplicaciones de todos los días en el escritorio, y mucho más aún para las aplicaciones multimedia. Vamos a ver un par de ejemplos que nos muestran, nuevamente, que Linux es un sistema operativo apto para cualquier tipo de necesidades con que nos encontremos.

¿Qué aplicaciones vamos a usar para ver películas o escuchar música en Linux? Eso cada día importa menos - Al irse convirtiendo una computadora de escritorio en un simple aparato doméstico, podemos simplemente asumir que cuando abramos un archivo, el reproductor adecuado brincará entusiasta para reproducirlo. Y claro, los usuarios más entusiastas siempre encontrarán características especiales que les ofrece algún otro reproductor - hay una gran cantidad de ellos de donde podemos elegir, pero hoy en día, lo más probable es que comencemos con Totem (para los usuarios de Gnome) o con Amarok (para los usuarios de KDE).

Lo divertido viene cuando nos ponemos a integrar soluciones para llegar más allá.

El centro casero de entretenimiento

El ambicioso proyecto MythTV nació en el 2002, cuando Isaac Richards se cansó de lo poco flexible que resultaba el equipo de televisión por cable que tenía. Cambiar canales resultaba muy lento, tenía más publicidad de la que él estaba dispuesto a ver, y no le permitía grabar los programas tal y como él quería verlos. Además, la tan prometida "convergencia tecnológica" se ha mantenido meramente como una promesa - y decidió hacer algo al respecto.

[Imagen: Menú principal de MythTV - mythtv_principal.png]

MythTV (http://www.mythtv.org/) es un conjunto de programas que nos proporcionan todo lo que buscamos en un centro casero de entretenimiento, operado a través de un control remoto estándar (pues, claro está, ¿quién quiere un teclado y un mouse en el sillón de ver películas?). Requiere, claro, que equipemos a nuestra computadora con hardware poco común, como una o más tarjetas sintonizadoras de TV, receptor infrarojo, tal vez un carrusel para cambiar automáticamente nuestros DVDs, y -muy importante- un gabinete elegante y silencioso que deslumbre a nuestros amigos.

MythTV es muy flexible, y por tanto usarlo no es tan simple como instalar un programa - Pero si usted gusta de pasar tardes viendo películas, si encuentra frustrante el que pasen dos programas de televisión que quiere ver al mismo tiempo, si desea tener un aparatito mágico que borre los comerciales de los programas de televisión, o si le gustaría tener a la mano un navegador Web dentro de la televisión para aquellas consultas repentinas, le sugiero evaluar MythTV. Le recomiendo instalarlo en una computadora dedicada por completo a este propósito usando la distribución KnoppMyth (http://mysettopbox.tv/).

[Imagen: Navegando en la programación de TV con MythTV - mythtv_programacion.png]

Si le interesa ver un video completo explicando cómo instalar y demostrando el uso de MythTV, entre a http://revision3.com/systm/mythtv/

Creación de audio

En Linux no sólo podemos consumir audio y video de la manera más cómoda y profesional - podemos también producirlo. Como siempre, la cantidad de opciones que tenemos es impresionante, y el espacio me obliga a reseñar únicamente a unas cuántas. Si quiere investigar acerca de otros programas, le invito a entrar al directorio de
alternativas libres, en http://alts.homelinux.net/task.php?task=multimedia

Crear y producir audio es un campo muy grande, en el que hay una tremenda variedad de necesidades específicas. Posiblemente la necesidad más recurrente para la creación de audio digital es un programa que combine las funciones de grabación, edición, mezcla y conversión de formatos de audio - Mi recomendación en este rubro va sin duda, y desde hace muchos años, por Audacity (http://audacity.sourceforge.net/), que permite todo esto, además de la aplicación de diversos efectos a nuestros archivos de audio. Además de soportar prácticamente todos los formatos de audio que podamos encontrar, es un programa muy ligero y que permite una ágil edición, incluso con archivos muy grandes. Su interfaz es simple e intuitiva, y por si fuera poco, no se limita a Linux - Es software libre que podemos utilizar sobre cualquier sistema operativo.

[Imagen: Audacity - audacity.jpg]

Una aplicación específica para la cual la computadora es un gran auxiliar, capaz de reemplazar equipo profesional y generar resultado sorprendente, es para remezclar audio tal como lo hace un DJ de grandes vuelos. TerminatorX (http://www-stud.fht-esslingen.de/~alex/tX/) es un sintetizador de audio en tiempo real, con una gran cantidad de filtros, enfocado a permitir mezclar y "scratchear" archivos de audio de cualquier formato. Y si bien al escuchar esta descripción probablemente piensen en música hip-hop, en la página de ejemplos de mezclas generadas con TerminatorX (http://www-stud.fht-esslingen.de/~alex/tX/scratches.html) tiene ejemplos que llegan mucho más allá - Hay incluso algunas piezas producidas comercialmente que nacieron con este programa, así como insturcciones para convertir tornamesas tradicionales en herramientas de control digital - con resultados de mayor precisión incluso que los obtenidos con las tornamesas comerciales con interfaz USB.

[Imagen: TerminatorX - terminatorx.jpg]

Edición de video

Una tarea que puede presentarse mucho más compleja, sin embargo, que la edición de audio es la edición de video. Para esto tenemos también varias herramientas disponibles, con altos grados de sofisticación. Los principales programas para hacer la edición no lineal de video (esto es, que nos permite mezclar varias fuentes de video, audio e incluso de imágenes estáticas, brincando entre puntos en el tiempo de cada una de ellas conforme lo consideremos necesario, sin estar ceñidos al proceso de avance/rebobinado de las herramientas diseñadas para trabajar sobre cintas de video digital) son Kino (http://www.kinodv.org/) y Cinelerra (http://heroinewarrior.com/cinelerra.php3).

El foco de cada una de ellas es diferente - Kino es principalmente utilizado para la adquisición de datos a partir de diversas fuentes (por ejemplo, a partir de cámaras con interfaz DV IEEE1394, el estándar en los equipos de uso profesional), y para un primer mezclado. Una de sus mayores virtudes es que nos permite combinar diversas fuentes de video y guardar los resultados en función de los archivos fuente, pero sin modificarlos, guardando en un archivo SMIL XML las transiciones y efectos a realizar.

Cinelerra normalmente es utilizado una vez que el primer acercamiento fue hecho a través de Kino. Busca ser una herramienta potente y completa, aunque requiere trabajar con un sistemas de altas prestaciones - de hecho, tiene la capacidad de manejar "granjas" de procesamiento, cientos de computadoras trabajando al unísono para generar el video deseado (aunque, claro está, si queremos darle un uso más casero, basta con que no hagamos demasiados efectos y mezclas, y en una computadora potente de escritorio podremos sacarle provecho). Procesa audio y video nativamente a 64 bits, generando video incluso apto para el cine - y tiene una cantidad increíble de documentación. Si le interesa la producción seria y profesional de contenido multimedia, Cinelerra es una de las mejores herramientas del mundo.

Las herramientas que presentamos en esta ocasión requieren que les invirtamos tiempo, que nos dediquemos a conocerlas para poderles sacar jugo - pero sin duda nos pueden dar resultados tan profesionales e impresionantes como para convencer al más incrédulo.

Ligas

Totem: http://www.gnome.org/projects/totem/
Amarok: http://amarok.kde.org/
MythTV: http://www.mythtv.org/
KnoppMyth: http://mysettopbox.tv/
Guía de instalación de KnoppMyth: http://mysettopbox.tv/pamphlet.html
Episodio de "Systm" explicando la instalación de MythTV: http://revision3.com/systm/mythtv/
Alternativas libres a programas de multimedia: http://alts.homelinux.net/task.php?task=multimedia
Audacity: http://audacity.sourceforge.net/
TerminatorX: http://www-stud.fht-esslingen.de/~alex/tX/
Mezclas generadas con TerminatorX: http://www-stud.fht-esslingen.de/~alex/tX/scratches.html
Tornamesas consturidos para TerminatorX: http://www-stud.fht-esslingen.de/~alex/tX/turntable.html
Kino: http://www.kinodv.org/
Cinelerra: http://heroinewarrior.com/cinelerra.php3

Imágenes

Menú principal de MythTV: mythtv_principal.png
Navegando en la programación de TV con MythTV: mythtv_programacion.png
Audacity: audacity.jpg
TerminatorX: terminatorx.jpg
Kino: kino.png
Cinelerra: cinelerra.jpg

( categories: )

Herramientas en órden

Submitted by gwolf on Mon, 04/20/2009 - 17:03
Wolf G.  2005.  Herramientas en órden. PC Magazine en español.

Como es de esperarse, una de las ramas en que más y mejores programas libres vamos a encontrar es en la de herramientas para la programación. Esto es de esperarse, si recordamos que el Software Libre es creado por entusiastas de la programación. Asomándonos a cómo piensa un típico programador: Si me gusta escribir código, obviamente, lo voy a hacer de la manera en que más natural me sea, en que menos me tenga que esforzar - aún si para eso tengo que trabajar varios meses o años.

El tema que elegí para esta columna es muy amplio, y engloba una muy amplia gama de categorías. Vamos, pues, de lo más básico a lo más sofisticado. Me permito recordarles que, como con casi todos los programas libres, no es indispensable utilizar Linux para emplearlas - Las herramientas libres típicamente funcionan en cualquier sistema
operativo.

Editores

La herramienta básica para todo programador, para todo administrador de sistemas, e incluso de todo usuario entusiasta de un sistema operativo libre es un simple editor de texto. Ahora... ¿Simple? No, un editor de texto puede ser cualquier cosa, menos simple.

Lo primero que todo usuario serio de un sistema tipo Unix debe aprender es el uso del editor vi, o de alguno de sus derivados. En su versión básica, no tiene mayor atractivo - pero siempre está ahí. Es muy simple, muy ágil, y nos puede salvar fácilmente el pellejo.

El editor multiusos por experiencia es Emacs. Tiene más de 25 años de historia a cuestas, y sigue siendo la herramienta favorita para programar de miles de personas. Para ser sólo un editor, Emacs sufre de una benigna pero tremenda obesidad: Desde este programa, y gracias a lo enormemente extensible que es (incluye un intérprete completo de Lisp) es posible programar, depurar, leer correo, manejar depósitos de código, manejar bases de datos, navegar, e incluso jugar.

[IMAGEN: emacs.png]

Gedit es un sencillo pero potente editor, integrado al entorno Gnome, que nos brinda muchas de las bondades de emacs y de vi, pero integrado a un entorno que a muchos resultará más familiar.

[IMAGEN: gedit.png]

Herramientas de modelado

Tan pronto como nos enfrentamos con una tarea que nos tomará más de unos cuantos cientos de líneas de código, nos confrontamos con la innegable necesidad de una herramienta de modelado, donde podamos hacer los diferentes esquemas que representen nuestra aplicación, facilitándonos tanto explicarla a otras personas como encontrar posibles errores de diseño con mucho mayor facilidad. Es, incluso, una muy buena práctica de programación ayudarnos de estas herramientas antes de iniciar siquiera a escribir código.

Probablemente el programa de modelado más común sea Dia, una herramienta Gtk+ que permite la creación de muy diversos tipos de diagrama, como los tradicionales diagramas de flujo, entidad-relación, UML, hasta diagramas eléctricos, de red, y varias categorías más específicas a dominios especializados. Y si bien Dia es únicamente una herramienta de modelado, a través de diversas herramientas como dia2sql o dia2code puede utilizarse como generador de código.

[IMAGEN: dia.png]

ArgoUML es un modelador muy completo y muy bien logrado, capaz de generar y analizar código. Está, sin embargo, completamente enfocado a UML y a Java, por lo cual su utilidad queda limitada a quienes utilicen estas tecnologías.

[IMAGEN: argouml.png]

Generadores de interfaces

Crear una interfaz de usuario gráfica (GUI) puede ser una tarea terriblemente compleja, y depurarla peor aún. Hay dos maneras de atacar a esta problemática: A través de un generador de interfaces, que limita su rol a definir la interfaz usuario, permitiendo al programador usar las herramientas que más le gusten para la generación del código (en este caso, probablemente un editor como los mencionados hace unos párrafos), o a través de un entorno integrado de desarrollo (IDE). En lo que respecta a generadores de interfaces, desde hace varios años contamos con varias opciones - Menciono sólamente los dos más conocidos.

El proyecto Gnome creó a Glade. Siguiendo la filosofía general de Gnome, Glade es muy peculiar comparándolo con herramientas similares: Está hecho para no estar atado a ningún lenguaje de programación. Glade describe la interfaz que creamos en XML, y -vía libglade, una biblioteca disponible para prácticamente cualquier lenguaje- nos permite llamarla desde nuestro programa. Además de esto, hay varios generadores de código para algunos de dichos lenguajes que nos evitan incluso la tarea manual de escribir el esqueleto de nuestro programa.

[IMAGEN: glade.png]

Qt Designer, de Trolltech, es la contraparte de Glade para el mundo de KDE - Y, nuevamente, nos deja ver claramente la ideología general de su proyecto. Qt Designer nos da mayor integración y mayor funcionalidad que la de Glade, sin embargo -y si bien también utiliza a XML como representación interna- está más enfocado a desarrollo de proyectos en C++.

[IMAGEN: qtdesigner.png]

Control de versiones

Un sistema de control de versiones nos permite dar seguimiento al desarrollo de nuestros proyectos a lo largo del tiempo, registrando las modificaciones que vamos haciendo, y permitiendo que trabajemos el mismo código desde diferentes computadoras, incluso entre diferentes personas, y proveyendo mecanismos para la resolución de conflictos (esto es, saber cómo resolver cuando dos personas modifican la misma sección del mismo archivo). Los sistemas de control de versiones han sido una pieza fundamental para el desarrollo del Software Libre en el mundo, permitiendo que miles de personas a lo largo del mundo compartan su código de manera ágil y sencilla.

La herramienta de este estilo más utilizada es CVS - Con más de quince años de desarrollo, casi todos los proyectos importantes han pasado por un depósito CVS. Y si bien CVS se maneja como las tradicionales herramientas Unix, a través de la línea de comando, hay una gran cantidad de herramientas gráficas o de Web que nos facilitan grandemente su uso.

Una muy buena herramienta para el uso de CVS es lincvs - Ligera, potente y fácil de utilizar, partiendo de una familiar interfaz de navegación de archivos, nos brinda acceso a toda la funcionalidad de CVS sin tener que aprender o interpretar la salida de la interfaz de línea de comando.

[IMAGEN: lincvs.png]

Siendo el control de versiones una tarea naturalmente cliente-servidor, podemos encontrar también interfaces para manejarlo vía Web. Frecuentemente, incluso, los desarrollos de software libre cuentan con estas herramientas con acceso público, para que todo quien esté interesado pueda dar seguimiento a la evolución de su proyecto. Uno de los programas más socorridosque nos permite el uso de CVS via Web es Chora - nos brinda funcionalidad similar (para la consulta, no para la modificación) a la de lincvs, con la posibilidad de utilizarlo desde cualquier punto del mundo.

Ahora, con la edad que tiene, obviamente hay varios puntos en que CVS comienza a mostrar carencias. Si bien nadie cuestionaba la supremacía de CVS hasta hace cinco años, hoy tenemos una gran cantidad de propuestas alternativas que nos traen mayor funcionalidad que CVS. Los principales contendientes son -y, claro está, enfocados a diferentes necesidades- Subversion, GNU Arch, Monotone y Git.

El control de versiones, de hecho, es una herramienta muy poderosa para manejar prácticamente cualquier tipo de información, y no sólo puede ser utilizado como parte de un esfuerzo colaborativo - En mi caso, todos los documentos que escribo desde hace cerca de cinco años son parte de mi árbol CVS personal, y la flexibilidad y robustez que esto me brinda me han salvado el cuello en varias ocasiones.

[IMAGEN: chora.png]

En el mundo del software libre hay, obviamente, muchísimas más opciones de las que aquí alcanzo a mencionar. Hay herramientas más completas, más especializadas, más generales, más verdes o más maduras - Pero a fin de cuentas, todo eso se traduce a una cuestión muy simple: Si nos gusta programar, tenemos todo lo necesario para ser productivos y (¿por qué no?) divertirnos con las herramientas que tenemos a nuestra disposición.

IMAGENES

argouml.png: Editando un diagrama de clases en ArgoUML
chora.png: Chora mostrando las diferencias en un árbol CVS por Web
dia.png: Diferentes tipos de diagramas en Dia
emacs.png: Editando SQL y Perl en Emacs
gedit.png: El entorno de edición en gedit
glade.png: Creando un GUI en Glade
lincvs.png: LinCVS mostrando la diferencia entre dos versiones de un proyecto
qtdesigner.png: Creando un GUI con QT Designer

( categories: )

Menos paranoia y más Linux

Submitted by gwolf on Mon, 04/20/2009 - 16:57
Wolf G.  2005.  Menos paranoia y más Linux. PC Magazine en español.

Afortunadamente, la época en que era indispensable hacer entender a los usuarios de Internet que hay más peligros acechando a su conexión de los que pueden imaginar ya pasaron - hoy todo mundo se conecta a Internet por lo menos con un granito de cautela y paranoia. La situación actual no es buena aún: Incluso con esta paranoia en su lugar, muchos usuarios no saben qué hacer respecto a los siempre inminentes virus, troyanos, gusanos y atacantes más que entrar en pánico. Claro está, hoy ya no sólo tenemos que defendernos contra atacantes humanos, hay cualquier cantidad de virus, gusanos y troyanos esperando que dejemos la más mínima puerta abierta para adueñarse de nuestro sistema y posiblemente de nuestra información. Por si esto fuera poco, por más cuidadosos que seamos con nuestro sistema, es muy difícil dictaminar qué tan bien hemos hecho nuestra tarea, qué tanto podemos confiar en la seguridad que hemos implementado.

Hay una gran cantidad de herramientas libres que podemos usar mejorar la seguridad de nuestra red, a muy diferentes niveles - Prevención, monitoreo y detección de intrusos. El espacio del que aquí disponemos es demasiado corto para entrar en detalle en cada uno de estos puntos, por lo que en este artículo presentaremos una visión general de cada uno de estos aspectos, y en futuras ediciones entraremos más a detalle en cada uno de ellos.

Prevención

Uno de los puntos en los que con mayor frecuencia encontraremos pequeñas máquinas con Linux en una gran cantidad de redes medianas y grandes es en la entrada, actuando como firewall. Un firewall es una suerte de policía de las comunicaciones, que inspecciona a grandes rasgos cada uno de los paquetes entrantes, descartando todo aquello que no cumpla con los patrones de tráfico que esperamos para nuestra red.

En Linux, un firewall se configura a través de IPtables. Podemos hacerlo a mano a través de una serie de comandos simples pero a veces algo engorrosos, o podemos utilizar asistentes como Firestarter [1], muy simple de utilizar y suficientemente poderoso para configurar una red mediana. Una característica muy atractiva de Firestarter es que, además de ayudarnos a configurar el firewall, puede ayudarnos con el monitoreo de nuestra red en tiempo real.

Para configuraciones más complejas de lo que firestarter sabe manejar, podemos utilizar Shorewall [2], describiendo nuestra red a través de archivos de configuración bastante simples de entender, o directamente aprender la lógic de IPtables. Uno de los mejores documentos para aprender acerca de IPtables es el tutorial creado por Oskar Andreasson [3].

Cabe mencionar que el software que utilizamos para configurar un firewall global para nuestra red es el mismo que el que utilizaremos si queremos configurar un firewall personal, y que viene incluído en todas las distribuciones de Linux.

Monitoreo

Si sentimos que el rendimiento de la red o de nuestra computadora no está en niveles normales, es fundamental que podamos revisar exactamente qué está viajando por la red. El programa más simple y socorrido para este tipo de monitoreo es tcpdump [4], una simple utilería de consola que nos muestra un resumen de la actividad. Sin embargo, para hacer un verdadero diagnóstico, es mucho más cómodo trabajar con un programa como Ethereal [5] - Un analizador de protocolos muy completo y muy simple de utilizar, que nos permite aislar los diversos factores que afectan a nuestra conexión.

El monitoreo no sólo debe realizarse cuando sentimos que algo anda mal - El monitoreo debe ser una actividad constante, para poder encontrar a simple vista patrones de actividad anormal. Una de mis aplicaciones favoritas para este fin es el ya venerable MRTG [6]. Este programa reside en nuestro servidor y es ejecutado automáticamente cada cinco minutos. Depende de cómo lo hayamos configurado, recolectará los datos acerca de la carga de la red, el uso del CPU, memoria, o lo que le indiquemos. Estos datos nos son posteriormente presentados a través de nuestro navegador como una gráfica, guardando el histórico anual. Con esta información, tomada de un par de fuentes diferentes, es muy fácil determinar si el patrón de actividad actual es realmente normal o no.

Detección de intrusos

Un firewall es una parte fundamental de toda infraestructura de seguridad - Sin embargo, hay muchas cosas que un firewall es incapaz de hacer. Un firewall tiene que tomar decisiones extremadamente rápidas y basadas en tan poca información como sea posible, para evitar aletargar la red. Su tarea se limita a ver si una conexión es legal o no, pero no entra a revisar el contenido de cada una de estas conexiones - Para eso debemos emplear un sistema de detección de intrusos (IDS, por sus siglas en inglés). En el mundo del Software Libre, Snort [7] es definitivamente el motor de detección más potente y más utilizado.

Snort divide las tareas relativas a su trabajo de modo que -como es la norma en el Software Libre- puedan surgir varios proyectos relacionados, cada uno de ellos enfocándose en la excelencia de sus propias funciones específicas. Snort, además, simplifica la integración de un IDS completo en una red compleja, permitiendo colocar sensores independientes en los distintos puntos administrativos de la red, concentrando los datos en una base de datos central, la cual servirá de fuente de información a las consolas de alerta y de reporte.

Un recurso fundamental que nos proporciona Snort es, además, una muy completa serie de documentos relativos a la implementación de sistemas de detección de intrusos [8], tanto a nivel práctico como teórico, y tanto con Snort como con otros motores.

Una de las consolas de reporte más populares es ACIDlab [9]. Esta aplicación se utiliza via Web, y nos permite un acceso simple y completo a la base de datos que los sensores Snort han llenado. Para cada tipo de ataque reportado, nos da ligas a una explicación completa al respecto, y nos permite incluso ver el detalle -byte por byte- de la conexión que generó esta alerta.

Sguil [10] es otra consola de reporte que se ha ido popularizando por su mucho mayor interactividad que ACID. En vez de correr como un juego de scripts en un servidor Web, Sguil es una aplicación GUI escrita en tcl/tk, y que funciona nativamente en Linux, otros Unixes (*BSD, Solaris), MacOS y Windows. El único pero que podemos ponerle a Sguil es que no está tan maduro, y llega a presentar algunos problemas para correr en ciertos sistemas.

En resumen

En el mundo del Software Libre encontraremos una tremenda cantidad de herramientas que pueden ayudarnos a brindar seguridad a nuestra red, independientemente de qué sistemas estemos ejecutando en esta. Muchos de los programas aquí mencionados son multiplataforma (esto es, corren tanto en Linux y otros sistemas Unix como en Windows o Mac), y sin duda serán una gran ayuda para el mantenimiento de la seguridad de nuestras redes.

------------
LIGAS:

[1] http://www.fs-security.com/
[2] http://www.shorewall.net/
[3] http://www.faqs.org/docs/iptables/
[4] http://www.tcpdump.org/
[5] http://www.ethereal.com/
[6] http://people.ee.ethz.ch/~oetiker/webtools/mrtg/
[7] http://www.snort.org/
[8] http://www.snort.org/docs/
[9] http://acidlab.sourceforge.net/
[10] http://sguil.sourceforge.net/
-------------
IMAGENES:

acid_decode.png: Detalles de una alerta de ACID
acid_main.png: Página principal de ACID
ethereal_follow.png: Ethereal reensambla los paquetes y permite seguir
una conexión TCP completa
ethereal_main.png: Pantalla principal de Ethereal, mostrando los
paquetes capturados
ethereal_graph.png: Gráfica de intercambio de paquetes sobre el tiempo
en Ethereal
firestarter_events.png: Monitoreo en tiempo real de las conexiones
activas con Firestarter
firestarter_main.png: Pangalla principal de Firestarter
firestarter_wizard.png: El asistente de configuración de Firestarter
mrtg_index.png: Página principal de MRTG
mrtg_ppp0.png: Monitoreo histórico de la conexión hacia Internet con
MRTG
sguil_main.png: Pantalla principal de Sguil
tcpdump.png: Corrida de tcpdump

( categories: )

La seguridad en cómputo: ¿Con qué se come?

Submitted by gwolf on Fri, 03/27/2009 - 13:52
Wolf G.  2009.  La seguridad en cómputo: ¿Con qué se come? Software Gurú. :47.

La evolución del rol que cumplen los sistemas en las organizaciones ha cambiado por completo -afortunadamente- el punto de vista que la mayor parte de los desarrolladores tiene con respecto a la seguridad.

Hace una o dos décadas, el tema de la seguridad en cómputo era frecuentemente evitado. Y hasta cierto punto, esto era muy justificable: ¿Intrusos? ¿Integridad? ¿Validaciones? En la década de los 80 había muy poco software diseñado para su operación en red, y mucho menos para la idea de red que tenemos hoy en día. Y si bien es cierto que la mayor parte de los ataques se origina -y siempre se ha originado- dentro del perímetro de confianza de nuestra organización, hace 20 años sencillamente había menos información sensible alojada en medios electrónicos, menos gente con el conocimiento necesario para manipularla, e incluso la manipulación tenía efectos más nocivos: Si bien hace años la infraestructura de cómputo era el soporte facilitador, la copia maestra estaba en papel - Hoy en día estamos transitando hacia la situación opuesta, en que la versión electrónica es la primaria. Hoy, una intrusión en nuestros sistemas puede poner en jaque la integridad de la información primaria.

Mantener la seguridad en los sistemas que desarrollamos implica un alto costo: Los programadores tienen que aprender a evitar errores comunes; tenemos que concientizarnos y acostumbrarnos a dedicar recursos a implementar baterías de pruebas; tienen que entrar en juego validaciones y conversiones sobre los datos que manipulamos, con costos en tiempos de procesamiento de cada solicitud... Pero, afortunadamente, ha crecido también la conciencia de la importancia de destinar a la seguridad la atención y recursos que requiere.

El problema sigue siendo, coloquialmente... /¿con qué se come?/ La seguridad en cómputo sigue siendo un campo dificil de entender, con muchas aristas ocultas. Es por esto que, en las siguientes ediciones de SoftwareGurú, iré abordando algunos temas fundamentales en esta columna.

Para iniciar con esta serie, ataquemos lo fundamental: ¿Qué debemos entender por seguridad en cómputo?

A riesgo de que parezca que me limito a perogrulladas, un /sistema seguro/ es sencillamente un sistema /que responde como debe/. Claro, a esta pregunta hay que verla a la luz de varios criterios para que en verdad signifique algo. Intentemos nuevamente. Un sistema seguro presenta:

Consistencia:
Ante las mismas circunstancias, debe presentar el mismo comportamiento. Ante un sistema /seguro/, el tradicional remedio "¿ya intentaste reniciarlo?" no surte efecto. Si nos hemos acostumbrado a que un reinicio resuelve las cosas, no es sino porque el ambiente de ejecución se ensucia con elementos que debería haber descartado.
Protección y separación:
Los datos, instrucciones y espacio de memoria de un programa, componente o usuario no deben interferir ni permitir interferencia de otros. Las condiciones anormales ocurridas en uno de los componentes -sean accidentales o expresas- deben tener un impacto mínimo en el sistema como un conjunto.
Autenticación:
El sistema debe poseer los mecanismos necesarios para asegurarse que un usuario es realmente quien dice ser
Control de acceso:
Nuestro sistema debe poder controlar con toda la granularidad necesaria los permisos de acceso a sus datos - Quién tiene acceso a qué recursos, y qué tipo de acceso tiene.
Auditoría:
El sistema debe ser capaz de registrar, así como de notificar a quien sea necesario de cualquier anomalía o evento importante.

Claro está, todos estos atributos deben ir matizados, priorizándolos al nivel /adecuado/ a nuestras necesidades. Ir demasiado lejos en uno de estos objetivos puede ser de hecho perjudicial para los fines de nuestro sistema - Por poner un ejemplo, es de todos bien conocido que el tradicional esquema de autenticación basado en usuario y contraseña es fácil de engañar; basta adivinar (o conseguir) un pedazo de información, típicamente de muy débil complejidad, para estar autenticado como determinado usuario. En México, los bancos -por poner un ejemplo- ahora exigen la identificación del cliente a través de dispositivos que presenten una mucho mayor complejidad, generando cadenas de números que cambian periódicamente. Pero, obviamente, poca gente requerirá un nivel de seguridad similar a éste, o basado en parámetros biométricos, para abrir su cuenta de correo.

Y otra anotación: Nos es natural aspirar a la perfección, al 100%. Sin embargo, dice el refrán que "lo perfecto es enemigo de lo bueno". Es importante que, en toda etapa de la planeación, desarrollo, implantación y tiempo de vida de un sistema recordemos que un 100% de seguridad es una utopía, un objetivo que sólo puede servir para guiar nuestro trabajo diario.

Los programas son escritos por humanos, y son también humanos quienes administran los sistemas en que corren. Hay una gran cantidad de interacciones entre los elementos de un programa y el sistema, y un cambio en cualquiera de ellos puede tener consecuencias inesperadas si no se hace con cuidado y conciencia. Constantemente aparecen nuevas categorías de errores capaces de llevar a problemas de seguridad. Parte fundamental de nuestra actuación como profesionales en nuestro campo debe ser el mantenernos al día con los últimos desarrollos y las últimas amenazas.

Un par de días antes de la entrega de esta columna, dos de las organizaciones más influyentes en la investigación y respuesta a incidentes de seguridad informática, SANS y MITRE, publicaron su lista de los 25 errores de seguridad más importantes:

http://www.sans.org/top25errors/

Este listado incluye muchos temas de fundamental relevancia, algunos de los cuales abordaré en mis posteriores columnas. Vienen explicados con un buen nivel de detalle, detallando cómo evitar o mitigar sus efectos. Les recomiendo fuertemente familiarizarse con estos temas.

( categories: )

¿Cómo enseñar a los programadores del futuro?

Submitted by gwolf on Fri, 03/27/2009 - 13:50
Wolf G.  2008.  ¿Cómo enseñar a los programadores del futuro? Software Gurú. :64.

Nuestro gremio se caracteriza por conformarse por dos principales perfiles: Autodidactas y escolarizados. Esto obedece en no pequeña medida a que el campo es aún novedoso, y es aún posible para un aficionado ir obteniendo de manera gradual e independiente los conocimientos necesarios para llegar a un nivel de competencia comparable con quien estudió una carrera formalmente.

El programador autodidacta típicamente es un miembro muy valioso del equipo de desarrollo, dado que llegó a acumular sus conocimientos -teóricos y prácticos- por interés y motivación propia. Si bien es común que su formación muestre importantes "agujeros" cognitivos, especialmente en aquellos campos que requieren mayor rigor teórico/matemático, o sencillamente en aquellos por donde el interés no lo llevó, comunmente los subsanará tan pronto se enfrente a situaciones que los requieran. Sin embargo, es digno de mención que justamente es en las áreas más teóricas y aparentemente áridas del cómputo donde hay una mayor proporción de profesionales con éste
perfil.

No puede ser casualidad que dentro de los desarrolladores de Software Libre haya una tan alta proporción de autodidactas, gente formada en otras disciplinas y que ha ido encontrando su nicho de interés y trabajo en el cómputo, encontrando en la creación de herramientas que cubran sus necesidades particulares una nueva vocación.

Podríamos dedicar un muy amplio espacio a analizar la relación entre el conocimiento adquirido formal e informalmente, y en cómo insertar a estos en un esquema académicamente más formal... Pero el tema del que quiero ocuparme en esta ocasión es de quien viene de una enseñanza escolarizada.

¿Cómo transmitir el conocimiento, el interés, el entusiasmo, a los programadores escolarizados, para que alcancen un nivel de habilidad similar al de los autodidactas? Para esto, es fundamental que nos preguntemos, ¿qué y cómo enseñan a sus alumnos las universidades en nuestro país en cada una de las opciones de formación profesional relacionadas con el cómputo? ¿Qué perfiles reales de egreso hay de cada una de estas carreras (desde la muy aterrizada Licenciatura en Informática Administrativa, pasando por las muy variadas Ingenierías, con perfiles orientados más hacia Sistemas, Electrónica u otras variantes, y hasta el purismo teórico de las Ciencias de la Computación)? ¿Y cómo explicamos que, a la hora de buscar un trabajo, tan frecuentemente todos son puestos dentro de la misma gran bolsa?

El primer gran obstáculo al que creo todos los programas académicos deben reaccionar es a que muchos alumnos sienten que programar es una tarea tediosa, un rol que se verán forzado a desempeñar durante los primeros años de su trabajo, en lo que logra un ascenso a un puesto de "responsabilidad". Esto es, en buena medida, por lo torpe que resulta la enseñanza de los conceptos y habilidades básicos de la programación.

Hay dos escuelas básicas: Comenzar enseñando programación utilizando un lenguaje mínimo aunque completo, apto para transmitir los rudimentos de la estructura y el control de flujo (al estilo de C o del venerable Pascal). En contraposición a ellos, muchos otros académicos defienden comenzar enseñando con un paradigma completamente POO, con lenguajes como Java o como C#. Y ambas alternativas nos dejan importantes huecos por llenar.

Para alguien que inició con lenguajes de muy alto nivel, resulta más dificil comprender la traducción a código de más bajo nivel y la implementación en hardware del mismo, especialmente lo relativo a administración de memoria y el órden de complejidad; en este sentido, una de las más brillantes exposiciones la hace Ulrich Drepper, en su detallado y muy recomendable texto "What Every Programmer Should Know About Memory" [1]. Para todas las aplicaciones que corren "cerca del metal", como desarrollos de sistemas tiempo real, embebidos, controladores de hardware o software orientado al alto rendimiento, es fundamental dominar estos temas.

Por otro lado, para los programadores que parten de un entorno meramente procedimental, la POO se presenta como una complejidad adicional, como un obstáculo para la manera que ya tienen -y ya conocen- de soluciónar los problemas.

Si bien la discusión académica respecto a estas dos escuelas está tan viva como cuando se planteó por primera vez hace más de 20 años (p.ej. [2] y sus respuestas en [3]), creo yo que el problema de la motivación reside en no enfocarnos en lenguajes y marcos /simples/ (sin ser de juguete), que no permiten al alumno experimentar la /gratificación instantánea/ de lograr resultados atractivos tras apenas un primer acercamiento. Los lenguajes denominados /de scripts/ (Python, Ruby, Perl, y un largo etcétera) deben, claro, ser enseñados de otra manera, mucho más gradual, pero sin duda ayudan a mantener alta la motivación y baja la frustración.

Pero... ¿No son lenguajes con relativamente baja penetración corporativa? Así es, y eso representa otra ventaja - Una de las principales cualificaciones de un programador debe ser la capacidad de aprender tecnologías nuevas. Al enseñar con herramientas distintas, ayudamos a que los alumnos desarrollen la importante habilidad de /aprender a aprender/, no encasillarse en una herramienta. ¡Que se hagan del hábito de aprender nuevos lenguajes para diferentes retos!

[1] "What Every Programmer Should Know About Memory", Ulrich Drepper,
Red Hat, noviembre 2007,
http://people.redhat.com/drepper/cpumemory.pdf

[2] "Just say 'A Class Defines a Data Type'", Chenglie Hu,
Communications of the ACM vol. 51 No. 3, marzo 2008,
http://mags.acm.org/communications/200803/

[3] "Forum" (respuestas de los lectores), Peter Froehlich, Jack Cain,
Chuhg-Chih Li, Mark Hanna, Communications of the ACM vol. 51
No. 5, mayo 2008, http://mags.acm.org/communications/200805/

( categories: )

Coordinación de esfuerzos en grupos de desarrollo e integración de Software Libre

Submitted by gwolf on Fri, 03/27/2009 - 13:47
Wolf G.  2008.  Coordinación de esfuerzos en grupos de desarrollo e integración de Software Libre. Software Gurú. :62-63.

Acercarse a comprender el funcionamiento y la organización de las tareas dentro de las comunidades de desarrollo de software libre es una tarea harto complicada ante quien se acerca con curiosidad, proveniente del mundo del software propietario, desarrollado e integrado centralmente y dentro de compañías que operan como "cajas negras" - Sin exponer sus procesos, sin ofrecer a los clientes una ventana a cada uno de los momentos de su proceso de desarrollo. Comprender cómo funcionan las comunidades de Software Libre es una gran oportunidad para comprender distintas metodologías de ingeniería de procesos, en entornos donde todas las metodologías formales simplemente no tienen cómo ser aplicadas.

El ejemplo que presento se centra en el trabajo que realizo en el grupo de empaquetamiento de módulos de Perl (pkg-perl) para la distribución Debian GNU/Linux [1] - Perl [2] es un lenguaje de programación muy popular, especialmente para las tareas de administración de sistemas y de desarrollo de sitios Web, y uno de sus más importantes recursos es el CPAN [3] (Comprehensive Perl Archive Network), una enorme biblioteca de módulos nacida en octubre de 1996, y que a febrero del 2008 cuenta con más de 13,000 módulos independientes.

CPAN ofrece a sus usuarios, además, herramientas para el desarrollo y seguimiento colaborativo, como un sistema de seguimiento de fallos [4] y un sistema de organización, búsqueda y consulta de la documentación de dichos módulos [5].

El proyecto Debian, por su parte, es la distribución de software libre, hoy por hoy, más grande del mundo, con más de 15,000 paquetes fuente independientes. Su propósito es presentar una colección coherente, consistente y con un elevado nivel control de calidad.

El reto del grupo pkg-perl [6] es empaquetar (de una manera consistente con las políticas de Debian) y dar seguimiento a los fallos que vayan apareciendo en dichos paquetes. Debian ofrece a sus usuarios un sistema de seguimiento de fallos centralizado [7] a través del cual pueden comunicarse directamente con los "mantenedores" de cada uno de los programas. Son ellos los responsables de determinar, para cada fallo, si cae en el ámbito de la consistencia del sistema Debian (y por tanto debe ser corregido directamente por ellos) o si es relativo a la lógica de uno de los paquetes (en cuyo caso debe ser corregido en coordinación con el autor de dicho programa, para que la corrección "fluya" hacia las otras distribuciones que lo integran y, en general, hacia todos sus usuarios).

Hasta hace unos cuatro años, la norma en Debian era que cada mantenedor fuera responsable exclusivo de los paquetes que le interesaran; en 2003 nació el sistema Alioth [8], basado en GForge, y ofreciendo de una manera centralizada las herramientas necesarias para un verdadero desarrollo colaborativo, se comenzaron a configurar grupos amplios de mantenimiento de infraestructura - Uno de los primeros en aparecer, ante la iniciativa de Joachim Breitner, fue pkg-perl. El eje fundamental en torno al cual gira el trabajo del grupo es el depósito Subversion [9], donde mantenemos sobre un esquema de manejo de versiones todos nuestros paquetes, programas y documentos, así como los cambios independientes que vamos realizando sobre de ellos.

Los módulos del CPAN ofrecen varias ventajas para su mantenimiento masivo colaborativo - A diferencia de lo que ocurre en muchos lenguajes, casi la totalidad los módulos están basados en una estructura de compilación ampliamente conocida (ExtUtils::MakeMaker o Module::Build). En primer término, esto permitió la creación de dh-make-perl, un script bastante genérico cuyo objetivo original era simplificar la creación de paquetes Debian directamente a partir del CPAN para ser instalados localmente por los administradores, pero que fue extendido por el grupo pkg-perl para automatizar la creación de paquetes.

Si bien formalmente el grupo pkg-perl cuenta con con 70 miembros, en todo momento hay aproximadamente 15 miembros activos. Actualmente, el grupo es responsable por 660 paquetes - Responsable de dar seguimiento a los fallos reportados, de mantenerlos al día (tanto respecto a nuevas versiones producidas por sus autores como respecto a las políticas en Debian, que van cambiando poco a poco reflejando la evolución del proyecto), de realizar operaciones transversales de control de calidad a través de todos los paquetes, y demás.

Para simplificar la coordinación de todas estas tareas, los integrantes del grupo (especialmente Martín Ferrari, de Argentina, Gregor Hermann, de Austria, y Damyan Ivanov, de Bulgaria) hemos creado un script [10] que compara el estado de los módulos en CPAN, los paquetes en el depósito Subversion, los reportes en el sistema de seguimiento de Debian, y los paquetes publicados en la distribución misma de Debian. Hoy en día, este script es nuestra principal herramienta, brindándonos un reporte de estado condensado y adecuado específicamente a nuestro flujo de trabajo - Y tan útil resulta este resumen que actualmente estamos adecuando este script para que lo utilicen también otros grupos con un enfoque similar; probablemente para cuando este artículo esté impreso, lo estén utilizando ya los grupos de empaquetamiento de Python y Java - habiendo varios más en el horizonte.

En resumen, el ejemplo que aquí presento es sólo uno de tantos - Pero es ilustrativo. Bajo el modelo del software libre, las barreras entre desarrollo e integración se desvanecen, y el contacto directo entre usuario final y los desarrolladores deja de ser una rara ocurrencia, y se vuelve la norma - algo que damos por supuesto en todo momento de nuestros desarrollos.

LIGAS:

[1] Debian GNU/Linux: http://www.debian.org/

[2] Perl: http://www.perl.com/

[3] CPAN (Comprehensive Perl Archive Network): http://www.cpan.org/

[4] Sistema de seguimiento de fallos del CPAN: https://rt.cpan.org/

[5] Sistema de búsqueda y consulta de documentación del CPAN,
http://search.cpan.org/

[6] Grupo de empaquetamiento de módulos de Perl para Debian:
http://pkg-perl.alioth.debian.org/

[7] Sistema de seguimiento de fallos de Debian:
http://bugs.debian.org/

[8] Alioth, sistema de desarrollo y coordinación de proyectos,
http://alioth.debian.org/

[9] Base del depósito Subversion del grupo pkg-perl,
http://svn.debian.org/wsvn/pkg-perl/

[10] Resumen de estado de los paquetes de Perl en Debian
http://pkg-perl.alioth.debian.org/cgi-bin/qareport.cgi

( categories: )

La metaprogramación y los lenguajes dinámicos

Submitted by gwolf on Fri, 03/27/2009 - 13:35
Wolf G.  2008.  La metaprogramación y los lenguajes dinámicos.

La metaprogramación es una técnica muy poderosa, y muy socorrida en el terreno de los lenguajes dinámicos. Puede llevarnos a reducir muy fuertemente el total de código que escribimos - Y lo que es mucho más importante, a minimizar la cantidad de código repetido innecesariamente. Nos lleva claramente a aumentar la calidad y mantenibilidad de nuestro código.

Programas que escriben programas

La metaprogramación consiste en escribir código que no ataca directamente al dominio del problema que queremos atacar, sino que al código que lo resolvería. Dicho sea de otro modo, el código que escribimos no modifica los datos o el estado de nuestra información, sino que el del programa.

Las ventajas de los lenguajes dinámicos

La metaprogramación no es una nueva idea - Nació hace ya más de 40 años, con el lenguaje Lisp, y se popularizó tremendamente en el lenguaje Smalltalk, a principios de los 80.
Ambos lenguajes fueron revolucionarios en diversos aspectos, y si no gozan hoy en dí­a de mayor popularidad, se debe a que, en sus implementaciones originales sufrí­an de problemas de rendimiento en el hardware de su época. Sin embargo, sus ideas básicas han servido para conformar a una gran cantidad de lenguajes que han ido adquiriendo una cada vez mayor popularidad y aceptación: Los lenguajes dinámicos.

Podemos categorizar a un lenguaje de dinámico cuando no requiere de ciclos determinados y claramente separados de compilación y ejecución. Mucha gente cree erróneamente que los lenguajes dinámicos (por ejemplo, Perl, Ruby, Python o PHP, ampliamente utilizados en el mundo del Software Libre) son interpretados - La realidad es completamente distinta, son lenguajes que cuentan con compiladores tremendamente eficientes, que en fracciones de segundo pueden convertir decenas de miles de ­líneas de código en una representación binaria (bytecode para sus respectivas máquinas virtuales).
La caracterí­stica definitoria de estos lenguajes como dinámicos no es el compilador ágil (aunque, claro está, lo requieren) - Es la presencia de la instrucción (o familia de instrucciones) «eval». En resumidas cuentas, eval recibe un parámetro, tí­picamente una cadena, y lo evalúa como código fuente - Como una primer probadita de metaprogramación, consideren el siguiente código de Ruby:

  1. def crea_clase(nombre, clase_padre)
  2. eval "class #{nombre} < #{clase_padre} ; end"
  3. end

Al invocar a este método -claro está, en tiempo de ejecución- puedo ampliar la jerarquí­a de clases existente. Por ejemplo, si quiero definir suficientes clases para representar los muebles de una oficina, podrí­a decirle a Ruby:

  1. ['Mesa', 'Silla', 'Archivero', 'Librero'].each do |tipo|
  2. crea_clase(tipo, 'Mueble')
  3. end

Obviamente, la lista de objetos no necesariamente la tengo representada en mi código fuente - puede ser proporcionada por el usuario o determinada a partir del entorno de ejecución. Y a partir de este punto, para todos los propósitos de nuestro código, sería como si en tiempo de compilación hubiéramos incluido explí­citamente en el código:

  1. class Mesa < Mueble; end
  2. class Silla < Mueble; end
  3. class Archivero < Mueble; end
  4. class Librero < Mueble; end

Pero esto va mucho más allá de una manera cómoda y reducida de especificar clases.
Lenguajes específicos de dominio
A partir del número noviembre-diciembre de 2007 de SoftwareGurú hemos recibido entregas del tutorial de Ruby on Rails escrito por Carlos Ortega. Cuando nos acercamos por primera vez a Rails, lo primero que encontramos es una serie de declaraciones que no pertenecen a Ruby, y aparentan un estilo de programación declarativo. Por ejemplo, al definir un modelo:

  1. class Person < ActiveRecord::Base
  2. validates_presence_of :name
  3. validates_numericality_of :age, :greater_than => 0, :less_than => 100
  4. end

ActiveRecord es el ORM de Ruby on Rails - presenta una abstracción de los datos en las tablas de la base de datos, dándoles una interfaz natural orientada a objetos. El módulo ActiveRecord::Validations::ClassMethods extiende al lenguaje a través de la metaprogramación, y expone una serie de validadores, que presentan una sintaxis natural de escribir y fácil de leer - Un lenguaje especí­fico al dominio de las validaciones.

Reflectividad

La mayor parte de los lenguajes dinámicos son también reflectivos. Los objetos (y, recuerden, en los lenguajes completamente orientados a objetos, todo es un objeto - Incluyendo las clases, no sólo los objetos instanciados) pueden ser interrogados respecto a los métodos que ofrecen. Un ejemplo simple que muestra el poder combinado de la reflectividad junto con la metaprogramación es este simple rastreador universal:

  1. def trace(obj)
  2. obj.methods.each do |meth|
  3. eval "def obj.#{meth}(*args)
  4. warn 'Llamando al método #{meth} en #{obj.class}'
  5. super(*args)
  6. end"
  7.  
  8. end
  9. end

Basta llamar a nuestra función «trace» con cualquier objeto del sistema para que nos muestre un rastreo completo de cada una de las acciones que éste realice. Por ejemplo (desde la consola interactiva de Ruby):
  1. >> p = Person.find(:first)
  2.  
  3. >> trace(p)
  4. >> p.name
  5. Llamando al método method_missing en Person
  6. Llamando al método class en Person
  7. Llamando al método class en Person
  8. Llamando al método class en Person
  9.  
  10. Llamando al método send en Person
  11. => "Fulano D. Tal"

Aquí podemos encontrar cómo es que incluso la misma clase Person (que no es otra que la que declaramos hace algunas líneas) recibe sus métodos: ¡A través de la reflexibilidad, preguntándole a la base de datos acerca de su propia estructura!

El espacio no permite, tristemente, dar más ejemplos de cómo podemos explotar estas técnicas - Pero espero que con esta sencilla muestra puedan comprender la riqueza que esta técnica nos proporciona, y lo conciso que puede hacer a nuestro código.

( categories: )

Estrategias de virtualización en Linux

Submitted by gwolf on Fri, 10/24/2008 - 17:26
Written in...: 
2008

Virtualization is the technique (or rather, the set of techniques) that allow to share a single computer's resources so that, for the user, it appears as several independent computers. There are several motivations to virtualize our systems, such as:
- Ease of administration (keeping our installations as simple as possible)
- Isolation/security (limiting the damage a potential attacker can achieve to the smallest possible domain)
- Resource control (avoiding a system failure to consume too many resources in others, leading to a denial of service - Or selling our computer resources by volume)
- High availability (transparent service migration between servers for maintenance tasks)

And a very long etcetera.

Virtualization is not a new technique in computer science, not even in the personal computer world - But there are several factors that have led to its rapid popularization in Linux. Now, there are several techniques through which we can get virtualization.

In this talk, I go over the main virtualization technologies currently available (in Linux and in other operating systems), comparing the strongest and weakest points between several of the available methods, and I present some cases, showing how to resolve several needs.

Resumen: 

La virtualización es la técnica (o más bien, el conjunto de técnicas) que permiten repartir los recursos de una sóla computadora para que, ante el usuario, aparezca como varias computadoras independientes. Virtualizar nuestros sistemas puede hacerse por diversas razones, como:

- Facilidad de administración (mantener nuestras instalaciones tan sencillas como sea posible)
- Aislamiento/seguridad (limitar el daño de un atacante potencial al dominio más reducido posible)
- Control de uso de recursos (evitar que un fallo en un sistema consuma demasiados recursos en otros, llevando a negación de servicio - O venta de servicios de cómputo por volumen de recursos)
- Alta disponibilidad (migración transparente de servicios entre servidores para tareas de mantenimiento

Y, claro, un largo etcétera.

La virtualización no es una técnica nueva en el cómputo, ni siquiera en el mundo de las computadoras personales - Pero hay varios factores que han llevado a que en los últimos años se haya popularizado rápidamente en Linux. Ahora bien, hay varias técnicas que nos brindan virtualización.

En mi plática revisaré las principales metodologías de virtualización actualmente disponibles (en Linux y en otros sistemas operativos), comparando los puntos más fuertes y más débiles entre los métodos comparables, y presento brevemente algunos casos, mostrando cómo resolver diversas necesidades.

Software Libre y la Construcción Democrática de la Sociedad

Submitted by gwolf on Tue, 10/21/2008 - 14:54
Written in...: 
2008

[ updated on December 2009 ]

The Free Software movement has traditionally been seen mainly as a technical movement, working towards a common knowledge body, expressly focused towards operating computer systems. We are presenting it, however, as one of the triggerers -and as one of the clearest success cases- of the Free Knowledge movements.

We explore how the Free Software movement's ideary, born as an ideological movement in the mid 1980s, corresponds with the historical logic of the scientific development that has evolved all along mankind's growth, and is presented as a mechanism that should reempower the scientific and technological development that has brought us through millenia of civilization. We tackle the ideological posture of Free Software, exported and widened towards other areas of human knowledge, generating a cascade of innovative ideas, emphasizing on knowledge production.

We go through some examples, characteristic of the knowledge society, where we can develop some basic characteristics of freedom in a modern, democratic society through Free Software: Trust, privacy, anonimacy and individual freedoms.

This work -still perceived by us as to be a work in progress- was first presented in Congreso Internacional de Software Libre y Democratización del Conocimiento, organized by Universidad Politécnica Salesiana in Quito, Ecuador, October 2008

Resumen: 

[ Actualizado en diciembre del 2009 ]

El movimiento del Software Libre ha sido visto tradicionalmente como un movimiento eminentemente técnico, orientado a la creación de un cuerpo común de conocimiento expresamente enfocado hacia la operación de sistemas de cómputo. Nosotros lo presentamos, en cambio, como uno de los detonantes, y como uno de los casos más claros de éxito, de los movimientos por el Conocimiento Libre.

Exploramos cómo el planteamiento del movimiento del Software Libre, nacido como movimiento ideológico a mediados de los 1980, corresponde con la lógica histórica del desarrollo científico a lo largo del crecimiento de la humanidad, y se nos presenta como un mecanismo que nos ayuda con el desarrollo científico y tecnológico que nos impulsó a lo largo de milenios de civilización. Abordamos la propuesta ideológica del Software Libre es exportada y ampliada otras areas del conocimiento humano generando una cascada de ideas inovadoras que hacen énfasis en la producción de conocimiento.

Revisamos además algunos ejemplos, anclados en la sociedad del conocimiento, en que a través del Software Libre podemos desarrollar características básicas de la libertad en una sociedad moderna y democrática: La confiabilidad, la privacidad, el anonimato, las libertades individuales.

Este trabajo -que vemos aún como un trabajo en proceso- fue presentado por primera vez en el Congreso Internacional de Software Libre y Democratización del Conocimiento, organizado por la Universidad Politécnica Salesiana en Quito, Ecuador, octubre de 2008.

Syndicate content