sábado, 1 de mayo de 2010

Programación de mapas en Java

Los mapas, son una estructura de pares de atributo clave-valor, son muy útiles para el uso de información estructurada, y vamos a ver un par de ejemplos sencillos, y uno un poco más ocmplejo, donde podemos observar su funcionalidad y sus grandes ventajas.

Lo primero entender como funcionan, es decir, como se recuperan datos de un mapa y como se almacenan datos ne un mapa.

declarar:

Map<String, Objeto> mapa;

inicializar:

map = new TreeMap<String, Objeto>();

introducir datos:

mapa.put("clave",objeto);

Sacar datos:

mapa.get(clave);

Después ver como pueden sernos útiles como memoria cache de una base de detos, que podría ser un uso de los mapas.

Aqui, sería tan sencillo como alamcenar todos los datos de una consulta SQL, recorriendo el ResultSet, algo parecido a esto:

While(rs.next){

//Crear objeto de la consulta.

Objeto x = new Objeto(rs.getString(1), rs.getInt(2), rs.getString(3));

//Introducirlo en el mapa


mapa.put(x.id, x);


}

Así tendriamos almacenado todos los datos de la tabla que hubieramos consultado en el mapa, y para darselos a un cliente o interfaz, podríamos usar el mapa, en vez de consultas a la base de datos, lo que es más rápido que entar a la base de datos para cada cosa que se necesite.

Y por último estructuras complejas, como mapas de listas o mapas de mapas, esto va en honor a Ingeniería del Software.

Declarar:

Map<String, Map<String, Objeto>> DobleMapa;

Inicializar:

DobleMapa = new TreMap<String, Map<String, Objeto>>();

Para meter datos en un objeto de este tipo, hace falta pensar que necesitas introducir un mapa, en cada clave del mapa, lo que parece recursivo, pero no lo es, ejemplo teniendo en cuanta el mapa del anterior punto:

//el mapa introducido es el mapa sencillo de antes que tenia los datos de la base de datos.


DobleMapa.put("Clave", mapa);

De esta manera, tendriamos tantos mapas con información, como tablas hubieramos consultado con objetos del tipo que hayamos selecconado, y los tendriamos estructurados con claves diferentes para cada una de las tablas en las que están almacenados los datos.

Para otro post, mezclar, mapas, y bases de datos con Hibernate, para tener objetos java, que se consultan directamente ala base de daots y además estan almacenados en Mapas. Suena muy friki, pero a ver como queda.

martes, 27 de abril de 2010

3 Aplicaciones de Software Libre para recuperar datos perdidos

Diskgetor Aplicación para recuperar datos borrados del disco duro, ojo, no recupera datos de discos rotos o corruptos, solo los borrados, es decir, la aplicación lee los datos "desapuntados" por los indices de los discos duros, de tal forma que los ficheros que se borraron, todavía pueden ser legibles en el disco duro.

data recovery tools Quizá es una aplicación antigua, pero que puede dedicarse a buscar ficheros en diferentes formatos dentro del disco duro, una vez más solo recupera datos borrados del disco duro.

hdrecover Este si es un recuperador de discos duros dañados, se trata de una aplicación que puede retocar los sectores dañados de un disco duro, los resultados, que se pueden obtener, no son siempre perfectos y dependiendo del daño que pueda tener el disco duro, se podrá recuperar datos de discos duros que estaban rotos antes de empezar

lunes, 26 de abril de 2010

Java Portable

Publico enlace a Java portable, como prometí, podeis encontrarlo aquí

La explicación de como instalarlo y como hacerlo funcionar está en la página que enlazo, y por todo aquello de no repetir todo lo alli publicado, pues no lo voy a traducir que está en inglés.

La idea básica es la misma que con el caso del compilador de C++ portable, instalarlo en un penDrive y supongo que para poder compilar java, habrá que incluirlo en una ruta sin espacios, para poder enlazar la variable de entorno y poder hacer java javac o jar en la consola de comandos para poder ejecutar o compilar el código o construir los jars executables. Está versión permite también ejecutar los jars creados en java.

Eso que ya era hora de actualziar de nuevo el blog con algo de contenido, que he estado muy alejado últimamente.

sábado, 10 de abril de 2010

Ingeniería inversa con eclipse Java2UML

Pequeña entrada, para que no se me olvide esto de escribir en el blog, que llevo unos días, que no escribo nada, esto de las vacaciones...

Esta entrada va sobre como conseguir que Eclipse, ese IDE de Open Source, que se puede utilizar para desarrollar Java, nos haga todos los diagramas que podemos sacar del cogidogo Java en UML, diagrama de clases, y las relaciones entre ellos, como usan unos de otros, y sobre todo la herencia entre ellos, bien represenada, y tal, para ello, podemos hacer uso de dos páginas que en su momento a mi me dieron muchísima ayuda, y para no repetir todo lo que ya está allí alojado, dejo los enlaces.

Explicación paso a paso

El plugin

Ojo, para hacer funcionar el segundo plugin respetar las versiones de eclipse, debe ser la 3.2 enlace a la version

Entradas relacionadas de UML en este blog:

agregación vs composición

