sincronizacionHoy voy a hablar de estos dos términos, consistencia y sincronización, porque en el tema de las cachés, y con mantenimiento y programación, están especialmente relacionados. Lo explico a continuación.

Se pretende, por norma general, que los datos de la caché sean lo más parecidos posible a los que hay en la propia base de datos. Esto es lo que denominamos consistencia de la caché. Para lograr esto, necesitamos sincronizar los datos, entre la caché y la base de datos. Esto puede ser algo muy tedioso si se hace a mano, por eso hay sistemas y metodologías que nos ayudan a automatizarlo.

No hablaré de las herramientas por no darle demasiada extensión al artículo, pero sí de algún método o solución. Estos métodos se constituyen normalmente en políticas de uso, concretamente en políticas especiales, que en nuestro caso llamaremos Políticas de Actualización o Escritura. Estas políticas determinan el instante en que se actualiza la información en la memoria principal, siendo esta la base de datos en nuestro caso, cuando se hace una escritura en la memoria caché.

Leer el resto de esta entrada »


glassfishnetbeansYa sé que Netbeans, al igual que Eclipse, es un come RAM de los peores, y que Glassfish como servidor web no es lo más aconsejable. Pero hace poco me he metido con Activiti y BPMN (Business Process Modeling), y sinceramente era la forma más lógica para empezar a jugar con esta tecnología.

Más pronto que tarde, empecé a encontrarme con los problemas de compilación para generar los WAR que desplegaría en el Glassfish. Me había pasado antes que por alguna razón, la carpeta de Build se me quedaba bloqueada, pero no con tanta frecuencia.

Al principio, al no saber qué ocurría, me limitaba a apagar el Netbeans, y el problema se solucionaba. Pero al ser tan frecuentes, pronto me pregunté qué era lo que bloqueaba la carpeta Build de forma tan catastrófica.

Me hice con el Unlocker, no por desbloquear y ya está, sino porque te dice quién está bloqueando los archivos, y mira por dónde que se trataba del propio Glassfish.

Leer el resto de esta entrada »

Instalación y puesta en marcha de Oracle Service Bus

Publicado: mayo 4, 2015 de elvenbyte en Tecnología
Etiquetas:,

osbAlgunas veces te hacen encargos que parecen sencillos, teniendo en cuenta que ya has utilizado la herramienta anteriormente, y sin embargo se te complica en la instalación llevándote días conseguir hacelo funcionar. Para colmo la información que hay en Internet es poca y en otros idiomas, y teniendo en cuenta que el proveedor tampoco da una información clara, ahí dejo una guía de cómo conseguir ponerlo en funcionamiento, con la intención de que quien la encuentre no tenga que pasarse días en ello.

Es muy importante tener en cuenta que todo este proceso es exclusivo para windows. Concretamente estos pasos se han realizado enteros con Windows 7 64bit.
Todo el proceso puede requerir varios reinicios.

Leer el resto de esta entrada »

Trabajando con cachés IV

Publicado: marzo 28, 2015 de elvenbyte en Tecnología
Etiquetas:,

memoriaLa duración de la caché es quizás el concepto del que menos se habla cuando se habla de cachés. Suele hablarse más de conceptos que ya hemos tratado, como persistencia de los datos, o tiempo de acceso. Pero la permanencia o duración de la caché también es importante.
Para la duración utilizaremos el término TTL (Time To Live, o tiempo de vida, en su traducción), y veremos cómo funciona.
Al trabajar con cachés no pensamos en cuánto nos tiene que durar. Damos por hecho que cuando la tengamos montada, cargada y lista, en nuestra memoria, o en nuestro clúster, se va a ir actualizando cuando está programado, y vamos a tener acceso a ella de forma permanente.
Pero a veces necesitamos que no se produzca esa permanencia. A veces nos hace falta que esos datos en memoria “mueran”, por decirlo así, tras un periodo de tiempo determinado, o en un momento concreto. Las razones para querer esto pueden ser muchas y variadas, pero no tengo intención de incorporar ejemplos. Lo que sí voy a aportar, como información adicional, es que este TTL puede forzarse para una caché concreta, o sólo para parte de los datos de la misma.

Leer el resto de esta entrada »

Problema: fallo al crear tarea o tipo eclipse. AntTaskName

Publicado: febrero 16, 2015 de elvenbyte en Tecnología
Etiquetas:, ,

eclipse-ant-view

Hace poco me surgió este problema, y como muchos otros para los desarrolladores avanzados, no solemos encontrar solución en Castellano, pero en inglés casi siempre está. A mi particularmente me da igual porque hablo inglés, pero a veces echo de menos encontrar la información en castellano.
La cuestión es que no existe mucha documentación en nuestro idioma para las las tareas Ant que muchas veces necesitamos ejecutar, bien en Eclipse, bien en NetBeans, para automatizar procesos, que de otra forma sería muy tediosos en su paso a paso. El problema es que Ant se integra siempre como un plugin, normalmente de terceros, y esto tiende a producir fallos, en ocasiones bastante engorrosos, y que nos hacen perder mucho tiempo.
Uno de estos es precisamente el que nos ocupa. La solución la encontré en el siguiente enlace: https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/W75c8733d99bb_4d55_9ee8_4dbc8c56ebee/page/Ant%20-%20More%20Information
Y la traducción, como sigue:

Fallo al crear tarea o tipo eclipse.AntTaskName

Ejemplo: Cadena sintomática al final de la salida de consola

BUILD FAILED

D:workspace_rbdv8ABuildControlProjectruntimesBatchsetAsCurrentRuntime.xml:6:
Problem: failed to create task or type eclipse.convertPath

Cause: The name is undefined.

Action: Check the spelling.

Action: Check that any custom tasks/types have been declared.

Action: Check that any <presetdef>/<macrodef> declarations have taken place.
Causa: Si el nombre de la tarea es de formato eclipse.AntTaskName, el script no se está ejecutando bajo el IDE JRE. El problema se arregla yendo a la carpeta JRE del script de configuración del Ant y marcando la opción “Run in the same JRE as the workspace.” También hay que ir a la carpeta Build  y desmarcar “Build before launch”. De esta manera, los scripts siempre ejecutarán cualquier build de Eclipse que se requiera, ya que precisamente el fallo se produce porque estos no se ejecutan por defecto, al estar las opciones anteriores marcadas y desmarcadas de la forma contraria a la que se especifica.
Si el artículo te ha ayudado, o lo encuentras interesante, por favor no dudes en compartirlo. Un saludo, y hasta la siguiente.

Leer el resto de esta entrada »

Cómo convertir un ArrayList en un array clásico

Publicado: febrero 12, 2015 de elvenbyte en Tecnología
Etiquetas:,

array2d

Desde que existen las colecciones, los ArrayList, los mapas, etc, en java, parece un despropósito trabajar con las matrices clásicas. El motivo es la cantidad de herramientas y facilidades que el ArrayList nos da.

En primer lugar no necesitamos declarar el tamaño que tendrá nuestro array, ya que las colecciones son dinámicas. Tenemos métodos que nos facilitan el mantenimiento de sus elementos (métodos .add(), .remove(), .set?()…), y el acceso a los mismos a través del tipo que estemos utilizando.

Sin embargo, hay veces que estaremos obligados a utilizar arrays clásicos a la fuerza, tanto para leer los datos de ellos, como para guardarlos así. A mi me ha pasado, y como me niego a trabajar los datos como array clásico, más que en última instancia, lo que hago es que leo el dato, lo trato siempre como ArrayList<deloquesea>, y vuelvo a ponerlo en su deloquesea[], para que nos entendamos.

Leer el resto de esta entrada »

Trabajando con cachés III

Publicado: febrero 6, 2015 de elvenbyte en Tecnología
Etiquetas:, ,

cacheMetáfora de los cajones

Tener una caché en memoria, hoy en día, es como tener un armario en casa con cajones.

En realidad una caché está formada por una o varias consultas generadas en la memoria, y puedes tener tantas como la memoria de la máquina, o del clúster (eso ya se verá más adelante), te permita. Cada una de estas consultas que permanecen en memoria, a cada una de estas subcachés, se les denomina Almacenes. De hecho de la memoria dependerán dos cosas: cuántos almacenes tengamos guardados, y qué tamaño puedan alcanzar estos.
Así mismo, en los almacenes tendremos esas consultas guardadas, a las que identificaremos como Entidades. Pero ojo, que aunque normalmente habrá una entidad por almacén, puede haber almacenes que permitan guardar varias entidades. A estos almacenes los llamaremos Almacenes Fraccionados.
Y de esta misma manera, aún vamos a hacer trozos más pequeños, ya que cada entidad guarda los datos emparejados. Es decir, que necesitaremos siempre una clave o key para llamar a cada dato guardado en la caché. Estas llamadas las haremos a través de los filtros.
Explico todo esto porque para el uso de la caché se suelen utilizar distintas clases en función de los elementos de caché con los que estemos trabajando. Estas clases suelen ser las siguientes:
  • Especificación de la caché.
  • Especificación de la entidad.
  • Especificación de la clave o key (esta suele ir íntimamente relacionada con la de la entidad).
  • Especificación de los filtros para hacer las búsquedas en caché.
  • Operaciones de la caché (carga, borrado y actualizado)

Aportación de enlaces de la semana III

Publicado: noviembre 7, 2014 de elvenbyte en Tecnología
Etiquetas:,

comprar-enlaces

Aportación de enlaces de la semana II

Publicado: octubre 31, 2014 de elvenbyte en Tecnología
Etiquetas:,

link-enlaces-anchor-text-seo

Trabajando con cachés (II)

Publicado: octubre 28, 2014 de elvenbyte en Tecnología
Etiquetas:,

slide_3Este es el segundo artículo sobre cachés. Para ver el primero hacer click aquí.

Latencia 

El objetivo principal de utilizar una caché es conseguir un acceso mucho más rápido a los datos. Esa velocidad de acceso es lo que llamamos latencia.

Como observación adicional, no es que el acceso a la caché sea inmediato, sino que la latencia, es decir ese tiempo utilizado en el acceso a los datos, es menor, y eso nos da la sensación de inmediatez en el acceso. Podemos decir, por lo tanto, que a menor latencia mayor velocidad de acceso, por norma general.

Pero cuidado, que la latencia no es el ancho de banda de la memoria o caché, de hecho el ancho de banda no siempre garantiza una reducción de la latencia. Un bajo ancho de banda podría aumentar la latencia.

Leer el resto de esta entrada »