Es conveniente mencionar la relación que presenta el uso de las tecnologías de
información y comunicación (TIC) con la música y los jóvenes. En la actualidad, los jóvenes
emplean diariamente las TIC para incrementar conocimiento, buscar información, relacionarse
con otras personas o para divertirse. En la música, las TIC influyen en la manera en que ésta se
crea, se produce y se difunde; éstas también han generado cambios que ofrecen gran cantidad de
opciones musicales, desde la composición hasta el consumo de la música, y que gracias a los
medios de comunicación han permitido la distribución musical masiva, inmediata y global

http://musica.rediris.es/leeme/revista/terrazasetal13.pdf

En la página oficial de spotify nos dice como debemos instalar el cliente de spotify en linux

  1. Agrega esta línea a tu lista de depósitos al # editar tu /etc/apt/sources.list

    deb http://repository.spotify.com stable non-free

  2. Si quieres verificar los paquetes descargados,
    necesitarás agregar nuestra clave pública

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 94558F59

  3. Ejecuta la aplicación - obtén la actualización

    sudo apt-get update

  4. ¡Instala Spotify!

    sudo apt-get install spotify-client

Recientemente quise instalarlo y me arrojó errores debido a que no localizaba el servidor repository.spotify.com

Al parecer esto se debe a algún problema con sus servidores DNS, para instalarlo debes utilizar http://repository-origin.spotify.com en vez de http://repository.spotify.com

Fuentes:
https://www.spotify.com/mx/download/previews/
http://community.spotify.com/t5/Help-Desktop-Linux-Mac-and/Spotify-0-9-11-for-GNU-Linux/td-p/842969/page/4

Anuncios

Para probar tus aplicaciones móviles, el android SDK incluye un emulador. El problema es que no puedes utilizar este emulador si estas ejecutando alguna otra máquina virtual -en virtualbox, por ejemplo-
Al intentar ejecutar el emulador mientras ejecutas alguna máquina virtual aparecen errores como los siguientes

ioctl(KVM_CREATE_VM) failed: Device or resource busy
ko:failed to initialize KVM

[Emulator] error libGL.so: cannot open shared object file: No such file or directory
[Emulator] Failed to load libGL.so

Tiene algo que ver con la aceleración por hardware. En la documentación de Google especifica lo siguiente

If you use another virtualization technology in your Linux platform, unload its kernel driver before running the x86 emulator. For example, the VirtualBox driver program is vboxdrv.

Para hacer esto supuestamente ejecutas sudo /etc/init.d/vboxdrv stop pero si instalaste VirtualBox desde los repositorios en Ubuntu 14.04, ete archivo no existe. Supuestamente tendrías que ejecutar los siguientes comandos para tenerlo disponible

sudo apt-get install linux-headers-`uname -r`
sudo dpkg-reconfigure virtualbox-dkms  
sudo modprobe vboxdrv

Pero seguía sin existir el archivo, descubrí -sin embargo- que existe un archivo llamado /etc/init.d/virtualbox así que ejecute el comando /etc/init.d/virtualbox stop y detuvo efectivamente los drivers del kernel. Después de hacer esto ya pude iniciar el emulador pero ahora no podía iniciar la máquina virtual de VirtualBox.

Al final he decidido no utilizar el emulador y en su lugar utilizar un dispositivo físico para poder ejecutar mi máquina virtual y probar la aplicación móvil al mismo tiempo.

Fuentes:

Para la implementación de un sistema de mensajes utilicé los llamados overlay types de GWT. Declaré una clase de la siguiente manera

    public class SystemMessage extends JavaScriptObject {</p><pre><code>    protected SystemMessage() {
    }

    public final native String getId()/*-{
        return this.id;
    }-*/;

    public final native String getHtml()/*-{
        return this.html;
    }-*/;
}
</code></pre><p>

Agregué a esta clase un método para obtener los mensajes del sistema desde un servicio REST

    public static void getMessages(final AsyncCallback<SystemMessage[]> callback) {
        try {
            RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,
                    URLRESTSYSTEMMESSAGES);
            rb.sendRequest(null, new RequestCallback() {</p><pre><code>            @Override
            public void onResponseReceived(Request request,
                    Response response) {
                if (response.getStatusCode() == 200) {
                    JavaScriptObject jsResponse = JSON.decode(response
                            .getText());
                    DSResponse dsResponse = new DSResponse(JSOHelper
                            .getAttributeAsJavaScriptObject(jsResponse,
                                    "response"));
                    if (dsResponse.getStatus() == 0) {
                        JavaScriptObject[] array = JSOHelper
                            .getAttributeAsJavaScriptObjectArray(dsResponse.getJsObj(),
                                        "data");
                        SystemMessage[] messages = (SystemMessage[]) array;
                        callback.onSuccess(messages);
                    }
                } else {
                    callback.onFailure(new Exception(response.getText()));
                }
            }

            @Override
            public void onError(Request request, Throwable exception) {
                callback.onFailure(exception);
            }
        });
    } catch (Exception e) {
        callback.onFailure(e);
    }
}
</code></pre><p>

