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 147
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 832
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 146
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 296
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 114
Artículo Alberto Fuentes · dic 20, 2023 4m read
         Cómo incluir IRIS Data en vuestro almacén de datos de Google Big Query y en vuestras exploraciones de datos de Data Studio. En este artículo utilizaremos Google Cloud Dataflow para conectarnos a nuestro Servicio de InterSystems Cloud SQL y crear un trabajo para persistir los resultados de una consulta de IRIS en Big Query en un intervalo. 
Si tuvisteis la suerte de obtener acceso a Cloud SQL en el Global Summit 2022, como se menciona en "InterSystems IRIS: What's New, What's Next" (InterSystems IRIS: Lo nuevo, lo siguiente), el ejemplo será pan comido, pero se puede realizar con cualquier punto de acceso público o vpc que hayáis provisionado.
0
0 141
Artículo Alberto Fuentes · dic 7, 2023 4m read

Introducción

Con frecuencia nos encontramos con problemas de conectividad en las implementaciones de HealthShare (HS) en Microsoft Azure que tienen varios componentes de HealthShare (instancias o namespaces) instalados en la misma máquina virtual, especialmente cuando es necesario comunicarse con otros componentes de HS mientras se utiliza el balanceador de carga interno de Azure (ILB) para proporcionar la funcionalidad VIP (Virtual IP) de Mirroring. Los detalles sobre cómo y por qué se usa un balanceador de carga con Mirroring los podéis encontrar en este artículo de la Comunidad.

Según la documentación del Balanceador de Carga de Azure, el comportamiento predeterminado es el siguiente:

0
0 145
Artículo Alberto Fuentes · nov 16, 2023 7m read

Ejemplo de demostración para el Gran Premio de Programación de InterSystems, sobre el uso de plantillas más complejas para probar funcionalidades de IA.

Preguntas para la entrevista

Hay documentación. Para un puesto de trabajo, una persona de recursos humanos quiere evaluar rápidamente a los candidatos con varias preguntas técnicas relevantes para el puesto.

¿Puede automatizar el trabajo haciendo una lista de preguntas y respuestas a partir de la documentación disponible?

0
0 156
Artículo Alberto Fuentes · oct 18, 2023 3m read

Hoy os traigo otro ejemplo de aplicación de LangChain.

Inicialmente buscaba generar una "chain" o cadena para lograr hacer búsquedas dinámicas en la documentación en HTML, pero al final resultó más sencillo utilizar la versión en PDF de la documentación .

Crear un nuevo entorno virtual

mkdir chainpdf

cd chainpdf

python -m venv .

scripts\activate 

pip install openai
pip install langchain
pip install wget
pip install lancedb
pip install tiktoken
pip install pypdf

set OPENAI_API_KEY=[ Your OpenAI Key ]

python
0
0 363
Artículo Alberto Fuentes · oct 5, 2023 9m read

En el vasto y variado mercado de las bases de datos SQL, InterSystems IRIS destaca como una plataforma que va mucho más allá de SQL, ofreciendo una experiencia multimodelo perfecta, y siendo compatible con un amplio conjunto de paradigmas de desarrollo. Especialmente el avanzado motor objeto-relacional ha ayudado a organizaciones a utilizar el enfoque de desarrollo más adecuado para cada una de sus cargas de trabajo intensivas en datos; por ejemplo, ingerir datos a través de Objetos y consultarlos simultáneamente mediante SQL. Las Clases Persistentes corresponden a tablas SQL, sus propiedades a columnas de la tabla y se accede fácilmente a la lógica de negocio utilizando Funciones Definidas por el Usuario o Procedimientos Almacenados. En este artículo, nos centraremos un poco en la magia que se encuentra justo debajo de la superficie y discutiremos cómo puede afectar vuestras prácticas de desarrollo e implementación. Esta es un área del producto que tenemos planificado evolucionar y mejorar, así que no dudéis en compartir vuestras opiniones y experiencias en los comentarios al artículo.

0
0 192
Artículo Alberto Fuentes · sep 20, 2023 1m read

Preguntas frecuentes de InterSystems

El lenguaje ObjectScript de InterSystems no permite definir métodos con el mismo nombre pero utilizando diferentes argumentos.

En general, se suele clasificar Objectscript como un lenguaje de programación dinámico. En ObjectScript se puede controlar libremente qué argumentos se utilizan cuando se ejecuta un método, así que a diferencia de otros lenguajes como Java, que no son lenguajes de programación dinámicos, no es necesario distinguir estrictamente los métodos por el número de argumentos en la fase de compilación.

