Category: software libre


Cómo instalar Cantor en Ubuntu Karmic

Cantor és una aplicación científica/educativa creada para el escritorio KDE (aunque puede funcionar fuera de éste). Su objetivo es aglutinar y simplificar el uso de otro software matemático, como Sage, Maxima o KAlgebra. El principal problema para usar Cantor ahora mismo es que casi ninguna distribución de Linux actual lo ha incorporado en sus repositorios oficiales ya que es muy nuevo (será lanzado dentro de la versión 4.4 del escritorio KDE).

Por suerte han creado un repositorio PPA en Launchpad, así que “solo” tendremos que añadir el repositorio a la lista de repositorios e instalar cantor. Ahí van los comandos:

sudo add-apt-repository ppa:kubuntu-ppa/beta
sudo aptitude update
#Este paso no es estrictamente necerario, pero lo recomiendo: aptitude safe-upgrade
sudo aptitude install cantor

Cuando he dicho “solo” ha sido porque aparecerán algunos problemas. Resulta que cantor depende de muchos paquetes de KDE4.4, del que solo hemos visto sus versiones RC hasta el momento, y que tampoco ha sido incorporado en ningún repositorio oficial de ninguna distribución. Ésto conlleva que al instalar Cantor, deberemos actualizar multitud de paquetes y en algun momento aparecerán conflictos por resolver (bueno, solo si tenéis alguna aplicación de KDE instalada previamente claro). No puedo dar una explicación estandar para resolver esos problemas, pues cada uno se encontrará con problemas de dependencias diferentes en función al software que tenga o no tenga instalado en su sistema, en todo caso creo que el problema no es demasiado grave (al menos para los experimentados):

Saludos!

Algunos tips para SAGE

Como es con la práctica con la que se aprende, a lo largo del tiempo usando SAGE+Maxima (para evitar el uso de Maple) he ido aprendiendo algunos truquillos que (os?) pueden resultar interesantes (bien, me lo parecen a mi, y eso es suficiente :) ).

  • Visualización de resultados: SAGE puede funcionar de dos formas distintas, dentro de la línea de comandos y como aplicación web (invocando el comando notebook() dentro de la línea de comandos se inicia un servidor al que se puede acceder desde cualquier navegador convencional). No es difícil imaginar que dentro del modo línea de comandos sería prácticamente imposible visualizar ciertos resultados de forma cómoda, precisamente por eso implementaron el modo web… pero aun así nos podemos encontrar con sorpresas desagradables. Por defecto los resultados se mostrarán solo con carácteres ascii y consecuentemente pueden ser de difícil legibilidad. Hay un comando llamado latex() que transforma la entrada en una salida escrita en formato LaTeX, el problema es que para visualizar eso necesitamos pasarlo a un compilador de LaTeX y transformarlo, el proceso en sí es demasiado pesado y lento.

    La solución viene de la mano de jsMath, que son unas librerías que sirven para visualizar textos matemáticos en páginas web. En Debian y Ubuntu se pueden instalar desde aptitude o apt, yo recomiendo instalar dos paquetes: jsmath y ttf-jsmath. Una vez instaladas sólo habrá que marcar el checkbox Typeset que podemos encontrar en la parte superior de la página web que genera SAGE para trabajar, con ésto obtendremos salidas bien formateadas y con un aspecto agradable :)   .

  • Trabajar con polinomios sobre diferentes cuerpos: Dependiendo del cuerpo sobre el que trabajemos los polinomios se pueden descomponer de diferentes maneras y cuando se evaluan sobre un elemento del cuerpo pueden dar resultados diferentes. Por lo general la gente trabaja sobre el cuerpo de los números reales, otros trabajan sobre los complejos, y otros sobre los racionales, esos casos son los más usuales para los no matemáticos, pero muchos otros nos encontramos con la necesidad de trabajar con otros cuerpos que nos pueden resultar mucho menos intuitivos a la hora de realizar los cálculos. ¿Y como indicamos a SAGE que estamos trabajando con un cuerpo u otro? Ejecutando el siguiente comando, a partir de ese momento estaremos trabajando con el cuerpo indicado:
    R.<x>=cuerpo[]
    donde cuerpo es el cuerpo que queramos (y sea construible dentro de SAGE), para los racionales usamos QQ, para los reales RR, y para los complejos CC, y x es la variable que usaremos para el polinomio. Nosotros podemos construir otros cuerpos, de momento yo sólo he aprendido a construir cuerpos finitos (hay teoremas de isomorfismo que me aseguran que los que construyo son los únicos finitos). Para construir cuerpos finitos utilizaremos el comando:
    NombreQueLeQueramosDarAlCuerpo=FG(número)
    donde número és la cantidad de elementos que tendrá el cuerpo. Podemos probar las diferencias usando, por ejemplo, el comando factor sobre una expresión polinómica, de esta forma:
    factor(x^8-1)
  • Información extra que os pueda interesar: Dado que SAGE es muy extenso y yo he explicado muy pocas cosas, para los que no tengan mucha experiencia o por el contrario, quieran profundizar aun más, os enlazo algunos documentos:

