Mostrando las entradas con la etiqueta Software Libre. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Software Libre. Mostrar todas las entradas

domingo, febrero 22, 2009

Installation of Sakai 2.5 under Solaris 10u6 using MySQL 5.1 CS

Sakai is a great virtual collaboration and learning environment designed mainly for research activities. It' s written in Java using a several open source componets such that: apache maven, apache tomcat, hibernate and others. Sakai is published under terms of Educational Community License v. 1.0., which is certified for OSI Initiative. More information about Sakai:
Enlace

Well, and now, i'm going to describe the installation process of Sakai from the sources under Solaris 10 OS (update 6), using the MySQL Server version 5.1 (Community Server). I think, this same instructions can be usefull for OpenSolaris (and Linux distros, with some changes !)

The summary of installation process:
  1. Download the Sakai sources and other components as the servlet container, the Java SDK, etc,,
  2. Install the database server (in this case MySQL) and create the Sakai's database.
  3. Create the environment to compile and deploy Sakai.
  4. Compile and deploy Sakai
  5. Connect Sakai with database Server.
  6. Start the Tomcat Server

Step 1: Download the necessary software:

To compile an deploy Sakai, with MySQL support, we need:

All this software may be downloaded on /opt directory, although you can choose another location.

Remark: The shell used for installation process is Bash. If you use another shell, for instance KSH or C-Shell, consult the documentation for export environment variables and execute files.

Step 2: Install the MySQL Server

Before to install the MySQL server, you must to create the mysql user and group:

# groupadd mysql
# useradd -d /var/lib/mysql -s /bin/bash mysql
# usermod -G mysql mysql

And now, we can to install and start the MySQL server:

# cd /opt
# gunzip mysql-5.1.31-solaris10-i386.pkg.gz
# pkgadd -d mysql-5.1.31-solaris10-i386.pkg all
# /etc/init.d/mysql start

Add the mysql commands to the PATH:

# export PATH=$PATH:/opt/mysql/mysql/bin

Verify the connection: (The root user has an empty password )

# mysql -u root -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.31 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Create the Sakai database:

mysql> create database sakai default character set utf8;
Query OK, 1 row affected (0.00 sec)

Note: If you want, you can to add the mySQL service as part of SMF. See: http://pastebin.com/f2c7200bd

For step 3 and 4, the main reference is the install guide of Sakai 2.4.5, however it can be summarized:

Step 3: Create the environment to compile and deploy Sakai:


# cd /opt
# tar xzf apache-tomcat-5.5.26.tar.gz
# tar xzf apache-maven-2.0.10-bin.tar.gz
# ln -s apache-tomcat-5.5.26 tomcat
# ./jdk-1_5_0_17-solaris-i586.sh
# export JAVA_HOME=/opt/jdk1.5.0_17
# export PATH=$PATH:$JAVA_HOME/bin
#export JAVA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=192m -XX:MaxNewSize=384m"
# export CATALINA_HOME=/opt/tomcat
# export PATH=$PATH:/opt/tomcat/bin
# export MAVEN_HOME=/opt/apache-maven-2.0.10/
# export PATH=$PATH:/opt/apache-maven-2.0.10/bin
#export MAVEN_OPTS='-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m'Enlace# cd $HOME
# mkdir -p .m2/repository
# vi .m2/settings.xml /* with this content: See: Install Guide of Saka 2.5.4. section Maven; subsection: create a maven settings.xml file. */



After, create the setenv.sh file in /opt/tomcat/bin, with this content:

export JAVA_OPTS="-server -XX:+UseParallelGC -Xmx768m -XX:MaxPermSize=160m -Djava.awt.headless=true"


Note: You can save the environment variables declared above in your .bashrc file.

Modify the /opt/tomcat/bin/catalina.sh file and change the shell binary:

#!/bin/sh for:
#!/bin/bash

Step 4: Compile and deploy Sakai:

# cd /opt
# tar xzf sakai-src-2.5.4.tar.gz
# cd sakai-src-2.5.4/master
# mvn clean install
(outpur truncated ...)
# cd ..
# mvn clean install sakai:deploy -Dmaven.tomcat.home=/opt/tomcat
(meanwhile you can drink a coffee! )

If the Build is successfull, you can to go a the next step ....

Step 5: Connect Sakai with database Server.

# tar xvzf mysql-connector-java-5.1.7.tar.gz
# cp mysql-connector-java-5.1.7/*.jar /opt/tomcat/common/lib

Copy the sakai.properties file located at:

/opt/sakai-src-2.5.4/component/component-api/component/src/config/org/sakaiproject/config/sakai.properties

to /opt/tomcat/sakai

To add the information about the database vendor (MySQL), change for the
appropriate values:

# Usser and password to database access:

username@javax.sql.BaseDataSource=root
password@javax.sql.BaseDataSource=123456

# MySQL settings - make sure to alter as appropriate
vendor@org.sakaiproject.db.api.SqlService=mysql
driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Driver
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
url@javax.sql.BaseDataSource=jdbc:mysql://127.0.0.1:3306/sakai?useUnicode=true&characterEncoding=UTF-8
validationQuery@javax.sql.BaseDataSource=select 1 from DUAL
defaultTransactionIsolationString@javax.sql.BaseDataSource=TRANSACTION_READ_COMMITTED

Step 6: Start the tomcat server:

To finish:

# startup.sh

Ready, Sakai is installed !. To access it: http://{server-name}:8080/portal


Principiante en matemáticas

Las matemáticas son una ciencia, que tiene tanto de largo como de ancho. Es impresionante observar los diversos campos de estudio alrededor de ellas y como constituyen un lenguaje unificador para las demás ciencias.

Hace unos días en la lista de discusión de Maxima, una persona escribió un correo pidiendo información sobre algún documento o libro para un principiante en matemáticas. Hubo varias respuestas, de parte de algunos de los desarrolladores de Maxima y muchos coincidian en que no era fácil recomendar un libro, debido a que la pregunta estaba planteada de manera muy general; y recomendaron a la persona que aclarara cuales eran sus intereses (topología, geometría, álgebra lineal, teoría de números, etc,.), para poder así recomendar algo más adecuado. Sin embargo, dentro de las sugerencias, no sabía que había un libro de cálculo del MIT disponible en formato PDF, una muy buena referencia:


