Pywinery 0.1-7

Pywinery es una aplicación que permite tener varios prefijos de Wine, usarlos indistintamente, configurarlos y lanzar los ejecutables que queramos en los prefijos que queramos, fácilmente, y sin tocar la consola, desde una interfaz lo más simple posible.

Podéis descargar el .deb desde http://code.google.com/p/pywinery/downloads/list

Con esta nueva versión, se unifica la apariencia lo más posible para cuando se abre lanzando una aplicación y cuando no, permitiendo en ambos casos gestionar los prefijos desde una nueva pantalla, además de permitir establecer si se quiere que cierta aplicación (al ser lanzada) se ejecute siempre con determinado prefijo, sin preguntar.

Pantalla principal de Pywinery

La nueva pantalla de gestión de prefijos permite ver, organizadamente, en qué directorios se encuentran los prefijos, añadirlos o quitarlos, y las aplicaciones que se hayan asociado a dichos prefijos, para eliminarlos.

Gestor de prefijos de Pywinery

Mientras otras aplicaciones para gestionar prefijos se centran en hacer una aplicación enorme, y puede que complicada, para hacer algo tan simple como lanzar determinados ejecutables en ciertos prefijos, Pywinery lo hace en forma de lanzador, simplificándolo todo al máximo.

Ubuntu 10.04, agosto de 2010, Mplayer ha muerto

Yo tan feliz, listo para ver mi ración diaria de porno series sin molestos anuncios, y me encuentro que mplayer no funciona y suelta lo siguiente por stderr:

mplayer: relocation error: mplayer: symbol codec_wav_tags, version LIBAVFORMAT_52 not defined in file libavformat.so.52 with link time reference

Y claro, esos inteligentísimos señores empaquetadores de Ubuntu han actualizado el libac, haciendo que el imprescindible mplayer muera instantáneamente de viejo. Alguna cabeza pensante ya ha corregido el bug, pero por razones que desconozco no ha aparecido en los repositorios, y todo hace temer que, como de costumbre, vengan a solucionarlo en la próxima versión de la distribución.

Pero para variar, despierto de mi letargo veraniego para salvaros.
Todo desde consola, añadid el repositorio de rvm (un alma caritativa) en launchpad:

sudo add-apt-repository ppa:rvm/mplayer

Y actualizad:

sudo apt-get update&&sudo apt-get dist-upgrade

Se actualizará mplayer (y mencoder si lo tenéis instalado) a una versión más reciente.

Java Forever, la película

No ensuciaré esta entrada con una entradilla trolesca, ¿o debería decir trolífera? Da igual: tan sólo admirad el siguiente... ¿trailer?


Vía: despuesdegoogle.com

WebM (y h264) en Chromium

Muchos somos los que odiamos el dichoso Flash de Adobe, por su horrible implementación para linux, porque devora recursos, mata baterías, por estar plagado de agujeros de seguridad y por ser insultantemente inestable.

Por suerte, el tag video de HTML5 permite de prescindir completamente de él para reproducir vídeo, pero entonces surgió el problema de los códecs, al menos hasta que Google compró y liberó el VP8 como WebM y con licencia BSD. Por desgracia, Apple se niega a apoyar WebM por intereses corporativos (acabarán cediendo), pero bueno, todo tiene solución.

Las últimas versiones de prueba tanto de Mozilla Firefox como de Chromium (la versión libre de Google Chrome) incluyen soporte para HTML5 con WebM, pero por el momento el único lo suficientemente estable como para ser usado día a día es Chromium, y es el que os diré como instalar.

Lo primero, añadir el repositorio de chromium-daily, que contiene siempre versiones muy recientes de Chromium:

 sudo add-apt-repository ppa:chromium-daily/ppa

Actualizamos la lista de paquetes, e instalamos los paquetes necesarios tanto del navegador, como de los códecs.

sudo apt-get install chromium-browser chromium-codecs-ffmpeg-extra chromium-codecs-ffmpeg-nonfree

Por último, deberemos activar el reproductor HTML5 de Youtube, yendo a http://www.youtube.com/html5.

Ahora solo queda navegar normalmente por youtube, no todos los vídeos se verán con el nuevo reproductor (en la página dónde se activa lo explica), pero sí los más recientes, y aunque no podamos librarlos del todo del horrible plugin de Adobe, sí podremos evitar que nos fastidie la vida de vez en cuando y eso, queridos amigos, no tiene precio.