Espero que a alguien le pueda servir ésto :) . Saludos!

Tivion and Kraken

A finales de septiembre empezó el Concurso Universitario de Software Libre (CUSL), éste año no me presenté por que no tenía claro que pudiera dedicarle tiempo a ningún proyecto y ya tenía los antecedentes del año anterior, pero no por eso he perdido el interés en él.

Entre los proyectos concursantes hay dos proyectos bastante interesantes relacionados con el streaming de video. Estos son Tivion y Kraken, dos proyectos con enfoques muy diferentes y también dignos de atención.

Kraken es un proyecto dedicado al streaming de video vía redes descentralizadas p2p, pero con ciertas innovaciones técnicas que permitirían ajustar dinámicamente la calidad del video al ancho de banda disponible de forma dinámica. Podéis saber más de él a través de su blog: http://matachana.net/kraken/blog/ . Aviso: por el momento solo se trata de vaporware, estudios y documentos, no hay una implementación, aunque parece que el nivel técnico es alto y tiene muchas probabilidades de ver la luz :) .

Por otro lado Tivion es un programa dedicado a ver canales de televisión de todo al mundo a través de Internet, ahora mismo está en su versión 0.03, disponible para Ubuntu (Jaunty, Karmic y la futura Lucid, en 32 y 64 bits) y para Arch. El anuncio oficial de la última release lo podéis encontrar el blog de Shakaran: http://shakaran.es/blog/2009/12/tivion-0-0-3-opiron-liberado/ . Personalmente lo he estado probando y va bastante bién, os lo recomiendo si queréis ver algún programa de televisión en vuestro ordenador y mejor aún, con un programa libre :) .

Saludos!

Linux+ online :)

Hoy he recibido un newsletter indicando que se puede descargar gratuítamente una versión online de Linux+ (número 61, en pdf), hay algunos artículos interesantes así que la recomiendo: http://lpmagazine.org/es/numero-on-line .

Los que más me han interesado son:

  • Make: compilación inteligente
  • Interfaces gráficas con SDL
  • Programando con inteligenia (artificial)

Ahora mismo estamos dando los retoques finales a las prácticas de la asignatura Gràfics per Computador I , dado que no disponemos de mucho tiempo para trabajar (pues tenemos muchas asignaturas y en todas hay muucho trabajo) preferimos programar toda la práctica con Python y python-opengl por encima de lenguajes más eficientes como C o C++. Obviamente el rendimiento ha mermado de forma impresionante si lo comparamos con lo que hubiéramos obtenido haciéndolo con los otros lenguajes mencionados… pero nos da absolutamente igual, simplemente tenemos que demostrar que sabemos hacer lo que nos han pedido, no es nada que tenga que entrar en producción.

El caso es que cuando digo lo de poco tiempo lo digo con todas las de la ley, tan poco que no hemos podido encontrar ningún hueco para coincidir en persona, así que hemos tenido que optar por trabajar a distancia con casi todo lo que eso comporta normalmente. Y digo con casi todo porque en este caso Gobby nos ha puesto las cosas fáciles :) . Gracias a este programa podemos editar documentos simultániamente (viendo los cambios en tiempo real, omitiendo el pequeño retardo claro) mientras podemos charlar y comentar los cambios a través del chat integrado.

