Archivo de la etiqueta: Software libre

Post técnico #7: Solucionar problema reproducción de video HTML 5 con Firefox en Fedora

Tras la última actualización (a la fecha de publicación de este post) de la librería ffmpeg en la distribución GNU/Linux Fedora (24), la reproducción de videos en Youtube desde mi Firefox empezó a fallar, mostrando primero el mensaje “Se ha producido un error, vuelve a intentarlo más tarde (ID de reproducción: “W#E$R%TY!Q)” y luego la reproduccin saltaba a Flash Player. Si tu sistema presenta estos mismos sintomas, tal vez esto te pueda ayudar.

  • Entra a Firefox y digita esto en la url: about:config. Esto te mostrará una pantalla advirtíendote del riesgo de modificar la configuración del navegador. Dile que aceptas el riesgo (en el respectivo botón).
  • Aparecerá una pantalla con un gran listado de configuraciones. En la barra de búsqueda digita media.ffmpeg.enabled, lo cual filtrará el listado, quedando una única opción cuyo valor es true.
  • Dale doble click a esta opción, para deshabilitar la reproducción de medios vía FFMPEG. La opción ahora debería tener el valor false y su texto quedar en negrita (indicando que el valor de dicha configuración fue alterado).

Listo, prueba de nuevo en Youtube y con algo de suerte te funcionará de nuevo el reproductor HTML5. Ese fue mi caso.


Hernàndez: Software Libre: técnicamente viable, económicamente sostenible y socialmente justo

Software libre: técnicamente viable, económicamente sostenible y socialmente justo
© openlibra.com

Aun en el 2014 existe mucha especulación sobre el Software Libre en general, regularmente por desconocimiento de los ciudadanos sobre él, desconocimiento que bien puede deberse al desinterés en temás tecnológicos por parte de ciudadanos idiotamente cómodos o de aquellos abarrotados por la enajenante explotación productiva, a la existencia de intrincados sistemas de difamación sobre él por ser un modelo alternativo a modelos poderosos y tradicionales o bien por la complejidad tecnológica de su nacimiento. Esta situación llevó a Jordi Mas I Hernàndez, entre seguramente muchos otros casos, a escribir un libro sobre el tema para limpiar de polvo el ambiente.

El libro de Hernàndez recoge varias aristas del Software Libre, desde su historia, pasando por sus creaciones más memorables, sus mitos, su jurisprudencia, sus modelos de negocio, hasta su aplicación en los sistemas públicos de diferentes regiones mundiales. Esto lo hace interesante, puesto que aunque es un libro escrito por un programador, esto no hace que el libro se limite a explicaciones técnicas, sino que desborda esto y avanza hacia una visión integral del Software Libre que envuelve al lector y da solución a un buen número de sus dudas a través de la exposición de conceptos y una amplia casuística.

Como valor agregado al desarrollo de este contenido, el hecho de que el libro haya sido publicado bajo una licencia copyleft, más específicamente una Creative Commons BY-NC 2.0, es una intención que se sube al barco de la distribución del conocimiento para generación de conocimiento. Esto es naturalmente coherente con el contenido del libro y empuja hacia lo que debe ser natural en el conocimiento humano; su dispersión entre y hacia la mayor cantidad de, sino todas, las mentes senti-pensantes. En últimas ¿qué sería del conocimiento si perece en la mente de un egoísta? Nada más que oportunidades invisibles.

Ahora bien, aunque el libro se lleva un buen concepto en tanto erradicador de cortinas de humo en torno al Software Libre, el autor nos queda debiendo un tratamiento más amplio de la dimensión social, aquella misma que puede ser abordada por el Software Libre en aras de la mejora de la calidad de vida de los ciudadanos a través de su empoderamiento sobre la tecnología y de su apertura hacia la mentalidad hacker, llevada a todos los aspectos de su vida de forma que la creatividad horade los sistemas constituidos y anacrónicos que imperan en la cultura y educación modernas.

Este ejemplar hace parte de un buen número de literatura que comprende el amplio universo de la Cultura y el Software Libre, situación que debe ser reforzada con el debate de tal literatura y con la producción de nuevas publicaciones del mismo talante que vayan poniendo al día el conocimiento que se ha construído colectivamente.


Post técnico #5: Soporte para exFAT en GNU+Linux Fedora

Para dar soporte al privativo sistema de archivos exFAT en GNU+Linux, con el cual se encuentran formateados muchos dispositivos de almacenamiento USB, se deben instalar los paquetes fuse-exfat y exfat-utils. Estos paquetes se encuentran en los repositorios de RPM-Fusion:

su -c 'yum install fuse-exfat exfat-utils'

Esto instalará una implementación libre del sistema de archivos exFAT a través de FUSE.

Con esto rompemos un nuevo muro tecnológico impuesto por la industria neoliberal de la tecnología.

PD: Si no tienes instalados los repositorios de RPM-Fusion, instalalos mediante este comando y luego podrás instalar fuse-exfat:

su -c 'yum localinstall http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-18.noarch.rpm'


Post técnico #4: Configurar archivo de identidad (clave privada) específico en SSH

Cómo crear claves para poder conectarse a un servidor remoto mediante SSH es una explicación ampliamente difundida en Internet. Para la muestra estos casos:

En estas explicaciones se puede ver cómo es creado un par de llaves: una pública (id_dsa.pub, la cual se comparte con el resto del mundo) y una privada (id_dsa). Si es así, todo funciona bien. Pero cuando se nos ocurre cambiar el nombre de tal par de archivos o ubicarlos en subdirectorios dentro del mencionado directorio ~/.ssh (para sistemas GNU/Linux) entonces la cosa deja de ir bien.

Lo que ocurre entonces es que el servicio ssh, cuando va a autenticar nuestra clave pública alojada en el servidor contra nuestra clave privada (ubicada ahora, por ejemplo, en ~/.ssh/clave-empresa/empresa_id_rsa) no puede encontrar nuestra clave privada o “archivo de identidad”. Después de algunos madrazos, se descubre que tenemos que hacer lo siguiente:

  1. Acceder en una consola como superusuario y abrir el archivo /etc/ssh/ssh_config con nano, vim o el editor preferido de cada quien. Por ejemplo, empleando VIM el comando sería así: su -c 'vim /etc/ssh/ssh_config'
  2. Agregar la siguiente linea después de la entrada Host *: IdentityFile ~/.ssh/clave-empresa/empresa_id_rsa (según nuestro ejemplo, pero el nombre del subdirectorio, si es que lo hay, y el del archivo de clave privada debe ser cambiado por el nombre que cada quien utilice). Así, la entrada dentro del archivo de configuración de SSH quedaría mas o menos así:

    ...
    # PermitLocalCommand no
    # VisualHostKey no
    # ProxyCommand ssh -q -W %h:%p gateway.example.com
    Host *
    IdentityFile ~/.ssh/clave-empresa/empresa_id_rsa
    ...

    Luego se guardan estos cambios, sobreescribiendo el archivo.

  3. Reiniciar el servicio ssh: su -c 'systemctl restart sshd.service'. Podemos comprobar su estado con el comando systemctl status sshd.service

Listo, ahora cuando el servicio SSH va a autenticar nuestra clave pública alojada en el servidor remoto contra nuestra clave privada (ubicada ahora, en nuestro ejemplo, en ~/.ssh/clave-empresa/empresa_id_rsa) la autenticación se llevará a cabo exitosamente. Cabe anotar que lo anterior funciona en la distribución GNU/linux Fedora. La ruta del directorio ssh en las otras distribuciones puede que varíe.

Por ahora dejamos aquí. Cualquier duda o comentario es bienvenido.


Post técnico #2: PostgreSQL y lectura streams corruptos

Cuando se emplea PostgreSQL -puede ocurrir con otros Sistemas de Gestión de Bases de Datos (DBMS por sus suglas en inglés), no lo sé- en un entorno JEE 6 (lo cual se realiza a través de un driver JDBC suministrado por PostgreSQL aquí), JPA2 (EclipseLink), Glassfish 3.1, puede que durante la ejecución de nuestra aplicación, al intentar cargar información desde nuestra fuente de datos, se obtenga el siguiente problema:

… invalid stream header: BB656430…
Caused by: java.io.StreamCorruptedException: invalid stream header: BB656430
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:782)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279)
at org.quartz.impl.jdbcjobstore.PostgreSQLDelegate.getObjectFromBlob
(PostgreSQLDelegate.java:102)
at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTrigger
(StdJDBCDelegate.java:2135)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger
(JobStoreSupport.java:1554)
… 58 more

