Db4o. Qué no encontrará aquí. Introducción

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Db4o. Qué no encontrará aquí. Introducción"

Transcripción

1 Db4o Muchas veces cuando se presenta un artículo tan técnico, se lo orienta hacia un público especializado o avanzado, y el enfoque es mostrar los últimos detalles del producto de turno, sin embargo si hicieramos esto aquí dejaríamos afuera a los lectores que descubren db4o. Tal vez no entenderían cuándo será viable su uso o bien qué es realmente lo grandioso de db4o. En cambio si el enfoque fuera arranquemos desde cero, los desarrolladores avanzados, o incluso intermedios, se aburrirían y dejarían de lado el artículo buscando las últimas novedades. Por ello les recomiendamos a quienes estén avanzados, que en el caso de no responder a sus dudas, consulten hacia el final de este artículo en donde se encuentran las direcciones URL de recursos, entre ellos los de la gran comunidad de usuarios de db4o, donde pueden realizar consultas específicas. Tanto si usted ha tenido alguna experiencia con bases de objetos (ODBMS), los conocidos como mapeadores objetos relacionales (ORDBMS), es de la vieja guardia de las bases relacionales (RDBMS), como si jamás ha tenido experiencia persistiendo información y quiere averiguar si db4o es para usted, creemos que este artículo puede serle de ayuda. Qué no encontrará aquí La elección de un esquema de persistencia, aún cuando debería ser técnicamente una de las cuestiones menos polémicas debido a la enorme cantidad de documentación y comparativas realizadas y disponibles públicamente, ha sido desde hace unos años objeto de múltiples controversias. Sin embargo, el objetivo de este artículo no está centrado en los aspectos netamente comparativos, ni en convencer al lector de abandonar su preferencia por las bases relacionales o herramientas de mapeo, tareas que de por sí requerirían de un artículo aparte y cierta disposición especial al cambio. La idea aquí es presentar un vistazo a las características fundamentales de db4o, dejando a los lectores la posibilidad de generar nuevas entregas, ahondando en cuestiones que consideren de su interés. Introducción Vamos a ver entonces algunas características claves de db4o, la base de objetos nativa de alto rendimiento para.net y. A continuación mostraremos cómo instalar y comenzar a utilizar este motor de persistencia. Y seguidamente incluiremos cómo resolver algunas tareas simples en (muy fácilmente adaptables a ), una pequeña conclusión y daremos fuentes para más información. A grandes rasgos, las características fundamentales de db4o son: Alto rendimiento: Ofreciendo notables ventajas con sistemas que utilizan objetos anidados o compuestos, o en donde existen referencias cruzadas, herencia o interacciones ricas entre los objetos.

2 Por su bajo consumo de recursos, (de 600Kb a 800Kb de footprint) es especialmente apta para dispositivos móviles y entornos Clientes/Servidor, aunque no necesariamente limitada sólo a ellos. Doble licencia: GPL (Open Source) y Comercial (que incluye soporte). Gran comunidad de usuarios. Alto nivel de respuesta y participación. Documentación: Clara, amplia y ordenada. Orientada a ejemplos y de fácil lectura. Dos modos de trabajo: Embebido y Cliente/Servidor. Transparencia Persistente / Consultas Nativas. Soporte de versionado. Portabilidad entre.net, Mono y. Transacciones ACID: Atomicidad, Consistencia, Aislamiento, Durabilidad. Clientes de peso avalan su uso: BMW, Intel, Boeing, Ricoh, Seagate, Bosch, Novell, etc. Instalación Para empezar a utilizar db4o, es necesario descargar la versión apropiada para su equipo. Actualmente existen versiones para.net 1.x y 2.0, para y para Mono..NET Lo primero que necesita saber es qué versión de.net está instalada en su computadora. Una comprobación rápida es observar si existe un directorio parecido a "c:\windows\microsoft.net\framework\", allí dentro debería tener un subdirectorio con el número de versión (ver tabla abajo) por cada versión instalada. La versión más profesional de esta verificación es ejecutar el siguiente script.vbs: strcomputer = "." Set objwmiservice = GetObject("winmgmts:\\" & strcomputer & "\root\cimv2") Set colitems = objwmiservice.execquery("select * from Win32_Product") For Each objitem in colitems If InStr(objItem.Name, "Microsoft.NET Framework") > 0 Then Wscript.Echo objitem.version End If Next * Debería aparecer un cuadro de diálogo por cada versión instalada. Si no ha actualizado el framework.net separadamente, la siguiente tabla puede darle una idea de la versión instalada en su equipo: Visual Studio.NET Nombre de Versión Número de versión Beta ???? Beta

3 RTM SP SP SP RTM SP * 1.1 SP Beta RTM RTM * = (Windows Server 2003 Version) Si tiene varias versiones de.net instaladas, es posible especificar con qué versión desea utilizar db4o editando un archivo de configuración de la aplicación [1] (que no es más que un XML con extensión.config), sin embargo esto no es necesario ya que por omisión db4o tomará la última versión de.net instalada. La distribución de Db4o para.net consiste en un archivo instalador MSI, por lo que deberá tener habilitado el servicio "Windows Installer" para poder instalarlo. Ingrese en la "Consola de administración de Microsoft" escribiendo services.msc en Inicio > Ejecutar para poder habilitarlo si no está ya habilitado. Para empezar se debe tener instalada la máquina virtual de Sun (JRE). Por el uso de los generics y mejoras en la ejecución del for, se recomienda utilizar 5.0 en lo posible. Db4o también corre sobre la máquina virtual de Microsoft, para la cual se debe utilizar JDK 1.1 a partir de la versión 6.1 de Db4o. Db4o puede ejecutarse sobre las plataformas J2EE, J2SE y dialectos J2ME que soporten reflexión computacional como CDC, PersonalProfile, Symbian, Savaje y Zaurus. Está planeado el soporte sobre dialectos sin reflexión como CLDC, Palm OS y RIM/Blackberry. La distribución para viene en formato ZIP que debemos extraer en donde creamos conveniente. Lenguajes La siguiente tabla presenta los lenguajes y entornos soportados por Db4o: Lenguaje/Entorno Soporte Sí (JRE) Sí (J#) Sí VisualBasic.Net Sí Delphi.NET Sí C++ Administrado (C++/CLI) Ruby (JRuby) Vía reflector

4 Python (IronPython) Python (Jython) Boo ASP.NET Compact Framework Sí Vía reflector Sí Sí Sí Configuración Suficiente hasta aquí con cuestiones de instalación. Db4o posee dos modos de trabajo: Embebido y Cliente/Servidor. A los propósitos de este artículo solo veremos el primer modo, dejando a futuras revisiones el modo cliente/servidor. Para poder distribuir aplicaciones con db4o, sólo necesita copiar una librería (.dll) muy pequeña y configurar algunas cosas en su entorno de desarrollo preferido (además de escribir el código necesario desde luego!). VisualStudio.NET 2005 Estos son los pasos para comenzar a desarrollar con db4o 6.0 bajo este entorno: 1. Agregar la referencia de la dll en nuestro proyecto haciendo click con el botón derecho sobre References en el Solution Explorer. 2. Elegir Add Reference y luego Browse 3. Seleccionar db4o.dll, Open y finalmente Ok Y listo. No es necesaria la administración de la base de objetos. Los pasos de configuración son similares para el entorno SharpDevelop Eclipse Sólo hay que agregar las referencias al.jar correspondiente al entorno de trabajo. 1. Abrir las propiedades del proyecto haciendo click con el botón derecho sobre el proyecto en el Package Explorer y seleccionando Properties. 2. Seleccionar Build Path y hacer click sobre la pestaña Libraries. 3. Agregar el JAR correspondiente haciendo click en el botón Add External JARs y navegando hasta encontrar el JAR para la versión de que esté utilizando.

5 Ejemplo: Tienda de renta de DVDs Vamos a trabajar con un ejemplo típico. Supongamos un cliente que hace un alquiler en nuestra tienda de renta de DVDs. A modo de ejemplo instanciemos una película y su respectiva copia física del DVD en nuestro sistema, y posteriormente un nuevo alquiler del cliente, asociando la información correspondiente. Gráficamente nuestras instancias quedarían así: Por ahora, supongamos también que para el siguiente código de ejemplo tenemos un objeto db sobre el cual se pueden realizar dos operaciones, Set() y Commit(), que persisten los datos. El código que generaría nuestras instancias sería algo como lo siguiente:

6 // Creamos una nueva película Pelicula unapelicula = new Pelicula("The Godfather", Francis Ford Coppola ); // Creamos un nueva copia física para la película // y asociamos la película a la copia física Dvd copiadvd = new Dvd(5, unapelicula); // Alquiler por 2 días Alquiler alquiler = new Alquiler ("Juan Perez", copiadvd, 2); // Finalmente almacenamos el alquiler db.set(alquiler); db.commit(); (El proyecto que prueba este Script se llama ConsoleApplicatioDb4oTest SimpleScript JAVA) // Creamos una nueva película Pelicula unapelicula = new Pelicula("The Godfather", Francis Ford Coppola ); // Creamos un nueva copia física para la película // y asociamos la película a la copia física Dvd copiadvd = new Dvd(5, unapelicula); // Alquiler por 2 días Alquiler alquiler = new Alquiler ("Juan Perez", copiadvd, 2); // Finalmente almacenamos el alquiler db.set(alquiler); db.commit(); (El proyecto que prueba este Script se llama ConsoleApplicatioDb4oTest SimpleScript CS) Si nunca trabajó con bases de objetos es importante que tenga en cuenta lo siguiente: En Db4o, las referencias a los objetos especifican la relación entre ellos, por lo tanto en nuestro ejemplo, la película (unapelicula) y la copia física (copiadvd) son almacenados implícitamente al hacer db.set(alquiler). El db.commit() finalmente cierra la transacción. Es fundamental que recuerde esta especie de principio que determina el funcionamiento de las bases de objetos. Hasta aquí podemos sacar varias conclusiones. Como observamos, con db4o no es necesario crear un esquema de persistencia, es decir, no hay que hacer el diseño de la base de datos ya que es el modelo de clases de nuestro sistema lo que se persiste. Esto nos libera de varias cosas, entre ellas, el uso de herramientas de administración de base de datos, un administrador de base de datos, y de poseer conocimientos bases de datos relacionales (álgebra relacional, SQL), entre otras tareas. Para los siguientes ejemplos, puede ser útil ir inspeccionando la base mientras se trabaja con ella. Db4o posee un explorador con el cual podemos navegar nuestras bases y realizar copias de seguridad, defragmentaciones, consultas, etc. Este se llama Object Manager, y se puede descargar desde el Centro de Descargas de Db4o (ver sección de

7 enlaces). En la sección de herramientas de este artículo incluimos un listado de otras utilidades para db4o. Desde el Object Manager entonces, nuestro alquiler recientemente almacenado en la base, se vería de la siguiente manera: Haciendo click en el ícono del árbol de cada ítem, se muestra una vista jerárquica del item seleccionado. Para poder ejecutar el Object Manager, deberá tener instalada una máquina virtual en su sistema (por ejemplo el llamado Runtime Environment o JRE). La forma correcta de ejecución entonces es llamando al archivo por lotes (.bat) que se encuentra