Su sistema de funcionamiento es sencillo, uno de los que participa en el proceso de edición de los documentos inicia una sesión, lo que viene a significar que crea la instancia de un servidor al que otros se pueden conectar, los demás se conectan.. y listos :)   (se pueden establecer claves de acceso por si se quieren grupos cerrados :) ). Por otro lado, por el momento solo se puede trabajar con ficheros de texto plano, así que para ciertas tareas está un poco limitadito. Habría que ver si se quiere “mejorar” ese aspecto o si ya se diseñó el programa con la idea de que funcionara tal y como funciona para no hacer nada más en un futuro. Sea como sea, ya sabéis, si os interesa podéis intentar añadir funcionalidad al programa y me haréis un favor xD… y si no, talvez un día me ponga a ver si puedo hacer algo yo con mis propias manos ;) .

Saludos! (Voy a seguir con la práctica… )

P.D.: Para los KDE-adictos (aunque cada vez quedan menos gracias a las regresiones de KDE4) hay un programa que realiza la misma función que Gobby (y puede interactuar con éste) que se llama Kobby, aun está en fase de desarrollo, pero seguro que a los aventureros eso no os asusta. Lo podéis encontrar en http://greghaynes.github.com/kobby/ .

Ayer añadí y activé un plugin que supuestamente iba a proteger mi blog de spam en forma de comentarios (además de pingbacks y trackbacks) sin la necesidad de usar métodos Captcha (era una capa de protección previa a la que ofrece Akismet). El plugin se llama Anti-Captcha, y la teoría sobre su funcionamiento era bonita (aunque no llegué a entenderla del todo pues tenía sueño y sólo quería probar qué tal iba, ahora tengo serias dudas sobre si había algo que entender).

Al parecer la instalación de dicho plugin había causado que incluso los comentarios legítimos no aparecieran en la lista de comentarios, y para postres me impedía a mi entrar al menú de administración. Mi decisión, obviamente, fue eliminar el plugin, ¿pero cómo hacerlo si no puedo acceder al panel de administración? Borrar los ficheros parece una solución buena, eso si no se piensa que su activación ha modificado la base de datos del blog y nos puede ocasionar problemas que haya referencias a ficheros inexistentes.

Así pues, la solución pasa por otro camino, casi igual de simple también. Lo primero que debemos hacer es acceder a la base de datos y visitar la tabla options (que tendrá un prefijo wp_ o el que hayáis decidido vosotros durante la instalación o tras una posterior modificación). En esa tabla debemos buscar una entrada tal que en el campo option_name tenga el valor active_plugins , vamos a editar esa entrada :) .