El servidor nos regresa una respuesta en JSON parecida a la siguiente

    {"response":{ "status": 0, "data": [{"id":"1", "html": "Mensaje 1 
"},{"id":"2", "html": "Mensaje 2 
"}]}}

El problema es que este código no marca errores, incluso funciona correctamente cuando lo ejecuto en DevMode. Pero cuando hice el deploy en un servidor JBoss e intenté ejecutarlo, simplemente no me mostraba los mensajes pero tampoco registraba algún error en la consola. Después de muchísimas líneas de log.info() llegué a la conclusión que el problema era el casting del array. Intenté hacer un ‘cast’ de un array de tipo JavascriptObject[] a uno de tipo SystemMessage[]

    SystemMessage[] messages = (SystemMessage[]) array;

Para hacer el casting de un array en Java tenemos que hacer el casting elemento por elemento.

    SystemMessage[] messages = new SystemMessage[array.length];
    for(int i=0; i<array.length; i++){
        messages[i] = (SystemMessage) array[i];
    }

Nota: intenté utilizar el método Arrays.copyOf() pero éste no ha sido implementado en GWT. Si intentas utilizarlo te arrojará una error parecido al siguiente

The method copyOf(JavaScriptObject[], int, Class) is undefined for the type Arrays

Cuando intentaba hacer un cálculo sencillo para colocar una ventana en determinada posición, me aparecía el siguiente error

com.google.gwt.dev.shell.HostedModeException: invoke arguments: JS value of type string, expected int

el problema era la forma en que establecí el tamaño de la ventana, utilicé el método setSize -que recibe como parámetros cadenas- e intenté invocar el método getWidth antes de haber pintado/mostrado el control en pantalla.

@Override
public void onModuleLoad() {
    Window win = new Window();
    win.setSize("320", "180");
    SC.say("Window width: "+win.getWidth()); // throws Exception
}

Después de mostrar el control si puedes utilizar el método getWidth()

@Override
public void onModuleLoad() {
    Window win = new Window();
    win.setSize("320", "180");
    win.show();
    SC.say("Window width: "+win.getWidth()); // "Window width: 320"
}

Si necesitas el valor del width antes de mostrar el control -como era mi caso- tienes que utilizar el método getWidthAsString() y convertir la cadena a Integer

@Override
public void onModuleLoad() {
    Window win = new Window();
    win.setSize("320", "180");
    SC.say("Window width: "+Integer.parseInt(win.getWidthAsString()));
}

Fuentes:
SmartClient Forums

Necesitaba iniciar una sesión remota en mi computadora(Ubuntu) desde una PC con Windows.

Primero tienes que activar la opción abriendo la aplicación “Desktop Sharing”.

Luego intenté utilizar VNC. No tuve problemas para conectarme, incluso veía el cursor del mouse moverse, pero no actualizaba la vista de las ventanas.
El problema es que no soporta los efectos 3D de unity(compiz), para no tener este problema debes iniciar sesión con los efectos desactivados -una sesión 2D-. En la pantalla de login, da clic en la rueda a un lado de tu usuario y selecciona Ubuntu 2D.
Ahora ya puedes iniciar la sesión remota desde VNC.

Otra opción es utilizar xrdp, que te permitirá utilizar la aplicación de sesión remota de Windows (y no tendrás que instalar VNC), aunque no lo he probado. O alguna otra como TeamViewer, Chrome Remote Desktop, etc.

Fuentes:
askubuntu.com

Recientemente actualizamos nuestro servidor de aplicaciones -JBoss- a la versión 7.1.0. Ésta versión tiene muchisímas mejoras en comparación con la que teníamos. El problema es que la estructura del servidor sufrió varios cambios que debes tomar en cuenta si quieres migrar tus aplicaciones de JBoss AS5 o AS6 a JBoss AS7.

A nosotros nos aparecía un error parecido al siguiente:

Class Path entry ridl.jar in “/content/tsj.web.os.war/WEB-INF/lib/jurt-2.3.0.jar”

La librería que menciona, jurt-2.3.0.jar, es una dependencia de la librería JODConverter que utilizamos para convertir documentos RTF a PDF.
El problema es que dicha librería contiene la siguiente línea en el archivo de manifesto -indicando que deben cargarse ciertas librerías para su correcto funcionamiento-

Class-Path: ridl.jar unoloader.jar ../../lib/ ../bin/

La solución al error es remover dicha línea. No olvides dejar una línea en blanco al final del archivo despúes de modificarlo.

Al intentar utilizar la librería JODConverter para convertir algunos documentos del formato RTF a PDF, la aplicación me arrojaba el siguiente error

java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

Esto se debe a que la librería jodconverter tiene una dependencia hacia slf4j-api, la cuál no contiene ninguna implementación, y por ende, es necesario agregar una implementación de esa API. Para ello, agregué la siguiente dependencia a mi proyecto y quedó resuelto el problema.

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-jdk14</artifactId>
            <version>1.4.3</version>
        </dependency>

Asegurate de que las versiones de las librerías coincidan, de lo contrario te arrojará el siguiente error

java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.LoggerFactory

Para ver si estás utilizando versiones diferentes de las librerías, abre el archivo pom.xml y selecciona la pestaña inferior ‘Dependency Hierarchy’, luego busca ‘slf4j’ para ver que versiones fueron resueltas.

Fuentes:
http://stackoverflow.com/questions/3737992/noclassdeffounderror-org-slf4j-impl-staticloggerbinder