Artículo Alberto Fuentes · oct 28, 2024 3m read

Hola a todos, hoy comentamos con un ejemplo cómo solucionar problemas relacionados con el TimeOut cuando se hacen llamadas a servicios SOAP.

Tomemos como ejemplo aplicaciones que proporcionen servicios SOAP que utilizan consultas SQL basadas en "DSTIME" para devolver registros que han sido añadidos o modificados recientemente. Como estos registros no cambian con frecuencia, estas consultas suelen devolver un número reducido de registros, lo cual implica un tiempo de procesamiento corto.

Sin embargo, en ocasiones realizamos cambios en una tabla que afectan a todos los registros en ella.

0
0 197
Artículo Alberto Fuentes · oct 21, 2024 3m read

¡Muy buenas a todos! Os paso un ejemplo de resolución de problemas a la hora de implementar transformaciones de datos que es muy interesante: estaba trabajando en un transformación de datos (DTL) de mensajes HL7 pero no paraba de obtener errores del tipo ERROR #5002... MAXSTRING. El problema era que la mayor parte de acciones en la interfaz gráfica de DTL utilizan el tipo de datos %String al trabajar con segmentos de un mensaje HL7.

Un %String tiene un límite de 3,641,144 caracteres, y mi OBX5.1 tenía 5,242,952 caracteres de longitud, como en el ejemplo

0
0 147
Artículo Alberto Fuentes · sep 23, 2024 8m read

¡Hola, desarrolladores!

En esta serie de artículos hemos hablado del framework iris-datapipe, de cómo nos ayuda a crear "pipes" de datos para la ingesta y procesamiento, y de cómo instalarlo. Vamos a profundizar en cómo implementar uno de esos "pipes" paso a paso.

Si llegaste directamente a este artículo, te recomiendo revisar los anteriores y recordar que iris-datapipe incluye un QuickStart para que puedas explorar sus funcionalidades rápidamente 👌.

El ejemplo que abordaremos está incluido en el QuickStart, por lo que puedes utilizarlo como referencia.

0
0 83
Artículo Alberto Fuentes · sep 20, 2024 5m read

¡Hola a todos de nuevo!

En el artículo anterior hablamos de iris-datapipe, un framework diseñado para ayudarte a definir "pipes" de datos con un patrón de ingesta y procesamiento. Hoy veremos cómo puedes instalarlo y configurarlo paso a paso.

iris-datapipe incluye un QuickStart, que te permite probarlo rápidamente utilizando un contenedor Docker preconfigurado.

Pero, ¿qué debes hacer si quieres usarlo en tu propia instancia?

InterSystems IRIS

Instalación del paquete

0
0 89
Artículo Alberto Fuentes · sep 4, 2024 2m read

Hola Comunidad,

Este artículo tiene como objetivo guiaros a través del proceso de configuración y utilización de la Funcionalidad de Entorno de Ejecución Flexible de Python para Python embebido. Antes de la versión 2024.2, el instalador de Intersystems IRIS para Windows incluía una versión pre-instalada de Python. Podíais encontrar las bibliotecas de Python y los archivos de la aplicación ubicados en el directorio \lib\python dentro de la carpeta de instalación de IRIS (por ejemplo, C:\InterSystems\IRIS20242\lib\python).

Sin embargo, a partir de la versión 2024.

0
0 87
Artículo Alberto Fuentes · ago 26, 2024 1m read

Una buena característica que se ha añadido recientemente a la versión 2.12.6 de la extensión ObjectScript de VS Code está controlada por esta nueva configuración:

objectscript.serverSourceControl.respectEditableStatus

Cuando se establece true en JSON, o se marca en el Settings Editor (o Editor de Configuración), un documento del lado del servidor será de sólo lectura si la clase de control de código fuente para el namespace informa que no es editable.

0
0 62
Artículo Alberto Fuentes · ago 20, 2024 1m read

Hay un montón de grandes artículos de la comunidad con respecto a la «búsqueda de vectores en IRIS», y ejemplos en OpenExchange. Cada vez que los veo, ¡me encanta saber que tantos desarrolladores ya prueban los vectores en IRIS!

Pero si todavía no has probado los vectores en IRIS, dame un minuto y lo vemos 😄: creamos una clase IRIS y con eso ya es suficiente para ver cómo pones datos vectoriales en tu base de datos IRIS y cómo los comparas en tu aplicación.

0
0 81
Artículo Alberto Fuentes · ago 16, 2024 5m read

image

Hola Comunidad,

En este artículo, voy a presentar mi aplicación iris-RAG-Gen .

Iris-RAG-Gen es una aplicación generativa AI Retrieval-Augmented Generation (RAG) que aprovecha la funcionalidad de IRIS Vector Search para personalizar ChatGPT con la ayuda del framework web Streamlit, LangChain, y OpenAI. La aplicación utiliza IRIS como almacén de vectores.

