Archivo de 24 de octubre de 2008

Chandler, PIM para Linux

Hace tiempo que estaba buscando un buen PIM (Administrador de Informacion Personal) para Linux y creo que con Chandler lo he encontrado. La otra opcion es usar Evolution, pero no acabo de acostumbrarme. Un PIM para quien no lo conozca es una aplicacion para guardar y organizar citas, y eventos, escribir notas, gestionar tareas e incluso nos sirve para programar alarmas y recordar de esta manera los eventos programados.

Chandler esta disponible para Windows, Mac y Linux y puedes descargarlo desde el site principal. En el caso de Ubuntu existe un paquete .deb que instalamos de la siguiente manera:

$ sudo dpkg -i Chandler_linux_1.0.2-1_i386.deb

Lo ejecutamos con:

$ chandler

en Hermoso Dia podeis ver un video de su funcionamiento.

Mas informacion | Linux.com

google-gson, una libreria Java para convertir JSON a Objetos Java y viceversa

Para convertir un objeto Java a un String JSON y viceversa existen ya muchas librerias pero hasta ahora no habia encontrado una tan buena y sencilla de utilizar como google-gson. Es increible, donde otras me han fallado porque no podian serializar tipos complejos de datos, google-gson lo ha conseguido y ademas tiene funcionalidades como poder soportar anotaciones de manera que en tiempo de ejecucion podemos cambiar si queremos los nombres de los campos JSON. De fabula!!
Aqui os dejo la documentacion, de todas formas veremos un ejemplo rapido de su aplicacion. No os sorprendais si la clase java os parece un «tanto extraña», es que ahora me estoy inventando un patron nuevo que se llama: «Inyeccion de parametros» ^^

/**
* Clase
*
* Una simple clasecilla para almacenar la estructura de un objeto Java.
*/
package comun.util.json;

import com.google.gson.annotations.*;
import java.util.Collection;

public class Clase {

// El tipo de la clase, p.ej "Java.lang.String"
// Ejemplo del uso de Anotaciones GSON
@SerializedName("tipo_de_la_clase")
public String classname;

// el valor que se almacena si es un tipo simplre como String o integer, p.ej "100"
public String valor;

// la variable que se usa si es un tipo simple, p.ej "saldo"
public String var;

// el tipo de la variable: simple como (String) o complejo (ArrayList, etc)
public String type;

// Si es una clase con un atributo que es otra clase, aqui almacenamos estos
@SerializedName("hijos")
public Collection coleccion;

// identificador para tipos CHOICE
public String idchoice;

// identificador para tipos SEQUENCE
public String idseq;

// el tipo de clase que almacena si es un tipo complejo
public String coleccionType;

}
//end of class Clase.java

Que sera la clase base que usaremos para serializar el objeto. y aqui el ejemplo de serializacion. Primero instanciamos un objeto java compuesto a su vez de otros objetos y lo convertimos a String. Despues hacemos el proceso inverso, leemos el string JSON y a partir de el, componemos un nuevo objeto.

// REFERENCIAS: http://www.json.org/js.html
// GSON: http://sites.google.com/site/gson/gson-user-guide

package comun.util.json;

import com.google.gson.*;

import java.util.Collection;
import java.util.ArrayList;
import java.util.Iterator;

/**
* Para probar el correcto funcionamiento de la clase de ejemplo.
* @author jdelgado
*/
public class Test {

public static void main(String[] args) throws Exception
{
try
{

System.out.println("-- SERIALIZANDO OBJETO a String JSON como: ");

// Instanciar GSON para dejar la salida "bonita" y con soporte de Anotaciones
Gson gson = new GsonBuilder().setPrettyPrinting()

.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();

// Almacenar cadena="ABCDEFG"
Clase c = new Clase();
c.classname="java.lang.String";
c.type = "STRING";
c.valor = "ABCDEFG";
c.var = "cadena";

// Almacenar numero="0123456789"
Clase c2 = new Clase();
c2.classname="java.lang.String";
c2.type = "STRING";
c2.valor = "0123456789";
c2.var = "numero";

// La clase contenedora
Clase complejo = new Clase();
complejo.classname = "java.util.ArrayList";

ArrayList array = new ArrayList(2);
array.add(c);
array.add(c2);

complejo.coleccion  = array;
String complex = gson.toJson(complejo);

// Lo serializamos a JSON String
System.out.println("Objeto codificado como :"+complex);

// y ahora el proceso inverso, lo decodificamos

System.out.println("-- DESERIALIZANDO String JSON a OBJETO:");

comun.util.json.Clase leido = new Clase();
leido = gson.fromJson(complex, comun.util.json.Clase.class);

System.out.println("Classname es:"+leido.classname);

int num_hijos = leido.coleccion.size();
System.out.printf("Tiene %s elementos en la coleccion",num_hijos);
System.out.println();

int indice=0;
Iterator ite = leido.coleccion.iterator();
while (ite.hasNext())
{
Clase hijo = (Clase) ite.next();
System.out.println("-> hijo "+indice+" valor: "+hijo.valor);
indice++;
}

}
catch(Exception e)
{
e.printStackTrace();
}
}

}
//end of class Test.java

