miércoles, noviembre 16, 2011

Dashboard con CDE y eGluFilterTwoList

Hola Gente,

luego de un tiempo sin postear, justamente por la falta de tiempo, he decidido sacar un poco el polvo al blog y comentarles algo (aunque sea poco) de todo lo que estuve aprendiendo, viendo o haciendo en este último tiempo.
Comenzaré con un post de como crear un tablero en CDF utilizado un componente que he desarrollado para Pentaho CDF y como utilizarlo desde CDE. CDF y CDE son algunas de las CTools que han desarrollado Pedro Alves y otros.
Este componente nos permite crear un filtro que puede ser utilizado para diversas tareas como: filtrar un reporte, un gráfico, una consulta MDX para un pivot, etc. Lo que tiene de particular este filtro, es que puede manipular grandes cantidades de información en forma de páginas, permite realizar búsquedas globales y por página, como así también definir el formato de salida esperado. Permite customizar muchos parámetros como: items por página, alto de página, etc. Se puede descargar una solución que contiene el componente, una demo utilizando CDF y la documentación desde este link (o desde github).

Comenzaremos por decir que el desarrollo lo hago con Pentaho 3.9 sobre Ubuntu 11.04 y las versiones de las CTools al día 16/Nov/2011.

Lo primero es iniciar sesión en PUC y crear un datasource llamado "dw", este datasource apunta a la base de datos "practico" de MySQL, base de datos que utilizamos en eGluBI para crear muchos de nuestros posts, desde este link (o desde github) pueden descargar el backup de la BD, entre otras cosas. Luego crear una carpeta de solución llamada eGluFTL, y dentro de la carpeta un nuevo dashboard CDE llamado "DemoFTLeGlu", se pueden ver los pasos en la siguiente imagen.


Una vez creado y guardado el archivo, podemos comprobar si todo está bien, deberíamos refrescar el repositorio, seleccionar la carpeta creada anteriormente y luego chequear que el tablero esté.


Luego desde la perspectiva Layout vamos a crear dos filas, la primera con dos columnas y la segunda con una, separar las dos filas con un Space.

Columna 1 de la primera fila:
Name: contenedorFTL
Span size: 14

Columna 2 de la primera fila:
Name: contenedorGrafico
Span size: 10
Text align: Center

Columna de la 2da fila:
Name: contenedorBotonFiltrar
Span size:14
Text align: Center



Luego deberemos copiar el archivo "FilterTwoListComponent.js" a la carpeta de solución recién creada. Este archivo contiene la implementación del componente CDF. La copia deberá hacerse desde el sistema operativo.
Una vez copiado el archivo y refrescado el repositorio (esto último es muy importante, ya que de lo contrario no se podrá ver el recurso) y desde la perspectiva Layout, agregamos un nuevo recurso de tipo javascript externo, a esto lo hacemos presionando el icono con el signo más (+). Los valores deben ser:

Name: FTLeGlu
Resource file: ${res:FilterTwoListComponent.js}


A continuación, desde la perspectiva Components, debemos crear un Generic/Simple parameter con los siguientes datos:

Name: idsClientes
Property value: -



Luego debemos crear un Datasource, desde la perspectiva "Data Sources" con los siguientes datos:

SQLQueries/sql over sqlJndi 
 
Name: totalPorAnioClientesDS
jndi: dw
Parameters:

Query:
 SELECT CAST(anio AS char(4)) AS anio,
                    SUM(cantidad*importe) AS importe
     FROM dw_ventasfact v INNER JOIN dw_tiemposlookup t
                 ON t.fecha=v.fecha
     WHERE idCliente IN (${idsClientes})
     GROUP BY t.anio ORDER BY t.anio DESC

A continuación creamos otro Datasource con los siguientes datos:

Name: clientesDS
jndi: dw
Query:
  SELECT idCliente,cliente
    FROM dw_clienteslookup
    ORDER BY idCliente


Regresamos a la perspectiva Components y desde allí agregamos un Others/Freeform Component que nos servirá como Wrapper para poder ejecutar el componente FilterTwoList, con los siguientes datos:

Name: FTLClientesWrapper
Datasource: clientesDS
HtmlObject: contenedorFTL
Custom Script:
function f(){
    render_FTLClientes = {
        name: "render_FTLClientes",
        type: "FilterTwoList",  //Define el tipo de componente
        queryDefinition: this.queryDefinition, //Usa el datasource ya definido
        htmlObject : this.htmlObject, //Usa el htmlObject ya definido
        pageLength : 7,  //Items por página
        executeAtStart: this.executeAtStart,
        size : 7, //Alto de página
        keepDestSorted : true,
        sortDestByKey : true,
        parameter: 'idsClientes', //Es es parámetro al cual se dará valor!
        initParameterString: '["',
        endParameterString: '"]',
        joinParameterString: '","',
        fillParameterWithId: true,
        valueAsId: false,
        minLengthForSearchAll: 2
    }; 
    //Agregamos este componente al tablero actual
    Dashboards.addComponents([render_FTLClientes]); 
    //Lo ejecutamos
    Dashboards.update(render_FTLClientes);
}

Ya podemos salvar nuestro tablero y probar si el componente está funcionando. Luego de guardar el tablero hay que presionar Preview y deberíamos tener una salida como la siguiente:


Luego desde la perspectiva Components, agregamos un Others/Button Component con los siguientes datos:
Name: btnFiltrar
Label: Aplicar Filtro
HtmlObject: contenedorBotonFiltrar
Expression:
   function f() {
     // eval(idsClientes) lo transforma en un objeto Array
     Dashboards.fireChange('idsClientes',eval(idsClientes));
   }

Posiblemente en futuras versiones del componente, exista un botón filtrar.

Por último agregaremos un componente Charts/CCC Bar Chart con los siguientes datos:
Name:                  totalPorAnioClientes
Width:                  600
Height:                 200
Datasource:         totalPorAnioClientesDS
Series in rows:     True
Parameters:         [["idsClientes"],["idsClientes"]]
HtmlObject:         contenedorGrafico
Listeners:             ['idsClientes']
Execute at start:  False
Extension points: 
     Arg: yAxisLabel_text
     Value: function(d){ return sprintf("%d", d/1000000)+" M"; }

Ejecutamos nuevamente la vista previa, seleccionamos algunos clientes y presionamos el botón "Aplicar Filtro" y boila!


Espero les sea de utilidad.
Pueden descargar el ejemplo completo desde aquí (o desde github).

sábado, septiembre 10, 2011

DB2 University

Estimados,

en este caso quería acercarles una buena oportunidad de tomar buenos cursos de forma gratuita, además de la posibilidad de realizar test preparatorios para certificaciones.
Se trata de la web DB2University. com,  Raul Chong junto a una serie de colaboradores a creado un aula virtual en la cual existen una serie de cursos relacionados con DB2 Express-C (la versión gratis de IBM-DB2), los cursos son muy completos y se dispone del material escrito, libros (algunos están disponibles en español y otros idiomas), laboratorios, videotutoriales, etc. Cabe la pena destacar que la traducción al español está en curso. También se están creando y subiendo los cursos relacionados con Hadoop.
Saludos
Mariano

A las Vegas con Apache Hadoop e IBM

Hola Gente,

quería recomendarles a aquellos interesados por la programación y las nuevas tecnologías relacionadas con el data análisis. En este caso una invitación a participar en un desafío de de programación MapReduce, el premio es un viaje  a las Vegas todo pago a la conferencia IOD (Information on Demand) que patrocina IBM.
Aquí están las Bases.
Pero les adelanto que se trata de realizar un curso corto para aprender la tecnología, luego un examen online muy sencillo y luego el challenge.
Enjoy

Saludos
Mariano

martes, julio 19, 2011

Pentaho Data Integration 4 Cookbook

He recibido con mucho agrado una copia de "Pentaho Data Integration 4 Cookbook", un libro muy esperado.



Particularmente pienso que el formato Cookbook es el más cómodo una vez que manejamos un software, Poseo varios libros de este tipo y me han sido de mucha utilidad. Por otro lado, me adelanto a decir, que si este libro tiene la misma calidad que el anterior, está todo dicho.

Gracias a Richard Dias (Packt Publishing) y a Maria Carina Roldan (co-autora)

Saludos

Mariano

miércoles, abril 13, 2011

Curso presencial OSBI Pentaho, Argentina-Córdoba

 A partir del día 3 de mayo, hasta el 14 de junio de 2011, estaremos dictando en el Instituto Universitario Aeronáutico el curso OSBI Pentaho.
