Después de instalar google-earth -mediante ‘sudo googleearth.bin’- en Ubuntu. Cada que lo iniciaba me marcaba un error:

could not create directory: /root/.googleearth/Cache

El problema es que al ejecutarse como root crea algunos archivos de configuración para el usuario root.
La solución la encontré aquí.
Basta con borrar (más fácil que cambiar permisos) el directorio ~/.config/Google.

sudo rm -Rf ~/.config/Google

byte!

String query="select from "+Rim.class.getName();
return (List<Rim>) PMF.get().getPersistenceManager().newQuery(query).execute();

Ahora que empiezo a utilizar el app engine sdk, queriendo hacer una consulta sencillisima me marcaba un error parecido al siguiente

StreamingQueryResult was not included in the set of types which can be serialized

La respuesta la encontre aqui. El punto es que no puedes regresar directamente el objeto StreamingQueryResult al cliente, a pesar de que implemente la interfaz List<T>. En fin, lo unico que tienes que hacer para poder regresar los resultados al cliente es copiar los elementos a un nuevo arreglo de la siguiente forma.

String query="select from "+Rim.class.getName();
List<Rim> rims = new ArrayList<Rim>();
for(Rim rim:(List<Rim>) PMF.get().getPersistenceManager().newQuery(query).execute()){
			rims.add(rim);
		}
return rims;

byte!

Java – Concatenar RTF’s

septiembre 15, 2009

Para concatenar varios archivos RTF’s en un solo RTF lo unico que tenemos que hacer es:

    remover la etiqueta rtf de fin de documento del primer archivo
    remover la etiqueta de inicio de documento y fin de documento de archivos subsecuentes
    remover la etiqueta de inicio de documento del ultimo archivo

esta idea surgio a partir de este post.
El problema es identificar la etiqueta de inicio de documento, ya que depende de la codificacion que se utilizo para crear el archivo. Aqui dejo el codigo que utilicé, espero posteriormente mejorarlo -mediante el uso de expresiones regulares- para que pueda concatenar cualquier RTF (independiente de la codificación). Si alguien sabe como hacer esto, le agradecería deje un comentario ;-) .
Los documentos de entrada como el documento que se regresa son representados como bytes, para que sea más fácil su manejo -ej. documentos almacenados en la base de datos-

private byte[] concatenateRTF(List<byte[]> documentos)
            throws UnsupportedEncodingException {
        StringBuffer rtf = new StringBuffer(), subRtf;
        int indexOfEndTag, indexOfBeginTag;
        final String CHARSET = "UTF-8";
        final String BEGIN_TAG = "{\\rtf1\\ansi\\ansicpg1252\\uc1 \\deff0\\deflang3082\\deflangfe3082";
        final String END_TAG = "\\par }";
        for (int docNumber = 0; docNumber < documentos.size(); docNumber++) {
            byte[] contenido = documentos.get(docNumber);
            if (contenido != null) {
                if (docNumber == 0) {

                    rtf = new StringBuffer(new String(contenido, CHARSET));
                    indexOfEndTag = rtf.lastIndexOf(END_TAG);
                    if (indexOfEndTag != -1)
                        rtf = rtf.replace(indexOfEndTag, indexOfEndTag + END_TAG.length(), "");
                } else if (docNumber < documentos.size() - 1) {
                    subRtf = new StringBuffer(new String(contenido, CHARSET));
                    indexOfBeginTag = subRtf.indexOf(BEGIN_TAG);
                    if (indexOfBeginTag != -1)
                        subRtf = subRtf.replace(indexOfBeginTag,
                                indexOfBeginTag + BEGIN_TAG.length(), "");
                    indexOfEndTag = subRtf.lastIndexOf(END_TAG);
                    if (indexOfEndTag != -1)
                        subRtf.replace(indexOfEndTag, indexOfEndTag + END_TAG.length(), "");
                    rtf.append(subRtf);
                } else {
                    subRtf = new StringBuffer(new String(contenido, CHARSET));
                    indexOfBeginTag = subRtf.indexOf(BEGIN_TAG);
                    if (indexOfBeginTag != -1)
                        subRtf = subRtf.replace(indexOfBeginTag,
                                indexOfBeginTag + BEGIN_TAG.length(), "");
                    rtf.append(subRtf);
                }
            }
        }
        return rtf.toString().getBytes(CHARSET);
    }