8 dentro de la carpeta del Object Manager y es el encargado de instanciar el applet de (.jar). Entorno de trabajo En el CD se encuentran dos proyectos para VisualStudio: uno que incluye acceso vía S.O.D.A. y otro mediante Consultas Nativas, temas que trataremos a continuación. Ambos proyectos están a la XP, es decir, se incluyen tests Nunit para verificar su correcto funcionamiento. En principio hagamos algunas consultas muy simples sobre Pelicula, a fin de familiarizarnos con el acceso a db4o, y luego nos moveremos a algunas más interesantes. Trabajaremos con y que son los lenguajes más populares en la comunidad de db4o. En ambos casos, primero deberá incluir las rutas necesarias para que el enlazador encuentre los métodos: import com.db4o.db4o; import com.db4o.query; using Db4objects.Db4o; using Db4objects.Db4o.Query; La API de db4o es similar en todos los lenguajes soportados. Usualmente la forma de trabajo es similar al siguiente molde: // Crear una base si no existe, abrirla si ya existe. File file = new File("testDb4o.yap"); String fullpath = file.getabsolutepath(); ObjectContainer db = Db4oFactory.openFile(file); try { // realizar alguna acción con db4o // Ejemplos : db.set(obj); // Almacena un objeto en la base db.commit(); // Realizar la transacción (y arrancar otra) db.delete(obj); finally { db.close(); // Eliminar un objeto en la base // Cerrar la base y liberar los recursos // Crear una base si no existe, abrirla si ya existe. IObjectContainer db = Db4oFactory.OpenFile("testDb4o.yap"); try { // realizar alguna acción con db4o

9 // Ejemplos : db.set(obj); db.commit(); db.delete(obj); finally { db.close(); // Almacena un objeto en la base // Realizar la transacción (y arrancar otra) // Eliminar un objeto en la base // Cerrar la base y liberar los recursos La base de objetos consta de un archivo denominado YAP, en donde se almacenarán los objetos serializados. A nivel de aplicación se lo llama ObjectContainer y es el objeto sobre el cual se realizarán las operaciones de persistencia (Set(), Get(), Commit(), etc.). En los ejemplos a continuación, asumiremos que el código se ejecuta dentro del bloque try {, y están incluidos los espacios de nombres citados arriba a fin de que se encuentren las funciones necesarias. Acceso a Db4o Antes de ver las formas de acceso a datos en Db4o, vamos a ponernos un poco en contexto: El acceso a los datos en una base de objetos es navigacional. La eficiencia en velocidad (una de las características notables de db4o) viene dada por el hecho de que las referencias son almacenadas directamente en cada instancia, mientras que en las bases de datos tradicionales (que fueron realizadas antes de que el mecanismo de herencia fuera ampliamente utilizado), el acceso es tabular, y lo que generalmente se intenta en estos casos para salvar la distancia con el mundo de objetos, es utilizar mapeadores Objeto Relacionales, que incluyen API s o lenguajes que dan la ilusión de trabajar con objetos. En db4o existen tres formas de realizar consultas, cada una basada en una tecnología diferente. Estas son: S.O.D.A.: Simple Object Database Access / Acceso Simple a Bases de Datos de Objetos. Q.B.E.: Query By Example / Consulta por Ejemplo o Plantilla. N.Q.: Native Queries / Consultas Nativas En un principio, db4o permitía acceder mediante Q.B.E. y S.O.D.A. [2], siendo esta última la interface preferida por ser una tecnología desarrollada por el mismo creador de db4o, Carl Rosenberg. La experiencia tomada con los usuarios durante el período ha valido para dar cuenta de sus limitaciones y proponer una nueva tecnología de acceso a datos persistidos, que supliera con estas limitaciones. A partir de la versión 6 de db4o, las Consultas Nativas (N.Q.) se convirtieron en la interface principal de acceso, mientras que S.O.D.A. se ha mantenido por cuestiones de compatibilidad y para el uso de consultas generadas dinámicamente. A pesar de su reciente inclusión en db4o, las idea detrás de las Consultas Nativas no son un concepto nuevo; las colecciones de Smalltalk ya incluían esta capacidad desde su especificación en Veamos cuales son sus ventajas y desventajas principales:

10 Tecnología Ventajas Desventajas QBE Simplicidad, recomendada para principiantes. Funcionalidades limitadas: Carece de consultas con juntores (AND, NOT, OR, etc). Se necesita agregar un constructor para crear objetos sin campos inicializados. No se puede consultar por valores nulos SODA Independencia del lenguaje de programación utilizado. API simple. Minimiza el uso de cadenas para consultas Opera sobre propiedades Introduce conceptos relacionados con grafos de nodos (natural a las bases de objetos): Descender y Restringir por nodos que pueden ser una o muchas clases, un atributo de una clase, o consultas mismas. NQs Interface recomendada para Db4o 100% segura en tipos: Verificación de errores semánticos y sintácticos en tiempo de compilación. 100% refactorizable 100% nativas: no hay necesidad de aprender lenguajes de consultas o API s No se verifican tipos en tiempo de compilación (query.descend( dirctor ) fallaría en tiempo de ejecución) Demasiado explícita (verbose). Opera sobre campos, (pelicula._director) en vez de propiedades (pelicula.getdirector() o pelicula.director) Requiere actualizar las consultas cuando se refactoriza o modifica el modelo de clases. Consultas basadas en cadenas embebidas son blanco para ataques vía inyección de código. Las consultas deben ser traducidas al lenguaje o API del motor, esto puede penalizar en rendimiento en el caso de consultas complejas, donde no es posible hacerlo sin instanciar algunos objetos persistidos. Acceso mediante S.O.D.A. (Simple Object Database Access): Al trabajar con db4o, debemos imaginar nuestros datos como en un grafo en el que podemos navegar (o consultar), a diferencia de lo que haríamos con una base relacional donde los datos están tabulados y la idea predominante es combinar resultados en tablas. El acceso con S.O.D.A. se realiza mediante la clase Query, que es obtenida a través del ObjectContainer. Consideremos algunas operaciones típicas: // Instanciamos un objeto query para realizar las consultas Query query = db.query(); // Indicamos el objeto contra el cual se realizará la consulta query.constrain(pelicula.class);

11 //////////////////////////////////////////////////////////////// // Configuramos la/s consulta/s en el objeto query //////////////////////////////////////////////////////////////// // Por dato particular : Recuperemos la(s) Pelicula(s) llamada(s) // El Padrino si existe(n). query.descend("nombre").constrain("el Padrino"); // Por negación : Recuperar las películas que no se llamen // El Padrino si existen. query.descend("nombre").constrain("el Padrino").not(); // Por conjunción : Recuperar las películas llamadas El Padrino y // cuyo director sea Francis Ford Coppola Constraint constr = query.descend("nombre").constrain("el Padrino"); query.descend("director").constrain( Francis Ford Coppola ).and(constr); // Por disyunción : Recuperar las películas llamadas El Padrino o // cuyo director se llame Francis Ford Coppola Constraint constr = query.descend("nombre").constrain("el Padrino"); query.descend("director").constrain( Francis Ford Coppola ).or(constr); // Por similitud: Recuperar las películas que contengan God en su título IConstraint constr = query.descend("nombre").constrain("god").like(); // Ordenando resultados de forma ascendente query.descend("nombre").orderascending(); // Ordenando resultados de forma descendente query.descend("nombre").orderdescending(); // Ejecutar la consulta y Mostrar los resultados ObjectSet result = query.execute(); listresult(result); // Instanciamos un objeto query para realizar las consultas Query query = db.query(); // Indicamos el objeto contra el cual se realizará la consulta query.constrain(typeof(pelicula)); //////////////////////////////////////////////////////////////// // Configuramos la/s consulta/s en el objeto query //////////////////////////////////////////////////////////////// // Por dato particular : Recuperemos la(s) Pelicula(s) llamada(s) // El Padrino si existe(n). query.descend("_nombre").constrain("el Padrino"); // Por negación : Recuperar las películas que no se llamen // El Padrino si existen. query.descend("_nombre").constrain("el Padrino").Not(); // Por conjunción : Recuperar las películas llamadas El Padrino y // cuyo director sea Francis Ford Coppola Constraint constr = query.descend("_nombre").constrain("el Padrino"); query.descend("_director").constrain( Francis Ford Coppola ).And(constr); // Por disyunción : Recuperar las películas llamadas El Padrino o

12 // cuyo director se llame Francis Ford Coppola Constraint constr = query.descend("_nombre").constrain("el Padrino"); query.descend("_director").constrain( Francis Ford Coppola ).Or(constr); // Por similitud: Recuperar las películas que contengan God en su título IConstraint constr = query.descend("_nombre").constrain("god").like(); // Ordenando resultados de forma ascendente query.descend("_nombre").orderascending(); // Ordenando resultados de forma descendente query.descend("_nombre").orderdescending(); // Ejecutar la consulta y Mostrar los resultados ObjectSet result = query.execute(); listresult(result); Observamos en los ejemplos previos que mediante una consulta se desciende por los nodos especificando un atributo. Estos nodos pueden referir a tanto tipos primitivos como String en los ejemplos de _nombre o _director, o bien referir a otros objetos de nuestra aplicación, como veremos adelante en el ejemplo de acceso a objetos anidados. Finalmente, se restringe por el dato que queremos consultar ("El Padrino", Stanley Kubrick, Pelicula, DVD, etc). Observemos que las restricciones se dan en dos lugares: Al comienzo, cuando especificamos la clase de lo que queremos obtener (query.constrain(typeof(pelicula))) y al final mismo (Constrain( Francis Ford Coppola )). A su vez, estas restricciones (Constraints), se pueden combinar mediante juntores (Or, And, Not) y operadores de comparación (Equal, Identity, Like, Contains, Smaller, Greater, etc). Por lo tanto, descender y restringir son básicamente las ideas principales con S.O.D.A.. Descender por una consulta da como resultado otra consulta, a la cual podemos descender nuevamente y realizar la restricción que nos interese: // Acceso a objetos anidados query.constrain(alquiler.class); query.descend("copiafisica").descend("pelicula").constrain( nombre ); // Acceso a objetos anidados query.constrain(typeof(alquiler)); query.descend("copiafisica").descend("pelicula").constrain( _nombre ); Aquí restringimos por Alquiler, descendimos dos niveles por copiafisica y pelicula, para luego restringir por nombre. Esta idea de descenso, conlleva de por sí la idea de profundidad. Veamos un caso en donde la profundidad es importante, la actualización de objetos. Pongamos por ejemplo que deseamos actualizar una Película:

13 // Obtenemos una película utilizando un prototipo 1. Query query = db.query(); 2. ObjectSet result = db.get(new Pelicula("El laberinto del Fauno")); 3. Pelicula found = (Pelicula)result.next(); // Actualizar el director 4. found.director = Guillermo del Toro ; 5. db.set (found); // Mostrar resultados 6. Result = db.get (new Pelicula("El laberinto del Fauno")); 7. listresult(result); // Obtenemos una película utilizando un prototipo 1. Query query = db.query(); 2. ObjectSet result = db.get(new Pelicula("El laberinto del Fauno")); 3. Pelicula found = (Pelicula)result.Next(); // Actualizar el director 4. found.director = Guillermo del Toro ; 5. db.set (found); // Mostrar resultados 6. Result = db.get (new Pelicula("El laberinto del Fauno")); 7. listresult(result); Observamos una forma alternativa de recuperar un objeto, especificando un prototipo, el equivalente de las líneas 2 y 3 sin prototipos sería: 1. Query query = db.query(); 2. query.constrain(typeof(pelicula)); 3. query.descend("_name").constrain("el laberinto del Fauno"); ObjectSet result = query.execute(); 1. Query query = db.query(); 2. query.constrain(pelicula.class); 3. query.descend("name").constrain("el laberinto del Fauno"); ObjectSet result = query.execute(); Volviendo a la cuestión de la profundidad: Por omisión, sólo se actualizará el objeto pasado como parámetro al método Set(), es decir, los miembros primitivos de ese objeto, por ello la profundidad de actualización (update depth) será igual a 1. Es importante recordarlo ya que en general un modelo de objetos medianamente complejo seguramente utilizará más de un nivel de contención de objetos que no son primitivos. Si quisiéramos actualizar los objetos miembros, es decir, aquellos que están asociados a un objeto, debemos configurar el objeto raíz en cuestión para que actualice el grafo a la profundidad deseada. // Actualizar el grafo completo de objetos desde Pelicula Db4o.configure().objectClass(Pelicula.class).cascadeOnUpdate(true);