Clase asociativa

viernes, 26 de marzo de 2010

Criptografía Básica IV (0-day o 0day)

Vale, para los no duchos en la materia, voy a meterme con una cosa, que a los estamos al día de las noticias de seguridad en la red, suele aparecer de forma casi constante. Vale explicar que es un 0-day.

Esto es una situación que aunque parezca increible, pasa muy a menudo, y es la circustancia en la que una aplicación que lleva menos de 24 horas en el mercado sea crackeada. Es decir, que lo último de lo último se rompa de forma muy rápida, de ahí esos titulares que podemos leer a veces, de IE 8 soluciona un 0-day de hace 4 meses, es decir, que llevan 4 meses con una vulnerabilidad sin corregir, lo que cuanto menos es curioso, y bueno, no voy a dar palos a los de siempre, que firefox acaba de corregir con la 3.6.2 un 0-day de hace un mes, asi que ya sabeis, si usais Firefox y os ha salido el mensajito de actualizar, estais tardando!

jueves, 25 de marzo de 2010

Compilador C++ Portable

Cuanto menos una curiosidad, se trata de un compilador de GCC portable, es decir se instala en un USB y lo puede llear a donde quieras, copilar y ejecutar tus porogramas y dejar ni rastro de las tareas que has realizado, un tanto curioso y al mismo tiempo una forma de atacar equipos a los que tienes accesos físico.

Esto además resuelve un problema muy habitual, que desarrollemos en diferentes equipos, ya sea por ejemplo, trabajo, casa o universidad y necesitemos siempre la misma versión de compilador para evitar errores derivados de usar diferentes entornos en cada sitio, y diferentes problemas y librerias en cada sitio.

Bueno sin más historia, se puede descargar de aqui y la sencillez radica en que es una instalación normal y corriente, en un penDrive, es decir, como si instalaramos en el disco duro, pero en el pendrive, y podemos llevarlo de un ordenador a otro, con nuestros proyectos en el penDrive (también nuestros ejecutables si queremos hacer algo haya donde vayamos)

No hace falta ni explicar más, porque si eres tan friki como para querer un PenDrive un compilador de C++, eres lo suficientemente habil con un ordenador, como para no necesitar ni una sola indicación mñas que la descarga, para instalarlo y probarlo. ; )

Si aún así, tienes problemas para instalarlo, no dudes en dejar un comentario.

Pd: Además DevCpp es OpenSource!

viernes, 19 de marzo de 2010

Neutralidad en la red

Un post de ligera actualidad para romper una lanza a favor de las páginas que generan un tráfico fuerte en internet, y este intento de robar cuota de beneficios. Entiendo que los proveedores de servicio de internet (ISPs a partir de aqui) quieran su parte del pastel.

Comprendo que si yo doy un servicio a un usuario, tengo que comprender que el usuario puede hacer lo que le parezca, dentro de los limites de la legalidad, con ese servicio que le presto. Es decir si yo ataco mi propia red WiFi en mi casa, es mi problema, si quiero hacer pruebas. Si yo navego hacia google, yahoo o bing, por nombrar a los tre gigantes de los buscadores (aunque solo haya uno para muchos) es mi decisión  y creo que en nigún caso los ISPs merecen robar parte del pastel a los buscadores, solo porque usen parte de su infraestructura. Porque si nos ponemos así lo siguiente va a ser cobrarnos por usar las carreteras...espera, por eso ya nos cobran... (y bien que cobran, impuesto de circulación, multas, peajes, aparcamiento, que caro sale un coche...)

Vamos voy al grano, que Cesar Alierta diga y cito textualmente "los buscadores de internet usan nuestras redes sin pagar" yo creo que con la pasta que se paga por el ADLS básico en España, y teniendo en cuenta que es el usuario el que decide que buscador usa o deja de usar, no entiendo porque si el servicio se le da al usuario desde los dos extremos, porque este no puede (segun Telefónica) decidir que hacer con ese servicio que se le da.

Es decir que si a mi se me ocurre la brillante idea de hacer una página con cliente pesado, para que este haga el trabajo desde local y no comermelo todo en el servidor (por la razón que sea), los de telefónica se les ocurrirña ka brillante idea de decir que les tengo que pagar por el tráfico y carga que genero en su red, cuando es un usuario el que decide acceder a mi red y usarla. Sinceramente no lo entiendo.

No se si es que se me escapa algo de todo esto, o que me he vuelto tonto en los últimos días, voy a decir lo que me parece a mi, es que a Telefónica le debe de parecer que los buscadores generán una pasta de la leche, (si si, seguimos hablano del mismo, el grande) y claro toda esa pasta hay que repartirla, porque somos capitalistas hasta que los demás se forran y entonces pedimos una parte del pastel, ¿o no?

Pues eso que hace falta neutralidad en la red, que al final voy a tener que inventar un navegador Web que funcione sobre un protocolo cifrado que entienda y cree html embebido, y como no pueden ver lo qeu hago, por lo menos dejarán de intentar comerse la tostada unos a otros...uhhm empieza a no parecerme un mal invento.

Si alguien tiene pasta de sobra queme avise y montamos el navegador https: constante ;)