En el folleto que adjuntamos se detallan los contenidos y forma de dictado del curso. Cabe destacar que al concluir el mismo se pedirá un trabajo integrador, en el cual se deberá aplicar lo aprendido para obtener un certificado de aprobación.
Para obtener más información y/o para inscribirse nos pueden escribir a:


Saludos.

lunes, febrero 21, 2011

Libros de Bases de Datos gratuitos

Estimados,

este post es para recopilar links de dos buenos libros de bases de datos, en ambos casos gratuitos, el primero se trata de uno que se utiliza en la Universidad Oberta de Catalunya como bibliografía del Master de 'Programari Lliure' (en español) sobre Software de Libre Distribución, copio el índice que además contiene un vínculo desde donde se puede descargar cada capítulo. (Fuente: dataprix.com), en el segundo caso se trata de un libro publicado por IBM (en inglés por ahora) "Database fundamentals", del cual también adjunto el índice.

Mis referencias:
con respecto al libro de la UOC, que decir, es excelente y particularmente, desde hace 2 años, lo utilizo como libro principal en la materia Bases de Datos 1 que se dicta en el Instituto Universitario Aeronáutico, de la cual soy docente titular. Está escrito en lenguaje sencillo, con  variada práctica y muy buenos ejemplos.
Sobre el libro de IBM, y esto está basado en una lectura muy por encima, toca todos los temas necesarios para el marco contextual básico de las bases de datos, sumado a ello desarrolla temas de actualidad como soporte xml (xslt, xquery, xqpath, etc), cloud computing, etc, sin duda orientado a los que hoy en día soportan sus herramientas (DB2), indudablemente compresible este sesgo no?


Otros libros gratuitos de IBM que pueden ser de interés:

Aquí el listado.

De este listado tener en cuenta que algunos figuran con la leyenda "Coming soon!" aún no están disponibles.
He tenído la oportunidad de leer Getting started with DB2 Express-C, Getting started with IBM Data Studio for DB2 y parte de Getting started with WebSphere Application Server Community Edition, puedo decir que son excelentes libros y los recomiendo, siempre teniendo en cuenta que son lecturas iniciales, para profundizar hay que buscar otra bibliografía, para lo cual también IBM tiene una propuesta en los IBM RedBooks.

Los libros de los que hablaba:

Database fundamentals
Descarga