14 // Actualizar el grafo completo de objetos desde Pelicula Db4o.Configure().ObjectClass(typeof(Pelicula)).CascadeOnUpdate(true); En general es conveniente realizar un plan de actualización de tal forma que al ejecutar las consultas, sólo se recuperen aquellos objetos que necesiten actualizarse y no más, a fin de no penalizar en velocidad de acceso. Acceso mediante Consultas Nativas (NQs): Como vimos, una base de objetos en db4o se crea mediante código escrito en el mismo lenguaje de desarrollo de la aplicación (,, Visual Basic, etc.), por lo que no es necesario aprender otros lenguajes como SQL, HQL de Hibernate, OQL, JDOQL, EJBQL, o SODA (además del lenguaje de desarrollo elegido) para persistir nuestros datos. Esta característica es llamada Transparencia Persistente, "Native Queries" o simplemente NQs, y está marcando una tendencia entre los usuarios de Db4o. Aún cuando considere que el uso o aprendizaje de otro lenguaje no es realmente relevante, existe otra gran dificultad con los lenguajes de consultas, y es que están basados en cadenas. Estas cadenas deben ser analizadas léxicamente y sintácticamente por el parser del motor de persistencia, esto desde ya añade tiempo y es un proceso propenso a errores. S.O.D.A incluso, que minimiza el uso de cadenas, también tiene la dificultad de que el compilador no puede verificar la validez del atributo de una clase. Sin embargo, internamente, las Consultas Nativas funcionan sobre S.O.D.A., por lo que existe un conversor y un optimizador de consultas llamado Native Query Optimizer para maximizar su rendimiento. En concreto, la idea tras NQs es posibilitar la forma más simple posible de realizar una consulta. Esta forma más simple trabajaría con una instancia prototípica, es decir, una creada como si fuera un ejemplo, pero que representa a todas las de su tipo. Naturalmente esto sería algo tan simple como: // Obtener las películas que contienen la cadena Padrino Pelicula.getNombre().contains( Padrino ); // Obtener las películas que contienen la cadena Padrino Pelicula.Nombre.Contains( Padrino ); Siempre tenemos que tener en cuenta que lo principal de la consulta es esta expresión, que realiza la acción que nos interesa. A partir de aquí en adelante lo que veremos es de algún modo, cómo conformar a cada compilador y al motor de Db4o para que acepten esta expresión de la forma más simple posible. Esto no es fundamental, ni tampoco es complejo, pero sí es necesario aprenderlo para poder utilizar Consultas Nativas. Para que esto funcione entonces, lo primero que necesitaríamos es especificarle el tipo de esta instancia prototípica (película) a la expresión sobre la cual realizamos la consulta, y devolver los resultados en algún tipo de contenedor. Algo como:

15 // Obtener las películas que contienen la cadena Padrino (Pelicula pelicula) { return pelicula.getnombre().contains( Padrino ); // Obtener las películas que contienen la cadena Padrino (Pelicula pelicula) { return pelicula.nombre.contains( Padrino ); La próxima característica a agregar a la expresión necesita una introducción. Hace un instante mencionamos que, internamente, db4o realiza un proceso de análisis, conversión y posible optimización sobre las consultas. Esto agrega un nuevo requerimiento a nuestra expresión, que debería ser de tal forma que pueda pasarse como parámetro al motor de la base de objetos, u otro procesador de consultas, y así poder ser modificada. Siempre priorizando la simplicidad sintáctica, necesitaríamos entonces un objeto que pueda referenciar una especie de método anónimo que sea usado como parámetro y sea modificable, ya sea bien optimizándose o simplemente traduciéndose a SODA. Esto es posible a partir de.net 2.0 utilizando los llamados delegados. Un delegado es como un par objeto método que funciona como una retrollamada (callback), y sirve para tratar a un método como un objeto de primera clase, y así pasarse como parámetro a otros métodos. Los delegados son muy usados en el mundo de.net para realizar notificaciones de eventos, ejecuciones encadenadas y algunos otros casos en los que se necesite reflexión computacional. En y 5.0, es posible emular este comportamiento utilizando la clase Predicate como una clase anónima, y escribiendo en un método match la expresión dentro de ella, un detalle que le resta simplicidad en comparación con la versión de. En el caso particular de 5.0, se puede hacer uso de los generics. En código esto sería: // Obtener las películas que contienen la cadena Padrino new Predicate() { public boolean match(pelicula pelicula) { return pelicula.getnombre().contains( Padrino ); // Obtener las películas que contienen la cadena Padrino delegate (Pelicula pelicula) { return pelicula.nombre.contains( Padrino ); Lamentablemente la sintaxis para definir métodos anónimos en y aún es algo excesiva (esto tal vez cambie en el futuro con versiones posteriores de los lenguajes), en comparación con sus definiciones equivalentes en otros lenguajes, por ejemplo las expresiones lambda en Haskell o los CompiledMethods o bloques de Smalltalk. Aún así