byte!

El día de hoy me apareció una actualización disponible en mi flamante ubuntu 9.04, como de costumbre le di clic en actualizar sin pensar mucho.
Pues dentro de las actualizaciones venia una actualizacion del JDK, esto ocasiono que Eclipse quitara el JRE de su lista. Esto ocasiono que mis proyectos fallaran miserablemente con el error

java.lang.UnsupportedClassVersionError: Bad version number in .class file

Para corregir esto, simplemente hay que reconfigurar el JRE en las preferencias de Eclipse y -tal vez- recompilar los proyectos (Project->Clean…)

byte!

Para instalar el plugin de adobe en la version de 64 bits de ubuntu y poder reproducir contenido flash en firefox (youtube) primero tienes que descargar la libreria desde aqui. Al final viene un link donde lo puedes descargar.
Ahora hay que descomprimir el archivo (puede cambiar el nombre por la version)

tar xvzf libflashplayer-10.0.32.18.linux-x86_64.so.tar.gz

y luego copiar la libreria y crear algunos enlaces para que firefox la pueda encontrar

sudo cp libflashplayer /usr/lib/mozilla/plugins/
sudo ln -sf /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/firefox-addons/plugins/
sudo ln -sf /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/xulrunner-addons/plugins/

Reinicia firefox para que los cambios surtan efecto y listo!

byte!

Fuente: myScienceIsBetter

Si te aparece este error lo mas seguro es que olvidaste “anotar” la interfaz del servicio RPC con el atributo RemoteServiceRelativePath.

@RemoteServiceRelativePath("MyRPCService")
public interface MyRPCService extends RemoteService {
    public String getHelloWorld(String name);
}

Aqui lo importante es que la anotación concuerde con nuestras declaraciones del servlet en el archivo de configuracion del modulo, ej. MyModule.gwt.xml, y en el web.xml

MyModule.gwt.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.6.4//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.6.4/distro-source/core/src/gwt-module.dtd">
<module rename-to="my.web.application">
    <inherits name="com.google.gwt.user.User" />
    <inherits name="com.smartgwt.SmartGwt"/>
    <entry-point class="my.web.application.client.Main" />
    <servlet class="my.web.application.server.MyRPCServiceImpl" path="/MyRPCService"/>
</module>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <servlet>
        <servlet-name>MyRPCService</servlet-name>
        <servlet-class>my.web.application.server.MyRPCServiceImpl</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyRPCService</servlet-name>
        <url-pattern>/my.web.application/MyRPCService</url-pattern>
    </servlet-mapping>

    <!-- Default page to serve -->
    <welcome-file-list>
        <welcome-file>Main.html</welcome-file>
    </welcome-file-list>
</web-app>

byte!

Hay muuuchas cosas que es mas facil hacerlas desde la terminal. Una de ellas es agregar la llave de un repositorio desde la terminal.
Por ejemplo, hoy queria instalar este software para la reproduccion de archivos multimedia. Segun las instrucciones de su sitio tenia que ir a un link, copiar el texto que aparecia ahi, pegarlo en un archivo nuevo, luego ir a la configuracion de los repositorios e importar el archivo recien creado.
Pues la verdad se me hizo mas facil hacer lo siguiente:

wget -q “http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x2EEE37419EDAD4D4″ -O – | sudo apt-key add -

El primer comando (wget) descarga (de forma silenciosa, “-q”) el archivo indicado en la URL y lo envia a la salida estandar (“-O -”) despues mediante el uso de una tuberia ( “|” ) lo envia al comando apt-key, el cual la agrega leyendola de la entrada estandar (“-”).
Nota: Hay que poner ojo, entre -O y – hay un espacio, para ver que onda con esto checa la doc mediante “man wget” y “man apt-key”

byte!

Seguir

Get every new post delivered to your Inbox.

Únete a otros 195 seguidores