Como bien sabréis los que seguís habitualmente las publicaciones de nuestra Comunidad, disponemos de una aplicación desarrollada con Angular e IRIS que nos permite obtener estimaciones sobre los resultados de Primera y Segunda División del fútbol español llamada QuinielaML. Pues bien, ¡pongámosla a prueba!

Estos son los partidos que entran en la Quiniela de la 7ª jornada:

Veamos las estimaciones para Primera División de nuestra aplicación:

2 1
0 131
Artículo
· 22 mayo, 2023 Lectura de 6 min
Recuperando un Mirror tras un fallo

¡Aquí estamos nuevamente con un artículo relacionado con el Mirror!

En el artículo anterior vimos como podíamos configurar un Mirror entre dos instancias de IRIS, actuando una como nodo activo y otra como pasivo. Este sistema de mirroring funciona sobre la transferencia de un archivo de journals que mantiene contínuamente actualizada la instancia que funciona como nodo pasivo, pero ¿qué ocurre si por algún fallo de comunicación o permisos del archivo de journal este no se transifere correctamente?

2 0
0 128
Artículo
· 25 ago, 2023 Lectura de 4 min
QuinielaML - Usando autenticación JWT

Aprovechando la aplicación de Quiniela ML y como indicamos en el artículo anterior vamos a explicar como podemos realizar una autenticación JWT entre nuestro frontend desarrollado en Angular y nuestro backend desarrollado en InterSystems IRIS.

Os recuerdo como es la arquitectura de nuestro proyecto de QuinielaML:

1 0
0 128

En recientes versiones de IRIS, se ha añadido en la parte de SQL una nueva y potente funcionalidad para la carga de datos: LOAD DATA. Esta funcionalidad ha sido optimizada para importar datos de forma extremadamente rápida en IRIS, permitiendo insertar cientos de gigabytes de datos en segundos en lugar de en horas o días.

Esta es una mejora muy interesante. Sin embargo, todavía existe un gran problema en la experiencia de carga de datos. Concretamente, el tiempo y molestia que suponen:

  1. Definir el esquema para la tabla en la que se quieren cargar los datos
  2. Averiguar cómo funciona exactamente la sintaxis del comando LOAD DATA

He desarrollado una interfaz de usuario que gestiona de forma transparente el paso de crear la tabla (CREATE TABLE) y después genera la sintaxis para LOAD DATA, todo en un práctico asistente!

0 0
0 127

Hola a todos,

Por un requerimiento del cliente, tenermos un BS Rest Api con un montón de métodos, necesitamos obtener la IP del invocador, el método y cual es el tiempo que la API ha tomado para procesar.

He encontrado el evento onPreDispatch donde puedo capturar la IP, ClassMethod, etc.. Estoy usando una variable global para guardar esta información.

0 2
0 126
Escenario

IRIS tiene adaptadores de entrada SQL para usar con SQL gateways como EnsLib.SQL.InboundAdapter para consultar repetidamente las conexiones de SQL Gateway. Apareció un escenario en el que queríamos consultar una base de datos interna para obtener algunos datos, pero no vimos un "servicio listo para usar" para esto.

2 0
0 126

Jornada atípica de la Quiniela esta semana, al no haber partidos de Primera División la Quiniela se forma con los de Segunda e internacionales:

La estimación para los partidos de Segunda será la siguiente:

Vaya...sólo victorias locales...algo me huele raro.

Veamos que nos dice para los partidos internacionales:

0 0
0 124
Artículo
· 3 jul, 2023 Lectura de 3 min
IRIS Api Tester (Español)

Hola Comunidad!!

Acabo de subir mi última aplicación "IRIS Api Tester" al Open Exchange.

Es un proyecto docker con InterSystems IRIS + Newman que permite lanzar test sobre tus colecciones de Postman de una manera rápida y fácil.

El proyecto viene listo para funcionar, solo debes clonar el repositorio: https://github.com/daniel-aguilar-garcia/irisapitester

Arrancar el fichero docker-compose:

0 1
0 123
Artículo
· 12 jun, 2023 Lectura de 3 min
Guía básica para la implementación de ZPM