16 pese a esta desventaja, en nuestra opinión, su uso es recomendable considerando sus contrapartes en lenguajes como SQL o lenguajes de consultas basadas en cadenas, propensos a errores de tipeo, dificultades para depuración, y a utilizar cientos de palabras claves. Existen también algunas ventajas adicionales como la posibilidad de realizar consultas dinámicas y parametrizadas, temas que podrían tratarse en futuros artículos. Volviendo a nuestra expresión, finalmente agregamos el contenedor para los resultados, quedando: 5.0 List <Pelicula> peliculas = database.query <Pelicula> ( new Predicate <Pelicula> () { public boolean match(pelicula pelicula) { return pelicula.getnombre().contains( El Padrino ); ); List peliculas = database.query ( new Predicate () { public boolean match(pelicula pelicula) { return pelicula.getnombre().contains( El Padrino ); );.NET 2.0 IList <Pelicula> peliculas = db.query <Pelicula> ( delegate (Pelicula pelicula) { return pelicula.nombre.contains( El Padrino ); );.NET 1.1 IList <Pelicula> peliculas = db.query (new PeliculaQuery()); Public class PeliculaQuery : Predicate { Public boolean match(pelicula pelicula) { return pelicula.nombre.contains( El Padrino ); ; Vamos ahora a reescribir nuestras consultas S.O.D.A, a la Consultas Nativas: // Consulta por dato particular : Recuperar la(s) Pelicula(s) // llamada(s) El Padrino si existe(n). List <Pelicula> peliculas = this.db.query(new Predicate<Pelicula>() { public boolean match (Pelicula pelicula) { return pelicula.get_nombre().equals( El Padrino ); ); // Por negación : Recuperar las películas que no se llamen // El Padrino si existen.

Guía de uso del Cloud Datacenter de acens

Guía de uso del Cloud Datacenter de acens guíasdeuso Guía de uso del Cloud Datacenter de Calle San Rafael, 14 28108 Alcobendas (Madrid) 902 90 10 20 www..com Introducción Un Data Center o centro de datos físico es un espacio utilizado para alojar

Más detalles

Introducción a la extensión de scripting en gvsig 2.0

Introducción a la extensión de scripting en gvsig 2.0 Introducción a la extensión de scripting en gvsig 2.0 2012 gvsig Association Este documento se distribuye con la licencia Creative Commons 1 2 Índice de contenido 1 Introducción... 3 Instalación de la

Más detalles

INDICE. Página 2 de 23

INDICE. Página 2 de 23 INDICE 1. INTRODUCCIÓN... 3 1.1 OBJETIVO DE ESTE MANUAL... 3 1.2 DOCUMENTOS RELACIONADOS... 3 2. REQUERIMIENTOS MÍNIMOS DEL SISTEMA... 3 3. REQUERIMIENTOS RECOMENDADOS DEL SISTEMA... 3 4. INSTALACIÓN...

Más detalles

Toda base de datos relacional se basa en dos objetos

Toda base de datos relacional se basa en dos objetos 1. INTRODUCCIÓN Toda base de datos relacional se basa en dos objetos fundamentales: las tablas y las relaciones. Sin embargo, en SQL Server, una base de datos puede contener otros objetos también importantes.

Más detalles

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX En este manual se presenta el proceso de configuración de una Maquina Virtual en VirtualBox, que será utilizada para instalar un Servidor

Más detalles

Tutorial: Primeros Pasos con Subversion

Tutorial: Primeros Pasos con Subversion Tutorial: Primeros Pasos con Subversion Introducción Subversion es un sistema de control de versiones open source. Corre en distintos sistemas operativos y su principal interfaz con el usuario es a través

Más detalles

Descarga, instalación y uso de herramientas:

Descarga, instalación y uso de herramientas: Descarga, instalación y uso de herramientas: Eclipse: Instalación de Eclipse (Más información en http://www.eclipse.org/) 1. Copiar, descomprimir e instalar si es necesario la última versión de Eclipse

Más detalles

Edición de Ofertas Excel Manual de Usuario

Edición de Ofertas Excel Manual de Usuario Edición de Ofertas Excel Manual de Usuario Alfonso XI, 6 28014 Madrid F(+34) 91 524 03 96 www.omie.es Ref. MU_OfertasExcel.docx Versión 4.0 Fecha: 2012-11-26 ÍNDICE 1 INTRODUCCIÓN 3 2 CONSIDERACIONES DE

Más detalles

REQUISITOS PARA LA FIRMA DIGITAL

REQUISITOS PARA LA FIRMA DIGITAL REQUISITOS PARA LA FIRMA DIGITAL 1 Contenido Capítulo/sección Página 1 Introducción. 3 2 Restricciones. 4 3 Máquina Virtual de Java 5 3.1 Abrir Panel de Control de Java 5 3.2 Verificación de versión desde

Más detalles

Redes de área local: Aplicaciones y servicios WINDOWS

Redes de área local: Aplicaciones y servicios WINDOWS Redes de área local: Aplicaciones y servicios WINDOWS 4. Servidor DNS 1 Índice Definición de Servidor DNS... 3 Instalación del Servidor DNS... 5 Configuración del Servidor DNS... 8 2 Definición de Servidor

Más detalles

Instalación de OPUS PLANET en red

Instalación de OPUS PLANET en red TITULO: en red INFORMACIÓN GENERAL: Versiones: Resumen: Referencias a otras notas técnicas: Palabras clave: OPUS PLANET Implementar OPUS PLANET en red, realizado cambios a la configuración de SQL server

Más detalles

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos

Más detalles

WINDOWS 2008 5: TERMINAL SERVER

WINDOWS 2008 5: TERMINAL SERVER WINDOWS 2008 5: TERMINAL SERVER 1.- INTRODUCCION: Terminal Server proporciona una interfaz de usuario gráfica de Windows a equipos remotos a través de conexiones en una red local o a través de Internet.

Más detalles

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas.

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas. 1 de 18 Inicio Qué es un foro En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas. En el campus virtual, el foro es una herramienta

Más detalles

Capítulo 9. Archivos de sintaxis

Capítulo 9. Archivos de sintaxis Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server 5.0 es un servidor web, que incluye los servicios de HTTP, HTTPS, FTP, SMTP (correo saliente) y NNTP (grupos de noticias). Además es capaz de ejecutar

Más detalles

Grupo: Documentación Tipo documento: Manual de Usuario V.1.0 /2011 René Darío Pacios Díaz

Grupo: Documentación Tipo documento: Manual de Usuario V.1.0 /2011 René Darío Pacios Díaz Proyecto - Rene Downloader v1.0 - Pág.1/7 Proyecto - Rene Downloader v1.0 - Pág.2/7 INDICE INDICE... 2 1. Introducción... 3 2. Instrucciones de manejo... 3 2.1. Controles básicos... 3 2.2. Estableciendo

Más detalles

Utilidades de la base de datos

Utilidades de la base de datos Utilidades de la base de datos Desde esta opcion del menú de Access, podemos realizar las siguientes operaciones: Convertir Base de datos Compactar y reparar base de datos Administrador de tablas vinculadas

Más detalles

Unidad Didáctica 12. La publicación

Unidad Didáctica 12. La publicación Unidad Didáctica 12 La publicación Contenido 1. Desarrollar y explotar 2. Definición del Sitio 3. Alojar nuestra primera página Web 4. Configurar la conexión FTP U.D. 12 La publicación 1. Desarrollar y

Más detalles

Manual de NetBeans y XAMPP

Manual de NetBeans y XAMPP Three Headed Monkey Manual de NetBeans y XAMPP Versión 1.0 Guillermo Montoro Delgado Raúl Nadal Burgos Juan María Ruiz Tinas Lunes, 22 de marzo de 2010 Contenido NetBeans... 2 Qué es NetBeans?... 2 Instalación

Más detalles

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS Servicio DNS - 1 - Servicio DNS...- 3 - Definición... - 3 - Instalación... - 5 - Configuración del Servidor DNS...- 10 - - 2 - Servicio DNS Definición

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en

Más detalles

Instalación y Registro Versiones Educativas 2013

Instalación y Registro Versiones Educativas 2013 Instalación y Registro Versiones Educativas 2013 Octubre 2012 Instalación y Registro Online página 2 Índice Introducción... 4 Instalación Versión Educativa Aula... 6 1. Setup... 6 2. Instalación... 7 3.

Más detalles

http://www.oracle.com/technetwork/es/java/javase/downloads/index.html

http://www.oracle.com/technetwork/es/java/javase/downloads/index.html Introducción En esta primera parte del taller iremos viendo paso a paso como poner a punto todo tu entorno de trabajo para poder empezar cuanto antes a desarrollar tu primera aplicación Android para luego

Más detalles

Microsoft Access proporciona dos métodos para crear una Base de datos.

Microsoft Access proporciona dos métodos para crear una Base de datos. Operaciones básicas con Base de datos Crear una Base de datos Microsoft Access proporciona dos métodos para crear una Base de datos. Se puede crear una base de datos en blanco y agregarle más tarde las

Más detalles

Visual Studio 2008 es el conjunto de herramientas de

Visual Studio 2008 es el conjunto de herramientas de 1. VISUAL STUDIO 2008 Visual Studio 2008 es el conjunto de herramientas de desarrollo y programación creado por Microsoft tanto para aplicaciones Windows como aplicaciones web. La aparición de Visual Studio

Más detalles

Archivo de correo con Microsoft Outlook contra Exchange Server

Archivo de correo con Microsoft Outlook contra Exchange Server Archivo de correo con Microsoft Outlook contra Exchange Server Resumen Con este proceso de archivado, lo que pretendemos es guardar nuestro correo en un archivo de datos, para así poder realizar una copia

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

Guía de instalación del servidor

Guía de instalación del servidor Guía de instalación del servidor Autores: Versión: 1.0 Jesús Manuel Rodríguez Sánchez Miguel Ángel Lorente López Fecha: 22/01/2009 Tabla de contenido Manual de Instalación del Servidor 4 Paso 1) Instalar

Más detalles

Tema: CREACIÓN DE CONSULTAS E INFORMES EN UNA BASE DE DATOS CON MICROSOFT ACCESS 2013.

Tema: CREACIÓN DE CONSULTAS E INFORMES EN UNA BASE DE DATOS CON MICROSOFT ACCESS 2013. Empremática, Guía12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Empremática Tema: CREACIÓN DE CONSULTAS E INFORMES EN UNA BASE DE DATOS CON MICROSOFT ACCESS 2013. Objetivos: Identificar las

Más detalles

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas

Capítulo I. Definición del problema y objetivos de la tesis. En la actualidad Internet se ha convertido en una herramienta necesaria para todas Capítulo I Definición del problema y objetivos de la tesis 1.1 Introducción En la actualidad Internet se ha convertido en una herramienta necesaria para todas las personas ya que nos permite realizar diferentes

Más detalles

Workflows? Sí, cuántos quiere?

Workflows? Sí, cuántos quiere? Workflows? Sí, cuántos quiere? 12.11.2006 Servicios Profesionales Danysoft Son notables los beneficios que una organización puede obtener gracias al soporte de procesos de negocios que requieran la intervención

Más detalles

Iniciar flujo a partir de un archivo XML

Iniciar flujo a partir de un archivo XML How to Iniciar flujo a partir de un archivo XML Versión: 2.0 Fecha de publicación 30-03-2011 Aplica a: Q-flow 3.0y Q-flow 3.1 Índice Introducción... 3 Pre-requisitos... 3 Componentes de la solución...

Más detalles

Curso de PHP con MySQL Gratis

Curso de PHP con MySQL Gratis Curso de PHP con MySQL Gratis Introducción Este mini curso o mini tutorial de PHP le ayudará a realizar cualquier sistema para que pueda insertar uno o varios registros a una base de datos con MySQL, este

Más detalles

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 5: Report Builder

Ministerio de Educación. Base de datos en la Enseñanza. Open Office. Módulo 5: Report Builder Ministerio de Educación Base de datos en la Enseñanza. Open Office Módulo 5: Report Builder Instituto de Tecnologías Educativas 2011 Informes con Oracle Report Builder En su configuración original, OpenOffice

Más detalles

CITRIX 4.5 - Citrix Application Streaming

CITRIX 4.5 - Citrix Application Streaming 1 de 39 01/12/2007 1:06 CITRIX 4.5 - Citrix Application Streaming Es la caracteristica principal de la versión 4.5 de Citrix, el Application Streaming, en este documento se explica cómo usarlo. Application

Más detalles

PLANTILLAS EN MICROSOFT WORD

PLANTILLAS EN MICROSOFT WORD PLANTILLAS EN MICROSOFT WORD Una plantilla es un modelo o patrón para crear nuevos documentos. En una plantilla se guarda internamente el formato utilizado, es decir, el estilo de la fuente, el tamaño,

Más detalles

Introducción a Visual Studio.Net

Introducción a Visual Studio.Net Introducción a Visual Studio.Net Visual Studio es un conjunto completo de herramientas de desarrollo para la generación de aplicaciones Web ASP.NET, Servicios Web XML, aplicaciones de escritorio y aplicaciones

Más detalles

GUÍA PARA LA CONFIGURACIÓN Y UTILIZACIÓN DE LA IDE DRJAVA

GUÍA PARA LA CONFIGURACIÓN Y UTILIZACIÓN DE LA IDE DRJAVA Universidad Católica del Norte Facultad de Ingeniería y Ciencias Geológicas Departamento de Ingeniería de Sistemas y Computación GUÍA PARA LA CONFIGURACIÓN Y UTILIZACIÓN DE LA IDE DRJAVA 1. INTRODUCCIÓN

Más detalles

Operación Microsoft Access 97

Operación Microsoft Access 97 Trabajar con Controles Características de los controles Un control es un objeto gráfico, como por ejemplo un cuadro de texto, un botón de comando o un rectángulo que se coloca en un formulario o informe

Más detalles

COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER

COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER 2011 2012 COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER WWW.FAUBELL.COM vicente@faubell.com Hasta ahora hemos visto una pequeña introducción a la creación de las páginas web. No te preocupes por

Más detalles

MANUAL DE SHAREPOINT 2013. Por: Área de Administración de Aplicaciones.

MANUAL DE SHAREPOINT 2013. Por: Área de Administración de Aplicaciones. MANUAL DE SHAREPOINT 2013 Por: Área de Administración de Aplicaciones. Indice 1. Tipos de Cuentas de Usuario... 2 2. Compatibilidad con exploradores de Internet... 2 3. Como acceder a un sitio de SharePoint

Más detalles

Aplicaciones Web con Delphi

Aplicaciones Web con Delphi Artículos técnicos Grupo Danysoft: Aplicaciones Web con Delphi Por Pablo Reyes Grupo Danysoft noviembre de 2002 - (902) 123146 www.danysoft.com Aplicaciones Web con Delphi 7 Una de las novedades más importantes

Más detalles

Capítulo 1 Documentos HTML5

Capítulo 1 Documentos HTML5 Capítulo 1 Documentos HTML5 1.1 Componentes básicos HTML5 provee básicamente tres características: estructura, estilo y funcionalidad. Nunca fue declarado oficialmente pero, incluso cuando algunas APIs

Más detalles

30 de Mayo de 2008. www.sigrid.es

30 de Mayo de 2008. www.sigrid.es Guia de Instalación del servidor SgdWMS 30 de Mayo de 2008 www.sigrid.es 2 Índice 1.- INTRODUCCIÓN... 3 2.- INSTALACIÓN DE INTERNET INFORMATION SERVER (IIS)... 3 3.- INSTALACIÓN DEL SERVIDOR SGDWMS EN

Más detalles

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo. CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia

Más detalles

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano juantomas@lared.es

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano juantomas@lared.es Juantomás García GNOME Hispano juantomas@lared.es Qué es el proyecto MONO?. Estado actual del proyecto. Por qué es interesante para el software libre disponer de la tecnología relacionado con el proyecto

Más detalles

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa...2. 1.1 Configuración Internet Explorer para ActiveX...

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa...2. 1.1 Configuración Internet Explorer para ActiveX... INDICE 1 Configuración previa...2 1.1 Configuración Internet Explorer para ActiveX...2 1.2 Problemas comunes en sistema operativo Windows...8 1.2.1 Usuarios con sistema operativo Windows XP con el Service

Más detalles

1 MANUAL DE INSTALACIÓN

1 MANUAL DE INSTALACIÓN 1 MANUAL DE INSTALACIÓN El software necesario para la ejecución de las aplicaciones se incluye en el apartado software del cd del proyecto. Aún así, a continuación se explica como poder descargar los programas

Más detalles

Catoira Fernando Fullana Pablo Rodriguez Federico [MINERIA DE LA WEB] Proyecto Final - Informe Final

Catoira Fernando Fullana Pablo Rodriguez Federico [MINERIA DE LA WEB] Proyecto Final - Informe Final Catoira Fernando Fullana Pablo Rodriguez Federico [MINERIA DE LA WEB] Proyecto Final - Informe Final INTRODUCCION En principio surgió la idea de un buscador que brinde los resultados en agrupaciones de

Más detalles

Manual para la utilización de PrestaShop

Manual para la utilización de PrestaShop Manual para la utilización de PrestaShop En este manual mostraremos de forma sencilla y práctica la utilización del Gestor de su Tienda Online mediante Prestashop 1.6, explicaremos todo lo necesario para

Más detalles

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

AGREGAR COMPONENTES ADICIONALES DE WINDOWS INSTALACIÓN DE IIS EN WINDOWS XP El sistema está desarrollado para ejecutarse bajo la plataforma IIS de Windows XP. Por esta razón, incluimos la instalación de IIS (Servidor de Web) para la correcta ejecución

Más detalles

Tutorial: Instalación de Eclipse para programar Android en Windows

Tutorial: Instalación de Eclipse para programar Android en Windows Tutorial: Instalación de Eclipse para programar Android en Windows En este tutorial vamos a aprender todo lo necesario para dejar nuestra computadora lista para programar en Java para Android, por medio

Más detalles

MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn

MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn MANUAL DE USUARIO CMS- PLONE www.trabajo.gob.hn Tegucigalpa M. D. C., Junio de 2009 Que es un CMS Un sistema de administración de contenido (CMS por sus siglas en ingles) es un programa para organizar

Más detalles

Kaldeera Advanced Forms 2009 Guía del usuario

Kaldeera Advanced Forms 2009 Guía del usuario Kaldeera Advanced Forms 2009 Guía del usuario Indice Usando Kaldeera Advanced Forms 2009... 3 Accediendo a la página de configuración... 3 Activando o desactivando la funcionalidad de Kaldeera Advanced

Más detalles

FUNDAMENTOS DE PROGRAMACION CON C#

FUNDAMENTOS DE PROGRAMACION CON C# Capítulo 1 FUNDAMENTOS DE PROGRAMACION CON C# El lenguaje C# C# (léase, en inglés C sharp, y en español C almohadilla) es un lenguaje de programación que permite el desarrollo de aplicaciones para Internet,

Más detalles

CONCLUISIONES Y RECOMENDACIONES

CONCLUISIONES Y RECOMENDACIONES CONCLUISIONES Y RECOMENDACIONES CONTENIDO 7.1 Verificación de Hipótesis 7.2 Conclusiones 7.3 Recomendaciones Mónica Cecilia Gallegos Varela - 145 - VERIFICACIÓN DE HIPÓTESIS La hipótesis planteada al inicio

Más detalles

Análisis de aplicación: BlueFish

Análisis de aplicación: BlueFish Análisis de aplicación: BlueFish Este documento ha sido elaborado por el Centro de excelencia de software libre de Castilla La Mancha (Ceslcam, http://ceslcam.com). Copyright 2011, Junta de Comunidades

Más detalles

Guía de instalación de la carpeta Datos de IslaWin

Guía de instalación de la carpeta Datos de IslaWin Guía de instalación de la carpeta Datos de IslaWin Para IslaWin Gestión CS, Classic o Pyme a partir de la revisión 7.00 (Revisión: 10/11/2011) Contenido Introducción... 3 Acerca de este documento... 3

Más detalles

Autenticación Centralizada

Autenticación Centralizada Autenticación Centralizada Ing. Carlos Rojas Castro Herramientas de Gestión de Redes Introducción En el mundo actual, pero en especial las organizaciones actuales, los usuarios deben dar pruebas de quiénes

Más detalles

COMPROBACIONES BÁSICAS PARA EL USO DE FIRMA EN EL RTC

COMPROBACIONES BÁSICAS PARA EL USO DE FIRMA EN EL RTC TITULO: COMPROBACIONES BÁSICAS PARA EL USO DE FIRMA EN EL RTC RESUMEN: La idea de este documento es mostrar una serie de acciones y ayudas básicas para intentar determinar y solucionar problemas en la

Más detalles

Manual de usuario Versión: 1.3 Edición: 05/02/2015 1

Manual de usuario Versión: 1.3 Edición: 05/02/2015 1 Manual de usuario Versión: 1.3 Edición: 05/02/2015 1 Índice Formula Integration Manual de Usuario... 3 1. Introducción... 3 1.1. Funcionalidades... 3 2. Instalación... 3 2.1. Requisitos mínimos... 3 2.2.

Más detalles

Para obtener más información, vea Introducción al control DataRepeater (Visual Studio).

Para obtener más información, vea Introducción al control DataRepeater (Visual Studio). Lo nuevo en Visual Basic DataRepeater, control El nuevo control DataRepeater permite utilizar controles estándar de formularios Windows Forms para mostrar filas de datos en un contenedor desplazable. Este

Más detalles

Manual de instalación de Java Runtime Environment.

Manual de instalación de Java Runtime Environment. Manual de instalación de Java Runtime Environment. Se recomienda, antes de proceder con la instalación en línea, desactivar el cortafuego de Internet. En algunos casos, la configuración del cortafuegos

Más detalles

MANUAL DE INSTALACIÓN PLATAFORMA PROGRESA AUTOR: ASAC COMUNICACIONES DEPARTAMENTO DE DESARROLLO NOVIEMBRE DE 2007

MANUAL DE INSTALACIÓN PLATAFORMA PROGRESA AUTOR: ASAC COMUNICACIONES DEPARTAMENTO DE DESARROLLO NOVIEMBRE DE 2007 MANUAL DE INSTALACIÓN PLATAFORMA PROGRESA AUTOR: ASAC COMUNICACIONES DEPARTAMENTO DE DESARROLLO NOVIEMBRE DE 2007 INDICE 1 INTRODUCCIÓN...2 2 REQUISITOS...3 3 INSTALACIÓN...4 3.1 INSTALACIÓN DEL MICROSOFT.NET

Más detalles

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC1102 Introducción a la Programación Tutorial eclipse TM Introducción al uso de eclipse TM Contents

Más detalles

Acronis License Server. Guía del usuario

Acronis License Server. Guía del usuario Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE

Más detalles

Tutorial de herramientas de Google

Tutorial de herramientas de Google Tutorial de herramientas de Google Elizabeth Fons y Maximiliano Geier 1. Introducción En este tutorial les vamos a contar cómo utilizar algunas de las herramientas de trabajo colaborativo que ofrece gratuitamente

Más detalles

Instalación del Admin CFDI

Instalación del Admin CFDI Instalación del Admin CFDI Importante!!!Antes de comenzar verifique los requerimientos de equipo esto podrá verlo en la guía 517 en nuestro portal www.control2000.com.mx en el apartado de soporte, ahí

Más detalles

Bienvenido al sistema de Curriculum Digital CVDigital

Bienvenido al sistema de Curriculum Digital CVDigital CVDigital 1 Bienvenido al sistema de Curriculum Digital CVDigital Este programa se ha desarrollado con el fin de llevar a cabo Certificaciones y Recertificaciones de los profesionales a partir del ingreso

Más detalles

INTRODUCCIÓN A LA PROGRAMACIÓN WEB UNIDAD. Estructura de contenidos: http://www.ucv.edu.pe/cis/ cisvirtual@ucv.edu.pe. 1.

INTRODUCCIÓN A LA PROGRAMACIÓN WEB UNIDAD. Estructura de contenidos: http://www.ucv.edu.pe/cis/ cisvirtual@ucv.edu.pe. 1. INTRODUCCIÓN A LA PROGRAMACIÓN WEB UNIDAD 1 Estructura de contenidos: 1. Programación Web 2. Sistema De Información 3. Sistema Web 4. Requisitos Para Sistemas Web Con Asp 5. Internet Information Server

Más detalles

Optimizar base de datos WordPress

Optimizar base de datos WordPress Optimizar base de datos WordPress Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com WordPress se ha convertido en uno de los CMS más utilizados en todo el mundo. Su robustez,

Más detalles

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT Versión 1. Mayo de 2001 Luis Vinuesa Martínez. Departamento de Informática Universidad de Oviedo vinuesa@correo.uniovi.es www.di.uniovi.es/~vinuesa ÍNDICE. Introducción...

Más detalles

Manual instalación Windows 8. Instalar Windows 8 paso a paso

Manual instalación Windows 8. Instalar Windows 8 paso a paso Manual instalación Windows 8. Instalar Windows 8 paso a paso Windows 8 es el nuevo sistema operativo de Microsoft, en el cual se han incluido más de 100.000 cambios en el código del sistema operativo,

Más detalles

Redes de área local: Aplicaciones y servicios WINDOWS

Redes de área local: Aplicaciones y servicios WINDOWS Redes de área local: Aplicaciones y servicios WINDOWS 7. Escritorio remoto 1 Índice Definición de Escritorio Remoto... 3 Habilitar Escritorio Remoto... 4 Instalación del cliente de Escritorio Remoto...

Más detalles

7zip es un programa de carácter libre y gratuito, que permite tanto comprimir como descomprimir archivos, con una alta capacidad de comprensión.

7zip es un programa de carácter libre y gratuito, que permite tanto comprimir como descomprimir archivos, con una alta capacidad de comprensión. 1 QUÉ ES 7-ZIP? 7zip es un programa de carácter libre y gratuito, que permite tanto comprimir como descomprimir archivos, con una alta capacidad de comprensión. Para comenzar a utilizar 7-ZIP debemos descargar

Más detalles

LiLa Portal Guía para profesores

LiLa Portal Guía para profesores Library of Labs Lecturer s Guide LiLa Portal Guía para profesores Se espera que los profesores se encarguen de gestionar el aprendizaje de los alumnos, por lo que su objetivo es seleccionar de la lista

Más detalles

CAPÍTULO 3 VISUAL BASIC

CAPÍTULO 3 VISUAL BASIC CAPÍTULO 3 VISUAL BASIC 3.1 Visual Basic Microsoft Visual Basic es la actual y mejor representación del viejo lenguaje BASIC, le proporciona un sistema completo para el desarrollo de aplicaciones para

Más detalles

QUERCUS PRESUPUESTOS MANUAL DEL USO

QUERCUS PRESUPUESTOS MANUAL DEL USO QUERCUS PRESUPUESTOS MANUAL DEL USO 2 Tabla de Contenido 1 Introducción 1 1.1 General 1 1.1.1 Que es Quercus Presupuestos? 1 1.1.2 Interfaz 1 1.1.3 Árbol de Navegación 2 1.1.4 Estructura de Datos de un

Más detalles

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto INFORMÁTICA INFORMÁTICA 1 Sesión No. 4 Nombre: Procesador de Texto Contextualización La semana anterior revisamos los comandos que ofrece Word para el formato del texto, la configuración de la página,

Más detalles

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...

Más detalles

Manual de iniciación a

Manual de iniciación a DOCUMENTACIÓN Picasa y otras nubes Manual de iniciación a DROPBOX 1 Últimamente se ha hablado mucho de la nube y de cómo es el futuro de la Web. También se han presentado servicios y aplicaciones que ya

Más detalles

Software Criptográfico FNMT-RCM

Software Criptográfico FNMT-RCM Software Criptográfico FNMT-RCM ÍNDICE 1. DESCARGA E INSTALACIÓN DEL SOFTWARE 2. EXPORTACIÓN DE CERTIFICADOS EN MICROSOFT INTERNET EXPLORER 3. IMPORTACIÓN DEL CERTIFICADO A LA TARJETA CRIPTOGRÁFICA -2-

Más detalles

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas...

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas... .NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS Definiciones...2 C# y Java.....3 Similitudes...4 Ventajas...4 Definiciones Sobre J2EE J2EE (Java 2 Platform Enterprise Edition)

Más detalles

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS ARCHIVOS ANEXOS Son los documentos, hojas de cálculo o cualquier archivo que se anexa a las carpetas, subcarpetas, hallazgos u otros formularios de papeles de trabajo. Estos archivos constituyen la evidencia

Más detalles

SEPARAR Y ADJUNTAR UNA BASE DE DATOS. Separar una base de datos

SEPARAR Y ADJUNTAR UNA BASE DE DATOS. Separar una base de datos SEPARAR Y ADJUNTAR UNA BASE DE DATOS Separar una base de datos Al separar una base de datos la está eliminando de la instancia de SQL Server, pero la deja intacta en sus archivos de datos y en los archivos

Más detalles

Manual de configuración de Adobe Reader para la validación de la firma de un documento.

Manual de configuración de Adobe Reader para la validación de la firma de un documento. Manual de configuración de Adobe Reader para la validación de la firma de un documento. Versión 1.0 Página 1 de 24 TABLA DE CONTENIDOS INSTALAR LOS CERTIFICADOS DE LA FNMT-RCM.... 3 CONFIGURAR ADOBE READER

Más detalles

Instalación de Winisis en Windows 8 (64 bits) usando Virtual Box Oracle Ernesto Spinak 10/07/2013 borrador 1

Instalación de Winisis en Windows 8 (64 bits) usando Virtual Box Oracle Ernesto Spinak 10/07/2013 borrador 1 Instalación de Winisis en Windows 8 (64 bits) usando Virtual Box Oracle Ernesto Spinak 10/07/2013 borrador 1 Introducción Winisis es una aplicación Windows que usa librerías de programación para sistemas

Más detalles

PROYECTO FINAL Manual de Configuración Organización: Juan Lomo

PROYECTO FINAL Manual de Configuración Organización: Juan Lomo UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL CÓRDOBA PROYECTO FINAL Manual de Configuración Organización: Juan Lomo ALUMNOS Boczkowski Lucas (50189) Calvo Outes Ignacio (50235) Emilio Ezequiel (50323)

Más detalles

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La puesta en marcha de WordPress es muy sencilla,

Más detalles

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L.

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L. Manual de Usuario Programa diseñado y creado por Contenido 1. Acceso al programa... 3 2. Opciones del programa... 3 3. Inicio... 4 4. Empresa... 4 4.2. Impuestos... 5 4.3. Series de facturación... 5 4.4.

Más detalles

Acronis Backup & Recovery 11 Guía de inicio rápido

Acronis Backup & Recovery 11 Guía de inicio rápido Acronis Backup & Recovery 11 Guía de inicio rápido Se aplica a las siguientes ediciones: Advanced Server Virtual Edition Advanced Server SBS Edition Advanced Workstation Server for Linux Server for Windows

Más detalles

3. Número inicial y número final de mensajes mostrados en la página actual.

3. Número inicial y número final de mensajes mostrados en la página actual. Sistema WEBmail El sistema WEBmail permite el acceso rápido y sencillo a su buzón de correo utilizando un navegador de páginas Web. Normalmente es usado como complemento al lector de correo tradicional,

Más detalles

CONFEDERACIÓN DE EMPRESARIOS DE MÁLAGA

CONFEDERACIÓN DE EMPRESARIOS DE MÁLAGA GUÍA DEL ALUMNO 1 Introducción 2 Acceso a la plataforma 3 Cerrar sesión 4 Estructura del curso virtual 5 Foros 5.1 No quiero recibir copias de los foros en mi email 6 Mensajería Interna 7 Como subir tareas

Más detalles

Manual de uso. Manual de uso - citanet 1

Manual de uso. Manual de uso - citanet 1 Manual de uso Manual de uso - citanet 1 1. Requisitos previos a la instalación... 3 2. Primer inicio de la aplicación.... 3 2.1. Pantalla de inicio de sesión.... 3 2.2. Datos de la empresa y configuración

Más detalles

MANUAL DE USUARIO PARA LA INSTALACION DE LOS AGENTES COMMVAULT SIMPANA 9.0

MANUAL DE USUARIO PARA LA INSTALACION DE LOS AGENTES COMMVAULT SIMPANA 9.0 MANUAL DE USUARIO PARA LA INSTALACION DE LOS AGENTES COMMVAULT SIMPANA 9.0 Commvault Simpana 9 es la solución a la administración de los respaldos de los datos y archivos digitales, ya que ofrece un enfoque

Más detalles

Manual Instalación. Componentes necesarias para operar en la Facturación Electrónica SII

Manual Instalación. Componentes necesarias para operar en la Facturación Electrónica SII Manual Instalación Componentes necesarias para operar en la Facturación Electrónica SII Fecha: 03/06/2008 CONTROL DE VERSIONES... 3 1. INTRODUCCIÓN... 4 2. REQUERIMIENTOS DE AMBIENTE... 5 2.1 EN CUANTO

Más detalles

SBConta.NET Manual de instalación. SBSS Consulting, S.A. 08010 Barcelona Telf. 93.268-0356, fax 93-268-0070 E-Mail: sbss@sbss.es, web www.sbss.

SBConta.NET Manual de instalación. SBSS Consulting, S.A. 08010 Barcelona Telf. 93.268-0356, fax 93-268-0070 E-Mail: sbss@sbss.es, web www.sbss. SBConta.NET Manual de instalación SBSS Consulting, S.A. 08010 Barcelona Telf. 93.268-0356, fax 93-268-0070 E-Mail: sbss@sbss.es, web www.sbss.es SBConta.NET C o n t e n i d o i Contenido 1. Introducción.

Más detalles

GUÍA DE OUTLOOK. Febrero 2010

GUÍA DE OUTLOOK. Febrero 2010 GUÍA DE OUTLOOK 2007 Febrero 2010 CONFIGURACIÓN: Lo primero que debe hacer antes de abrir Outlook es crear un perfil, al que configurara una cuenta de correo. Para ello vaya a su menú de inicio de Windows

Más detalles

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes.

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes. Tutorial DC++ Para compartir, lo mejor es usar el DC++, que es un programa de intercambio P2P (como el emule) pero optimizado para usarlo en redes locales. Usarlo es muy sencillo y configurarlo también,

Más detalles