Indice
Chapter 1 - Databases and information models
1.1 What is a database?
1.2 What is a database management system?
1.2.1 The evolution of database management systems
1.3 Introduction to information models and data models
1.4 Types of information models
1.4.1 Network model
1.4.2 Hierarchical model
1.4.3 Relational model
1.4.4 Entity-Relationship model
1.4.5 Object-relational model
1.4.6 Other data models
1.5 Typical roles and career path for database professionals
1.5.1 Data Architect
1.5.2 Database Architect
1.5.3 Database Administrator (DBA)
1.5.4 Application Developer
1.6 Summary
1.7 Exercises
1.8 Review questions
Chapter 2 – The relational data model
2.1 Relational data model: The big picture
2.2 Basic concepts
2.2.1 Attributes
2.2.2 Domains
2.2.3 Tuples
2.2.4 Relations
2.2.5 Schemas
2.2.6 Keys
2.3 Relational data model constraints
2.3.1 Entity integrity constraint
2.3.2 Referential integrity constraint
2.3.3 Semantic integrity constraints
2.4 Relational algebra
Database Fundamentals 10
2.4.1 Union
2.4.2 Intersection
2.4.3 Difference
2.4.4 Cartesian product
2.4.5 Selection
2.4.6 Projection
2.4.7 Join
2.4.8 Division
2.5. Relational calculus
2.5.1 Tuple-oriented relational calculus
2.5.2 Domain-oriented relational calculus
2.6 Summary
2.7 Exercises
2.8 Review questions
Chapter 3 – The conceptual data model
3.1 Conceptual, logical and physical modeling: The big picture
3.2 What is a model?
3.2.1 Data model
3.2.2 Database model
3.2.3 Conceptual data model concepts
3.3 A case study involving a Library Management System - Part 1 of 3
3.3.1 Developing the conceptual model
3.4 Summary
3.5 Exercises
3.6 Review questions
Chapter 4 – Relational Database Design
4.1 The problem of redundancy
4.1.1 Insertion Anomalies
4.1.2 Deletion Anomalies
4.1.3 Update Anomalies
4.2. Decompositions
4.3. Functional Dependencies
4.4 Properties of Functional Dependencies
4.4.1 Armstrong’s Axioms
4.4.2 Computing the closure set of attributes
4.4.3 Entailment
4.5 Normal Forms
4.5.1 First Normal Form (1NF)
4.5.2 Second Normal Form (2NF)
4.5.3 Third Normal Form (3NF)
4.5.4 Boyce-Codd Normal Form (BCNF)
4.6 Properties of Decompositions
4.6.1 Lossless and Lossy Decompositions
4.6.2 Dependency-Preserving Decompositions
4.7 Minimal Cover
4.8 Synthesis of 3NF schemas
4.9 3NF decomposition
4.10 The Fourth Normal Form (4NF)
4.10.1 Multi-valued dependencies
4.11 Other normal forms
4.12 A case study involving a Library Management System - Part 2 of 3
4.13 Summary
4.14 Exercises
4.15 Review questions
Chapter 5 – Introduction to SQL
5.1 History of SQL
5.2 Defining a relational database schema in SQL
5.2.1 Data Types
5.2.2 Creating a table
5.2.3 Creating a schema
5.2.4 Creating a view
5.2.5 Creating other database objects
5.2.6 Modifying database objects
5.2.7 Renaming database objects
5.3 Data manipulation with SQL
5.3.1 Selecting data
5.3.2 Inserting data
5.3.3 Deleting data
5.3.4 Updating data
5.4 Table joins
5.4.1 Inner joins
5.4.2 Outer joins
5.5 Union, intersection, and difference operations
5.5.1 Union
5.5.2 Intersection
5.5.3 Difference (Except)
5.6 Relational operators
5.6.1 Grouping operators
5.6.2 Aggregation operators
5.6.3 HAVING Clause
5.7 Sub-queries
5.7.1 Sub-queries returning a scalar value
5.7.2 Sub-queries returning vector values
5.7.3 Correlated sub-query
5.7.4 Sub-query in FROM Clauses
5.8 Mapping of object-oriented concepts to relational concepts
5.10 A case study involving a Library Management System - Part 3 of 3
5.9 Summary
5.10 Exercises
5.11 Review questions
Chapter 6 – Stored procedures and functions
6.1 Working with IBM Data Studio
6.1.1 Creating a project
6.2 Working with stored procedures
6.2.1 Types of procedures
6.2.2 Creating a stored procedure
6.2.3 Altering and dropping a stored procedure
6.3 Working with functions
6.3.1 Types of functions
6.3.2 Creating a function
6.3.3 Invoking a function
6.3.4 Altering and dropping a function
6.4 Summary
6.5 Exercises
6.6 Review Questions
Chapter 7 – Using SQL in an application
7.1 Using SQL in an application: The big picture
7.2 What is a transaction?
7.3 Embedded SQL
7.3.1 Static SQL
7.3.2 Dynamic SQL
7.3.3 Static vs. dynamic SQL
7.4 Database APIs
7.4.1 ODBC and the IBM Data Server CLI driver
7.4.2 JDBC
7.5 pureQuery
7.5.1 IBM pureQuery Client Optimizer
7.6 Summary
7.7 Exercises
7.8 Review Questions
Chapter 8 – Query languages for XML
8.1 Overview of XML
8.1.1 XML Elements and Database Objects
8.1.2 XML Attributes
8.1.3 Namespaces
8.1.4 Document Type Definitions
8.1.5 XML Schema
8.2 Overview of XML Schema
8.2.1 Simple Types
8.2.2 Complex Types
8.2.3 Integrity constraints
8.2.4 XML Schema evolution
8.3 XPath
8.3.1 The XPath data model
8.3.2 Document Nodes
8.3.3 Path Expressions
8.3.4 Advanced Navigation in XPath
8.3.5 XPath Semantics
8.3.6 XPath Queries
8.4 XQuery
8.4.1 XQuery basics
8.4.2 FLWOR expressions
8.4.3 Joins in XQuery
8.4.4 User-defined functions
8.4.5 XQuery and XML Schema
8.4.6 Grouping and aggregation
8.4.7 Quantification
8.5 XSLT
8.6 SQL/XML
8.6.1 Encoding relations as XML Documents
8.6.2 Storing and publishing XML documents
8.6.3 SQL/XML Functions
8.7 Querying XML documents stored in tables
8.8 Modifying data
8.8.1 XMLPARSE
8.8.2 XMLSERIALIZE
8.8.3 The TRANSFORM expression
8.9 Summary
8.10 Exercises
8.11 Review questions
Chapter 9 – Database Security
9.1 Database security: The big picture
9.1.1 The need for database security
9.1.2 Access control
9.1.3 Database security case study
9.1.4 Views
9.1.5 Integrity Control
9.1.6 Data encryption
9.2 Security policies and procedures
9.2.1 Personnel control
9.2.2 Physical access control
9.3 Summary
9.4 Exercises
9.5 Review Questions
Chapter 10 – Technology trends and databases
10.1 What is Cloud computing?
10.1.1 Characteristics of the Cloud
10.1.2 Cloud computing service models
10.1.3 Cloud providers
10.1.4 Handling security on the Cloud
Database Fundamentals 14
10.1.5 Databases and the Cloud
10.2 Mobile application development
10.2.1 Developing for a specific device.
10.2.2 Developing for an application platform
10.2.3 Mobile device platform
10.2.4 Mobile application development platform
10.2.5 The next wave of mobile applications
10.2.6 DB2 Everyplace
10.3 Business intelligence and appliances
10.4 db2university.com: Implementing an application on the Cloud (case study)
10.4.1 Moodle open source course management system
10.4.2 Enabling openID sign-in
10.4.3 Running on the Amazon Cloud
10.4.4 Using an Android phone to retrieve course marks
10.5 Summary
Appendix A – Solutions to review questions
Appendix B – Up and running with DB2
B.1 DB2: The big picture
B.2 DB2 Packaging
B.2.1 DB2 servers
B.2.2 DB2 Clients and Drivers
B.3 Installing DB2
B.3.1 Installation on Windows
B.3.2 Installation on Linux
B.4 DB2 tools
B.4.1 Control Center
B.4.2 Command Line Tools
B.5 The DB2 environment
B.6 DB2 configuration
B.7 Connecting to a database
B.8 Basic sample programs
B.9 DB2 documentation



