¡Hola a tod@s!
¿Estáis listos para aprender algo que hubierais deseado conocer hace años (o, en mi caso, hace una DÉCADA)?
Abrid un portal en vuestra instancia favorita e id a:
System Administration->Configuration->Additional Settings->Startup
InterSystems Caché es un multi-modelo de DBMS y la aplicación server. See más detalles aquí.
Descargar Evaluación de Caché.
¡Hola a tod@s!
¿Estáis listos para aprender algo que hubierais deseado conocer hace años (o, en mi caso, hace una DÉCADA)?
Abrid un portal en vuestra instancia favorita e id a:
System Administration->Configuration->Additional Settings->Startup
En este artículo me gustaría presentar el proyecto RESTForms: back-end genérico REST API para aplicaciones web modernas.
La idea detrás del proyecto es simple: después de escribir varias API REST, me di cuenta de que, en general, la API REST consta de dos partes:
Y, si bien tendrá que escribir su propia lógica de negocio personalizada, RESTForms proporciona todo lo relacionado con el trabajo con clases persistentes desde el primer momento.
Casos de uso
Hola, en este artículo comparto cómo usar una API para crear notificaciones. En concreto trabajaremos con OneSignal:
https://documentation.onesignal.com/reference#create-notification
Primero, en el servicio recibimos un mensaje con la siguiente estructura:
{
"idApp": "111111111",
"numExpediente": "111111111",
"idioma": "ES",
"tipoNotificacion": "citafuturaAP",
"notificacion": {
"titulo": "Cita Atención Primaria",
"subtitulo": "C.P.
Hola, en este artículo explicaremos cómo empezar a usar la Base de Datos en Ensemble.
El caso de uso es recibir la siguiente estructura JSON, que representa una notificación, y ser capaces de validarla.
{
"idApp": "111111111",
"numExpediente": "111111111",
"idioma": "ES",
"tipoNotificacion": "citafuturaAP",
"notificacion": {
"titulo": "Cita Atención Primaria",
"subtitulo": "C.P. ISORA",
"mensaje": "Aquí el contenido del mensaje si aplicase",
"datosAdicionales": [
{
"clave": "centro",
"valor": "C.P.
Este artículo, y los dos siguientes de la serie, se conciben como una guía para los usuarios, los desarrolladores o para los administradores de sistemas que necesiten trabajar con la estructura de OAuth 2.0 (conocido también por simplicidad como OAUTH) en aplicaciones que estén basadas en los productos de InterSystems.
Actualización 30/01/2020
*** Las versiones afectadas de los productos han cambiado ***
*** Las versiones afectadas son Caché y Ensemble desde 2016.2.0. ***
*** Caché y Ensemble 2016.1.0 no está afectada por este defecto ***
InterSystems ha corregido un defecto que puede ocasionar degradación de la base de datos en circunstancias muy excepcionales. Puede incluir (y no limitarse a) problemas relacionados, como datos de la aplicación incorrectos o desaparecidos y sistemas bloqueados.
¡Hola Comunidad!
Como comentario a todas las reseñas de 2019, me gustaría daros las
En este artículo vamos a comparar las funciones $Increment y $Sequence.
En primer lugar, una nota para los lectores que nunca han oído hablar de $Increment $Increment es una función Caché ObjectScript que realiza una operación atómica para incrementar su argumento en 1 y devolver el valor resultante. Solo puede pasar un nodo variable global o local como parámetro a $Increment, no una expresión arbitraria. $Increment se usa mucho al asignar ID secuenciales. En tales casos, el parámetro de $Increment suele ser un nodo global.
¡Hola Comunidad!
Voy a empezar a traducir los artículos de mi compañero Murray sobre rendimiento, pues son muy interesantes y merece la pena echarles un vistazo. Aprovecho para comentar que si tenéis preguntas y /o problemas de rendimiento os animéis a escribir y entre todos trataremos de ayudaros. Empecemos...
Tu aplicación está implementada y todo funciona bien. ¡Genial, enhorabuena! Pero, de repente, el teléfono empieza a sonar sin parar: son usuarios que se quejan de que la aplicación a veces se vuelve "lenta". Pero... ¿qué quiere decir eso? ¿A veces? ¿De qué herramientas dispones y a qué estadísticas deberías prestar atención para encontrar y resolver la lentitud? ¿La infraestructura de tu sistema está a la altura de la carga de usuarios? ¿Qué preguntas de diseño de infraestructura deberías haber hecho antes de haber pasado a producción? ¿Cómo puedes hacer la planificación de capacidad para nuevo hardware con confianza y sin gastar en más hardware del necesario? ¿Cómo hacer que el teléfono deje de sonar? ¿Cómo podrías haber evitado que sonara desde un principio?
El equipo certificación hemos recibido algunas preguntas de los desarrolladores de Caché que piensen tomar el exam InterSystems IRIS Core Solutions Developer. Pensé que ahora sería un buen momento para aclarar algunas dudas que la comunidad pueda tener.
Incluso si Ud. aún no ha trabajado con InterSystems IRIS, el examen puede ser apto para usted si ya tiene experiencia en Caché. Si miramos los Exam Details veremos que solo hay un tema específico de IRIS.

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.
Pregunta:
¿Cómo obtengo un listado de los archivos que se encuentran dentro de cierta carpeta/directorio, usando un comodín/filtro?
Por ejemplo, todos los archivos '*.txt' en 'C:\Temp.
Respuesta:
En CACHE:
Puedes usar la consulta de clase FileSet de %Library.File.
Aquí puedes ver el ejemplo de un código donde se usa (también se adjunta):
run(pDir,pFileSpec)
Set tRS=##class(%ResultSet).%New("%Library.File:FileSet")
Set tSC=tRS.Execute(pDir,pFileSpec)
Write "Name",?30,"Date Modified",?53,"Type",!¡Hola a tod@s!
Al usar Studio, ODBC o una conexión de terminal a Caché o Ensemble, quizás se haya preguntado cómo podría implementar una conexión segura. Una opción es agregar TLS (también conocido como SSL) a su conexión. Las aplicaciones cliente de Caché (TELNET, ODBC y Studio) todas entienden cómo agregar TLS a la conexión. Tan solo es necesario configurarlas para hacerlo.
Configurar esos clientes es más fácil en la versión 2015.1 y posteriores. A continuación discutiré este nuevo método. Si ya usa el viejo método, este seguirá funcionando, pero le recomiendo considerar pasarse al nuevo.
¿Caché tiene características similares a PostgreSQL ' WITH RECURSIVE '? Algo que permite la recursividad en SQL.
¡Hola a tod@s!
En este artículo se exponen los pasos a seguir con el objetivo de crear una integración para consumir una API que nos permita crear notificaciones push, las cuales enviar mediante una aplicación móvil.
Vamos a usar OneSignal: https://onesignal.com/
¡Hola a tod@s!
comparto los pasos necesarios para crear y probar una integración REST.
Lo primero que necesitamos es acceder al contrato que nos aporta el equipo que se encarga de desarrollar el sistema externo. En concreto de esta forma sabremos varias cosas:
¡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.
¡Hola a tod@s!
En las partes anteriores (1, 2) de este artículo, hablamos de Globals como árboles. En esta tercera parte, los veremos como matrices dispersas.
Una matriz dispersa es un tipo de matriz donde la mayoría de los valores asumen un valor idéntico.
En la práctica, a menudo veréis matrices dispersas tan grandes que no tiene sentido ocupar memoria con elementos idénticos. Por lo tanto, tiene sentido organizar matrices dispersas de tal manera que no se desperdicie memoria al almacenar valores duplicados.
En algunos lenguajes de programación, las matrices dispersas son parte del lenguaje (por ejemplo, en J, MATLAB). En otros lenguajes, hay bibliotecas especiales que permiten usarlas. Para C ++, esos serían Eigen y similares.
Los Globals son buenos candidatos para implementar matrices dispersas por las siguientes razones:
Buenas tardes a todos!
Actualmente me encuentro migrando a la versión 2018.2 en una máquina nueva,un entorno que está en producción con la versión de Ensemble de 2012.1.2
Tras realizar un recovery de un backup realizado del otro entorno, y configurar el entorno para que esté igual que el antiguo, me he dispuesto a realizar las primeras pruebas, en un circuito que lee de SQL, y posteriormente tras procesar los mensajes, envía una peticion SQL, pero en el primer paso, que es al pasar por un enrutador, me he encontrado con el siguiente problema:
++ Update: August 1, 2018
El uso de la dirección IP virtual (VIP) de InterSystems incorporada en Mirroring de la base de datos de Caché tiene ciertas limitaciones. En particular, solo puede utilizarse cuando los miembros Mirror se encuentran en la misma subred. Cuando se utilizan varios centros de datos, las subredes normalmente no se “extienden” más allá del centro de datos físico debido a la complejidad añadida de la red (puede obtener más información aquí). Por las mismas razones, la IP virtual con frecuencia no puede utilizarse cuando la base de datos se aloja en la nube.
Principiantes- ver Parte 1.

Una estructura, como un árbol ordenado, tiene varios casos especiales. Echemos un vistazo a aquellos que tienen un valor práctico para trabajar con globals.
Los globals pueden usarse no solo como una matriz, sino como variables regulares. Por ejemplo, para crear un contador:
InterSystems ha corregido un defecto que puede ocasionar que el servicio de shadowing falle con una violación de acceso. En algunos casos, el defecto puede causar corrupción de memoria, produciendo un comportamiento impredecible.
Nota: El defecto no afecta al mirroring.
El defecto afecta a:
¡Hola Comunidad!
Como explicó Rob en un artículo anterior, la interfaz Node.js de Caché permite crear Servicios Web y Servicios REST utilizando el framework modular framework EWD 3.
Por defecto, estos servicios devuelven una respuesta JSON con Content-Type: application / json y el cuerpo de respuesta contiene el JSON que devuelve utilizando el método finished(), por lo que:
finished({ test: 'test response' });
devuelve
{ "test": "test response" }
con un content-type HTTP de application/json
¡Hola a tod@s!
Buscando en la Comunidad propuestas para trabajar con datos organizados en hojas EXCEL, de forma sencilla, para ofrecer a los usuarios finales, encontré este buen artículo sobre el tema: Tips & Tricks - SQL to Excel, que introduce un concepto importante: "EXCEL puede interpretar tablas HTML y mostrarlas de la forma habitual"
¡Genial!
Suponga que desarrolló su propia aplicación con la tecnología de InterSystems y ahora quiere realizar varias implementaciones en sus distintos clientes. Durante el proceso de desarrollo usted escribió una guía de instalación detallada para aplicarla, ya que no solo necesita importar clases, también configurar el entorno de acuerdo a sus necesidades.
Para atender esta tarea específica, InterSystems creó una herramienta especial llamada %Installer. Siga con la lectura para saber cómo utilizarla.
¡Hola a tod@s!
La versión de mantenimiento 2018.1.3 de Caché y Ensemble ya está disponible.
El kit para la instalación del programa se puede descargar en la página de descargas del Centro de Soporte Internacional (WRC).
Es una versión de mantenimiento, con muchas actualizaciones en una gran variedad de áreas.
Para más información sobre las correcciones incluidas en esta versión, consulta por favor las notas de la versión.
Esta versión también incluye soporte para Red Hat Enterprise Linux 8, que se añade a las plataformas ya soportadas, detalladas en el documento de plataformas soportadas 2018.1.
¡Hola Comunidad!
Os traemos un nuevo vídeo del Global Summit de este año, disponible en el Canal de YouTube de la Comunidad de Desarrolladores en inglés:
⏯ Adopción de InterSystems IRIS
¡Hola Comunidad!
Solo por diversión, creé un script de bash que genera archivos csv a partir de un archivo exportado %GOGEN.
(%GOGEN es la herramienta para exportar globales para Cache 5.xx)
Al principio creí que sería muy simple con bash, pero...
- si se quiere tener un encabezado en el archivo csv
- si se exportan con GOGEN más globales juntos, no solo uno
- si se desea un archivo csv para cada global/índice que tiene el global...
El simple script de bash se pasa de 100 líneas de código. Si volviera a empezar con esto, usaría Python o Go, no bash.
Ejemplo:
Para un archivo
¡Hola!
Creo que lo más sencillo es (trabajando con un csv delimitado por ";"):
set file = ##class(%File).%New( "data.csv" )
set sc = file.Open( "R" )
if $$$ISERR(sc) quit ; or do smth
while 'file.AtEnd {
set str=file.ReadLine()
for i=1:1:$length( str, ";" ) {
set id=$piece( str, ";" ,i )
write !, id // or do smth
}
}
do file.Close()
Opciones posibles:
Distintas variantes de manejo de errores con código sc.
Introducir un bucle while dentro de un bloque try/catch.
¿Cuál es la tuya?
InterSystems ha corregido varios defectos críticos que pueden ocasionar problemas de integridad de datos. Estos defectos han sido identificados y corregidos en un breve espacio de tiempo, por lo que InterSystems ha simplificado el proceso de actualización consolidándolos en un único paquete. Los efectos de estos fallos puede que no sean siempre visibles. Los defectos afectan a los productos InterSystems IRIS, IRIS for Health, Health Connect, Caché, Ensemble y HealthShare. Todos los defectos están relacionados con la aplicación de datos de journals.