Artículo
Jose Tomas Salvador · Sep 6, 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?

70
0 3 182
Artículo
Alberto Fuentes · Oct 29, 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!

30
0 0 36
Artículo
Alberto Fuentes · Ene 28, 2021 Lectura de 2 min
Utilidad para descargar mensajes de una producción

Hola a todos! 

Comparto una pequeña utilidad (servicio REST) para descargar mensajes de una producción de interoperabilidad como ficheros.

Sólo necesitas:
1. Crear una aplicación web en el Portal de Gestión (e.g. /downloadmsg) que tenga configurado DispatchClass=Util.DownloadMsg.
2. Llamar a la utilidad pasándole el namespace y el identificador de cabecera del mensaje a descargar.
http://localhost:52773/downloadmsg/ns/dev/msgid/17441

30
0 2 80

Trabajando en soporte generalmente me preguntan cuántos días hay que mantener los journals. ¿Debería ser dos días o después de dos copias de seguridad? ¿Más? ¿Menos? ¿Por qué dos?

La respuesta correcta (para la mayoría de los entornos) es que se debería conservar los ficheros de journal desde la última copia de seguridad validada. Es decir, hasta que no verifique si una copia de seguridad es válida (restaurando el archivo y verificándolo con la utilidad Integrity), no puede estar seguro de que haya una buena copia de los datos y no por tanto no se deberían purgar los journals de manera segura.

20
0 2 28

Tanto si accedes a DeepSee por primera vez como si estás configurando DeepSee en una instancia nueva, puedes encontrar dos incidencias habituales después de hacer clic en la opción "DeepSee" en el Portal de Administración del Sistema.

Incidencia #1: ¡Arquitech/Analyzer aparece en gris!

Incidencia #2: Se debe habilitar DeepSee antes de su uso.

Incidencia #1: ¡Arquitech/Analyzer aparece en gris!

20
0 0 28
Artículo
Dani Fibla · Ago 9, 2021 Lectura de 2 min
REST API que consume SQL y devuelve JSON

¡Hola desarrolladores!

A veces, cuando desarrollamos una maqueta o una Prueba de Concepto (PoC), necesitamos una interfaz sencilla que proporcione datos en IRIS en JSON contra consultas SQL.

Y recientemente contribuí con un sencillo módulo que hace exactamente eso:

acepta una sentencia SQL y devuelve JSON.

¿Cómo se instala? Solo llama:

zpm "install sql-rest"

Si lo instalas en un namespace X, configurará un endpoint /sql en tu sistema, que aceptará solicitudes POST con una sentencia SQL  y te devolverá el resultado para los datos disponibles en el namespace X.

20
0 0 51
Artículo
Ricardo Paiva · Ago 11, 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:

20
0 0 47
Artículo
Robert Cemper · Mar 24, 2021 Lectura de 1 min
Problema con docker-compose

Entorno:

  • Windows 10
  • Docker Desktop version v20.10.5

Desde la última actualización de Docker Desktop (~ 2 semanas) recibo este mensaje de error al ejecutar docker-compose build

C:\GitHub\zme>docker-compose build
Building iris
failed to get console mode for stdout: The handle is invalid.

20
0 0 69


En este artículo, mostraré los conceptos básicos de la autenticación OAuth2 con la cuenta de GitHub con la ayuda de la demostración online
https://dappsecurity.demo.community.intersystems.com/csp/user/index.csp usando SuperUser | SYS

Recomendaciones:

A continuación, necesitamos 3 pasos:

  • Paso 1: Registrar la aplicación con el servidor de autenticación de GitHub
  • Paso 2: Configurar el cliente OAuth 2.0 desde el portal de administración de InterSystems
  • Paso 3: Llamar a la API para iniciar sesión con una cuenta de GitHub

Así que... ¡empecemos!

20
0 0 29