image

Características de la aplicación

  • Ingesta de documentos (PDF o TXT) en IRIS
  • Chatear con el documento ingerido seleccionado
  • Borrar Documentos ingerido
  • OpenAI ChatGPT
0
0 115
Artículo Alberto Fuentes · ago 8, 2024 5m read

Hacía mucho tiempo que no escribía un post de actualización en IoP (Interoperabilidad en Python).

image

¿Qué hay de nuevo desde el lanzamiento de la interfaz de línea de comandos de IoP?

Dos nuevas grandes características se han añadido a IoP:

  • Rebranding: el módulo grongier.pex fue renombrado a iop para reflejar el nuevo nombre del proyecto.
  • Soporte asíncrono**: IoP ahora soporta funciones asíncronas y corrutinas.

Rebranding

El módulo grongier.pex ha sido renombrado a iop para reflejar el nuevo nombre del proyecto.

El módulo grongier.

0
0 92
Artículo Alberto Fuentes · jul 16, 2024 4m read

wsgi_logo

Contexto

La Interfaz de Pasarela de Servidor Web (WSGI, por sus siglas en inglés) es una convención de llamada para que los servidores web puedan reenviar solicitudes a aplicaciones o frameworks web escritos en el lenguaje de programación Python. WSGI es un estándar de Python descrito en detalle en PEP 3333.

🤔 Ok, gran definición, ¿y qué tiene que ver con IRIS?

IRIS 2024.2+ tiene una nueva característica que os permite ejecutar aplicaciones WSGI directamente en IRIS. Esta característica es una excelente manera de integrar IRIS con otros frameworks y bibliotecas de Python.

2
0 402
Artículo Alberto Fuentes · jul 11, 2024 2m read

Por razones prácticas, muchas veces necesitamos que tras un reinicio de un servidor Linux, la instancia IRIS que tengamos instalada se inicie automáticamente. 

A continuación encontraréis los pasos a seguir para automatizar el arranque de IRIS durante un reinicio de Linux, a través de systemd :

1. Cread un archivo iris.service en /etc/systemd/system/iris.service que contenga la siguiente información

[Unit]
Description=InterSystems IRIS Data Platform
After=network.
0
0 200
Artículo Alberto Fuentes · jun 21, 2024 10m read

Spoilers: Realizar verificaciones diarias de integridad (IntegrityChecks) no sólo es una práctica recomendada, sino que también proporciona una instantánea de los tamaños y densidad de los globales.
Actualización 2024-04-16:  A partir de IRIS 2024.1, muchas de las utilidades que comentaremos a continuación ofrecen ahora un modo para estimar el tamaño con un error <2% en promedio, con mejoras significativas en el rendimiento y los requisitos de E/S. Aunque sigo recomendando realizar verificaciones regulares de integridad, hay situaciones donde se necesitan respuestas más urgentes.

0
0 210
Artículo Alberto Fuentes · mayo 29, 2024 3m read

  

Hola comunidad,

En esta serie de artículos, exploraremos las siguientes opciones de uso de InterSystems SQL:


  1. SQL embebido


  2. SQL dinámico


  3. Class Queries


Descripción general SQL

InterSystems SQL proporciona un conjunto completo de funciones relacionales estándar, incluida la capacidad de definir esquemas de tablas, ejecutar consultas y definir y ejecutar procedimientos almacenados. Podéis ejecutar InterSystems SQL de forma interactiva desde el portal de gestión o mediante programación utilizando una interfaz de shell SQL.

0
0 162
Artículo Alberto Fuentes · mayo 20, 2024 4m read

La especificación OpenAPI (OAS) define una interfaz estándar e independiente del lenguaje para las API HTTP que permite tanto a humanos como a ordenadores descubrir y comprender las capacidades del servicio sin acceso al código fuente, la documentación o mediante la inspección del tráfico de red. Cuando se define correctamente, un consumidor puede entender e interactuar con el servicio remoto con una cantidad mínima de lógica de implementación. Aunque para las API basadas en SOAP existe un asistente especial en InterSystems IRIS que reduce el tiempo de desarrollo de las orquestaciones, no todas las API utilizadas en las integraciones son SOAP. Por eso @Jaime Lerga sugirió añadir un asistente similar al de SOAP para generar un cliente REST a partir de la especificación OpenAPI. La implementación de esta idea reduce el tiempo de desarrollo de las orquestaciones REST API con InterSystems IRIS. Esta idea es una de las más populares en las ideas de InterSystems. Este artículo, el tercero de la serie "Ideas implementadas", se centra en la solución OpenAPI Suite desarrollada por @Lorenzo.Scalese.
 

0
0 134
Artículo Alberto Fuentes · mayo 15, 2024 4m read