Libro del Master 'Programari Lliure'

Indice

Módulo didáctico 1
Introducción a las bases de datos
Rafael Camps Paré
1. Concepto y origen de las BD y de los SGBD
2. Evolución de los SGBD
3. Objetivos y funcionalidad de los SGBD
4. Arquitectura de los SGBD
5. Modelos de BD
6. Lenguajes y usuarios
7. Administración de BD

Módulo didáctico 2
El modelo relacional y el álgebra relacional
Dolors Costal Costa
1. Introducción al modelo relacional
2. Estructura de los datos
3. Operaciones del modelo relacional
4. Reglas de integridad
5. El álgebra relacional

Módulo didáctico 3
El lenguaje SQL
Carme Martín Escofet
1. Sentencias de definición
2. Sentencias de manipulación
3. Sentencias de control
4. Sublenguajes especializados

Módulo didáctico 4
Introducción al diseño de bases de datos
Dolors Costal Costa
1. Introducción al diseño de bases de datos
2. Diseño conceptual: el modelo ER
3. Diseño lógico: la transformación del modelo ER en el modelo relacional

Módulo didáctico 5
Bases de datos en MySQL
Luis Alberto Casillas Santillán; Marc Gibert Ginestà; Oscar Pérez Mora
1. Características de MySQL
2. Acceso a un servidor MySQL
3. Creación y manipulación de tablas
4. Consultas
5. Administración de MySQL
6. Clientes gráficos

Módulo didáctico 6
Bases de datos en PostgreSQL
Marc Gibert Ginestà; Oscar Pérez Mora
1. Características de PostgreSQL
2. Introducción a la orientación a objetos
3. Acceso a un servidor PostgreSQL
4. Creación y manipulación de tablas
5. Manipulación de datos
6. Funciones y disparadores
7. Administración de PostgreSQL
8. Cliente gráfico: pgAdmin3

Módulo didáctico 7
Desarrollo de aplicaciones en conexión con bases de datos
Marc Gibert Ginestà
1. Conexión y uso de bases de datos en lenguaje PHP
2. Conexión y uso de bases de datos en lenguaje Java

Módulo didáctico 8
Caso de estudio
Marc Gibert Ginestà
1. Presentación del caso de estudio
2. El modelo relacional y el álgebra relacional
3. El lenguaje SQL
4. Introducción al diseño de bases de datos
5. Bases de datos en MySQL
6. Bases de datos en PostgreSQL
7. Desarrollo de aplicaciones en conexión con bases de datos