Si os habéis pasado de Studio a VSCode recientemente tal vez os hayáis dado cuenta de que en el Explorador faltan algunos elementos.
Por ejemplo, cuando se crea una API REST a partir de sus especificaciones, se generan 3 clases: <api>.impl, <api>.disp y <api>.spec, sin embargo la clase <api>.disp no se muestra por defecto en el Explorador.

10
0 0 32
Artículo
Kurro Lopez · Mar 2, 2021 Lectura de 1 min
Análisis de errores de aplicación

¡Hola, desarrolladores!

Como sabeis, los errores de la aplicación están en el global ^ERRORS. Aparecen si los llamas:

d e.Log() 

en la sección Catch de Try-Catch.

Con la propuesta de @Robert Cemper, ahora se puede utilizar SQL para examinarlo.

Inspirado por el módulo de Robert, presenté un módulo simple de IRIS Analytics que muestra estos errores en un dashboard:

10
0 0 50

Hola todos,

Quiero compartir un sencillo y rápido método que puede usarse para habilitar ssl con un certificado auto-firmado en una instancia de desarrollo local de IRIS/HealthShare. Esto permite probar funciones específicas de https, como OAuth.

1. Instalar OpenSSL

Windows: https://slproweb.com/download/Win64OpenSSL_Light-1_1_1g.exe

Debian Linux: $ sudo apt-get -y install openssl

RHEL: $ sudo yum install openssl

10
0 1 61

Algunos de vosotros no conoceréis esta limitación o problema conocido que se produce en los Procesos de Negocio (Business Processes) basados en BPL.

Aquellos que no estabais al tanto quizá os habéis encontrado esto:

ERROR <Ens>ErrBPTerminated: Terminating BP <my_process_name> # due to error:

ERROR #7201: Datatype value 'xxS6xxS6...xxS6' length longer than MAXLEN allowed of 5
10
0 0 25
Artículo
YURI MARX GOMES · Nov 3, 2021 Lectura de 1 min
Ruta de aprendizaje para principiantes

¡Hola Comunidad!

La página web de formación de InterSystems (InterSystems Learning Website) tiene muchos cursos interactivos. Si quieres aprender más o empezar a trabajar con InterSystems, este es el camino que debes seguir:

Resumen:

Conceptos básicos:

10
0 0 30
Artículo
Rubén Larenas · Nov 22, 2021 Lectura de 2 min
Datos personalizados con %Populate

Estimados

Todos ya conocerán las propiedad y facilidades que entrega %Populate para las clases registradas, es una herramienta muy útil a la hora de realizar alguna demostración o presentación. Sin embargo, también habrán notado que por defecto tiene un set de datos localizado y creado para Estados Unidos lo que en algunas situaciones puede ser una dificultad.

Es por esta razón que les dejo este pequeño ejemplo de cómo usar POPSPEC para poder localizar y crear nuestro propio conjunto de datos de prueba.

En primer lugar creemos nuestra clase persistente:

10
0 0 33
Artículo
Alberto Fuentes · Abr 22, 2021 Lectura de 1 min
Truco: Ctrl+C y Ctrl+V en el terminal de IRIS

¡Hola! ¿Sabéis que se puede habilitar Ctrl+C y Ctrl+V en el terminal de IRIS para Windows?

Para hacerlo, hay que abrir el Terminal, seleccionar Edit > User Settings y habilitar Widows Edit accelerators.

Esta opción especifica si el Terminal habilita atajos de teclado habituales en Windows (Ctrl+C, Ctrl+V, Ctrl+Shift+V) además de los atajos típicos del Terminal básico (Ctrl+Insert, Shift+Insert).

10
0 1 46
Artículo
Alberto Fuentes · Oct 7, 2021 Lectura de 2 min
Cómo obtener Upstream en GitHub

¡Hola desarrolladores!