Otra referencia para el estudio del cálculo elemental:


Y para rematar, uno de los manuscritos de Euler, publicado en 1748:


Defitivamente, hay mucho por conocer sobre matemáticas, aunque con las herramientas que poseemos actualmente, el camino se facilita bastante y el aprendizaje se vuelve más interactivo.


sábado, enero 24, 2009

Por qué no pensar en usar Symfony para Orfeo ?

Bueno, últimamente he estado probando y mirando algunos de los aspectos de Orfeo (el gestor documental libre) y realmente no pensé que fuera un software tan grande y al hablar con algunas personas del medio no conocía que ya estuviera implementado en varias entidades públicas del país y empresas del sector privado, desde luego con éxito. Sin embargo, y lo digo sin conocimiento de causa, creo que el software ha llegado a un punto en que hacerlo mantenible es una tarea de gran esfuerzo, debido a que observo que no existe una arquitectura muy definida y algo importante como lo es la división por capas, se encuentra totalmente ausente. Reitero, que no conozco los motivos por los cuales el proyecto ha avanzado en esa forma, es sólo lo que he observado desde hace unos tres meses. Pero, como la labor no es criticar si no brindar soluciones a los problemas y brindar mejoras sobre lo existente, después de reflexionar un poco, pienso que una buena manera de empezar a darle forma al proyecto es la adopción de un framework para su desarrollo; y desde luego que pienso en Symfony como una gran alternativa, por sus características y por el grado de madurez que ha alcanzado. Revisando el roadmap de la versión 4.0 de Orfeo, veo que se considera la elección de un framework (Spring) que supone desde luego un cambio de lenguaje, diría yo bastante drástico, que en buena medida desaprovecharía el trabajo realizado hasta ahora, no digo que Java no sea adecuado, pero supondría una esfuerzo adicional, tanto a nivel de test como de equipo de desarrollo, por la experiencia que se ha ganado. No obstante en la guia de discusión de Orfeo (disponible en el sitio web), se consideran algunas características que debe tener el lenguaje de programación:

  • Características del lenguaje y nivel de abstracción.
  • Desempeño del lenguaje
  • Simplicidad y rapidez de desarrollo
  • Experticia de los programadores
  • Frameworks disponibles y sus prestaciones
  • Facilidades de escalabilidad y alta disponibilidad
  • Transacciones
  • Existencia de módulos reusables.
Aunque son bastante generales, dichos requerimientos se pueden satisfacer plenamente con el uso de Symfony, repasemos cada uno de estos puntos:

Características del lenguaje y nivel de abstracción

Desde PHP 5.x, es claro para aquellos que han usado PHP, el buen trabajo respecto al soporte para programación orientada a objetos, aunque se debe reconocer que no es total. Sin embargo, esta "deficiencia" se suple con la arquitectura que plantea Symfony y las grandes facilidades y herramientas que brinda. (Ver un resumen), por ejemplo la utilización de una capa de abstracción a base de datos potente (estan disponibles Propel y Doctrine), separación de las reglas de negocio, manejo de patrón MVC, núcleo de clases que incluye: validación, seguridad, etc.

Desempeño del lenguaje


Aunque el desempeño de los lenguajes interpretados es un poco menor al de los compilados, existen mecanismos que permiten acelerar y mejorar esta característica. Symfony incorpora un sistema de cache, del lado servidor bastante flexible y configurable. (Ver Uso de la cache)

Simplicidad y rapidez en el desarrollo

Como lo mencioné anteriormente, Symfony provee una serie de clases y mecanismos que brindan al desarrollador bastante libertad y lo permiten concentrarse en las labores específicas del desarrollo y no en cuestiones inherentes a todo desarrollo web, por ejemplo el manejo de usuarios, sesiones, formularios, validación, etc. Se basa en la premisa de: convenir en vez de configurar, en la que el desarrollador sólo debe configurar aquello que no es convencional. (Tomado del Libro de Symfony en castellano, Capítulo 1)

Experticia de los programadores

Desde su concepción, Orfeo ha sido desarrollado en PHP y la experticia que han ganado las personas involuradas en el proyecto, es una ventaja enorme, que no debe ser desaprovechada y por el contrario aplicada al manejo del framework.

Frameworks disponibles y sus prestaciones

Creo que esto no requiere de una explicación. Más información en:


Facilidades de escalabilidad y alta disponibilidad

Symfony ha sido concebido para que las aplicaciones desarrolladas con este framework sean fácilmente mantenibles y por ende escalables. De hecho se proveen mecanismos para hacer actualizaciones entre versiones del framework. Además, la separación por capas, hace que el código generado sea más claro, aumentando la legibilidad, una ventaja en proyectos en donde muchas personas participan. De otro lado, Symfony es un proyecto con bastante respaldo y que cuenta con la colaboración y soporte de muchas personas en el mundo, como buen proyecto de Software Libre.

Transacciones

Aunque esto depende en gran medida del motor de base de datos que se utilice, Symfony incluye el ORM Doctrine, que soporta el trabajo con transacciones. Más información.

Existencia de módulos reusables

Symfony provee un mecanismo de plugins, para su extensión y reutilización. De hecho actualmente existen 416 plugins en diversas categorías, que se pueden "reusar" y adaptar.

Bien, hasta aqui sólo he descrito algunas características de Symfony y el porqué pienso que el proyecto Orfeo debería mirar hacia este framework, además de otros proyectos como OWASP. Desde luego, que queda mucho por evaluar y revisar (la conferencia PHP de 2009 en Quebec traerá bastantes novedades).

Opiniones ?? Sugerencias ??


jueves, enero 08, 2009

Subiendo mis fotos y videos a Picasa con Python

En mi opinión Picasa es uno de los mejores servicios que ofrece Google para compartir imágenes. Sin embargo, la versión actual del cliente para sistemas operativos Linux está aún en fase de desarrollo y por lo menos desde mi experiencia no he podido hacerlo funcionar al 100 %, dado que la funcionalidad de subir las fotos al album web no trabaja (de hecho la versión para Linux de Picasa es simplemente un ejecutable de windows que emula wine) y no encuentro la razón.

