Artículo
· 11 feb, 2022 Lectura de 5 min
Cómo convertirse en un señor del tiempo - El nacimiento

El tiempo dirá, siempre lo hace.

El Doctor.

No es una tarea facil dominar fechas y horas, siempre es un problema y a veces confuso en cualquier lenguaje de programación, vamos a aclarar y a poner unos cuantos tips para que esta tarea sea lo mas sencilla posible.

Súbete a la TARDIS que te voy a convertir en un Señor del tiempo

Tardis

24 0
0 406
Artículo
· 25 feb, 2022 Lectura de 6 min
Enviando mensajes a Kafka

Hola!

Llevaba un tiempo queriendo dedicarle un rato para implementar alguna DLL o algo que pudiese usar desde Caché y al final he sacado un huequillo, si te interesa poder producir mensajes que se envíen a Kafka de una manera rápida estás en el lugar adecuado ;-)

Antes de daros la chapa con lo que vamos a ver os hago un resumen para que decidáis si os puede interesar leer el artículo.

En este artículo nos vamos a centrar "solo" en la parte de producir mensajes y enviarlos a Kafka:

22 0
0 650

Viajar en el tiempo es como visitar París. No puedes simplemente leer la guía, tienes que arrojarte. Come la comida, usa los verbos equivocados, recibe el doble de cargos y terminas besando a completos desconocidos.

El Doctor

Vamos ahora a viajar por el tiempo, osea, vamos a ver fechas futuras y pasadas y como calcularlas en diferentes formatos. La TARDIS no espera, ponte a los mandos y sujétate fuerte.

Travel in TARDIS

13 0
0 201
Artículo
· 6 sep, 2021 Lectura de 2 min
InterSystems ObjectScript 101++

Desde hace ya algunos años he echado en falta poder ofrecer, a todos los que se interesan por ObjectScript, un tutorial más o menos completo de iniciación a ObjectScript. Algo que pueda ayudar más y facilitarles las cosas a esos nuevos desarrolladores que se acercan a nuestra tecnología... algo intermedio, a medio camino entre el típico "Hola Mundo", que no te permite ir mucho más allá, y el "Curso Avanzado de Programación", que te resulta imposible por carecer de tiempo o medios.

Si existiese algo que de verdad sirviera no sólo como introducción al ecosistema, sino cómo empujón y punto de partida para empezar a hacer cosas de verdad en ObjectScript y avanzar por ti mismo... ¿no sería estupendo?

8 3
0 380
Artículo
· 24 mayo, 2019 Lectura de 18 min
Uso de expresiones regulares en ObjectScript

Al igual que con Pattern Matching, se pueden utilizar Expresiones Regulares para identificar patrones en textos en ObjectScript, sólo que con una potencia mucho mayor.

En este artículo se proporciona una breve introducción sobre las Expresiones Regulares y lo que puede hacerse con ellas en ObjectScript. La información que se proporciona aquí se basa en varias fuentes, entre las que destaca el libro “Mastering Regular Expressions” (Dominando las expresiones regulares) escrito por Jeffrey Friedl y, por supuesto, la documentación online de la plataforma.

4 3
1 871
Artículo
· 29 oct, 2021 Lectura de 2 min
Trucos para gestionar errores en ObjectScript

ObjectScript tiene diferentes formas para gestionar errores (códigos %Status, %Exception, SQLCODE, etc). La mayor parte del código de sistema utiliza códigos %Status pero las %Exception son en ocasiones más fáciles de gestionar.

Si tienes que trabajar o mantener aplicaciones con cierto recorrido seguramente acabes lidiando con distintas técnicas de gestión de errores. A continuación os dejo una chuleta u hoja de trucos que puede servir como referencia. ¡Espero que os sea útil!

3 0
0 94
Artículo
· 16 abr, 2019 Lectura de 3 min
Copiar parte de las propiedades de un objeto a otro

A veces, necesitamos copiar parte de las propiedades de un objeto en otro diferente.

La forma mas facil sería hacer lo siguiente:

Set obj1.FirstName = obj2.FirstName

Set obj1.SecondName = obj2.SecondName

¿Que sucede si el objeto contiene un gran número de propiedades? ¿Y si solo necesitamos extraer un importante grupo de datos, y complementar la información en otro objeto?

Tenemos las siguientes clases:

3 0
0 221
Artículo
· 11 ago, 2021 Lectura de 3 min
Cómo aprovechar al máximo $Query

Me encontré con un interesante caso de uso de ObjectScript con una solución general que quería compartir.

Caso de uso:

Tengo una matriz JSON (específicamente, en mi caso, una matriz de problemas de Jira) que quiero agregar en algunos campos, por ejemplo: categoría, prioridad y tipo de problema. Después quiero combinar los agregados en una lista simple con el total de cada uno de los grupos. Por supuesto, para la agregación, tiene sentido utilizar una matriz local en el formulario:

3 1
0 154
Artículo
· 6 dic, 2019 Lectura de 12 min
Tutorial de WebSockets

¡Hola Comunidad!

La mayor parte de las comunicaciones servidor-cliente en la web se basan en una estructura de solicitud y respuesta. El cliente envía una solicitud al servidor y el servidor responde a esta solicitud. El protocolo WebSocket ofrece un canal bidireccional de comunicación entre un servidor y un cliente, lo que permite a los servidores enviar mensajes a los clientes sin antes haber recibido una solicitud. Por más información sobre el protocolo WebSocket y su implementación en InterSystems IRIS, vea los siguientes enlaces:

3 0
0 1.2K
Artículo
· 21 dic, 2019 Lectura de 2 min
Demo de SUDOKU

Para aquellos expertos que no pueden parar después del concurso "Advent of Code" (AoC2019), he publicado un código bastante antiguo en estilo tradicional para mejorarlo.

Fue escrito en base a una prueba previa en .XLS. Está lejos de ser perfecto. Es más bien un desafío para mejora en todas las direcciones (código, interfaz, ...). Así que cualquiera está invitado a mejorarlo.

3 0
0 190
Artículo
· 17 dic, 2020 Lectura de 3 min
Cómo crear código de "Solo escritura" (Irónicamente)

Uno de los principales beneficios de ObjectScript es la velocidad y eficiencia que ofrece a un desarrollador experimentado. Veamos un ejemplo de todos los beneficios que se pueden obtener con ObjectScript.

Imagina que tienes una clase que almacena nombres de sus usuarios. Llamaremos a la clase **Data.User**, y le daremos las mismas propiedades que tiene una cadena _Name_. A continuación, necesitaremos un método para crear un nuevo usuario o actualizar uno ya existente. Un enfoque inexperto y simplista sería muy similar al siguiente ejemplo:

3 0
0 103
Artículo
· 26 feb, 2020 Lectura de 1 min
Desactivación de una producción Ensemble

No pretendo decir que esto sea una guía de "buenas prácticas", pero estoy en una situación particular en la que necesito impedir que los usuarios inicien una producción de Ensemble “retirada” en un namespace renombrado. Sigue siendo un namespace activo, por lo que debemos mantenerlo disponible para acceder al visor de mensajes... afortunadamente, solo por un tiempo.

Es un truco …

3 0
0 153

¡Hola Comunidad!

ObjectScript tiene al menos tres formas de manejar errores (códigos de estado, excepciones, SQLCODE, etc...). La mayor parte del código del sistema usa estados, pero las excepciones son más fáciles de manejar por varias razones. Al trabajar con código heredado, se invierte un tiempo en traducir las distintas técnicas. Yo uso mucho estos fragmentos de código como referencia. Espero que también os sean útiles.

3 4
1 344

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

3 2
0 183

¡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!

2 0
0 10
Artículo
· 17 mayo, 2020 Lectura de 7 min
Macros en InterSystems Caché

En este artículo me gustaría contarle acerca de las macros en InterSystems Caché. Una macro es un nombre simbólico que se reemplaza con un conjunto de instrucciones durante la compilación. Una macro puede "desplegarse" en varios conjuntos de instrucciones cada vez que se llama, dependiendo de los parámetros que se le pasen y los escenarios activados. Esto puede ser tanto código estático como el resultado de la ejecución de ObjectScript. Echemos un vistazo a cómo puede usarlos en su aplicación.

2 0
0 282

¡Bienvenidos a todos!

En este breve artículo quería presentar un ejemplo de uso que seguramente a muchos de los que trabajéis con IRIS como backend de vuestras aplicaciones web os hayáis encontrado en más de una ocasión y sería el de la necesidad de enviar desde el frontend un archivo a vuestro servidor.

2 0
1 80

¡Hola Comunidad!

Me gustaría presentaros una nueva utilidad para importar CSV a IRIS - ¡csvgenpy!

Instalación

USER>zpm "install csvgenpy"

Uso:

do ##class(shvarov.csvgenpy.csv).Generate("file or url","table","schema")

Ejemplo:

USER>do ##class(shvarov.csvgenpy.csv).Generate("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv","titanic","data")

Esto creará la tabla y la clase data.titanic en IRIS y a continuación cargará los datos. Podéis probarlo con:

2 0
0 40
Artículo
· 14 ago, 2019 Lectura de 5 min
Jugando con la Sincronización de Objetos

La funcionalidad de Sincronización de Objetos no es nueva, estaba presente en Caché, pero quería explorar un poco más en profundidad cómo funciona. Siempre he pensado que la sincronización automática de una base de datos es compleja en sí misma pero, para algunos escenarios muy particulares quizá no sea tan difícil. Así que he considerado un caso de uso muy simple (OK, quizá el caso típico, no descubro nada...

2 0
1 154
Artículo
· 24 mar, 2020 Lectura de 4 min
Ensemble: Cómo incrustar un archivo PDF en un mensaje HL7

¡Hola Comunidad!

En este artículo describiré e incluiré un ejemplo de cómo incrustar un archivo PDF externo en un segmento HL7, concretamente en el segmento OBX() de un mensaje ADT_A01 versión 2.3.1 . Esto puede ser útil para insertar imágenes u otros datos externos en un mensaje HL7. En este ejemplo, el nombre del archivo PDF a incrustar nos llega en el mensaje HL7 entrante en el campo OBX(1):ObservationValue.

2 1
0 447
Artículo
· 30 mayo, 2022 Lectura de 1 min
Truco de depuración con SQL

Estoy seguro de que os habéis encontrado esta situación:

  • Hay un bug en un sistema que no puedes reproducir por ti mismo localmente
  • Necesitas ejecutar unas pocas líneas en la instancia afectada
  • Tienes acceso completo al Portal de Gestión
  • Pero no hay terminal, ni consola, ni acceso con Studio, Atelier o VSCode
  • ¿Cómo ejecutar tus pocas líneas para probar???

2 1
0 159