La documentación de IKO es robusta. Una única página web, que consta de unas 50 páginas reales de documentación. Para los principiantes eso puede ser un poco abrumador. Como dice el refrán: ¿cómo se come un elefante? Mordisco a mordisco. Empecemos con el primer bocado: Helm.

¿Qué es Helm?

Helm es a Kubernetes lo que el InterSystems Package Manager (IPM, antes ObjectScript Package Manager - ZPM) es a IRIS.

Facilita la instalación de aplicaciones en la plataforma, de una forma adecuada para Kubernetes.

0
0 83
Artículo Alberto Fuentes · mayo 7, 2024 2m read

InterSystems ha trabajado estrechamente con el equipo de Red Hat Insights para implementar un conjunto de recomendaciones dirigidas a los administradores de sistemas con el fin de garantizar la mejor experiencia de uso de InterSystems IRIS en Red Hat Enterprise Linux (RHEL). Incluido en todas las suscripciones a RHEL, el servicio Insights identifica de forma proactiva los problemas potenciales de las plataformas y aplicaciones supervisadas que se ejecutan en RHEL.

0
0 132
Artículo Alberto Fuentes · abr 24, 2024 4m read

¡Hola, amigos!

A menudo, cuando desarrollamos soluciones comerciales, existe la necesidad de desplegar soluciones sin código fuente, por ejemplo, para preservar la propiedad intelectual.

Una de las formas de conseguirlo es utilizar InterSystems Package Manager.

Aquí he pedido a Midjourney que pinte una propiedad intelectual de software:

¿Cómo se puede lograr esto con IPM?

De hecho, es muy sencillo; basta con añadir la cláusula Deploy="true" en el elemento Resource del manifiesto module.xml. Ver Documentación.

He decidido pasaros el ejemplo más simple posible para ilustrar cómo funciona y también para daros una plantilla de entorno de desarrollo que os permita empezar a construir y desplegar vuestros propios módulos sin código fuente. ¡Allá vamos!

0
0 155
Artículo Alberto Fuentes · abr 11, 2024 3m read

Veamos cómo crear de forma sencilla una conexión ODBC a IRIS en Windows para principiantes :D, probar la conexión y extraer datos en Excel.

Excel puede conectarse a bases de datos externas a través de ODBC. Dado que IRIS habla ODBC, podemos aprovechar el InterSystems ODBC Driver para crear una conexión ODBC con IRIS que Excel puede utilizar.

Antes de empezar, asegúrate de que tienes instalado el último driver ODBC de InterSystems en tu Windows, que puedes encontrar en WRC o en GitHub.

0
0 307
Artículo Alberto Fuentes · mar 14, 2024 5m read

IRIS 2023.3.0 ASQ

Abstract Set Query, ASQ, es un superconjunto del lenguaje JSONPath, JPL, que fue introducido por primera vez por el Standard SQL ISO 2016. JPL sólo está definido dentro del contexto de SQL. En 2023.3, introdujimos clases que implementan ASQ. Funciona en cualquier implementación de %Library.AbstractSet. La sintaxis completa para ASQ será documentada más adelante. Esto es solo una introducción rápida a algunas de sus funcionalidades. Esta implementación también viene con una utilidad muy chula. ¡Lo sabrás cuando la veas!

En primer lugar, vamos a coger algunos datos de la base de datos de la NHL (National Hockey League). Este paso requiere una configuración válida de SSL/TLS. Yo he llamado a la mía Default.

0
0 151
Artículo Alberto Fuentes · mar 1, 2024 4m read

Hay una nueva funcionalidad muy interesante en la recientemente anunciada versión de prueba 2024.1 de InterSystems IRIS - JSON_TABLE. JSON_TABLE forma parte de una familia de funciones introducidas en la versión 2016 del estándar SQL (ISO Standard, publicado a principios de 2017). Permite que valores JSON se mapeen a columnas y se consulten usando SQL. JSON_TABLE puede usarse en la cláusula FROM de algunas sentencias SQL.

La sintaxis de JSON_TABLE es bastante extensa, permitiendo condiciones excepcionales cuando los valores JSON proporcionados no cumplen las expectativas, estructuras anidadas, etc.

La sintaxis básica es bastante sencilla. El primer argumento pasado a JSON_TABLE es el valor JSON que se va a consultar. Puede ser un literal, una referencia a una columna o una llamada a una función. El segundo argumento es una expresión JPL (JSON Path Language), que permite filtrar el valor proporcionado. Después va la cláusula COLUMNS - justo en medio de la llamada a la función. La cláusula COLUMNS se parece mucho a las definiciones de columnas en una sentencia CREATE TABLE pero con un añadido muy necesario - el PATH. PATH es una expresión JPL que se aplica al valor JSON para producir el valor de la columna.

0
0 171
Artículo Alberto Fuentes · feb 21, 2024 2m read