Python y la piscina de hilos

Siempre he tenido poblemas con la gestión de hilos en Python a la hora de desarrollar aplicaciones multiproceso. Algunos debidos a ciertas particularidades de las librerías gráficas, fácilmente solucionables, y otros dada la naturaleza dinámicamente impredecible de Python (he usado hilos en Java y Mono, y nunca me han parecido tan inestables en este aspecto).

De casualidad navegando por CRySoL, me he topado con una solución genial para Python, que hace transparente la gestión la ejecución multihilo, de una forma mucho más eficiente que andar construyendo y destruyendo diferentes subprocesos para cada hilo paralelo: tener un almacén o piscina de subprocesos que vayan ejecutando las instrucciones de una cola de ejecución.

Parece complicado, pero veréis que no lo es en absoluto.

EDITO 19.19.2010: Podéis descargar la librería desde: https://arco.esi.uclm.es/svn/public/prj/atheist/pyarco/Thread.py

Podéis descargar la librería desde https://arco.esi.uclm.es/svn/public/prj/pyarco/pyarco/threads.py.

Hacemos una prueba sencilla: pidiendo ejecutar dos veces una función con diferentes parámetros, usando dos hilos en el threadpool, y luego uno sólo.

# -*- mode: python; coding: utf-8 -*-

from time import sleep
from threads import ThreadPool

def messages_sleep(msg1,msg2,tm):
print msg1
sleep(tm)
print msg2

print "Ejecución con un ThreadPool de dos hilos"
p = ThreadPool(2)
p.add(messages_sleep,("iniciando hilo 1 (y esperando 6 segundos)","finalizando hilo 1",6))
p.add(messages_sleep,("iniciando hilo 2 (y esperando 8 segundos)","finalizando hilo 2",8))
p.join() # Esperamos a que terminen los hilos para continuar

print "Ejecución con un ThreadPool de un sólo hilo"
p = ThreadPool(1)
p.add(messages_sleep,("iniciando hilo 1 (y esperando 6 segundos)","finalizando hilo 1",6))
p.add(messages_sleep,("iniciando hilo 2 (y esperando 8 segundos)","finalizando hilo 2",8))
p.join() # Esperamos a que terminen los hilos para continuar

Y el resultado será:

Ejecución con un ThreadPool de dos hilos
iniciando hilo 1 (y esperando 6 segundos)
iniciando hilo 2 (y esperando 8 segundos)
finalizando hilo 1
finalizando hilo 2
Ejecución con un ThreadPool de un sólo hilo
iniciando hilo 1 (y esperando 6 segundos)
finalizando hilo 1
iniciando hilo 2 (y esperando 8 segundos)
finalizando hilo 2

Fuente: Patrón ThreadPool en Python en CRySoL.

Ryzom, publicado como software libre

Me entero hoy, aunque la noticia de la Free software foundation es de ayer, en base a un comunicado hecho por los desarrolladores del juego, anteayer, día 5 de mayo de 2010.

Ryzom es un juego de rol multiplayer masivo, o MMORPG, desarrollado por el estudio francés Nevrax y publicado en septiembre de 2004.

Anteriormente, el motor del juego, ya había sido liberado como GPL, pero esta vez, se trata de todo el contenido, tanto cliente como servidor, y utilidades de desarrollo.

Podría decir que es un hecho histórico y todo eso, pero sólo lo es para quienes apoyamos esto del software libre. Pero sin duda lo que a todos os interesará es que, dentro de poco, empezaremos a ver clientes nativos para múltiples plataformas, en las que incluyo Linux; además de mejoras sustanciales llevadas a cabo por la comunidad, diversificaciones y trabajos derivados.

Habéis abierto la caja de pandora: un MMORPG mínimamente potable siendo software libre. Más libre que incluso que Planeshift, al publicar el código bajo Affero GPLv3 y el trabajo artístico bajo Creative Commons (atribución, compartir igual) versión 3.

Gracias Nevrax.

Vía: Ryzom is free software! What can we do from here? (fsf.org)

Créditos: La imagen está sacada de la página oficial.

Podéis encontrar más información en el artículo de Ryzom de la wikipedia y en su página oficial ryzom.com, ambos enlaces en inglés.