Optiq,es un framework open source para la gestión dinámica de datos, permite construir un sistema de gestión de datos en capas altas de cualquier sistema de back-end, incluyendo NoSQL y Hadoop. Define reglas que optimizan la capacidad de procesamiento de las query.
- Permite escribir query SQL para cualquier fuente de datos.
- No es una base de datos
- Es un framework que media entre las fuentes de datos, el procesamiento de los recursos y el cliente, optimizando los recursos.
- Es dinámicamente extensible. Se pueden añadir front-ends: SQL/JDBC and LINQ, back-ends como bases de datos JDBC, HDFS/Hadopp, archivos planos, etc. Así como añadir operadores y reglas de transformación.
- Desarrollado en Java
- El proyecto OptiQ-csv proporciona un adaptador CSV,que es totalmente funcional para su uso en aplicaciones, pero también puede servir como plantilla para implementar nuestros propios adaptadores.
Un ejemplo de cómo utilizar Optiq con MongoDB lo encontramos en el blog de Julian Hyde creador de Mondrian y de este proyecto (http://julianhyde.blogspot.com.es/)
El proyecto se encuentra en el github https://github.com/julianhyde/optiq
Una presentación interesante SQL on Big Data using Optiq: https://github.com/julianhyde/share/blob/master/slides/optiq-richrelevance-2013.pdf?raw=true
Tecnologías y demás
15 julio, 2013
25 noviembre, 2012
Hashtable
Hashtable es una estructura Java de tipo diccionario que permite almacenar elementos identificados por pares clave/valor de forma sencilla. Es similar a HashMap, con la diferencia de que Hashtable es sincronizado.
Hashtable no permite que se incluyan ni keys ni values a null, en caso de intentar añadir un elemento a null, saltará la excepción NullPointerException.
Hashtable tiene varios constructores:
Hashtable <String, String> ejemplo= new Hashtable();
Para añadir elementos en el Hashtable existe el método put(Object key, Object value), con el que podremos ir introduciendo los elementos de nuestro Hashtable.
ejemplo.put ("ES", "España");
ejemplo.put ("EN", "Reino Unido");
ejemplo.put ("FR", "Francia");
ejemplo.put ("US", "Estados Unidos");
Para listar las claves de un Hashtable podemos utilizar el método keys() que devuelve un enumerado con las keys de nuestro hashtable, una vez obtenido basta con recorrerlo:
Enumeration <String> e = ejemplo.keys();
while(e.hasMoreElements())
System.out.println(e.nextElement());
Hashtable no permite trabajar directamente con Iterator, pero es posible obtener un set que permite el uso de Iterators, haciendo uso de métodos de Map como entrySet() y keySet() e iterar sobre ellos:
Set set = ejemplo.keySet();
Iterator i = set.iterator();
String str;
while(i.hasNext()){
str=(String)i.next();
System.out.println(str +" = " + ejemplo.get(str));
}
Dispone de otros métodos que permiten obtener los elementos de un Hashtable como:
Podemos ver la especificación en el siguiente enlace. http://bit.ly/QEoI7Y
Hashtable no permite que se incluyan ni keys ni values a null, en caso de intentar añadir un elemento a null, saltará la excepción NullPointerException.
Hashtable tiene varios constructores:
- Hashtable()
- Hashtable(int size)
- Hashtable(int size, float fillRatio)
- Hashtable(Map m)
Hashtable <String, String> ejemplo= new Hashtable();
Para añadir elementos en el Hashtable existe el método put(Object key, Object value), con el que podremos ir introduciendo los elementos de nuestro Hashtable.
ejemplo.put ("ES", "España");
ejemplo.put ("EN", "Reino Unido");
ejemplo.put ("FR", "Francia");
ejemplo.put ("US", "Estados Unidos");
Para listar las claves de un Hashtable podemos utilizar el método keys() que devuelve un enumerado con las keys de nuestro hashtable, una vez obtenido basta con recorrerlo:
Enumeration <String> e = ejemplo.keys();
while(e.hasMoreElements())
System.out.println(e.nextElement());
Hashtable no permite trabajar directamente con Iterator, pero es posible obtener un set que permite el uso de Iterators, haciendo uso de métodos de Map como entrySet() y keySet() e iterar sobre ellos:
Set set = ejemplo.keySet();
Iterator i = set.iterator();
String str;
while(i.hasNext()){
str=(String)i.next();
System.out.println(str +" = " + ejemplo.get(str));
}
Dispone de otros métodos que permiten obtener los elementos de un Hashtable como:
- elements(): retorna un Enumeration con los valores del hashtable
- values(): retorna un Collection con los valores del hashtable
Podemos ver la especificación en el siguiente enlace. http://bit.ly/QEoI7Y
04 julio, 2012
Xjc - Obtener clases Java a partir de un XSD con JAXB
Hace un tiempo, me encontré con la necesidad de generar clases Java a partir de un XSD, para obtenerlas de una forma rápida y sencilla, utilicé JAXB.
JAXB, es un API de Java que proporciona una forma fácil y práctica de correlacionar clases Java y esquemas XML. A partir de un esquema, que especifica la estructura de datos de un XML, JAXB genera un conjunto de clases de Java, JavaBeans, que contienen todo el código necesario, para analizar documentos XML que estén basados en el esquema.
Xjc es el compilador de esquemas que tiene JAXB para generar las clases Java. Es un comando que se utiliza desde la consola de líneas de comando. Una vez que existe la correlación entre el esquema y los JavaBeans, los documentos XML se pueden convertir en, y desde, objetos Java mediante la serialización y la deserealización.
¿Cómo utilizar el comando?
JAXB, es un API de Java que proporciona una forma fácil y práctica de correlacionar clases Java y esquemas XML. A partir de un esquema, que especifica la estructura de datos de un XML, JAXB genera un conjunto de clases de Java, JavaBeans, que contienen todo el código necesario, para analizar documentos XML que estén basados en el esquema.
Xjc es el compilador de esquemas que tiene JAXB para generar las clases Java. Es un comando que se utiliza desde la consola de líneas de comando. Una vez que existe la correlación entre el esquema y los JavaBeans, los documentos XML se pueden convertir en, y desde, objetos Java mediante la serialización y la deserealización.
¿Cómo utilizar el comando?
- Si no lo tienes ya, descargar JAXB de aquí y seguir los pasos de instalación indicados. Si estás en Windows, tendrás que hacer doble clic sobre el .zip. Se creará una carpeta, en el directorio en el que hayas guardado el zip, con el mismo nombre. ( Yo recomiendo hacerlo en el directorio C, para evitar problemas).
- Abre la consola en el directorio que contenga la XSD.
- Crea un directorio, en él se guardarán las clases Java de nuestro XSD, el directorio lo crearemos, donde tengamos la XSD.
- Ejecuta el comando xjc.bat desde la consola, (en mi caso, es lo siguiente: C:\jaxb-ri-20110512\bin\xjc.bat miEsquema.xsd -p mipaquete -
- En el directorio mipaquete puedes encontrar los JavaBeans asociados al XSD. Y ya podemos importarlas en nuestro proyecto.
24 junio, 2012
MDA - Arquitectura Dirigida por Modelos
Al hilo de lo hablado en el post anterior sobre Jet y para ir ampliando conocimientos ahora voy a hablar de MDA. MDA es un marco de trabajo que fue definido en 2001 por el ObjectManagement Group (OMG) organización
creada en 1990 con el fin de potenciar el desarrollo de aplicaciones orientadas
a objetos distribuidas. Esta organización, también ha definido estándares importantes como UML, CORBA, MOF, etc…
La clave del MDA es la importancia de los
modelos, en el proceso de desarrollo de software. MDA propone la definición y
uso de modelos a diferente nivel de abstracción, así como la posibilidad de la
generación automática de código a partir de los modelos definidos y de las
reglas de transformación entre dichos modelos (aquí es donde entrarían los motores de transformación de código como Jet).
Permite el despliegue de aplicaciones, diseñadas sin dependencias de plataforma, diseñadas mediante el uso de estándares como pueda ser UML y sobre cualquier plataforma existente, como J2EE, Servicios Web, etc..
Resuelve los retos de los sistemas
actuales, están altamente conectados y en constante cambio, tanto en reglas de
negocio como en tecnología. MDA propone un marco de trabajo para una
arquitectura que asegura:
- Portabilidad, aumentando el re-uso de las aplicaciones y reduciendo el coste y complejidad del desarrollo y administración de las aplicaciones.
- Interoperabilidad entre plataformas, usando métodos rigurosos para garantizar que los estándares basados en implementaciones de tecnologías múltiples tengan todos idénticas reglas de negocio.
- Independencia de plataforma, reduciendo el tiempo, costo y complejidad asociada con aplicaciones desplegadas en diferentes tecnologías.
- Especificidad del dominio, a través de modelos específicos del dominio, que permiten implementaciones rápidas de aplicaciones nuevas, en una industria específica sobre diversas plataformas.
- Productividad, permitiendo a los desarrolladores, diseñadores y administradores de sistemas usar lenguajes y conceptos con los que se sienten cómodos, facilitando la comunicación e integración transparente entre los equipos de trabajo.
Qué no es MDA
Se tiende a malinterpretar este acrónimo y por ello se debe tener claro qué no es MDA:
- MDA no es un proceso de desarrollo
- MDA no es una especificación
- MDA no es una implementación
- MDA no es una implementación de referencia de ningún estándar particular.
- MDA no es simplemente generar código
Plantillas Jet
En el post anterior, he hablado del editor Jet-Editor, ahora voy a hablar un poco de qué es Jet. Jet es un motor de transformación que suele utilizarse para la generación de código automático (Java, XML, ...) a partir de plantillas.
Un generador de código, es una parte fundamental en el desarrollo dirigido por modelos (MDD). El objetivo de MDD es describir un sistema de software utilizando modelos abstractos, ya sean EMF, modelos UML o ECORE, posteriormente se refinan y se transforman estos modelos en código. Lo que ayuda a la automatización de los procesos, a la calidad del código, etc.
A través de Jet, se pueden crear los artefactos o plantillas que permiten definir las implementaciones que se han de aplicar en las transformaciones.
Para aquellos que quieran saber cómo empezar a utilizar Jet os recomiendo estos tutoriales:
Un generador de código, es una parte fundamental en el desarrollo dirigido por modelos (MDD). El objetivo de MDD es describir un sistema de software utilizando modelos abstractos, ya sean EMF, modelos UML o ECORE, posteriormente se refinan y se transforman estos modelos en código. Lo que ayuda a la automatización de los procesos, a la calidad del código, etc.
A través de Jet, se pueden crear los artefactos o plantillas que permiten definir las implementaciones que se han de aplicar en las transformaciones.
Para aquellos que quieran saber cómo empezar a utilizar Jet os recomiendo estos tutoriales:
- Tutorial 1: http://www.eclipse.org/articles/Article-JET/jet_tutorial1.html
- Tutorial 2: http://www.eclipse.org/articles/Article-JET2/jet_tutorial2.html
Jet Editor - Plugin Eclipse
Para aquellos que hayáis tenido que trabajar con plantillas Jet, sabréis que puede llegar a ser horrible trabajar con ellas, sobre todo si no se dispone de alguna herramienta o editor que facilite el trabajo, de lo contrario, se trabajaría directamente con texto plano.
Existen varios editores, pero hoy os voy a hablar de Jet-Editor, es un plugin que se puede integrar en Eclipse fácilmente a través del update-site. Editor que permite trabajar con plantillas Jet, las plantillas utilizadas en EMF.
Si no tenemos ningún editor,
Con el editor Jet-Editor para eclipse, lo vemos así:
Como veis, ahora se resaltan partes de nuestro código, se diferencia entre la parte que contiene algo de lógica, de la parte que se mostrará tal cual.
Cierto es, que tampoco ayuda muchísimo..pero algo de ayuda siempre viene bien ¿conocéis algún editor mejor? :)
Existen varios editores, pero hoy os voy a hablar de Jet-Editor, es un plugin que se puede integrar en Eclipse fácilmente a través del update-site. Editor que permite trabajar con plantillas Jet, las plantillas utilizadas en EMF.
Si no tenemos ningún editor,
Con el editor Jet-Editor para eclipse, lo vemos así:
Como veis, ahora se resaltan partes de nuestro código, se diferencia entre la parte que contiene algo de lógica, de la parte que se mostrará tal cual.
Cierto es, que tampoco ayuda muchísimo..pero algo de ayuda siempre viene bien ¿conocéis algún editor mejor? :)
JET-Editor Eclipse Plugin
19 mayo, 2012
Pencils para Android 4.0 - WireframeSketcher
La última versión de WireframeSketcher incorpora nuevos pencils para Android 4.0. Se podrán utilizar tanto para teléfonos Android como tablets, e incluye diálogos, barras de acción, controles, listas y menús. En la web de WireframeSketcher podemos encontrar también una galería con plantillas adicionales, bibliotecas de widgets, etc.
Para usar estas plantillas, es tan sencillo como crear un directorio “assets” en nuestro proyecto y guardar ahí las nuevas plantillas, están disponibles en la web, automáticamente estarán accesibles desde la paleta del editor en el directorio Assets.
Suscribirse a:
Entradas (Atom)