Apéndice
GNU Free Documentation License

Paré, R. C., Santillán, L. A. C., Costa, D. C., Ginestà, M. G., Escofet, C. M., Mora, O. P. (2008, April 18). Materiales.
Retrieved September 20, 2008, from UOCOpenCourseWare

sábado, febrero 19, 2011

Videotutorial "Montar MySQL + Mondrian + OpenI" Parte (7/12) - 06-Presentación Modelo Físico

En este video se realizarán las siguientes acciones:

- Explicación del modelo relacional físico (modelo en estrella)
- Explicación del funcionamiento de Mondrian en cuanto a la ejecución de consultas MDX



Saludos

Mariano García Mattío

Videotutorial "Montar MySQL + Mondrian + OpenI" Parte (6/12) - 05-Configuración de Workbench

En este video se realizarán las siguientes acciones:



- Configurar Schema Workbench y la conexión a la base de datos

- Ejecutar Schema Workbench

- Crear un nuevo esquema y guardarlo





Saludos



Mariano García Mattío

jueves, febrero 17, 2011

Videotutorial "Montar MySQL + Mondrian + OpenI" Parte (5/12) - 4-Config JDBC, Tomcat Users y Proyecto OpenI

En este video se realizarán las siguientes acciones:

- Configurar driver JDBC y usuarios en tomcat que servirán para el portal
- Iniciar el servidor de aplicaciones Tomcat y acceder al portal
- Crear la estructura inicial de proyectos
- Conocer más acerca de como se manejan los proyectos del portal OpenI




Saludos

Mariano García Mattío

Seguirme por email

Etiquetas

pentaho (45) java (35) eclipse (23) jdbc (14) curso (13) tomcat (13) primefaces (12) db2 (11) mondrian (10) review (10) jsf (9) openI (9) pdi (9) prd (9) libro (8) plugin (8) musql (7) struts (7) javascript (6) spring (6) cdf (5) ctools (5) instalar (5) linux (5) mysql (5) data studio (4) hibernate (4) ireport (4) jasper (4) meteor (4) videocurso (4) eglu (3) eglubi (3) elearning (3) graphite (3) grupo eglu (3) jboos tools (3) mexico (3) openbits (3) packt (3) python (3) undec (3) websphere (3) applet (2) cde (2) dao (2) db2university (2) exelearning (2) flexigrid (2) hadoop (2) iua (2) kettle (2) moodle (2) node (2) olap (2) osbi (2) pivot4j (2) scorm (2) sql (2) stpivot (2) actionscript (1) amazon (1) autenticacion (1) avanzado (1) base de datos (1) big data (1) bigdata (1) bodoc (1) cambiar (1) ccc (1) cdc (1) chat (1) cloud (1) coffeescript (1) control de acceso (1) corti (1) csv (1) cuba (1) curso meteor undec (1) dashboard (1) datamart (1) dataptix.tv (1) datasource (1) datatable (1) db2 ExpressC (1) demonio (1) distancia (1) driver (1) driver jdbc (1) eglufiltertwolist (1) encapsulamiento (1) especialización (1) etl (1) excepciones (1) export (1) faces (1) federación (1) filas afectadas (1) filtertwolist (1) filtrado (1) flegrid (1) flex (1) google (1) google viz (1) hostname (1) html (1) i18n (1) ibm (1) identidad (1) indignación (1) instancias (1) inteligencia de negocios (1) jee (1) jpivot (1) l10n (1) la azada (1) la zaga de los confines (1) layout (1) liberado (1) libre (1) libro promoción (1) lob (1) marktplace (1) menu (1) meteor node javascript google oauth autenticacion (1) mobile (1) mongoDB (1) node.js (1) oauth (1) olap4j (1) open source (1) orm (1) persistencia (1) personalizada (1) prd5 (1) psw (1) publicidad (1) rad6 (1) recursividad (1) reporting (1) rock (1) saiku (1) script (1) servicio (1) sessiontimeout (1) sourceforge (1) spinneta (1) sqlserver (1) ssl (1) taller (1) troyanx (1) ubuntu (1) ucc (1) ui (1) web (1) web console (1) xampp (1) xml (1) xpath (1)

Seguidores