Como muchos de mis familiares comparten sus fotos en Picasa, me vi obligado a buscar una solución al problema, pues aunque desde la interfaz web de Picasa se pueden subir las fotos, es mucho más cómodo hacerlo desde un programa cliente y con una mínima intervención de parte del usuario. Adicionalmente, toda mi colección de fotografías la mantengo usando Digikam, un excelente software para manejo de colecciones de imágenes, que tiene un plugin para creacion de albumes y subida de fotos a PIcasa; sin embargo, el plugin tiene un bug al subir fotos a albumes cuyo nombre contiene espacios o algún carácter no ascii. Por lo tanto me fui en busca de otra solución.

Buscando dentro dentro de los blogs de Google, encontré que existe un API llamada GData, escrita en Python, que establece un protocolo para la lectura e introducción de datos en la web de Google (blogger, picasa, googledocs, etc). Hay numerosos ejemplos de uso y ahora la estoy usando para subir mis fotos y algunos videos cortos a Picasa, apoyado en un conjunto de scripts que encontré en:

http://wanted.eu.org/en/computers/linux/uploading_photos_to_picasaweb

El script que permite subir las fotos, consultando la base de datos de digikam, también me ha permitido subir algunos videos (tras algunas modificaciones).

TODO:
  • Implementar un método que me permita identificar la clase de archivo (video o imagen) y que se encargue de hacer la optimización. Por el momento el script base usa la python imaging library para la modificaciones de imágenes. Mi idea es usar Pymedia para la modificación y optimización de los videos.
  • Compilar Pymedia, pues he tenido algunos incovenientes.
Bueno, eso es por el momento. Espero publicar pronto los resultados.

miércoles, diciembre 10, 2008

Gran publicación

Después, de varios días de bastante trabajo, recibí por la lista de anuncios de Nmap, una gran noticia: Se ha publicado un completo libro sobre nmap, la clásica herramienta de escaneo de redes. Realmente, es una gran noticia, debido a que nmap es una de las herramientas que considero más completas y poderosas, pero precisamente debido a su fleixibilidad y variedad de opciones, en ocasiones es compleja de utilizar. El libro está escrito por Fyodor (el desarrollador principal) con la colaboración de un grupo bastante de amplio y echando un vistazo rápido a la tabla de contenido, luce bastante interesante.

La página oficial del libro es: http://nmap.org/book/ y se puede adquirir en amazon por un precio de 33 dólares. También se encuentra disponible una versión en linea, que no contiene algunos capítulos como escaneo de puertos, que si incluye la versión impresa.

sábado, septiembre 13, 2008

Migrando hacia Software Libre (I)

La migración hacia Software Libre es un tema bastante interesante, aunque bastante espinoso, en gran parte por las exigencias respecto a cambio en la cultura de los usuarios y al nuevo mundo al que se enfrentan. Mucho se ha escrito acerca de los procesos de migración, de lo que representa y que en la mayoría de los casos resulta más costoso, en términos de dinero y tiempo, que el uso de software privativo, claro está en las primeras etapas de la migración. Una de las principales motivaciones en las organizaciones que quieren dar el salto a las tecnologías libres, es el ahorro, y no es para menos. Sin embargo, desde mi punto de vista, es un enfoque poco profundo, superficial sobre lo que verdaderamente el Software Libre significa, sin caer en los extremos filosóficos casi fundamentalistas; pienso que una de las grandes motivaciones para emprender una transición en esa dirección es la apropiación tecnológica y la reinversión en talento nacional o local, pues el hecho de manipular, desarrollar y controlar (y ser parte de una cadena de valor) la tecnología de la cual hago uso, es un importante activo para la organización. Desde luego, que el conocer cómo funciona la tecnología y lograr adaptarla a mis necesidades tiene unos costos de inversión asociados en tiempo, dinero e infraestructura, eso es claro, y es algo que se debe tener en cuenta y decir de frente, sin tapujos; pues en ocasiones proyectos de migración son "vendidos" bajo la promesa de costo cero, lo cual es falso.

Hace unos meses la revista Essentia Libre en su número 9 publicó un especial acerca de migraciones, en el cual se documentan algunos casos de éxito y recomendaciones especiales de personas que han intervenido en procesos de migración, sobre todo en instituciones de educación. Algunas cosas que me llamaron la atención y que reproduzco:

  • " .... Migrar a Software Libre es más que la decisión de los directivos de una organización, es tener la posibilidad de aprender más y ser más limpio en las acciones ... ". Igor Támara
  • "Contar con un líder que posea los conocimientos adecuados y asesore el proceso". Reinaldo Duque
  • " ... ninguno conoce mejor los problemas de la empresa y su solución como ella misma ... ". Fredy Rivera Bermúdez
Son conclusiones de enorme importancia, de personas que han estado involucradas en procesos de migración reales y exitosos. Hace algunos meses estuve dentro del equipo de trabajo para la migración de una empresa de comunicaciones; y aunque la meta principal no se logró (migración de las estaciones de escritorio) por lo menos hasta donde tengo datos, creo que se debió a un aspecto sumamente importante: falta de apoyo de las directivas y creo que en eso coincidimos muchos al resaltar el hecho que un proceso de migración debe estar apoyado de la cabeza mayor en la organización y de ahi para abajo por cada integrante de la misma.

Para finalizar esta entrada, recomiendo la lectura del siguiente documento, orientado a los profesionales en IT:

http://www.csi.map.es/csi/pdf/Directrices_IDA_OSS_ESv1_r.pdf

y algo aún más importante: la migración a software libre, más que un cambio tecnológico, es una cambio de cultura.

sábado, septiembre 06, 2008

Welcome OpenSolaris


