Software Libre, Canon Digital, Política y Lobbys

Nerea Alzola Álvarez, Parlamentaria del Grupo Popular Vasco, ha presentado en el Parlamento Vasco una solicitud de comparecencia a la Comision de Industria, Comercio y Turismo, de D. Santiago Ureta, Presidente de la Asociación Música en Internet, integrante de la Plataforma TodosContraElCanon, para que informe sobre el «canon digital».

El grupo popular cree constructivo el pronunciamiento de los vascos a favor de la búsqueda de otras fórmulas para la protección de la propiedad intelectual, y en apoyo a una modificación de la regulación relativa al «canon digital».

Además, añaden que «hemos tenido conocimiento de la misiva que la SGAE ha dirigido a la Presidencia de este Parlamento [Vasco]. Vemos la necesidad de escuchar otros puntos de vista, otras propuestas que realmente aporten soluciones, […] sensatas y viables»

También ha pedido la comparecencia de Miguel Pérez Subías, presidente de la Asociación de Usuarios de Internet, por la misma razón. Yo hubiera invitado al presidente de la Asociación de Internautas, Víctor Domingo, en su lugar (me parece un mejor orador), pero bueno, para una vez que estoy de acuerdo con algo que dice el PP, tampoco voy a poner más peros.

Semana interesante en el el parlamento vasco, dado que esta misma semana se ha hecho pública también la petición de comparecencia ante el Parlamento de Daniel Armendáriz (Presidente de ESLE), a petición de Eusko Alkartasuna (petición realizada por Rafa Larreina),  con el objetivo de que «traslade al foro parlamentario la realidad del sector del Software Libre de Euskadi, su aportación a la sociedad y a la economía vasca, así como sus potencialidades de futuro.»

Para cerrar, una noticia relacionada con política y canon, leída en El Confidencial: «Manuel Marín presidirá el lobby en España de las majors de cine estadounidenses para luchar contra la piratería». Menudo cambio para el ex-presidente del Congreso… poco le ha durado la lucha contra el cambio climático.

¿Quién se ha llevado mi sonido?

Estás trabajando tan a gusto con una buena música de fondo en YouTube (buena colección de música en un sitio de vídeos…), cuando de repente, entre canción y canción el sonido deja de funcionar. ¿Se habrá quedado el plugin de Flash colgado? Cierras todas las pestañas/ventanas/instancias del navegador, reintentas la conexión y nada. No se oye nada. Abres el player de mp3 y tampoco. Grabas un sonido con el asistente de GNOME y tampoco.


$ /etc/init.d/alsa-utils reset

Tampoco. ¿Reiniciar? ¿En Linux? No way.

Solución : (la dejo apuntada aquí porque me ha hecho falta ya varias veces y nunca me acuerdo del dichoso comando)

# lsof -w $( find /dev -group audio )

Esa línea nos da la lista de culpables que tienen el dispositivo de sonido ocupado. A continuación vamos matándolos por su PID ¡y listo! Volvemos a tener sonido y a trabajar (no sin antes documentar el paso en DiarioLinux, para el futuro 😉

Nota: el culpable era OpenOffice (cosa que nunca hubiera sospechado…)

Google publica el código fuente de Browser Sync

La popular extensión Google Browser Sync para Firefox, que permite sincronizar los marcadores del navegador, las sesiones y algunas otras preferencias entre múltiples ordenadores, es ahora un proyecto open source, bajo licencia BSD y disponible en Subversion a través de la web Google Code.
Google anunció que dejaba de dar soporte a esta extensión a partir del lanzamiento de Firefox 3. Como consecuencia, muchos usuarios de GBS probaron la versión alpha de la extensión Mozilla Weave y quedaron contentos con ella (soporta Firefox 3), por lo que ahora no ven por qué han de volver a GBS. No obstante, servirá al menos para que aquellos usuarios que siguen usando GBS no se queden en la estacada y para estudiar el código de una aplicación Google, que nunca está de más…

Noticia leída en ArsTechnica.

«Patrón singleton» revisited

Estoy leyendo un delicioso libro, «Effective Java», de Joshua Bloch, sobre buenas prácticas Java para programadores Java (el segundo capítulo, por ejemplo, empieza explicando cómo usar métodos de factoría estáticos y sus ventajas sobre los constructores típicos, para que os hagáis una idea…). El libro es una joya, de los que merece la pena leer junto a un buen café, tomando notas en los laterales, porque está cargadito de apuntes que reutilizarás en el futuro, seguro, al menos si programas en Java (sí, ya sé, «Java is evil», etc.. etc…. ) Enumera distintos ítems, (vamos a llamarles recetas), en las que indica cómo se hace tal cosa en Java y cómo se debería de hacer. En muchas ocasiones, las recetas están directamente relacionadas con patrones de diseño, soluciones a problemas comunes. En otras, con anti-patrones : soluciones que NO se deberían de adoptar ante problemas comunes.

Sólo un comentario más de presentación, extraído del prefacio, en palabras de James Gosling, el padre de Java: «I sure wish I had had this book ten years ago. Some might think that I don’t need any Java books, but I need this one.»

Bien, una vez hechas las introducciones, pasamos a la chicha. Uno de los puntos sobre el que ya hablamos en otro post de DiarioLinux trata sobre el patrón singleton. El caso es que Bloch recomienda seguir una plantilla para aplicar el patrón singleton diferente a la que recomienda el libro de Liskov (Program Development in Java). La recomendación (de Bloch) es la siguiente:


// Singleton with public final field
public class Elvis {
public static final Elvis INSTANCE = new Elvis();
private Elvis() { ... }
public void leaveTheBuilding() { ... }
}
// como todo el mundo sabe "There's only one Elvis" :-)

Yo mismo recomendaba la plantilla de Liskov frente a la de Bloch… pero visto lo visto, y sabiendo que la recomendación de Liskov podría tener condiciones de carrera… ya no hay duda. Sin embargo, el propio Bloch indica que «un consumidor de ese código con suficientes privilegios podría invocar al constructor privado usando las capacidades de introspección de Java, con el método AccessibleObject.setAccessible», así que para evitar ese problema (hay que ser rebuscado de narices), recomienda esta otra forma:


// Singleton with static factory
public class Elvis {
private static final Elvis INSTANCE = new Elvis();
private Elvis() { ... }
public static Elvis getInstance() { return INSTANCE; }
public void leaveTheBuilding() { ... }
}

que se parece muchísimo a la recomendación de Liskov, pero sin el problema de las condiciones de carrera.

Finalmente, llega la guinda. Bloch dice que todo lo anterior está muy bien y tal, pero que teniendo disponible Java 1.5 desde hace ya unos cuantos añitos, que nos podríamos simplificar todos un poco la vida mediante el uso de tipos enumerados (disponibles en Java desde la versión 1.5, o 5.0 para aquellos lectores más comercial-friendly):


// Enum singleton - the preferred approach
public enum Elvis {
INSTANCE;
public void leaveTheBuilding() { ... }
}

«While this approach has yet to be widely adopted, a single-element enum type is the best way to implement a singleton.» Amén 🙂

PD: buscando documentación sobre esto, me he encontrado casualmente con la receta que comento en un artículo de InformIT.