Quería compartiros hoy un pequeño truco para personalizar cómo se muestran los mensajes en el Visor de Mensajes. En concreto, cómo mostrar mensajes JSON directamente en el Visor de Mensajes en lugar de serializados como XML.

image

Los mensajes son los objetos que utilizamos para comunicar componentes de una producción de interoperabilidad. En mi caso me había definido un mensaje que utilizaba después para pasar a JSON y enviar a una API. Este mensaje está definido como un mensaje convencional y también como %JSON.Adaptor para poder exportar / importar directamente a JSON.

Class interop.msg.
2
0 322
Artículo Alberto Fuentes · feb 12, 2024 3m read

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 237
Artículo Alberto Fuentes · ene 31, 2024 13m read

Tenemos un conjunto de datos bastante apetecible con recetas escritas por múltiples usuarios de Reddit, sin embargo, la mayor parte de la información está en texto libre en forma de título y descripción de un mensaje. Vamos a averiguar cómo podemos, de forma muy sencilla, cargar los datos, extraer algunas características y analizarlos empleando funcionalidades de LLM (Large Language Model) de OpenAI desde Python Embebido y el framework Langchain.

0
0 205
Artículo Alberto Fuentes · ene 25, 2024 1m read

Creo que ésta es una forma bastante interesante de instalar un terminal web en un entorno en el que puedes acceder al Portal de Gestión/Visual Studio Code, pero no al terminal.

En este caso, zpm ya estaba presente. En caso contrario, se puede instalar también en la misma clase.

  1. Crear una clase que instalará webterminal utilizando zpm.
  2. Compilar. Esto llevará un rato (ya que hará la descarga y la instalación), y después se verá el resultado desde zpm!
  3. Ahora se puede abrir el terminal web accediendo a http://your-host/terminal/
0
0 142
Artículo Alberto Fuentes · ene 24, 2024 2m read

¿Sabíais que se pueden obtener datos JSON directamente de las tablas SQL?

Dejadme que os presente dos útiles funciones de SQL, que se utilizan para recuperar datos JSON de consultas SQL - JSON_ARRAY y JSON_OBJECT

Podéis usar esas funciones en la sentencia SELECT con otros tipos de elementos de selección, y se pueden especificar en otras ubicaciones en las que se puede utilizar una función SQL, como en una condición WHERE.

La función JSON_ARRAY toma una lista de expresiones separadas por comas y devuelve una matriz JSON conteniendo esos valores.

1
1 814
Artículo Alberto Fuentes · ene 15, 2024 5m read

La invención y popularización de LLMs (Large Language Models) como GPT-4 de OpenAI ha desencadenado una ola de soluciones innovadoras que permiten aprovechar grandes volúmenes de datos no estructurados, que eran prácticamente imposibles de procesar manualmente hasta hace poco. Estas aplicaciones pueden incluir la recuperación de datos (echad un vistazo al curso sobre ML301 de Don Woodlock, con una excelente introducción a la Generación Aumentada de Recuperación), el análisis de sentimientos, e incluso agentes de IA totalmente autónomos, por nombrar sólo algunos ejemplos!

En este artículo, quiero demostrar cómo la funcionalidad de Python Embebido de IRIS puede ser utilizada para interactuar directamente con la librería Python de OpenAI, a través de la creación de una sencilla aplicación de etiquetado de datos que asignará automáticamente palabras clave a los registros que metamos en una tabla de IRIS. Estas palabras clave pueden después ser usadas para buscar y categorizar los datos, así como para analítica de datos. Utilizaré reseñas de productos realizadas por clientes como ejemplo de caso de uso.

0
0 143
Artículo Alberto Fuentes · ene 11, 2024 2m read

¿Alguna vez habéis estado editando ficheros en VS Code, pero necesitábais comprobar el valor de un global o ejecutar algunos comandos de ObjectScript? Ahora podéis hacerlo, sin necesidad de configuración! Si tenéis la versión 2.10.0 o posterior de la extensión vscode-objectscript y estáis conectados a InterSystems IRIS 2023.2 o posterior, ahora podéis abrir una conexión del terminal a vuestro servidor, sin importar dónde se encuentre.

Hay tres formas de abrir este nuevo terminal:

1
0 290
Artículo Alberto Fuentes · ene 8, 2024 6m read

Al empezar el desarrollo con IRIS tenemos un kit de distribución o, en el caso de Docker, obtenemos la imagen Docker y después a menudo tenemos que iniciarla y configurar el entorno de desarrollo. Puede que necesitemos crear bases de datos, namespaces, activar/desactivar algunos servicios, crear recursos. Muchas veces necesitamos importar el código y los datos a la instancia de IRIS y ejecutar algún código personalizado para iniciar la solución.

Lajos Simicska declares war on Viktor Orban: "It's either him or me!" - The  Budapest Beacon

0
0 110