Few months ago, i was using OpenSolaris in a virtual way (across VirtualBox in my Linux box) but the performace is very poor (i' ve got 512 MB in RAM, but i think to upgrade my system !). After some experiments wit Solaris 10 (the installer is more ligth than OpenSolaris) i' ve decided to install OpenSolaris 2008.05 (Indiana) directly in the hard disk. The summary of process:

  • The autodetection of video card and monitor failed, but with the xorgconfig command (i remember my times with Debian Potato !), i fixed it.
  • The sound and network card works fine.
  • The installer is very easy, although is some slow. (The installation process take about 2 hours.)

  • In the boot process, this bug make presence:

    kcf: [ID 415456 kern.warning] WARNING: No randomness provider enabled for
    /dev/random. Use cryptoadm(1M) to enable a provider.

    I found some information about this bug in:

    http://defect.opensolaris.org/bz/show_bug.cgi?id=38

    Using the svcadm command, i get to enable the gdm service. In the same way, at the moment of power off the system, the call of shutdown command show other bug related with the RPC service, but in this URL, found the solution:

    http://bugs.opensolaris.org/view_bug.do;jsessionid=ba830143933ebf052d8caaab3d?bug_id=6531164

    TODO List:

    • Testing the Maxima stable release. (5.16)
    • Using DTrace to test and trace some programs.
    • Verify the compatibility with the ext2/3 file systems.
    • Testing the Java performance.

    My GRUB:

    Debian GNU/Linux 2.6.18
    OpenSolaris 2008.05
    FreeBSD 7.0 (must be repair ..:()

    Well, that's all folks !

    lunes, agosto 11, 2008

    Conexiones con PostgreSQL

    PostgreSQL, es un sistema gestor de base de datos muy robusto y de hecho una muy buena alternativa a sistemas como Oracle. De hecho, hoy al final del día me llamaron para revisar algunas fallas en la conexión a una base de datos que estaba ejecutándose en PostgreSQL (bajo RHEL) desde una aplicación cliente que se ejecutaba en windows. Pues bien, supuse que había algún error en los parámetros de configuración e hice todas las pruebas del caso, y aún el problema persistía. Revisé cuidadosamente los archivos de configuración que controlan las conexiones en PostgreSQL (pg_hba.conf y postgresql.conf) y todo estaba en su sitio, no entendía cuál era la naturaleza del error. En fin, revisé las reglas del firewall, y en efecto, el tráfico por el puerto 5432 no estaba habilitado: sencillo, modifique las reglas y reinicié el servicio, problema resuelto ...., pensé yo, pero nada de eso, lo mejor estaba por venir.

    Resulta que la aplicación cliente, estaba compuesta de dos elementos: un primero programa que se conectaba y creaba una especie de instancia de la conexión y otro que haciendo uso de esa instanacia se comunicaba con la base de datos; pues bien el primer programa no lograba conectarse, a pesar de otra aplicación (llamada pgexplorer, primera vez que la ví) si lograba establecer la conexión. Después de mucho probar y revisar, me dí cuenta que el problema radicaba en la versión de PostgreSQL para la que fué escrita dicha aplicación, dado que había un servidor windows en el cual estaba instalado PostgreSQL versión 8.0, al cual se conectaba sin problema alguno, mientras que en el RHEL estaba funcionando inicialmente PostgreSQL 8.1 y después usé la versión 8.3, sin éxito; claro está, que los logs fueron de mucha ayuda, previa configuración de las opciones para logging en el archivo postgresql.conf y usando a syslog. Después de instalar la versión 8.0.17 de PostgreSQL, la aplicación se conectó sin ningún problema y se logró generar el tan anhelado mensaje de:

    "Connection success !"

    No entiendo el porqué los problemas de conexión con las versiones posteriores a la 8.0.x, después investigaré, si hubo algún cambio significativo.

    Aunque, pareciera que ahí paro todo, aún faltaba un problema por resolver: existían incovenientes de codificación que impedian el correcto funcionamiento; cómo lo solucioné ? Sencillo, después de todo:

    Al momento de la creación de la base de datos, se debe especificar la codificación de la misma, con la opción -E:

    # createdb -U postgres -T template0 -E LATIN1 ....

    Posteriormente, al momento de cargar el script sql o de usar el cliente en línea de comandos, especificar la misma codificación, bien sea con:

    # set encoding = "LATIN1" o desde plsql:

    \encoding LATIN1

    y problema resuelto. Aunque me queda la duda, si SELinux, tenga relación con los problemas de conexión.

    miércoles, junio 18, 2008

    Framework o CMS ?

    El desarrollo de aplicaciones web (y muchas veces software standalone) conlleva frecuentemente a diseñar y escribir componentes de software que se usan regularmente. Muchas aplicaciones requieren de autenticación de usuarios, permisos, registro, diseño, etc., y es muy engorroso tener que escribir código para soportar cada una de estas funcionalidades en cada desarrollo realizado. Los frameworks (por ejemplo Symphony) reducen mucho el trabajo en este sentido, pero en muchas ocasiones no lo suficiente para hacer un desarrollo de manera sencilla y rápida.

    Hace poco, realicé una pequeña aplicación (aunque al final quedó incompleta (que lo diga Erwin y Pachito)) y dentro de los requerimientos del cliente figuraba el manejo de roles de usuario y permisos para el acceso a distintas partes del aplicativo. Desde luego se habían planteado muchas otras funcionalidades, pero menciono ésta, debido a que me permitió empezar a mirar hacia el lado de los CMS's y terminar por inciinarme por uno de ellos, como mi plataforma de desarrollo.

    Tengo algo de experiencia en el desarrollo de aplicaciones con varios CMS, como Xoops y PHPWebsite y por ello me incliné finalmente por escoger un CMS en vez de un Framework para iniciar el desarrollo de la aplicación. La principal razón (aunque reconozco que está muy ligada al caso de estudio) es que el CMS, me provee una infraestructura de autenticación, autorización y de permisos muy buena y sencilla de implementar (aunque eso depende del CMS), lo cual me ahorró bastante tiempo de diseño y desarrollo. Después de revisar varias opciones y dado que necesitaba que el CMS tuviera soporte para base de datos PostgreSQL, me inciiné finalmente por Drupal.

    Por qué Drupal ?


    Las razones son sencillas:

    • Una gran API y bien documentada
    • Infraestructura de autenticación y permisos sencilla de implementar.
    • Desarrollo activo
    • Bastantes módulos disponibles y temas
    • Código claro
    • Capa de abstracción de bases de datos muy sencilla.
    Entre otras razones. Mientras con el Framework, debía preocuparme por construir los componentes para manejo de permisos y sesiones de usuario, con Drupal, simplemente definó los niveles de acceso y listo, un par de clicks y ya estuvo. Mediante un método sencillo:

    function modulo_perm() {

    return array('reglas de acceso');

    }

    Y la creación de roles, fué aún más sencillo. A través del panel de administración de usuarios, su definición es muy sencilla. En resumen:

    Tiempo de implementación en CMS: 1 horas
    Tiempor con el Framework: 5 Horas (aprox.)

    Desde luego, que mediante un framework se puede hacer reutilización de muchos componentes, pero por lo menos Drupal, la funcionalidad que ofrece el API es enorme.

    En conclusión, para próximos desarrollos pienso utilizar Drupal; de hecho ahora construyo un módulo para manejo de conferencias y sencillamente ha sido muy fácil. Como punto adicional, con un CMS, el manejo de presentación se controla mediante themes, fácilmente personalizables y que puede modificar hasta un desarrollador.

    lunes, marzo 24, 2008

    Famosos del Software Libre

    La siguiente entrada es motivada por un correo que llegó a la lista de correo de nmap-hackers el día de hoy, anunciando el release de la versión 4.60 de Nmap. Me llamó la atención, que en la página web del proyecto se creara una sección, en la cual se muestra el uso de Nmap en varias películas. Por ejemplo, quien no se acuerda de la escena en que Trinity se aprovecha de un bug de SSH y logra entrar en una computadora con priveligios de root ? Desde luego, que en dicha escena se hace uso de nmap, en forma previa. Otra películas en las que aparece el famoso Nmap es Bourne Ultimatum. En esta película, se hace un uso más intenso de nmap y su nueva interfaz ZenMap. También aparece en escena el servidor de correo Postfix y el famoso protocolo SSH.

    Claro está, que al espectador promedio este tipo de apariciones no tengan importancia alguna, pero a mi me generan algo de emoción. De hecho recuerdo la película: The Score, en donde Edward Norton entra en un shell con Linux 2.0.8 (no recuerdo muy bien la versión) y ejecuta como una especie de ataque de diccionario.

    jueves, marzo 20, 2008

    La virtualización no es el camino, por ahora

    Llevo dos días tratando de poner a punto un sistema de virtualización sobre Debian, pero llego el momento de rendirme, debido a que hasta el momento en ninguno de los programas que he usado (o intentado usar), he podido virtualizar ningún sistema operativo de forma exitosa. Empezaré por describir la situación, haber si alguien puede darme luces:

    Hasta hace unos días usaba la versión 2.6.17.7 de Linux, sin ningún problema. Había estado usando qemu como mi sistema de virtualización, pero estaba un poco descepcionado respecto al desempeño del mismo, pues el consumo de recursos era bastante grande. De hecho las primeras pruebas (realizadas con Minix, Fedora y Windows XP) no fueron muy alentadoras. Y finalmente dejé de usarlo, pues bajo la versión de kernel mencionada arriba, no fué posible cargar el módulo kqemu y no pude probar las bondades de dicho acelerador, Intente después con VirtualBox, pero la instalación me arrojó varios errores y el módulo vboxdrv tampoco lo pude cargar, con dicha versión del kernel.

    Hace unos días, probé el VMWare server, pues lo había visto ejecutándose en la empresa en donde trabajo y me pareció que tenía un buen desempeño, en máquinas muy similares a la mía. Sin embargo, cuando lo instalé, el consumo de recursos fué excesivo, de hecho no pude trabajar en otras aplicaciones mientras estaba instalando Solaris en la máquina virtual. Todo esto me puso de mal humor y a pensar que posiblemente recompilando una versión más reciente del kernel podía utilizar kqemu y VirtualBox. Decidí finalmente compilar la última versión estable (2.6.24.3), lo cual me permitió hacer algunos ajustes y realmente después de la compilación, algunos problemas que tenía se solucionaron. Una vez cargado el nuevo kernel, pude utilizar kqemu, pero el desempeño no fué notable, de hecho no observé ninguna diferencia notable entre usar qemu a secas y kqemu.

    Proseguí a instalar VirtualBox, lo cuál fué muy sencillo, pero hasta el momento no he logrado arrancar la máquina virtual, pues obtengo el siguiente error:

    ==================================================

    Assertion failed: [mIPCSem >= 0] at '/home/vbox/vbox-1.5.6/src/VBox/Main/MachineImpl.cpp' (8058) in nsresult SessionMachine::init(Machine*).
    Cannot create IPC semaphore, errno=38.
    Please contact the product vendor!.


    ===================================================

    Y tras hacer una búsqueda exhaustiva en internet (más de 6 horas seguidas) lo único que encontré fué el reporte del bug, que aún no se ha solucionado. En la FAQ de VirtualBox, comentan que el programa no trabaja con kernels que tengan activado el tickless timer support (CONFIG_NO_HZ en el .config), cosa que activé en mi kernel. Seguí las instrucciones de desactivación y cargue del módulo, pero tampoco, el error emergió de nuevo y la solución cada vez es más confusa. Por el momento, compraré otro disco duro e instalaré nativamente el sistema que necesite, mientras termino de compilar el VirtualBox, haber si de alguna forma lo hago funcionar.

    martes, octubre 30, 2007

    Se acerca SLUD VI : La sexta versión de la Semana Linux

    Los eventos de Software Libre siempre me han parecido muy emocionantes, pues son la oportunidad perfecta para encontrarse con la comunidad con la que se trabaja y compartir muchas experiencias entorno a temáticas diversas. Por ello, la sexta versión de la Semana Linux Universidad Distrital (SLUD VI) se convierte en el escenario perfecto para que todo el trabajo reaizado durante el año sea mostrado y compartido. No en vano, el Grupo Linux Universidad Distrital (GLUD), quien organiza el evento ha venido año tras año realizando SLUD con el objetivo de impulsar el crecimiento del Software Libre en Colombia y de integrar muchas más personas a esta noble causa. Toda la información del evento se encuentra en:


    De mi parte, espero presentar dos ponencias: una relacionada con el proceso de certificación en Linux y otra sobre la importancia del Software Libre en las carreras de informática y afínes. Por el momento, no me queda más que invitar a toda la comunidad para que se hagan partícipes de este magnífico evento.

    domingo, octubre 07, 2007

    Release de sFourier 0.3a

    Como lo dije aqui, hace algo de tiempo estaba junto con otros compañeros escribiendo un programa para aprendizaje de Series de Fourier. Las primeras versiones del programa permitian simular la vibración de una cuerda que estaba fija en sus extremos, como se explica aqui [PDF, PS] y para ello utilizamos Python como lenguaje junto con otros módulos, como VPython y wxPython. Así lucía sFourier (aunque para ese entonces el programa no estaba bautizado) hace unos meses:


    Después de algunas discusiones y luego de apegarnos a un modelo de desarrollo mucho más estructurado y funcional que el que veniamos utiizando, se decidió cambiar a Java como lenguaje, debido a que la experiencia de los programadores era mucho mejor que la que se tenía en Python y se generó una segunda perspectiva de aplicación:




    que permitía además de simular la vibración de la cuerda, calcular series de Fourier de funciones lineales continuas a trozos y comparar la vibración de dos cuerdas. Esta versión sirvió de base afinar muchos aspectos de lógica de la aplicación, así como de interfaz. Sin embargo, debido a un problema con la presentación de algunas gráficas, se buscaron mejores formas de llevar a cabo los métodos de simulación de la cuerda y presentación de espectros de amplitudes y se generó una última versión:


    que después de varios ajustes se convirtió en la versión 0.3a (alpha) de sFourier y la primera que se encuentra lista para el usuario. sFourier 0.3a cuenta con las siguientes funcionalidades:

    • Simulación del fenómeno de la cuerda vibrante, permitiendo observar modos normales de vibración individuales y en suma, además de los espectros de amplitud.
    • Módulo de comparación entre cuerdas, que permite simular simultáneamente dos cuerdas vibrantes con parámetros de tensión y densidad diferentes.
    • Aproximación por Series de Fourier de funciones lineales contínuas a trozos, permitiendo observar las gráficas de la aproximación, términos individuales de la Serie de Fourier o sumados y el espectro de amplitudes.
    La página oficial del proyecto es:

    http://sfourier.sourceforge.net

    El proyecto como pueden darse cuenta (versión 0.3a !) aún es muy jóven, pero esperamos poder liberar más versiones con muchas más funcionalidades y mejoras. Lo que esperamos para la próximas versiones es:

    • Corregir todos los bugs conocidos
    • Permitir definir funciones polinómicas y trigonométricas
    • Mejorar el algoritmo de verificación de funciones
    • Añadir una interfaz más cómoda para el ingreso de funciones
    • Presentar los coeficientes de Fourier después de calcular la serie de Fourier correspondiente
    • Añadir otros fenómenos físicos como la membrana vibrante.
    • Mostrar el espectro de fase
    y todo aquello que se nos siga ocurriendo. Desde luego que sFourier es software libre !!!.

    sábado, octubre 06, 2007

    Los formatos de Babel

    Así como cuenta la biblia:

    " .... Construyamos una ciudad con una torre que llegue hasta el cielo, así nos haremos famosos y no nos dispersaremos por todo el mundo. Yavé bajó para ver la ciudad y la torre que los hombres estaban levantando, y dijo: Veo que todos forman un sólo pueblo y tienen una misma lengua. Si esto va adelante, nada les impedirá desde ahora que consigan todo lo que se propongan. Pues bien bajemos y confundamos ahi mismo su lengua, de modo que no se entiendan los unos a los otros ....." [Extraído del libro de Génesis]


    En mi opinión, la informática se encuentra en una babel de formatos para almacenamiento y representación de información, que hace muy difícil la interacción e intercambio de información entre los usuarios. Para no ir más lejos, los usuarios de software libre siempre hemos tenido incovenientes para poder abrir archivos de MS Office y toda su gama de aplicaciones y ahora el panorama se pone más difícil, con el OOXML, que para poder visualizar un documento en ese formato hay que darle la vuelta al OpenOffice y es casi seguro que no será interpretado de buena manera. Hoy por ejemplo, me enviaron unos diagramas en MS Visio, y es la hora que no puedo abrirlos. De igual manera sucede con otros muchos formatos de video, música, juegos y en fin las aplicaciones que usted pueda imaginarse. Pero, es claro, que el armazón de esta torre de babel ha sido propiciada del lado del software privativo, pues desde mi experiencia y la de mucha otra gente, es mucho más fácil compartir información desde un sistema Linux, BSD con una sistema como Windows o Mac, que visceversa. Ejemplo:

    " Yo elaboro mis documentos en LaTeX y perfectamente pueden verse en Windows y ser compilados en dicho SO, instalando el programa libre (MikTeX + Tecnicenter) y listo. Pero vaya usted a abrir un hoja de Excel con macros en OpenOffice y hasta ahí llegó. No es posible en forma satisfactoria; lo que en el caso inversos si es posible, haciendo la instalación de OpenOffice en Windows o Mac." .

    Es un insulto que mis compañero de Universidad me envien archivos, en formatos que para su apertura tenga que hacer casi magia, cuando existen formas más generalizadas de enviar la información. No les digo que usen Linux y escriban en LaTeX, pero que por lo menos tengan la descencia de enviar las cosas en formatos por lo menos fácilmente transformables ó aunque sean de sólo lectura, fácilmente visualizables. Y no hablo de que exista la aplicación para el SO, hablo de que dicha aplicación sea libre y no haya lugar a cracks ni mecanismos de fuerza bruta para usar el programa.

    En fin, la invitación es a utlizar formatos libres y si se puede mejor usar estándares que permitan compartir la información de manera sencilla y ágil.

    miércoles, julio 18, 2007

    EMMS - Emacs MultiMedia System


    A parte de ser mi editor favorito (en el programo, escribo documentos, juego, y de vez en cuando reviso el correo), Emacs cuenta con una interesante extensión llamada: EMMS (Emacs MultiMedia System), la cual permite contar con un sencillo sistema de reproducción multimedia desde el editor, usando programas externos como mpg321 y otros tantos. Por ahora lo estoy usando de manera básica (reproduciendo listas de canciones, directorios o una pista individual) y hasta el momento me ha gustado, y sin moverme de Emacs. En una próxima entrada, documentaré como configurarlo y afinar los archivos de configuración.

    lunes, julio 09, 2007

    The Unix Acronym List

    Gracias a digitalfredy, les dejo este interesante enlace: una lista de acrónimos de UNIX:


    Sin embargo, no estoy de acuerdo con:

    Emacs: Emacs Makes Any Computer Slow

    lo cambiaría por :

    Emacs: Emacs More than A Computer System

    sábado, julio 07, 2007

    A propósito de libertad .....

    El día jueves 5 de Julio un gran número de colombianos protestamos contra el secuestro, contra la violación del derecho más fundamental del ser humano: la libertad. Fué impresionante ver la cantidad de personas que salieron a las calles, marcharon [1] y aún más impresionante el enterarme que hay personas que llevan más de 10 años secuestrados, sin libertad, es decir: muertos en vida. Esta situación me ha hecho reflexionar y trasladar un poco este problema (sin el ánimo de comparar el sufrimiento de quienes tienen un familiar secuestrado) a el contexto tecnológico y principalmente para hacer una protesta ante los incidentes que han estado ocurriendo en las últimas semanas. En una época en que la tecnología ha cobrado importancia en grado superlativo (usamos el e-mail con más frecuencia, hacemos compras por internet, estudiamos con plataformas virtuales, el celular y los dispositivos móbiles se usan cada vez más. De hecho cuando hubo el daño en el cable Arcos, muchas organizaciones vieron afectada su operación, ver [2]) la dependencia de los medios de comunicación (y de aquello que permite su utilización (software, hardware, etc)) es cada vez más grande. Si esa infraestructura que usamos para comunicarnos, algún día fallara o aún peor nos fuera restringida, por cualquier motivo, nuestra vida daría un giro de 360 grados, no hay duda. Una situación como la anterior, muchos dirian es imposible; sin embargo no estamos muy lejos de esa realidad, aunque parezca exagerado. Y no hablo de que nos quiten el computador o el celular, me refiero a que se nos quite el derecho a conocer que se hace con la información que transmitimos (e-mails, documentos, transacciones bancarias, las bases de datos de tarjetas de crédito) y poder dar un manejo a los medios que la trasmiten (el software que usamos para hablar con los amigos, los programas que empleamos para escribir documentos, etc,.). En esencia, al igual que los colombianos que se encuentran secuestrados, privados de su libertad, nosotros estaríamos en una situación similar. No tendríamos la libertad de comunicarnos, de transmitir conocimiento, de expresar aquello que encontramos importante. Por estos días se han presentado muchas iniciativas que pretenden secuestrar nuestra libertad tecnológica y hablo puntualmente del uso de DRM (Gestión de Derechos Digitales), la campaña de Microsoft para hacer del formato Office XML una estándar ISO (Ver campaña No OOXML) y la nueva versión del sistema operativo Windows Vista (ver campaña BadVista). Tal vez para muchas personas esto no represente mayores incovenientes mientras puedan seguir usando sus reproductores portátiles (sujetos a una serie de condiciones), seguir usando la red de MSN (sin saber que ocurre con la información que se transmite) y que puedan seguir usando su suite de oficina preferida (sin conocer de que manera los datos contenidos en ese documento son tratados). Los peligros que representan las iniciativas anteriormente citadas son enormes de ser aprobadas (o que las sigamos usando), debido a que en el caso de los DRM están limitando al usuario a que use determinado software de determinada empresa para escuchar música o ver una película. Acaso uno compra un televisor para ver ciertos canales o un carro para recorrer ciertas calles que me indique la empresa que lo fabrica ??. En este momento la libertad está en juego y no podemos ser ajeno a ello, como tampoco ser ajenos a la realidad que enfrentan los secuestrados en nuestro país. No tenemos la decisión de hacer el intercambio humanitario, pero si podemos apoyar aquellas iniciativas que busquen ese intercambio; de igual forma podemos apoyar aquellas campañas en pro de la libertad tecnológica (No OOXML, BadVista, Anti-DRM, etc). Más información en:

    "... con honores y titulos no se hace la paz, se hacen exclavos."
    Tomado de: Brave Hearth


    [1] http://news.bbc.co.uk/hi/spanish/latin_america/newsid_6275000/6275734.stm
    [2] http://www.interpla.net/modules.php?name=News&file=article&sid=211

    miércoles, mayo 30, 2007

    Revisión 0.1 a Maxima


    Desde hoy inicio una serie de escritos acerca de Maxima, en los cuales comentaré algunas ideas que tengo respecto a: interfaz gráfica, nuevas características, paquetes adicionales e interfaces con otros lenguajes o programas existentes. Pero primero que todo empezaré por comentar acerca de Maxima, su historia y evolución para aquellos que aún no lo conocen.

    Qué es Maxima ?

    Maxima es un completo sistema de álgebra computacional de propósito general diseñado para la manipulación de expresiones algebráicas. Con Maxima usted puede manipular expresiones algebráicas que contengan constantes, variables y funciones. Maxima es una implementación en Common Lisp realizada por William F. Schelter y se basa en la implementación original de Macsyma que fue construida en el MIT (Instituto Tecnológico de Massachuttes, por sus siglas en inglés) para el Departamento de Energía de los EEUU (DOE, por sus siglas en inglés). Hace unos años el profesor Schelter (puede ver la carta de autorización aqui) obtuvo los permisos de parte del DOE para hacer copias derivadas del software y en particular distribuirlas bajo licencia GPL.

    La Historia de Maxima

    Los comienzos de Macsyma, donde la mayor parte del desarrollo toma lugar, datan a finales de la década de 1.960 y comienzos de la década de 1.970 en el marco del proyecto MAC, una unidad investigativa del MIT, la cual fue añadida al Laboratorio de Ciencias de la Computación de ese tiempo. El soporte investigativo para Macsyma incluía a la Advanced Research Projects Agency (ARPA), al Departamento de Defensa y de Energía de los Estados Unidos y otras entidades estatales y privadas. La idea original surge de parte de Marvin Minsky. Tras varios esfuerzos de desarrollo, de los cuales hicieron parte muchos trabajos de tesis, surgió Macsyma, un acrónimo para MAC's Symbolic Manipulator (Manipulador Simbólico de MAC). La etapa de diseño se llevó a cabo en Julio de 1.968 y su codificación empezó a principios de Julio de 1.969. Este primer desarrollo se hizo usando un computador bastante sencillo: un DEC PDP-6. Posteriormente, se inició un proceso de porte hacia otras plataformas de hardware, utilizando otras implementaciones de Lisp (cuando se habla de una implementación Lisp, nos referimos a un dialecto derivado de Lisp, orientado a un uso particular, por ejemplo Steel Bank Common Lisp que fue diseñado con énfasis en proveer facilidades para su mantenimiento. Es algo así como una distribución GNU/Linux. Puede encontrar más información en http://es.wikipedia.org/wiki/Lisp y en http://www.alu.org/table/lisp.htm.

    A mediados de 1.980, la idea de portar Macsyma se fortaleció y gracias a la distribución Vaxima basada en Unix, que ejecutaba una implementación de Lisp elaborada en la Universidad de California en Berkeley, demostró que desde el punto de vista teórico y práctico era posible ejecutar software en una gran cantidad de sistemas. Una vez el código entró en una etapa estable, empezaron a surgir variantes del sistema, entre las que se encuentran Macsyma, Maxima, Paramax/Paramacs, Punimax, Aljbar y Vaxima. De esas 6 variantes, sólo sobrevivieron dos: Maxima y Macsyma.

    Debido a algunos incovenientes, Macsyma se empezó a distribuir de forma comercial y el código fuente fue cerrado. Gracias al Profesor William F. Schelter, quien en Octubre de 1.998 obtuvo los permisos necesarios de parte del Departamento de Energía de los Estados Unidos para poder distribuir copias de Maxima (dado que la compañia que distribuia Macsyma desapareció), bajo licencia GPL. Es así como el profesor Schelter mantiene Maxima hasta su fallecimiento en Julio de 2001, lo cual significó un duro revés, pero dado que el código fuente de Maxima estaba bajo licencia GPL, se empezó a distribuir libremente. Es así, como un grupo de usuarios y desarrolladores, que trabajan continuamente por lista de correo, están haciendo de Maxima un proyecto de software libre, que se proyecta como uno de los mejores sistemas para manipulación simbólica y numérica, que sea accesible libremente.

    En la actualidad

    El proyecto Maxima cuenta actualmente con una comunidad de desarrollo activa (24 desarrolladores) y muchos otros usuarios que trabajan por lista de correo reportando bugs, solicitando soporte, enviado mejoras y escribiendo nuevas funcionalidades para el programa. Más información y documentación en: http://maxima.sourceforge.net

    Por ahora tengo algunas ideas acerca de mejorar la actual interfaz gráfica de Maxima, pero para ello quisiera recibir sugerencias de parte de quienes lean este blog. Qué crees debe tener la interfaz gráfica de Maxima o mejor aún que debería incluir la interfaz gráfica de un programa para manipulación de matemáticas ?

    viernes, abril 27, 2007

    Glosario Linuxero ......


    Es muy curioso escuchar entre muchos usuarios de GNU/Linux y de Software Libre (entre los que me incluyo) el empleo de algunos términos que no existen en ningún diccionario pero que hacen referencia a una tarea particular cuando se trata de configurar el sistema operativo o de realizar alguna tarea en el mismo. Términos como "apeteguetear", "desentarrar" o "debianizar" son muy comúnes. A continuación presento una pequeña recopilación de los términos que escucho con más frecuencia junto con su respectivo significado:

    • apeteguetear: Acción o efecto de emplear el comando apt (generalmente en una distribución Debian o basada en ella) bien sea para ejecutar búsquedas de paquetes , instalar/remover paquetes, hacer un chequeo del sistema o actualizar la distribución.
    • redjatero : Persona que usa y gusta de las distribuciones Red Hat en sus distintos sabores y que aún piensa que rpm es el mejor manejador de paquetes.
    • debianita: Persona que usa, gusta y defiende la distribución Debian (en algunos casos sus derivados, aunque en contadas excepciones) y promueve su uso debido a su gran estabilidad.
    • desentarrar: Acción y efecto de "extraer" los archivos contenidos en un archivo tipo TAR.
    • latear: Escribir un documento haciendo uso del sistema de documentación LaTeX. También aplica al momento en el cual se ejecuta el comando latex sobre un archivo con extensión tex para producir un archivo dvi o pdf.
    • wikimaniático: Persona que usa wikis por lo menos 10 veces al día y generalmente colabora en la administración de varios de ellos.
    • chrutear (pron: ceacherutear): Palabra cuyas raíces se encuentran en el comando chroot y describe la acción o efecto de emplear la orden chroot en un sistema GNU/Linux.
    • gugulazo: Acción o efecto de hacer una búsqueda en Google.
    • debianizar: Acción o efecto de adaptar una distribución basada en Debian para que sea lo más parecido a un sistema Debian original, sin embargo muchos se dan cuenta (un poco tarde) de que no hay como usar Debian desde cero.
    • Volarse el root (expresión): Expresión que hace referencia a cambiar la contraseña de administrador de un sistema GNU/Linux mediante un Live-CD/DVD o aprovechando el modo single de GRUB.
    • Susero: Persona que usa y gusta de la distribución Suse.

    Espero más adelante incluir más términos. Qué otro palabra conoces ????

    viernes, abril 20, 2007

    Jamendo: Libera tus oidos

    Hablando con Kronos, me recomendó la siguiente web:


    en donde se propone un nuevo modelo (bueno, conocido y usado por algunos) para la promoción de obras musicales bajo licencias Creative Commons. Son muchos los géneros que existen y alrededor de más de 3000 albumes (lo que alcancé a explorar). El sitio proporciona bastante información tanto para los usuarios como para los artistas interesados en publicar sus obras. Buena iniciativa en pro de la cultura libre !