ZPM está diseñado para funcionar con aplicaciones y módulos de InterSystems IRIS. Está formado por dos componentes: el Cliente ZPM, que es un CLI para gestionar módulos; y El Registro, que es una base de datos de módulos y meta-información. Podemos utilizar ZPM para buscar, instalar, actualizar, eliminar y publicar módulos. Con ZPM se pueden instalar clases de ObjectScript, aplicaciones Frontend, producciones de Interoperabilidad, soluciones de BI de IRIS, conjuntos de datos de IRIS o cualquier otro archivo, como paquetes wheel de Python Embebido.

En este artículo repasaremos tres secciones:

  1. Instalación de ZPM
  2. Generación del Módulo
  3. Búsqueda, Instalación y Publicación de módulos dentro del Registro

2 2
0 122

InterSystems está comprometida con ofrecer a los desarrolladores una experiencia de alta calidad, incluyendo un excelente IDE (Integrated Developer Experience). Durante los últimos años hemos estado evolucionando nuestras herramientas de Objecscript en Visual Studio Code en paralelo a nuestro IDE de toda la vida, InterSystems Studio. Ha habido más de 46 000 descargas del plugin VSCode-ObjectScript, y los desarrolladores comentan que ofrece una excelente experiencia para desarrollar, ahora superior a InterSystems Studio.

0 0
0 122

Esta es la cuarta parte de una serie de artículos sobre migración desde las principales bases de datos del mercado a InterSystems IRIS. En esta parte, explicaré los pasos para migrar desde Microsoft SQL Server.