Si nos fijamos bien, veremos que en el campo option_value hay una cadena muy larga que empieza por “a:numero:{i:0;…“, ese primer número que nos encontramos indica la cantidad de plugins activados que tenemos en nuestro blog, dado que vamos a desactivar uno de ellos, cambiamos ese número por el mismo decrementado en una unidad, así, si tenemos 20, pondremos 19. Fijémonos ahora que para cada plugin encontramos una subcadena del estilo ‘i:numero;s:numero:”nombre_fichero_plugin.php”;‘, el número que acompaña a la i es una especie de índice que indica la “posición” del plugin dentro del blog, ahora sabiendo ésto ya podemos decidir qué hacer para eliminar el plugin de la base de datos sin que aparezcan inconsistencias en ésta. Primero de todo eliminamos la subcadena que hace referencia a ése plugin, depués debemos decrementar en una unidad todos los números que van precedidos de una i después de la aparición de la subcadena que hemos eliminado. Con ésto habremos acabado.

Lo que nos queda, si queremos eliminar cualquier rastro del plugin que nos ha amargado la existencia, es eliminar físicamente los ficheros del bicho en cuestión que tenemos en el servidor, lo podemos hacer desde el servicio ftp, ssh o desde el mismo panel de administración del blog, para gustos los colores.

Ayer actualizé a la versión 9.10 de Ubuntu en parte para poder usar las “nuevas” versiones de algunos programas de cálculo simbólico, entre ellos Maxima (me daba palo tener que andar compilando por mi cuenta y resolviendo dependencias). El caso es la versión de Maxima que se distribuía con Ubuntu Jaunty (9.04) era la 5.13, del año 2007… no hace falta decir que andaban un poco desfasados. Actualmente la última versión disponible es la 5.19, liberada hace poco más de dos meses, y la versión disponible en Ubuntu 9.10 es la 5.17, que también ha sido liberada durante el 2009 el 26 de diciembre de 2008, no nos podemos quejar en cuanto a novedad se lo toman con calma.

Pero, aquí está el problema, no funciona. Simplemente no se puede realizar casi ningún cálculo que supere en complejidad al 1+1 que se enseña en las guarderías, nuestros ordenadores se han vuelto idiotas de repente con la actualización. El problema no tiene nada que ver con un desarrollo defectuoso por parte del equipo de Maxima, en Debian funciona perfectamente, y si se descarga el código fuente y se compila a mano, tres cuartos de lo mismo. De hecho en las sucesivas versiones de Maxima que han sido liberadas se corrigieron un montón de errores, se hicieron algunos perfeccionamientos en los cálculos (entre ellos aumentar el conjunto de ecuaciones diferenciables resolubles, de ahí mi interés por la novedad) y se añadieron un montón de funciones nuevas así como también se aumentó el rendimiento de algunos cálculos.

Parece ser que en Ubuntu los detalles relacionados con el software científico les importan un comino, y no solo hablo por Maxima. La misma desactualización que había con Maxima en la 9.04, la había con SAGE… pero es que sigue habiéndola en la 9.10, utilizan la versión 3.un_numero_muy_bajo cuando la versión actual estable es la 4.2.1. El software libre es increíblemente importante (y cada vez más) para el desarrollo científico actual, pero los chicos de Ubuntu no parecen preocuparse de ello y lo están dejando demasiado de lado, hay que darles un toque! Al final tendré que enviar los datos del software que instalo para decantar (aunque sea un poco solo) las estadísticas a favor del software científico…

[Actualización interesante (con solución incluída)]

Os enlazo la página dedicada al bug que comento https://bugs.launchpad.net/ubuntu/+source/maxima/+bug/303587 . El bug se empezó a describir en la versión 8.10 de Ubuntu, y se medio solventó a base de parchecitos y arreglos (pues en la 9.04 me funcionaba medio bién). El caso es que si vamos leyendo el registro de ese bug apreciaremos como se va comentando su aparición en las sucesivas versiones de Ubuntu. Lo interesante del caso es que en cada una de las versiones, la causa es totalmente diferente, y la causa subyacente del problema en la versión 9.10 es la más pintoresca que se pueda imaginar.

Por lo visto el problema se produce debido a una característica de los nuevos núcleos de Linux que está activada por defecto. Esta característica es la aleatorización del espacio de direcciones virtuales [1], que básicamente sirve como medida de seguridad (sobretodo cuando se utiliza virtualización). Por lo visto eso afecta de alguna extraña forma al intérprete de Lisp que utiliza Maxima internamente. La solución para el problema de Maxima es sencilla aunque reduce ligeramente la seguridad del sistema, por eso mismo se debería buscar una solución más elaborada que la que propondré (sacada del bugtracker):

Editar el fichero /etc/sysctl.conf y añadir la línea

kernel.randomize_va_space = 1

Después de eso se tiene que ejecutar sysctl -p.

Referencias:

  1. http://es.wikipedia.org/wiki/Exec_Shield

En realidad el título debería ser “Resolver sistemas de EDOs de primer orden con coeficientes constantes con Maxima“, pero obviamente era demasiado largo. Lo que escribiré aquí se puede encontrar en la ayuda de Maxima (no sé donde está exactamente si se quiere acceder a pelo a los archivos, pero es accesible fácilmente desde la interfaz wxMaxima), pero creo que puede ser interesante explicar como se ejecutan cálculos como éstos para aquellos que no conozcan demasiado este programa.

Como ya he indicado en el título, hago referencia a EDOs con coeficientes constantes porque Maxima (almenos con al versión instalada en Ubuntu Jaunty 9.04) tiene algunas dificultades para trabajar con ecuaciones más complejas, en todo caso puede ser muy útil tener una herramienta como ésta a mano si no se dispone de otras como Maple (mi caso, por ejemplo).

Entonces, para resolver las siguientes ecuaciones relacionadas con el típico problema de los tanques interconectados entre los que fluyen líquidos (aquí luciré el nuevo plugin para mostrar latex en WordPress :D ):

 \begin{cases} \dot{QA_{T}}(t) = 3 + \frac{4}{100}QB_{T}(t) - \frac{5+8}{100}QA_{T}(t) \\ \\ \dot{QB_{T}}(t) = 3 + \frac{5}{100}QA_{T}(t) - \frac{4+9}{100}QB_{T}(t) \\ \\  QA_{T}(0) = 0 \\ \\ QB_{T}(0) = 0 \end{cases}

Lo haremos con los siguientes comandos:

 eq1: 'diff(x(t), t) = (-13/100)*x(t) + (4/100)*y(t) + 3;
 eq2: 'diff(y(t), t) = (5/100)*x(t) + (-13/100)*y(t) + 3;
 atvalue(x(t), t=0, 0);
 atvalue(y(t), t=0, 0);
 desolve([eq1, eq2], [x(t), y(t)]);

En las primeras dos líneas definimos las dos ecuaciones diferenciales (les damos nombre poniendo el nombre seguido de dos puntos y seguidamente la ecuación). En las siguientes dos líneas se escriben las restricciones que tienen que satisfacer las soluciones (que, no lo olvidemos, son funciones). Y por último se le passa un array con las ecuaciones a la función dsolve, así como un array con el nombre de las funciones que queremos encontrar. Ésto es todo amigos, espero que os sirva ;) .