El lenguaje ObjectScript, por tanto, no contiene la característica conocida como overloadingo sobrecarga como tal.

0
0 108
Artículo Alberto Fuentes · ago 21, 2023 1m read

Una característica muy potente en Studio es utilizar snippets o fragmentos de código.

Podemos hacer lo mismo también en VS Code de la siguiente manera:

Aquí tienes las instrucciones genéricas.

1. Vete a Code > Settings ... > Configure User Snippets y selecciona objectscript.

2. Añade tu fragmento de código, aquí tienes un ejemplo:

"SQL Statement": {
    "prefix": ["sql"],
    "body": ["#dim rs As %SQL.ISelectResult",
            "set rs = ##class(%SQL.Statement).%ExecDirect(,\"SELECT * FROM\")",
            "while rs.%Next() {",
            "\twrite rs.ID, !",
            "}"]
}
1
1 203
Artículo Alberto Fuentes · ago 9, 2023 5m read

Cada vez es más común ver coloridas insignias o badges en el archivo README.MD, con información útil sobre un proyecto en repositorios como GitHub, GitLab y otros.

Por ejemplo:

image

Incluso la iniciativa sobre calidad del código que está en marcha en la comunidad actualmente también ofrece su propia insignia. Esta insignia muestra el estado de validación de código del proyecto.