Y el resultado de ejecutar todo esto seria:

-- SERIALIZANDO OBJETO a String JSON como:
Objeto codificado como :{"tipo_de_la_clase":"java.util.ArrayList","hijos":[{"tipo_de_la_clase":"java.lang.String",
"Valor":"ABCDEFG","Var":"cadena","Type":"STRING"},{"tipo_de_la_clase":"java.lang.String",
"Valor":"0123456789","Var":"numero","Type":"STRING"}]}

-- DESERIALIZANDO String JSON a OBJETO:
Classname es:java.util.ArrayList
Tiene 2 elementos en la coleccion
-> hijo 0 valor: ABCDEFG
-> hijo 1 valor: 0123456789

Musica, comparte tus Mp3 mediante Streaming

No lo he probado aun pero «suena» interesante ^^.
Musica es una aplicacion web mediante PHP que permite navegar y hacer streaming de tus MP3 sobre HTTP. Es un proyecto de Launchpad que esta aun en desarrollo asi que el autor comenta que cualquier sugerencia, solicitud o bug se haga sobre el siguiente enlace.

Musica esta en los repositorios universe, Para instalarlo:

$ sudo apt-get install musica
$ sudo ln -s /path/de/tu/musica /usr/share/musica/music

Despues ya podemos apuntar con nuestro navegador a la siguiente direccion:

http://localhost/musica

Al hacer streaming de audio podemos montar un servidor de musica para escuchar las canciones desde otra maquina o compartir nuestra musica favorita.

Fuente | From the canyon’s edge

MSI Wind U100-2 pronto en España

Tiene buena pinta:

– La misma configuracion del MSI Wind U100 pero con mejoras en la conectividad WIFI.
– El disco duro pasa a ser de 160 Gb.
– Bateria de 6 celdas.
– 429 euros.

!!Quero uno!! Quero uno…, nene quere uno…

Mas informacion | Xataca | Msi Wind en Español

¿Un concierto en una Hoja Excel?

Si, AC/DC puede. Puedes descargarte el fichero excel desde su sitio web (si usas Windows) o ver el video del mismo:

Bluff, bellas graficas con JavaScript

Me gustan esas librerias de javascript para hacer graficas y que son muy sencillitas de utilizar. Bluff es otra de estas. Bastaria con incluir en el HTML las librerias necesarias (js-class.js, bluff.js y excanvas.js si usas Explorer). Despues ya ejecutariamos un codigo similar al siguiente:


<script type="text/javascript"><!--
        window.onload = function() {
          var g = new Bluff.Line('example', 400);
          g.theme_37signals();
          g.title = 'Ubuntu Life - Evolucion Distros';

          g.data("Ubuntu", &#91;1, 2, 4, 8, 16, 8&#93;);
          g.data("Suse", &#91;4, 4, 5, 5, 6, 8&#93;);
          g.data("Mandriva", &#91;2, 3, 5, 5, 6, 6&#93;);
          g.data("ArchLinux", &#91;9, 9, 10, 8, 7, 9&#93;);

          g.labels = {0: '2005', 2: '2006', 4: '2007'};

          g.draw();
        };
// --></script>

Ojo, los datos me los he inventado. Por cierto y hablando de javascript con SVG se pueden hacer cosas muy chulas como Blobular.

Visto en | Ajaxian

Stickers para Ubuntu y Kubuntu 8.10

Ya solo queda imprimirlas a etiquetas adhesivas y pegarlas en nuestros equipos de sobremesa o portatiles.

Descarga | Stickers Ubuntu 8.10 | Kubuntu 8.10

Underworld 3 – Rise of the Lycans Trailer

Auuuuuuu…..

Ubuntu 8.10 (Intrepid Ibex) Release Candidate

Ya se encuentra disponible la version Release Candidate de Ubuntu 8.10. Esta version, a menos que se detecten y resuelvan errores graves de ultima hora, sera practicamente igual a la version final.

Descarga | Ubuntu 8.10 | Intrepid Ibex RC





¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map

Archivos

octubre 2008
L M X J V S D
 12345
6789101112
13141516171819
20212223242526
2728293031  

Blog Stats

  • 31.400.841 hits