A muchos nos duele a veces tener que resolver según que cálculos a mano por lo tediosa que se vuelve al tarea. Es por eso que acudimos a herramientas como Maple, Matlab o el realmente admirable Mathematica (todas ellas privativas) para que nos simplifiquen los cálculos y poder dedicar ese tiempo a ver alguna serie friki por internet. El problema es que tenemos que pagar por ellas, hacer el piratilla o racanear licencias a nuestra universidad, lo que no siempre resulta algo grato.

Otro problema añadido (si queremos hacer demostraciones matemáticas con ellos y realmente nos importa que tengan cierta validez científica) es que dado que el código de dichos programas es cerrado, una parte de la demostración no es accesible a nadie, es decir, nadie puede verificar realmente que todas las operaciones que ha hecho internamente el programa en cuestión sean realmente correctas (porque no se puede ver su código), en todo caso se tiene que volver a hacer a mano y comparar, con lo que no se gana absolutamente nada. A esto tenemos que añadir que las demostraciones tampoco son accesibles a casi nadie que no tenga una capacidad adquisitiva concreta pues para comprobar que el programa da esos resultados concretos necesita tenerlo, y para ello debe pagar una licencia. Es decir, no es una buena idea usar software privativo para crear conocimiento científico.

¿Y qué soluciones hay? Pues de todo un poco, tenemos Octave, Maxima y… nuestra gran estrella: SAGE. SAGE és una pieza de software genial que nos permite hacer casi de todo, funciona en la línea de comandos, pero también tiene una interfaz web que va a las mil maravillas. Podemos encontrarlo en su página oficial http://www.sagemath.org en su versión más reciente (En los repos de Ubuntu y Debian está algo anticuado). Yo particularmente utilizo una mezcla entre Maxima y SAGE, dentro de poco podremos usar un nuevo programa llamado Cantor (de KDE) que viene a ser una interfaz que aglutinará el uso de Maxima, R, SAGE y KAlgebra, la estoy esperando con ilusión.

PdfMod 0.8 publicado

Por fin se ha liberado la nueva versión 0.8 de PdfMod, hace tiempo que no se realizaba ningún cambio en el proyecto y ya iba siendo hora que los cambios realizados a finales de Septiembre y principios de Octubre se publicaran bajo una nueva versión :) . Parece ser que se han añadido a última hora mejoras en el estilo del código, pero hay que decir que eso no tiene repercusión alguna para el usuario final, al menos no en esta versión, puede que en versiones futuras facilite la programación y se acelere el trabajo.

Como en otras versiones, los que hemos colaborado somos unos cuantos, principalmente se han añadido traducciones, se ha añadido la posibilidad de cargar más de un documento a la vez a través del diálogo de fichero y se ha mejorado levemente la usabilidad, asociando la combinación Ctrl-Shift-Z a “rehacer” y añadiendo un asterisco al nombre de fichero mostrado cada vez que tenga modificaciones no guardadas.

Podéis ver el changelog en esta dirección: http://git.gnome.org/cgit/pdfmod/plain/NEWS y el anuncio oficial de Gabriel Burt en su blog: http://gburt.blogspot.com/2009/11/pdf-mod-08.html .

Powered by WordPress | Theme: Motion by 85ideas.