Para incluirla, debes añadir la siguiente línea en el README.MD:

 [![Quality Gate Status](https://community.objectscriptquality.com/api/project_badges/measure?project=intersystems_iris_community%2Fappmsw-zpm-shields&metric=alert_status)](https://community.objectscriptquality.com/dashboard?id=intersystems_iris_community%2Fappmsw-zpm-shields)
0
1 220
Artículo Alberto Fuentes · ago 3, 2023 4m read

¡Hola Comunidad!

Como sabéis, las soluciones de Interoperabilidad de InterSystems IRIS contienen diferentes elementos de la solución, como: producciones, reglas de negocio, procesos, transformaciones de datos, mapeos de registros, etc. Y a veces podemos crear y modificar estos elementos con herramientas visuales en la UI. Y por supuesto necesitamos una forma práctica y sólida de controlar el código fuente con los cambios realizados con herramientas de UI.

Durante mucho tiempo, esto era un proceso de configuración manual (exportar clase, elemento, global, etc.) o engorroso, por lo que el tiempo ahorrado con la automatización del control de fuentes de la UI competía con el tiempo perdido en configurar y mantener la configuración.

Ahora ese problema ya no existe. Con dos enfoques: desarrollo "package first" y uso del paquete IPMgit-source-control, de @Timothy.Leavitt.

Os explico los detalles a continuación.

0
0 199
Artículo Alberto Fuentes · jul 28, 2023 7m read

¡Hola Comunidad!

Me alegra anunciar la nueva versión de iris-pex-embedded-python (v2.3.1) con una nueva interfaz de línea de comandos.

Esta línea de comandos se llama iop por Interoperability On Python.

Primero me gustaría presentar los principales cambios del proyecto desde la versión 1.

Breve historia del proyecto

La versión 1.0 fue una prueba de concepto para mostrar cómo el framework de interoperabilidad de IRIS se puede utilizar con un enfoque python first mientras sigue siendo compatible con cualquier código existente de ObjectScript.

¿Qué significa eso? Significa que cualquier desarrollador Python puede usar el framework de interoperabilidad de IRIS sin ningún conocimiento de ObjectScript.

Ejemplo:

from grongier.pex import BusinessOperation

class MyBusinessOperation(BusinessOperation):

    def on_message(self, request):
        self.log.info("Received request")

Genial, ¿cierto?

0
0 107
Artículo Alberto Fuentes · jul 19, 2023 3m read

Este artículo es un sencillo ejemplo para probar SqlDatabaseChain pidiéndole a OpenAI cierta información y que escriba consultas SQL sobre una base de datos IRIS.

Quizá despierte el interés de alguno de vosotros.

Muchas gracias a sqlalchemy-iris (autor @Dmitry Konnov Maslennikov). Ese proyecto ha sido indispensable para esta prueba. 

El script de este artículo usa la API de OpenAI así que tenedlo en cuenta para no compartir la información de vuestras tablas externamente en el caso de que no queráis hacerlo. Podría llegar a implementarse un modelo local en caso que lo necesitaseis.

1
0 513
Artículo Alberto Fuentes · jul 4, 2023 2m read

Hoy en día es muy común que los datos que necesitas vengan de diferentes fuentes (e.g. aplicaciones externas e internas, distintas bases de datos y servicios, APIs, etc.). Además, seguro que tienes múltiples tipos de consumidores diferentes (e.g. usuarios finales, otras aplicaciones, servicios que publicas a terceros, etc.) y cada uno necesitará acceder a la información de forma diferente y para distintos objetivos. ¿Cómo construir una capa que de forma sencilla te permita gestionar estas necesidades? Hoy hablamos de Data Fabric 👈.

image

0
0 189
Artículo Alberto Fuentes · jun 14, 2023 11m read

Qué es el Web Scraping:

En términos sencillos, el Web scraping, también conocido como recolección de datos de sitios web o extracción de datos de sitios web es un proceso automatizado que permite la recopilación de grandes volúmenes de datos (no estructurados) de los sitios web. El usuario puede extraer datos de sitios web específicos, según sus necesidades. Los datos recopilados se pueden almacenar en un formato estructurado para su posterior análisis.

¿Qué es el Web Scraping? — James Le

0
0 552
Artículo Alberto Fuentes · mayo 22, 2023 2m read

¡Hola Comunidad!

A menudo, las soluciones con InterSystems IRIS BI pueden convertirse en soluciones bastante grandes con docenas de tablas dinámicas y cuadros de mando.

Con cada nueva versión de IRIS BI podemos añadir cambios que pueden influir en el comportamiento de las tablas dinámicas y cuadros de mando existentes y que dejen de funcionar. Por ejemplo, si cambiamos el nombre de una medida o dimensión, olvidamos desplegar cubos o realizamos reestructuraciones con cambios masivos del nombre de los cubos y sus elementos, algunos widgets podrían dejar de funcionar.

La solución es probar (¿manualmente?) cada widget en cada cuadro de mando para asegurarnos de que las consultas MDX están funcionando.

Hoy quiero presentaros una herramienta para probar automáticamente todas las tablas dinámicas y los cuadros de mando.

0
0 118
Artículo Alberto Fuentes · mayo 10, 2023 4m read

¡Hola desarrolladores!

Se acaba de actualizar la plantilla para desarrollo FHIR de forma que ahora publica el paquete IPM fhir-server que hace que la configuración del servidor FHIR de InterSystems sea una sencilla tarea manual, automática o programática vía un solo comando.

Os explico más abajo cómo podéis utilizarlo.

TLDR

USER>zpm "install fhir-server"

Todos los detalles aquí:

0
0 186
Artículo Alberto Fuentes · mayo 5, 2023 3m read

¡Hola desarrolladores!

Hay una actualización reciente para las imágenes de la comunidad de desarrolladores de InterSystems IRIS e InterSystems IRIS For Health.

Esta versión incluye soporte para variables de entorno.

Actualmente se soportan 3 variables de entorno:

  • IRIS_USERNAME=usuario a crear
  • IRIS_PASSWORD=password del usuario
  • IRIS_NAMESPACE=crear namespace si no existe

Esto es lo que puedes hacer:

Arrancar iris con un usuario y password:

docker run --rm --name iris-sql -d -p 9091:1972 -p 9092:52773  -e IRIS_PASSWORD=demo -e IRIS_USERNAME=demo intersystemsdc/iris-community
0
0 174
Artículo Alberto Fuentes · abr 27, 2023 8m read

Con IRIS 2021.1, realizamos una importante revisión de nuestra API de utilidades SQL en %SYSTEM.SQL. Sí, eso fue hace algún tiempo, pero la semana pasada un cliente hizo unas preguntas sobre ello y entonces @Tom Woodfin me empezó a presionar un poco ;-) para que describiera con más detalle en la Comunidad de Desarrolladores las razones de estos cambios. ¡Así que allá vamos!

0
0 120
Comentarios Alberto Fuentes · abr 12, 2023

¡Hola Comunidad!

Como sabéis, InterSystems IRIS, además de globals, objetos, documentos y modelos de datos XML, también es compatible con tratamiento relacional de datos utilizando SQL como lenguaje.

Y como otros sistemas de gestión de bases de datos relacionales (DBMS), InterSystems IRIS tiene su propio dialecto.

Empezamos esta publicación como una Guía Rápida de SQL y os invitamos a compartir vuestros trucos favoritos.

¡Vamos allá!

0
1 236
Artículo Alberto Fuentes · mar 15, 2023 3m read

InterSystems IRIS 2022.2 tiene un SDK nativo para Python (https://docs.intersystems.com/iris20222/csp/docbook/Doc.View.cls?KEY=PA…).

Sabemos cómo recorrer la estructura de datos de un global usando la función $Order de ObjectScript.

SET""FOR

¿Cómo hacer lo mismo desde Python usando el SDK nativo de IRIS para Python?

Aquí va un ejemplo directamente en Python:

'127.0.0.1'
0
0 172
Artículo Alberto Fuentes · feb 28, 2023 2m read

¡Hola a todos!

Comparto con vosotros una herramienta para la ingestión de datos que hemos utilizado en varios proyectos.

DataPipe es un framework de interoperabilidad para la ingestión de datos de forma flexible con InterSystems IRIS. Te permite recibir datos desde el exterior, normalizar y validar la información y finalmente realizar cualquier operación sobre tus datos.

Modelo

Lo primero que necesitas es definir un modelo. Un modelo es una clase que extiende de DataPipe.Model

0
0 270
Artículo Alberto Fuentes · feb 23, 2023 3m read

Hola a todos!

Durante un proyecto necesitábamos poder definir temas sobre los que publicar mensajes, y crear diferentes subscriptores que recibiesen esos mensajes de forma asíncrona. Necesitábamos además que fuese lo más sencillo posible y que se pudiese utilizar directamente en InterSystems IRIS.

A modo de experimento os paso este iris-pubsub.

Infraestructura

Está construido sobre las funcionalidades de interoperabilidad de InterSystems IRIS, necesita tener una producción en marcha.

La primera vez que lo arranquemos definimos cuántas particiones queremos dedicar para atender mensajes.

2
0 124
Anuncio Alberto Fuentes · feb 16, 2023

Para todos aquellos que aún utilizáis el IDE Studio para programar con ObjectScript y vais a pasar por el proceso de migración a VS Code, ¿sabíais que hay una sección en la documentación de VS Code justo para vosotros? Echad un vistazo al apartado Migración desde Studio. Incluye los siguientes aspectos:

  • Edición del lado del servidor y control de código fuente
  • Proyectos de Studio
  • Importación de definiciones de servidor desde el Registro de Windows
  • Carga de fragmentos de código de Studio y colores de sintaxis

Y ahora hay una sección llamada Atajos de teclado, que muestra los atajos equivalentes en VS Code a los que estéis acostumbrados, para que las manos no tengan que dejar el teclado. En muchos casos el atajo es el mismo, por lo que no será necesario re-aprender. Y recordad, todos los atajos en VS Code son configurables por el usuario, por lo que tendréis un nivel de control que Studio nunca ofreció.

0
0 136
Artículo Alberto Fuentes · ene 30, 2023 3m read

OCR DEMO

Esta es una demo de la funcionalidad OCR utilizando la librería pero-ocr de Python.

Utilizaremos la librería en una instancia InterSystems IRIS.

Demo

Este es un ejemplo de los datos de entrada:

input

Y este es el resultado del OCR, donde tenemos la siguiente información:

  • El texto, que está en la etiqueta TextEquiv
  • La confianza de la lectura, presente en el atributo conf de la etiqueta TextEquiv
  • Las coordenadas del texto, que están en la etiqueta Coords

Instalación

git clone <this repo>

⚠️ ¡Importante!

0
1 151
Artículo Alberto Fuentes · ene 20, 2023 5m read

La funcionalidad IntegratedML de InterSystems IRIS se utiliza para obtener predicciones y probabilidades mediante el uso de la técnica AutoML. AutoML es una tecnología de Machine Learning utilizada para seleccionar el mejor algoritmo/modelo de Machine Learning para predecir el estado, los números y los resultados generales basados en los datos pasados (datos utilizados para entrenar el modelo AutoML). No necesitas un científico de datos, porque AutoML probará los algoritmos de Machine Learning más comunes y seleccionará el mejor algoritmo para ti, basado en las características de los datos analizados.

InterSystems IRIS incorpora un motor AutoML, pero también permite utilizar H2O y DataRobot. En este artículo mostraré los pasos para utilizar el motor AutoML de InterSystems.

5
0 141
Artículo Alberto Fuentes · ene 16, 2023 2m read

cAdvisor (abreviatura de contenedor Advisor) analiza y muestra el uso de recursos y los datos de rendimiento desde los contenedores en ejecución. cAdvisor ya viene preparado para publicar métricas en formato Prometheus. 

https://prometheus.io/docs/guides/cadvisor/

Prometheus está integrado en SAM. Esto permite aprovechar las métricas de cAdvisor y mostrarlas a través de Prometheus y Grafana.

Como cAdvisor escucha en elpuerto 8080, que entra en conflicto con el puerto de Nginx, puedes cambiar el puerto Nginx para solucionarlo:

Pasos para realizar la configuración:

1. Cambia el puerto nginx.

1
0 542