Después de indagar y echarle la culpa a algún stream que pudiera quedar abierto mientras se leía la base de datos con anterioridad o a la serialización defectuosa del objeto que se pretende almacenar como BLOB en alguna tabla, es mejor echarle una mirada a la versión del driver JDBC con el cual se está realizando la conexión al DBMS; la versión de dicho driver debe ser superior a la del DBMS. Tuve este problema cuando intentaba conectarme a PostgreSQL 9.1 mediante el driver postgresql-8.3-603-jdbc3, cuando en realidad el driver que necesitaba era el postgresql-9.1-901-jdbc4. Para instalar dicho driver en la máquina virtual de Java se debe copiar el .jar del driver JDBC obtenido desde el sitio de descargas de PostgreSQL en el directorio $JVM_PATH/jre/lib/ext/, borrar el existente en tal directorio y reiniciar el equipo. En el url, $JVM_PATH hace referencia al directorio donde se ubica la Máquina Virtual de Java (JVM por sus siglas en inglés) que se está utilizando para compilar y ejecutar la aplicación. En mi caso (Sistema operativo: GNU/Linux Fedora 16, JVM: OpenJDK 1.6.0) el url completo era el siguiente:

/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/ext/

Para saber cuál era este directorio, desde mi IDE Netbeans (que es el que utilicé en ese momento para compilar y correr la aplicación), me dirigí al menú Tools->Java Platforms. Allí se lista la información necesaria sobre la plataforma utilizada por el IDE.

Plataformas de Java en Netbeans IDE

Así que no olviden actualizar sus drivers después de actualizar sus servidores.