Como describí en los anteriores artículos, actualmente hay varias opciones para hacer la migración. Sin embargo, las dos opciones más populares incluyen el uso de DBeaver (https://openexchange.intersystems.com/package/DBeaver) o SQLGateway. Explicaremos la primera opción aquí. La segunda opción fue explicada por Robert Cemper en un excelente artículo: Migración de base de datos usando SQLgateway.

1 0
0 118

En este artículo, compartiré el tema que presentamos @Rochael Ribeiro y yo en la Convención Anual (Global Summit) 2023, en la sala "Tech Exchange".

En esa ocasión hablamos de los siguientes temas:

  • Herramientas de Open Exchange para Fast APIs (APIs rápidas)
  • Especificación OpenAPI
  • Desarrollo tradicional vs. Fast API
  • APIs Compuestas (Interoperabilidad)
  • Enfoque Spec-First o Api-First
  • Gobernanza y Monitorización de APIs
  • Demo (vídeo)
0 0
0 117

¡Hola Comunidad!

Me gustaría compartir con vosotros un ejercicio que he hecho para crear "mi propio" chat con ChatGPT en Telegram.

Ha sido posible gracias a dos componentes de Open Exchange: Telegram Adapter, de @Nikolay Solovyev e IRIS Open-AI, de @Kurro Lopez

Así que con este ejemplo podréis configurar vuestro propio chat con ChatGPT en Telegram.

¡Veamos cómo hacerlo funcionar!

0 0
0 116

¡Volvemos al ataque con la Quiniela! 8ª jornada en Primera y Segunda División y con la QuinielaML deseando resarcirse de los 4 aciertos del pasado fin de semana. Aquí tenemos el boleto de esta jornada:

Y estas son las predicciones para Primera División:

Y ahora para Segunda División:

1 1
0 115

Estoy utilizando RestForms2 para disponer de una API Rest sobre unas tablas de forma rápida.

El caso es que he añadido un trigger a las tablas para que, cada vez que se inserte/actualice/borre un registro, registre en una tabla de históricos los cambios, pudiendo ver el valor original y el nuevo de cada propiedad.

Pero el trigger solamente salta si la inserción se realiza mediante SQL. No salta creando un nuevo objeto.

0 2
0 115
Artículo
· 13 jun, 2023 Lectura de 8 min
Mi primera experiencia usando IAM

Experiencia & comentarios del curso online "Hands-On with InterSystems API Manager for Developers"

Con mis conocimientos básicos de contenedores Docker y API REST, me gustaría probar el uso del administrador de APIs de InterSystems para gestionar las API y los microservicios. Completé este curso en línea utilizando mi instancia local de IRIS como host (sistema operativo Windows) e IAM ejecutándose en una máquina virtual Linux.

1 0
0 115

Continuando con la serie de análisis de rendimiento, en este artículo voy a mostrar un método para dimensionar los requisitos de memoria compartida para aplicaciones de base de datos que se ejecutan en plataformas de datos de InterSystems, incluyendo los Global y Routine Buffers, gmheap y locksize. También daré algunos consejos de rendimiento que se deberían tener en cuenta al configurar servidores y al virtualizar aplicaciones de Iris. Como siempre, cuando hablo de Iris o Caché , me refiero a toda la plataforma de datos. Este artículo tiene algunos años pero mantiene su esencia, por lo que me referiré a Iris o Caché indistintamente ya que la teoría es exáctamente igual para todos los productos con kernel Caché/Iris.

1 0
0 114

En la primera parte de esta serie de artículos hablamos sobre cómo leer un gran fragmento de datos del cuerpo sin procesar de un método HTTP POST y guardarlo en una base de datos como una propiedad stream de una clase. En la segunda parte comentamos cómo enviar archivos y sus nombres envueltos en un formato JSON.

Ahora analizaremos más de cerca la idea de enviar al servidor grandes archivos por partes. Para ello, podemos utilizar varios enfoques. En este artículo se analiza el uso del encabezado Transfer-Encoding para indicar una transferencia fragmentada. La especificación HTTP/1.1 introdujo el encabezado Transfer-Encoding, y la sección 4.1 RFC 7230 lo describió, pero está ausente en la especificación HTTP/2.

1 0
0 114
Pregunta
· 7 feb, 2024
Error depurando desde VS

Hola comunidad,

Si, ya sé que hay otra pregunta con el mismo problema "VS Code - debugging doesn't work", pero mi instancia de IRIS no está usando IIS.

Hace tiempo, podía depurar sin problemas, pero después de algunas actualizaciones de Visual Studio, tengo el siguiente error

Failed to start the debug session. Check that the Intersystems server's web server supports WebSockets

0 2
0 114
Artículo
· 11 jul, 2023 Lectura de 3 min
Utilizando JSON en IRIS

¡Hola Comunidad!

El otro día vi un artículo sobre el uso del paquete %ZEN cuando se trabaja con JSON y he decidido escribir un artículo para describir un enfoque más actualizado. Hace no mucho se dio el paso de usar %ZEN.Auxiliary.* a clases JSON dedicadas. Esto permite trabajar con JSONs de forma más orgánica.

Llegados a este punto hay básicamente 3 clases principales para trabajar con JSON:

  • %Library.DynamicObject - proporciona una manera simple y eficiente de encapsular y trabajar con documentos JSON estándar. También nos da la posibilidad de, en vez de escribir el código habitual para crear la instancia de una clase como
set obj = ##class(%Library.DynamicObject).%New()

usar la siguiente sintaxis

set obj = {}
  • %Library.DynamicArray - proporciona una manera simple y eficiente de encapsular y trabajar con matrices JSON estándar. Con los arrays se puede usar el mismo enfoque que con los objetos, lo que significa que o bien se puede crear una instancia de la clase
set array = ##class(%DynamicArray).%New()

o se puede hacer usando corchetes []

set array = []
  • %JSON.Adaptor es una utilidad para mapear objetos de ObjectScript (registrados, serial o persistentes) a textos JSON o entidades dinámicas.
1 1
0 111

Después del éxito de la pasada jornada en la que QuinielaML acertó 10 resultados y obteniendo un premio de 10€ volvemos una jornada más, ¡dispuestos a reinvertir las ganancias!

Veamos los partidos de esta jornada:

Ahora las predicciones para los partidos de 1ª División:

Y para 2ª:

0 2
0 109

La versión 2024.1 de InterSystems IRIS Data Platform ya está disponible de manera general (GA).

Aspectos destacados de la nueva versión

En esta versión, podéis esperar una serie de interesantes actualizaciones, incluyendo:

  1. Uso de vectores en ObjectScript: Una potente funcionalidad para optimizar la manipulación de datos.
  2. Búsqueda de vectores (experimental): Una innovadora funcionalidad para la recuperación eficiente de datos.
  3. Base de datos Multi-Volumen: Mejora de la escalabilidad y la gestión del almacenamiento.
  4. Backup FastOnline (experimental): Optimización de los procesos de backup.
  5. Multiple Super Server Ports: Más flexibilidad en la configuración de red.
  6. ¡y mucho más!

0 0
0 108

Preguntas frecuentes de InterSystems

En el siguiente ejemplo, un archivo de imagen se codifica en una cadena Base64 en una propiedad de clase, se guarda, se decodifica la cadena en Base64 y se restaura en otro archivo.

【Classe ejemplo】

Class User.test Extends %Persistent
{
Property pics As %GlobalBinaryStream;
}


【Cuando se importa】

0 0
0 105