Con frecuencia, cuando colaboramos con el repositorio de alguien en GitHub, seguimos el siguiente ciclo:
1. Fork: crear nuestra bifurcación del repositorio
2. Clone: clonar una copia local de nuestro repositorio bifurcado
3. Realizar nuestros cambios y guardarlos con un Commit en nuestra copia local
4. Push: publicar nuestros cambios al repositorio clonado de GitHub
5. Hacer Pull-Request para solicitar incorporar nuestros cambios desde nuestro fork — bifurcación — al repositorio original
6. Y si todo va bien se hará un Merge — fusión o incorporación — con nuestros cambios en el repositorio original

¡Todo esto es genial y funciona bien!

Y si queremos realizar una segunda colaboración justo después de llevar a cabo un Merge , es necesario que primero realicemos un Fetch upstream en nuestro repositorio clonado para que tengamos disponibles los cambios actualizados que incorporamos al repositorio original a través del Pull Request.

Los más frikies de git lo hacen muy fácilmente, pero muchos terminamos simplemente por eliminar nuestro primer fork y crear otro nuevo.

10
0 0 33
Artículo
Henry Pereira · Sep 26, 2021 Lectura de 8 min
¡Luchemos contra las máquinas!

https://media.giphy.com/media/Nxu57gIbNuYOQ/giphy.gif

Calma, calma, no estoy promoviendo una guerra contra las máquinas como en las películas de ciencia ficción, para evitar la dominación mundial de Ultron o Skynet.
Todavía no, todavía no 🤔

Os invito a retar a las máquinas a través de la creación de un juego muy sencillo usando ObjectScript con Python embebido.

10
0 0 37

Ejecuto la mayoría de mis revisiones con Docker Desktop en Windows 10.
Según las recomendaciones, limpio Docker y los repositorios descargados después de las pruebas:
Los repositorios son sencillos, pero Docker se resiste un poco a liberar el espacio consumido en el disco. Los pasos que ejecuté inicialmente son:

  • eliminar los contenedores pendientes  docker rm -f container . . .
  • eliminar las imágenes descargadas   docker rmi image  . . .
  • limpiar cachés y redes  docker system prune

Pero el espacio que consumió mi disco no se redujo.

Así que buscando en Google, encontré un método muy útil para reducir el consumo en disco de Docker. Y me gustaría compartir esta experiencia con vosotros.

10
0 1 110

Hola a todos! Comentamos hoy una entrada de Timothy Leavitt cuyo equipo (Application Services en InterSystems - encargado de desarrollar y mantener muchas de nuestras aplicaciones internas, y proporcionar herramientas y prácticas recomendadas a otras aplicaciones departamentales), durante el último año, se embarcó en un viaje hacia el desarrollo de interfaces de usuario basadas en Angular/REST, para las aplicaciones existentes construidas originalmente con CSP y/o Zen.

10
0 1 63

En Studio, podías abrir una clase directamente usando su nombre, sin tener que recorrer completamente el árbol de paquetes con un montón de clics hasta llegar a la clase deseada.

Con Ctrl + O o (File -> Open) podías escribir el nombre de la clase de forma sencilla, por ejemplo:

Pulsabas Enter y voilà!, la clase se abría.

¿Cómo se logra esto en VSCode?

10
0 0 48
Artículo
Eduardo Anglada · Ago 12, 2021 Lectura de 3 min
Escaneo y división de globals
Este es un ejemplo de código que funciona en IRIS 2020.1 y en Caché 2018.1.3 
No se mantendrá sincronizado con las nuevas versiones.      
Y NO cuenta con el servicio de soporte de InterSystems.

En la mayoría de los casos, un global que se utiliza como almacenamiento predeterminado tiene solo 1 nivel de subíndice que representa el IDKEY.
Para un índice de globals podemos ver 2 o más niveles de subíndices.
Las matrices, las relaciones de herencia padre hijo o las clases persistentes que extienden una clase base, son ejemplos en los que vemos más niveles. Aunque todos estos globals son bastante uniformes.

10
0 0 57