Después de un tiempo apartado del blog, trabajo y falta de tiempo libre que dedicar, creo que con el tiempo la cantidad de post irá bajando en el tiempo, aunque espero que aumente la calidad de los mismos.
Voy a volver con una entrada acerca de JSP o mejor dicho de Struts y la etiqueta logic:
Esta etiqueta sirve para realizar cláusulas de tipo “if”, se inserta el código dentro de la JSP, entre el código html, script o <%%>, el funcionamiento es sencillo, existen varios tipos de condiciones que se representan por etiquetas, equal, empty, notEmpty etc, puedes encontrarlas todas aquí.
También pueden crearse if-else de la siguiente manera, es quizá un poco curioso el sistema, pero útil, si la propiedad tiene el valor, se hace una acción y sino, se hace otra, el sino, es que la propiedad no sea igual al mismo valor que el anterior, quizá no sea muy ortodoxo, pero se consigue un if-else.
<logic:equal property="propiedad" value="valor">
Accion/es
</logic:equal>
<logic:notEqual property="propiedad" value="valor">
Accion/es
<l/ogic:notEqual>
Otra cláusula interesante de struts y JSP, es iterate, que sirve para recorrer Arrays dentro de la JSP.
<logic:iterate property="lista" indexId="indice">
Aquí dentro se recorre la lista con la id y donde podemos acceder a sus elementos con las properties
</logic:iterate>
Una de las más usadas (al menos por mi) es la cláusula logic:notEmpty que sirve para comprobar que no este vacío un valor, por ejemplo al recorrer una lista, esto es muy útil para no encontrarnos tablas descuadradas por falta de datos o diferentes problemas posibles asociados a gestionar un campo que puede estar vacío o ser nulo:
<logic:notEmpty property="valorDeLista">
Pintar el valorDeLista
</logic:notEmpty>
Bueno que como regreso para hacer los post un poco más largos, no está mal.
jueves, 24 de junio de 2010
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.
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
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.
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
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!
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!
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!
Etiquetas:
C++,
compilador portable,
DevCpp,
Ejecución de código,
GCC,
Informatica,
OpenSource,
Programación,
Seguridad,
Software,
Software Libre,
Tecnologia
Suscribirse a:
Entradas (Atom)