Limpiar filtro
Anuncio
Esther Sanchez · 3 mar, 2022
¡Hola desarrolladores!
Muchísimas gracias a todos los que habéis participado, de una forma u otra, en el 1er concurso de artículos técnicos en español! Hemos recibido
🌟 8 ARTÍCULOS INCREÍBLES 🌟
Y... ¡llegó el momento de anunciar los mejores!
Estos son los ganadores y sus artículos:
⭐️ Premios de los expertos – los ganadores han sido elegidos por expertos de InterSystems:
🥇 Primer puesto: Enviando mensajes a Kafka, escrito por @Daniel.Aguilar
🥈 Segundo puesto: Cómo convertirse en un señor del tiempo - El Nacimiento, escrito por @Francisco.Lopez1549
🥉 Tercer puesto: Implementación de patrones de proyecto utilizando el lenguaje Caché ObjectScript, escrito por @Marcio.Pereira
⭐️ Premio de la Comunidad – el ganador es elegido por los miembros de la Comunidad y es el artículo con mayor número de "likes":
🏆 Cómo convertirse en un señor del tiempo - El Nacimiento, escrito por @Francisco.Lopez1549
¡Enhorabuena a todos los ganadores!
¡Y un fuerte aplauso al resto de participantes!
@Robert.Cemper1003
@Laura.BlázquezGarcía
@Nancy.Martinez
@Yone.Moreno
¡GRACIAS por vuestro esfuerzo y por contribuir en la Comunidad!!!
Los premios están en producción. Contactaremos con los ganadores para enviárselos lo antes posible. Enhorabuena a los premiados. Muy buenos artículos han salido. Hay que repetirlo porque hay mucha calidad en la comunidad ¡Enhorabuena por tus dos premios!! 🎊🎊 ¡Felicitaciones a todos! ¡Gracias por tu contribución! Muchas felicidades a los ganadores y a todos los participantes
Anuncio
Esther Sanchez · 26 abr, 2022
¡Hola desarrolladores!
El Primer Concurso de Artículos Técnicos en Portugués ha terminado.
Hemos recibido: 🔥6 artículos increíbles 🔥
¡Muchísimas gracias a todos los que habéis participado!
Y llegó el momento de anunciar los mejores...
Estos son los ganadores y sus artículos:
⭐️ Premios de los expertos – los ganadores han sido elegidos por expertos de InterSystems:
🥇 Primer puesto: Utilizando HealthShare para normalização de resultados de SARS-CoV-2/COVID-19 escrito por @Renan.Santos
🥈 Segundo puesto: Introdução à análise de dados com IRIS e Pandas escrito por @Henry.HamonPereira
🥉 Tercer puesto: HealthShare: criando o ecossistema de atendimento orientado a dados escrito por @Yuri Marx
⭐️ Premio de la Comunidad – el ganador es elegido por los miembros de la Comunidad y es el artículo con mayor número de "likes":
🎉 Utilizando HealthShare para normalização de resultados de SARS-CoV-2/COVID-19 escrito por @Renan.Santos
¡Enhorabuena a todos los ganadores!
Y un fuerte aplauso al otro participante:
@Julio.Esquerdo
¡GRACIAS por vuestro esfuerzo y por contribuir en la Comunidad!!!
Los premios están en producción. Contactaremos con los ganadores para enviárselos lo antes posible. ¡Felicitaciones a todos los ganadores! Y por los grandes artículos publicados.
¡Estoy disponible para ayudarte siempre que lo necesites! Muito obrigado Renan, pela disposiçao!
Anuncio
Esther Sanchez · 21 mar, 2023
¡Hola Comunidad!Hemos realizado una integración entre Open Exchange y Global Masters. Ahora, cuando hagáis una reseña de una aplicación en Open Exchange, conseguiréis puntos e insignias automáticamente, no tenéis que hacer nada más! Conseguiréis:
💰 200 puntos automáticamente por cada reseña publicada en Open Exchange
🏆 Puntos extra e insignias por número de reseñas:
Insignia "Open Exchange Reviewer"Por la 1ª reseña publicada
200 puntos
Insignia "Advanced Open Exchange Reviewer"Por 5 reseñas publicadas
500 puntos
Insignia "Bronze Open Exchange Reviewer"Por 10 reseñas publicadas
1000 puntos
Insignia "Silver Open Exchange Reviewer"Por 25 reseñas publicadas
2500 puntos
Insignia "Gold Open Exchange Reviewer"Por 50 reseñas publicadas
5000 puntos
Las reseñas ayudan a otros desarrolladores a encontrar más rápido la aplicación adecuada. Y ofrecen información muy útil para todos.¡Nos encantaría ver más reseñas en Open Exchange!¿Cómo hacer una reseña? ¡Es facilísimo! Os lo explicamos en este vídeo:
Psss... Si aún no pertenecéis a Global Masters, la plataforma de gamificación de InterSytems, podéis daros de alta aquí usando vuestras credenciales SSO de InterSystems.
Artículo
Daniel Franco · 19 ago, 2020
Ejecutar modelos predictivos de forma nativa en un "Business Process" ("Proceso Empresarial") de InterSystems IRIS siempre ha sido, por supuesto, el objetivo de nuestro soporte para PMML, pero de alguna forma nunca formó parte del paquete porque había algunas dependencias y elecciones que era necesario analizar y decidir. En cualquier caso, gracias a algunas presiones y al código ofrecido amablemente por @Amir.Samary (¡gracias de nuevo, Amir!), finalmente conseguimos empaquetarlo en un repositorio de GitHub para que lo disfruteis, lo valoreis y hagáis sugerencias.
El repositorio contiene una "Business Process" ("Process Empresarial") genérica, que funciona con cualquier modelo PMML usando una matriz para pasar entradas al modelo, y también contiene una herramienta que generará una BO ("Business Operation" - "Operación Empresarial") para tus clases PMML. La última supone un paso adicional (de una línea) durante la preparación, pero generará objetos dedicados de solicitud y respuesta, lo que será mucho más conveniente al conectar propiedades en el creador de solicitudes cuando se trabaje con modelos complejos.
A continuación del código de la herramienta, también hay una "Producción" de muestra, que aprovecha ambos enfoques.
Déjanos saber tu opinión y en base a los comentarios podremos elegir la mejor forma de incluirlo finalmente en el paquete. Y, por supuesto, siempre nos alegra saber cómo habeis estado usando modelos PMML hasta ahora.
Artículo
Alberto Fuentes · 15 nov, 2022
YASPE es el sucesor de YAPE (Yet Another pButtons Extractor). YASPE ha sido escrito desde cero con muchos cambios internos para facilitar el mantenimiento y añadir mejoras.
Funcionalidades de YASPE:
- Analizar y representar gráficamente los archivos de InterSystems Caché pButtons e InterSystems IRIS SystemPerformance para un rápido análisis de rendimiento de las métricas de IRIS y del Sistema Operativo.
- Facilitar un análisis profundo, creando gráficos tanto *ad-hoc* como combinando métricas de IRIS y del Sistema Operativo con la opción "Pretty Performance".
- La opción "System Overview" te ahorra tener que buscar en los archivos SystemPerformance detalles del sistema u opciones de configuración comunes.
YASPE está escrito en Python y está disponible en GitHub como código fuente o para contenedores Docker en:
> - https://github.com/murrayo/yaspe
---
> YASPE está más centrado en las versiones y Sistema Operativo actuales de IRIS. Si tienes versiones más antiguas y tienes problemas con YASPE, comprueba si puedes ejecutar correctamente tus archivos de rendimiento con YAPE. Si tienes problemas, no dudes en preguntarme a través de GitHub.
---
## Ejemplos
### Archivos de salida
Las opciones incluyen:
- Gráficos en HTML o PNG para todas las columnas en mgstat y vmstat o windows perfmon y salida a carpetas.
- Es opcional crear gráficos para iostat ya que puede llevar mucho tiempo si hay una lista de discos grande.
- Un fichero CSV para posterior procesado manual, por ejemplo, con Excel.

### Pretty Performance
Debajo está el gráfico de ejemplo, Glorefs (mgstat) y Uso Total de CPU (vmstat).
[](https://github.com/murrayo/yaspe/blob/main/images/Glorefs_and_CPU_Utilisation_-_Sample_site_name_Monday_17_Jan_2022.png)
Esta es una de las imágenes predeterminadas, que incluye un zoom para un momento específico (o por defecto de 13:00-14:00).
[](https://github.com/murrayo/yaspe/blob/main/images/CPU_Utilisation_1000_1100.png)
### Descripción del sistema
_yaspe_ incluye una descripción del sistema y una comprobación básica de la configuración (`-s`)
Esta comprobación está diseñada para evitar estar rebuscando en el archivo SystemPerformance para encontrar los detalles del sistema. Este es un ejemplo de`overview.txt`:
```text
System Summary for your site name
Hostname : YOURHOST
Instance : SHADOW
Operating system : Linux
Platform : N/A
CPUs : 24
Processor model : Intel(R) Xeon(R) Gold 6248 CPU @ 2.50GHz
Memory : 126 GB
Shared memory : globals 71680 MB + routines 1023 MB + gmheap 1000 MB = 73,703 MB
Version : Cache for UNIX (Red Hat Enterprise Linux for x86-64) 2018.1.4 (Build 505_1U) Thu May 28 2020 10:11:16 EDT
Date collected : Profile run "24hours" started at 16:15:00 on Nov 22 2021.
Warnings:
- Journal freeze on error is not enabled. If journal IO errors occur database activity that occurs during this period cannot be restored.
- swappiness is 10. For databases 5 is recommended to adjust how aggressive the Linux kernel swaps memory pages to disk.
- Hugepages not set. For performance, memory efficiency and to protect the shared memory from paging out, use huge page memory space. It is not advisable to specify HugePages much higher than the shared memory amount because the unused memory are not be available to other components.
- dirty_background_ratio is 10. InterSystems recommends setting this parameter to 5. This setting is the maximum percentage of active memory that can be filled with dirty pages before pdflush begins to write them.
- dirty_ratio is 30. InterSystems recommends setting this parameter to 10. This setting is the maximum percentage of total memory that can be filled with dirty pages before processes are forced to write dirty buffers themselves during their time slice instead of being allowed to do more writes. These changes force the Linux pdflush daemon to write out dirty pages more often rather than queue large amounts of updates that can potentially flood the storage with a large burst of updates
Recommendations:
- Review and fix warnings above
- Set HugePages, see IRIS documentation: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GCI_prepare_install#GCI_memory_big_linux
- Total memory is 128,755 MB, 75% of total memory is 96,566 MB.
- Shared memory (globals+routines+gmheap) is 73,703 MB. (57% of total memory).
- Number of HugePages for 2048 KB page size for (73,703 MB + 5% buffer = 77,388 MB) is 38694
All instances on this host:
- >SHADOW 2018.1.4.505.1.a 56772 /cachesys
```
---
Artículo
Pierre-Yves Duquesnoy · 26 mar, 2025
Las versiones recientes de IRIS contienen varios cambios que afectan a la instalación y condiguración de la herramienta OpenSource WebTerminal.
En este articulo, vamos a ver los pasos de instalación, y aprender a buscar y resolver los errores del WebGateway paso a paso.Esta guía de instalación se ha realizado con la versiones siguientes, las más recientes soportadas a fecha de marzo de 2025:
Windows 2022 on Internet Information Server (IIS)
IRIS 2024.3
Package Manager 0.9.2
WebTerminal 4.9.6
IRIS2024.3 es la primera versión de IRIS que no incluye un Servidor Web como parte de la instalación (con la excepción de las versiones "Community" de capacidades más limitadas, que siguen incluyendo un Servidor Web Apache para simplificar el "on-boarding"). En consecuencia, es importante instalar y configurar rimero el Servidor Web IIS antes de proceder a la instalación de IRIS. De esta manera, el instalador de IRIS detecta la presencia del IIS, y propose instalar/configurar un WebGateway que redirige las peticiones Web desde IIS a IRIS. Es posible realizar los pasos en orden inverso (instalar IRIS, despues instalar IIS), pero este requiere la instalación y configuración manual del componente Webgateway de InterSystems.
Guia Rapida para los impacientes
Algunos no querreis leer el articulo entero, resumo aqui los elementos principales de esta guía:
Instalar IIS primero
Añadir protocolo WebSockets
Instalar IRIS
con la opción de modificar la configuración de IIS
Instalar el ZPM en IRIS con
s version="latest" s r=##class(%Net.HttpRequest).%New(),r.Server="pm.community.intersystems.com",r.SSLConfiguration="ISC.FeatureTracker.SSL.Config" d r.Get("/packages/zpm/"_version_"/installer"),$system.OBJ.LoadStream(r.HttpResponse.Data,"c")
Configurar el ZPM para que acceda a los package del community
zpm "enable -community"
Instalar WebTerminal en el namespace USER
zpm "install webterminal"
Añadir el privilegio Publico de "READ" sobre el recurso %DB_USER
en IIS:
Añadir las aplicaciones /terminal y /terminalsocket a IIS. Redigirlas para usar el module CSPms del Webgateway, sin verificar si el archivo existe.
Connectar con
http://localhost/terminal/
Y Ahora, pasamos a la guía completa con más detalles...
Instalación y configuración de IIS
Un requerimiento del WebTerminal es el uso de WebSockets, protocolo que no esta habilitado por defecto en IIS.
El Windows Server Manager permite añadir "Roles de Servidor", e instalar IIS:
Se escoge IIS:
Y en las opciones siguientes, se despliega "Aplication Development" para escoger la opción de "WebSockets":
Instalación de IRIS
Se instala IRIS 2024.3. Como ya esta instalado IIS, en un paso del Wizard de instalación, se pregunta si se quiere configurar IIS. Este paso instala y configura el InterSystems WebGateway como Modulo de IIS:
Instalación del Package Manager IPM
El codigo y la documentación de InterSystems Package Manager (IPM anteriormente ZPM) esta en
https://github.com/intersystems/ipm
Para la instalación, se puede usar el comando descrito en el README.MD de github
s version="latest" s r=##class(%Net.HttpRequest).%New(),r.Server="pm.community.intersystems.com",r.SSLConfiguration="ISC.FeatureTracker.SSL.Config" d r.Get("/packages/zpm/"_version_"/installer"),$system.OBJ.LoadStream(r.HttpResponse.Data,"c")
Y Despues, usar el siguiente comando para permitir el acceso al los Packages de la communidad y habilitar el Package Manager en todos los namespaces
zpm "enable -community"
Instalación del WebTerminal
zpm "install webterminal"
En este paso, se puede validar que el aceso al WebTerminal todavia no esta operacional, ya que IIS + el Webgateway no redirigen la URL /terminal/ a la instancia de IRIS
http://127.0.0.1/terminal/
Abrimos la aplicación de configuración de IIS, para añadir las 2 aplicaciones Web Siguientes
Aplicación
/terminal
/terminalsocket
/terminal y /terminalsockets:
A Continuación se debe definir el handler Mapping para esta aplicación, de manera que todas la peticiones estén gestionadas por el WebGateway:
Además, en el "Request Restrictions", es importante permitir las llamadas sin validar que exista un fichero correspondiente. Esto se hace sacando el "check" al "Invoke handler only if request is mapped to:".
Con estos cambios realizados, el IIS ya reenvia las peticiones http://localhost/terminal/ al WebGateway, y la configuración por defecto del Web Gateway redirige estas peticiones a IRIS.
Se puede validar este paso haciendo una traza de las peticiones del Web gateway mediante la pagina de configuración disponible en http://localhost/csp/bin/system/Module.cxw
En el menu "View HTTP Trace" s puede ver la petición y la respuesta de IRIS (un Error 401).
En IRIS, se puede investigar la causa del error 401, con las paginas del Audit, que informan de la naturaleza del error interno:
Menu de Portal de Gestión "Administration" / "Security" / "Auditing" / "Configure System Events".
Para ello, hace falta añadir el "System Event" de "Protect" a la lista de Eventos a registar, y cambiar su estado a "Yes":
Desde el Log de Audit, haciendo una búsqueda sobre los últimos errores, podemos ver 2 errores vinculados con la peticion a /terminal/:
Y los detalles del Error Protect:
La Aplicacion WebTerminal ha sido instalada en el namespace "USER", cuya base de datos esta protegida por el recurso "%DB_USER". El CSP Gateway, cuando establece la conexión e intenta acceder a la aplicación REST /terminal en este namespace, necesita permisos de lectura para responder a las peticiones HTTP Options (preflight requests para CORS).La solución es dar el permiso publico de Lectura sobre el recurso %DB_USER:
Se hace con el menu "System" /" Security" / "Resources", seleccionando %DB_USER, y añadiendo "Read" como permiso publico.
Y finalmente, se puede volver a hacer la prueba y acceder al terminal, introduciendo usuario y password:
http://localhost/terminal/
Anuncio
Esther Sanchez · 19 abr, 2022
¡Hola desarrolladores!
Día a día, el equipo de la Comunidad de Desarrolladores hace que ésta sea un lugar mejor para los desarrolladores de InterSystems. En esta nueva publicación os mostramos cómo hemos mejorado la Comunidad en los últimos meses.
Principales novedades:
Edición del perfil de usuario
Nueva página de Concursos para los concursos de artículos técnicos
Contador de caracteres y palabras
Os explicamos cada cambio más abajo.
Edición del perfil de usuario
¡Un diseño completamente nuevo! Ahora es más fácil añadir información a tu perfil.
En el bloque "Información de contacto", puedes añadir tu número de teléfono profesional, cambiar tu foto y la dirección de email en la que quieres recibir las notificaciones de la Comunidad.
En los siguientes bloques, puedes añadir más información sobre ti, así como enlaces a tus perfiles en redes sociales. ¡Así podemos estar todos conectados!
Esta información aparecerá en tu perfil, y también en las publicaciones en las que seas el autor:
En la "Configuración de la cuenta", puedes especificar tu zona horaria, a quién quieres que se muestre tu información de contacto y también configurar las notificaciones de los Mensajes Directos.
Nueva página de Concursos para los concursos de artículos técnicos
Como sabéis, en 2021 lanzamos un nuevo concurso para los miembros de la Comunidad de Desarrolladores de InterSystems Community - el Concurso de Artículos Técnicos.
Para cada concurso, hemos creado una página nueva, con un diseño nuevo y nuevas funcionalidades:
Primer Concurso de Artículos Técnicos
Segundo Concurso de Artículos Técnicos
Podéis encontrar la nueva página de Concursos en la sección "Eventos" en el menú de la página de inicio de la Comunidad:
Si aparece un punto al lado de "Concurso de Artículos Técnicos" significa que el concurso está activo en ese momento.
En la página de un concurso activo puedes añadir fácilmente un artículo haciendo clic en el botón "Participa en el concurso". Las reglas del concurso aparecen en la columna de la izquierda . Y los artículos que participan en el concurso aparecen a la derecha.
En cada artículo, puedes ver una etiqueta con el número de "likes". Cuando finaliza el concurso, el contador se para y muestra el número total de "likes" de cada artículo (nota: esto no limita el hecho de poder seguir haciendo clic en "Me gusta" en los artículos).
También cuando finaliza el concurso aparece una etiqueta con el número de votos de los Expertos.
Contador de caracteres y palabras
Hemos implementado un contador de caracteres y palabras en el editor de la Comunidad, para poder controlar fácilmente la cantidad de contenido de cada publicación.
Al escribir cualquier texto en la página de creación de publicaciones, el editor lee las palabras y los caracteres y muestra el conteo de forma automática en la esquina inferior izquierda.
Nota: El contador solo funciona en el formato WYSIWYG.
¡Esperamos que os resulten útiles estos cambios!
Podéis solicitar mejoras o reportar errores en el GitHub de la Comunidad. O en los comentarios de esta publicación, claro.
¡Muchas gracias!
Artículo
Dani Fibla · 4 nov, 2022
Según la consultora IDC, el 80% de todos los datos producidos son NoSQL. Mira:
Hay documentos digitales y escaneados, textos online y offline, contenido BLOB (objeto binario grande) en SQL, imágenes, vídeos y audio. ¿Te imaginas una iniciativa de Analítica Corporativa sin todos estos datos para analizar y apoyar las decisiones?
En todo el mundo, muchos proyectos están utilizando tecnologías para transformar estos datos NoSQL en contenido de texto, para poder analizarlo. Fíjate:
Imágenes escaneadas e imágenes con texto extraído usando OCR (Google Tesseract es una buena opción);
Vídeos analizados con Visual Computing soportado por Machine Learning (OpenCV es una buena opción) y transformando los resultados en conjuntos de datos JSON o XML;
Contenido externo de Internet y Scraping en Redes Sociales usando Python y almacenando los resultados en contenido de texto.
Todo este contenido extraído se guarda como texto y podría ser analizado con motores de PLN, como InterSystems IRIS Text Analytics (iKnow).
Hay varias opciones para hacerlo:
1. Guardar en una tabla los datos de texto extraídos y crear un Dominio NLP (PLN en inglés) para esa tabla, mira:
2. Usar una API NLP para enviar en tiempo real a NLP el texto extraído, así:
$SYSTEM.iKnow.IndexString("OcrNLP", pRequest.FileName, pRequest.Text, , 0, .src)
3. Guardar el texto extraído en archivos de texto y configurar la localización de los datos en una carpeta de archivos.
4. Crear un canal RSS para que NLP consuma el texto extraído.
Ahora, con tu NLP configurado puedes analizar los resultados:
Sin esfuerzo, IRIS realizó el ranking de conceptos, agrupó entidades similares (cosas, hechos, nombres, sustantivos) y creó las relaciones entre entidades (conceptos), el CRC - Conceptos/Relaciones/Conceptos. Fue posible analizar la ruta para llegar a un concepto y se pueden usar colores para conocer características como sentimientos, negaciones y otras, incluyendo características modeladas en un diccionaria customizado.
Para aprender y perfeccionar los resultados, IRIS NLP utiliza diccionarios, como: https://github.com/intersystems-community/irisdemo-demo-twittersentiment/raw/master/twittersentiment/twittersentiment-atelier-project/IRISDemo/NLP/Sentiment.cls
Finalmente, el análisis se puede consumir usando la API nativa de IRIS con Java, .NET, Python y Node.js. También se puede consumir como una API REST , mira: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GIKNOW_rest#GIKNOW_rest_swagger
Para ver todos los detalles de estos proyectos:
1. https://openexchange.intersystems.com/package/Twitter-Sentiment-Analysis-with-IRIS
2. https://openexchange.intersystems.com/package/COVID-19-iKnow-Content-Navigator
3.https://openexchange.intersystems.com/package/OCR-Service
Artículo
Ricardo Paiva · 16 dic, 2019
¡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.
Contexto
Estas aplicaciones cliente pueden instalarse en una máquina que no tenga la instalación de servidor. No pueden depender de tener acceso a los lugares normales para guardar configuraciones, tales como la base de datos CACHESYS o el archivo cpf. En vez, su configuración sobre qué certificados o protocolos aceptar se almacena en un archivo de texto. Muchos de los ajustes contenidos en este archivo son similares a los ajustes de una configuración SSL/TLS en el portal de gestión.
¿Dónde está el archivo de configuración?
Deberá crear su propio archivo. El instalador del cliente no crea uno por usted.
De forma predeterminada, el archivo de configuración se llama SSLDefs.ini y debería colocarse en el directorio InterSystems\Cache bajo el directorio para archivos de programa comunes de 32 bits. Este directorio se encuentra en la variable de entorno de Windows CommonProgramFiles(x86) en Windows de 64 bits o en CommonProgramFiles en Windows de 32 bits.
Por ejemplo, en Windows 8.1, el archivo predeterminado es:
C:\Program Files (x86)\Common Files\InterSystems\Cache\SSLdefs.ini
Si desea cambiar esto, deberá indicarle a los ejecutables del cliente dónde encontrar el archivo de configuración. Para hacer esto, defina la variable de entorno ISC_SSLconfigurations y configúrela para toda la ruta y el nombre de archivo de su archivo. Puede que necesite permisos de administrador para hacerlo.
¿Qué hay en el archivo de configuración?
El archivo tiene dos tipos de secciones. El primer tipo vincula conexiones con configuraciones TLS. Por ejemplo, puede que le indique a Studio usar la sección llamada "Default Settings" para encontrar sus parámetros TLS al conectarse a development.intersystems.com.
El segundo tipo define los ajustes de TLS a usar para la conexión. Por ejemplo, esto definiría qué Autoridad de Certificación debería esperarse que firme el certificado del servidor. Los ajustes de estas secciones son muy similares a los ajustes de una configuración SSL/TLS en un servidor Caché o Ensemble.
El primer tipo de selección se ve así:
[Development Server]
Address=10.100.0.17
Port=1972
TelnetPort=23
SSLConfig=DefaultSettings
El nombre entre corchetes puede ser lo que usted desee. Sólo está ahí para permitirle hacer un seguimiento más fácil de qué conexión se trata.
Los ajustes de Address (dirección), Port (puerto) y TelnetPort (puerto Telnet) se usan para decidir qué conexiones deberían coincidir con esta sección. Se pueden usar ya sea direcciones IP o nombres DNS para la dirección en clientes 2016.1 o posteriores. Tanto la dirección como ya sea el puerto o el puerto Telnet deben coincidir con la conexión de la aplicación cliente para poder usar la configuración.
El parámetro final (SSLConfig) es el nombre de la configuración de la cual se tomarán los ajustes TLS. Debe coincidir con el nombre de una de las configuraciones del archivo.
El segundo tipo de sección se ve así:
[DefaultSettings]
VerifyPeer=2
VerifyHost=1
CAfile=c:\InterSystems\certificates\CAcert.pem
CertFile=c:\InterSystems\certificates\ClientCert.pem
KeyFile=c:\InterSystems\certificates\ClientKey.key
Password=
KeyType=2
Protocols=24
CipherList=ALL:!aNULL:!eNULL:!EXP:!SSLv2
El nombre de la sección se lista en la primera línea: [DefaultSettings] y coincide con el nombre listado en el parámetro SSLConfig de la primera sección del ejemplo anterior. Por lo tanto, esta configuración se usará para conexiones al servidor 10.100.0.17 en el puerto 1972 o el puerto 23.
Usar copiar+pegar en el ejemplo anterior a menudo genera caracteres que no se imprimen en su archivo de texto. Por favor, asegúrese de haber quitado cualquier carácter extra, por ejemplo guardando el archivo como solo texto y abriéndolo nuevamente.
Aquí puede ver una descripción de lo que significan los parámetros:
VerifyPeer
Las opciones para esto son 0=ninguna, 1=solicitar y 2=requerir. Requerir es el valor recomendado. Si elige "ninguna", un servidor malicioso podría simular ser el servidor al que usted pretende conectarse. Si elige requerir, deberá ingresar una Autoridad certificadora en la que confíe para que verifique los certificados para el valor CAFile. Esto es el equivalente a la "Verificación de certificado de servidor" en el portal. (Nota: la solicitud no tiene sentido para una configuración de cliente, pero la incluyo aquí para que pueda entender por qué las opciones son 0 y 2.)
VerifyHost
Las opciones para esto son 0=ninguna, 1=requerido. Esta opción verifica que el certificado del servidor lista el nombre de host o la IP a la que ha solicitado conectarse en los campos Subject's Common Name o Subject's Common Name. Este campo no tiene un equivalente en el portal, pero es del mismo tipo de verificación que la propiedad SSLCheckServerIdentity de la clase %Net.HttpRequest. Solo es configurable si su cliente usa Caché / Ensemble 2018.1 o posterior, o cualquier versión de la plataforma de datos IRIS de InterSystems
CAfile
La ruta al archivo de la Autoridad Certificadora (CA) de confianza. Esto debería ser la CA que firmó el certificado del otro lado (el servidor), no su propio certificado. Debería completar esto si no ha elegido un valor de VerifyPeer de 2. Este es el equivalente de "Archivo que contiene certificado(s) de Autoridad certificadora confiable" en el portal. Los certificados deben estar en formato PEM
CertFile
La ruta a su propio certificado. Esto debería quedar en blanco si su cliente no cuenta con uno. Este es el equivalente de "Archivo que contiene el certificado del cliente" en el portal. Los certificados deben estar en formato PEM
KeyFile
La ruta a la clave privada correspondiente para CertFile. Debe completar esto si tiene un CertFile, o dejarlo en blanco en caso contrario. Este es el equivalente de "Archivo que contiene clave privada asociada" en el portal
Contraseña
La contraseña necesaria para descifrar su clave privada. Esto debe dejarse en blanco si no usa un certificado para este cliente, o si la clave privada del certificado no está cifrada en el disco
KeyType
¿Su clave privada es RSA (2) o DSA (1)? El valor solo es importante para configuraciones que tienen configurado CertFile y KeyFile. Si no está seguro de cuál es, su clave probablemente sea RSA
Protocols
Esta es una representación decimal de valores de bit para las versiones de SSL/TLS soportadas. Las opciones son: 1=SSLv2, 2=SSLv3, 4=TLSv1, 8=TLSv1.1, 16=TLSv1.2. SSLv2 y SSLv3 tienen problemas conocidos y no se recomiendan. Es posible especificar más de una versión agregando números. Por ejemplo, 24 es TLSv1.1 y TLSv1.2. Esto es el equivalente de las casillas "Protocols" en el portal. (Nota: los 8 y 16 bits no están en la versión 2015.1. Si quiere usarlos, necesitará actualizar a 2015.2 o superior)
CipherList
Este es el equivalente de "Enabled ciphersuites" en el portal. Esto controla exactamente qué tipos de cifrado y hashing serán aceptados por este cliente. ALL:!aNULL:!eNULL:!EXP:!SSLv2 es el valor predeterminado para este ajuste en el portal de gestión. Si experimenta problemas con su conexión, probablemente no sea esto. Cambiar esto puede hacer que su conexión sea menos segura, ya que permitirá un cifrado más débil. Puede encontrar más información sobre este valor en el sitio web de openssl
Notas finales
¡Eso es todo lo que necesita hacer! Si crea su archivo y lo coloca en la ubicación conocido, se usará automáticamente si el nombre o la dirección IP y puerto al que se está conectando coinciden con una de las conexiones enumeradas en el archivo.
Configuración del servidor
Este artículo trata sobre cómo configurar el lado de cliente de su conexión para que use SSL, pero no olvide que el servidor al que se está conectando también debe comprender cómo aceptar SSL. Puede encontrar la documentación sobre la configuración del SuperServer para que use SSL aquí:http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_superserver
Y la documentación para configurar el servicio Telnet está aquí:http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_telnet_svr
El método $SYSTEM.Security.Users.SetTelnetSSLSetting() le permite controlar si el servidor Telnet permite o requiere el uso de SSL. Está disponible en la versión 2016.1 y posteriores.
Configuración de DSN
No necesita cambiar la DSN para una conexión ODBC siempre que tenga en su archivo de configuración una dirección y puerto de conexión correspondientes. Se usará SSL incluso si se selecciona Contraseña como método de autenticación el DSN. Las opciones Password with SSL/TLS (contraseña con SSL/TLS) y SSL/TLS server name (nombre de servidor SSL/TLS) eran la forma de configurar SSL para ODBC antes de la versión 2015.1.
Enlace a la documentación
La documentación sobre TLS para aplicaciones cliente ahora está disponible en el sitio de documentos de IRIS:https://irisdocs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCAS_ssltls#GCAS_ssltls_windotinifile
Anuncio
Esther Sanchez · 14 dic, 2021
¡Hola a todos!
¿Alguno de vosotros tiene que cambiar su dirección de correo electrónico PRINCIPAL (email para iniciar sesión) y no quiere perder toda su actividad en los Ecosistemas para Desarrolladores de InterSystems (Comunidad, Global Masters y Open Exchange)?
¡Muy fácil! ¡Nosotros nos encargamos! ¿Queréis saber cómo?
1️⃣ Transferiremos correctamente toda vuestra información de la antigua cuenta a la nueva.
Todas vuestras publicaciones, comentarios, menciones, "me gusta", etc. se guardarán en la nueva cuenta.
2️⃣ Si sois miembros de Global Masters, vuestro nivel, insignias, puntos, etc. también se transferirán a la nueva cuenta.
3️⃣ También nos ocuparemos de transferir vuestras aplicaciones en Open Exchange.
4️⃣ Si solo necesitáis desactivar vuestra antigua cuenta (y no transferir su actividad), también lo podemos hacer.
Solo tenéis que contactar con @Irina.Podmazko - escribidle un Mensaje Directo a través de la Comunidad o un email. En ambos casos:
enviad el enlace a vuestra antigua cuenta (-s)
enviad el enlace a vuestra nueva cuenta (-s)
indicad a qué Ecosistema (-s) necesitáis transferir vuestra actividad (DC/GM/OEX/todos)
Contactad con nosotros si os encuentráis en alguna de las situaciones anteriores.
P.D. También podéis enviar los enlaces a vuestras cuentas indicándolos en un comentario en esta publicación.
Artículo
Jose-Tomas Salvador · 29 dic, 2021
Para aquellos a los que, en un momento dado, necesitan probar cómo va eso del ECP para escalabilidad horizontal (cómputo y/o concurrencia de usuarios y procesos), pero les da pereza o no tienen tiempo de montar el entorno, configurar los nodos, etc..., acabo de publicar en Open Exchange la aplicación/ejemplo OPNEx-ECP Deployment .
Se trata de un pequeño proyecto, que he dejado disponible en GitHub para todo aquel que quiera usarlo. Basicamente te va a permitir montar en tu propio equipo, en local, 3 instancias de InterSystems IRIS actuando como servidores de aplicación y 1 instancia actuando como servidor de datos, conectadas por ECP.
Lanzará también un LoadBalancer (utilizando el WebGateway), como nodo independiente del resto de instancias, que será el punto de entrada (via HTTP) a tu sistema y que se encargará de repartir las peticiones entre los distintos servidores.
Con muy pequeño esfuerzo puedes añadir tu código de aplicación y aprovechar el proyecto para probar tu aplicación en ECP distribuido. Los servidores de aplicación se precargan con otros módulos Open Source muy interesantes (ZPM, WebTerminal, RestForms2 y Restforms2-ui), además de un pequeño paquete OPNEx-MModel con algunas clases y unos servicios REST implementados a modo de ejemplo.
Tienes información más detallada en Open Exchange o en el propio repositorio GitHub.
Bueno, espero que te sea de ayuda!
Happy Coding!!
Artículo
Sergio Farago · 28 mar, 2025
Hola a todos 😁
Como quizás sabéis, ayer tuvimos un meetup en las oficinas de Iberia. Pudimos hablar de la comunidad, InterSystems y sobre todo: lo pasamos genial 🎉
@LuisAngel.PérezRamos nos dio una buenísima charla de IA y RAG, viendo ejemplos prácticos, y siempre con el humor que le caracteriza (en la foto está serio, pero rebosa emoción por dentro). Es difícil mantener a un público enganchado durante toda la charla. Su dinamismo y constantes bromas lo consiguieron. Es un orgullo poder contar con él.
Cabe mencionar la introducción de @David.Reche, que nos puso en contexto y amenizó la tarde. Fuimos de lo general a lo concreto, entendiendo conceptos básicos como LLM, modelos, RAG... para acabar aterrizándolos en casos prácticos.
Estuvo muy bien que en todo momento los asistentes participaron. Pudimos ver la opinión de otros desarrolladores, resolver dudas, etc. Hubo mucha participación y debate, y era lo que queríamos ¡Fantástico!
Por supuesto, hubo tiempo para picar y beber algo. En este rato tuvimos conversaciones más informales, presentaciones y vivos perspectivas de diferentes perfiles: analistas, investigadoras, matemáticos, desarrolladores, arquitectos, expertos en formación, etc.
Y como iba a faltar... ¡nuestro kahoot! Tuvimos un emocionante Kahoot que estuvo reñido hasta la última pregunta. Nuestros tres vencedores se llevaron un premio extra a casa.
Fue una jornada muy divertida, y como todos pedís... seguramente habrá más pronto. Esperamos veros por allí. Gracias por venir, apoyar a la comunidad y vuestro ánimo!
Artículo
Nancy Martínez · 9 jun, 2020
Para conocer un poco más sobre Sharding decidí crear un conjunto "por mi cuenta".Para ello, creé 1 Master (Win10) y 2 Shard "slaves" en Ubuntu64.La instalación fue bien y empecé a seguir un curso online, sin tener ningún problema:
> Introducción a Sharding en InterSystems IRIS>>> InterSystems: ISC1125 Curso básico de Sharding: Planificación e Implementación>>>>> 2. Implementación y Uso de Cluster>>>>>>> IMPLEMENTACIÓN USANDO API
Todo iba bien y según lo descrito.
¡Pero no pude crear una Tabla Shard!{ I skip all fruitless attempts }
Al realizar un diagnóstico de lo que salió mal:
MASTER>s sc=$SYSTEM.Sharding.ListShards()Shard Host Port Namespc Mirror Role VIP1 192.168.0.104 51773 SHARD2 192.168.0.103 51773 SHARD MASTER>zw scsc=1
esto aún se ve bien, pero:
MASTER>s sc=$SYSTEM.Sharding.VerifyShards()MASTER>do $system.OBJ.DisplayError(sc) ERROR #9355: 2 shards failed verificationERROR #9354: Shard 1 failed verificationERROR #5002: ObjectScript error: <SUBSCRIPT>getConnection+28^%SYS.BigData.ECP *() Subscript 1 is ""ERROR #9354: Shard 2 failed verificationERROR #5002: ObjectScript error: <SUBSCRIPT>getConnection+28^%SYS.BigData.ECP *() Subscript 1 is ""
primer aprendizaje adicional:
MASTER>s sc=$system.Sharding.SetOption("MASTER","AutoVerify",1)
Ahora la ejecución se verifica directamente después de añadir un Shard.Esto es muy útil al principio.Después de que recibí un consejo de @Michael.Braam revisé mi red local
Y eso no estaba escrito en ninguna parte (o simplemente no lo encontré):Los host que se utilizaron y sus hostname deben ser visibles y accesibles desde el MASTER y los servidores Shard.
En lugar de configurar un servidor DNS privado únicamente para este caso, se debe configurarun archivo hosts file { on Win10 >>>> C:\Windows\System32\drivers\etc\hosts ubuntu >>>> /etc/hosts ubuntu >>>> /etc/hostname}
Ahora se podría añadir Shards con nombres de servidores "reales", lo que podría dar como resultado una configuración que funcione.
MASTER>s sc=$SYSTEM.Sharding.ListShards() zw sc
Shard Host Port Namespc Mirror Role VIP1 ubuntu64c 51773 SHARD2 ubuntu64d 51773 SHARDsc=1MASTER>s sc=$SYSTEM.Sharding.VerifyShards() zw scsc=1
Ahora, la creación de Tablas Shard fue así de fácil como se muestra en la formación online.No investigué si con la configuración del servidor para el Master en Shard sólo habría sido suficiente ya que esto únicamente era una interrupción/más allá de tenerlo para todos los servidores involucrados y ya no sufrir más dolores de cabeza.
Artículo
Muhammad Waseem · 22 dic, 2021
La interoperabilidad en la asistencia sanitaria es esencial para mejorar la atención a los pacientes, reducir los costes de los proveedores de atención médica y ofrecer una imagen más precisa a los proveedores. Pero con tantos sistemas diferentes, los datos se presentan en diferentes formatos. Se han creado muchos estándares para tratar de resolver este problema, incluyendo HL7v2, HL7v3 y CDA, pero cada una tiene sus limitaciones.
FHIR, o Fast Healthcare Interoperability Resources, es un estándar para el intercambio de datos de salud, que tiene como objetivo resolver estos problemas. Fue desarrollado por Health Level Seven International (HL7), una organización que también desarrolló HL7v2, HL7v3 y CDA.
En este artículo descubriremos cómo crear y validar recursos FHIR usando el esquema FHIR con la ayuda de IntelliSense y la función de autocompletado en VS Code.
**Paso 1**: Descargar el archivo JSON Schema para Validación de Recursos desde la web oficial de FHIR: https://www.hl7.org/fhir/
.png)
.png)
**Paso 2:** Crear una carpeta (en este ejemplo estoy usando la carpeta Patient y el recurso Patient) y copiar el archivo fhir.schema.json extraído, en la misma carpeta. A continuación, abrir la carpeta desde VS Code
.png)
**Paso 3:** Configurar el código VS para reconocer el esquema FHIR modificando el archivo setting.json.
Presionar CTRL+SHIFT+P y escribir en el espacio de trabajo settings.json
.png)
**Paso 4:** Crear un nuevo archivo patient.fhir.json, en la misma carpeta.
Pulsar Ctrl+ESPACIO y se obtendrán todos los atributos de los recursos de FHIR a través de IntelliSense
# .png)
Escribir "resourceType": "Patient" y todos los atributos relacionados con el recurso Patient comenzarán a aparecer en el IntelliSense.
.png)
**VS Code validará automáticamente la estructura y la sintaxis del recurso.**
.png)
Con la ayuda de IntelliSense y la función de autocompletado hemos creado y validado nuestro recurso para los pacientes.
.png)
Paso 5: Publicar el recurso creado en el servidor FHIR de InterSystems usando la API Rest de Postman
.png)
Recuperar el recurso de Patient Creado utilizando el método GET
.png)
¡Enhorabuena! Hemos creado y validado nuestro recurso Patient, y lo hemos publicado y recuperado correctamente en el Servidor FHIR de InterSystems usando Postman.
De esta manera podemos crear y validar fácilmente cualquier Recurso FHIR.
Pregunta
Yone Moreno · 13 jun, 2022
Hola buenos días,
Agradeceríamos si ustedes nos leen y responden:
Disponemos de 2 entornos: INTegracion en HealthConnect 2020 y PREproduccion en Ensemble 2018
¿Que un tipo de dato sea %GlobalCharacterStream influye? en concreto: ¿se generan ficheros .stream en el servidor si subimos clases que hagan uso de %GlobalCharacterStream?
Ojeando la documentación, parece que explica lo siguiente:
Parece que NO sería persistente , parece que "almacena caracteres en nodos de datos globales"
https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic.cls?&LIBRARY=%25SYS&PRIVATE=1&CLASSNAME=%25Library.GlobalCharacterStream
%Library.GlobalCharacterStream
deprecated stream class %Library.GlobalCharacterStream extiende %Library.CharacterStream, %Library.GlobalStreamAdaptorDeprecated in favor of %Stream.GlobalCharacter. Stream class that stores character data in global nodes.
Aunque nuestra duda viene por el hecho de que en PRE 2018 la propiedad la guarda como %Library.CacheStorage:
Sin embargo, en INT 2020 como: "%Storage.Persistent"
Por favor, nos podrían responder a la cuestión: ¿este uso de tipo de datos %GlobalCharacterStream repercute en caché , huérfanos, etc...?
Hemos observado que se encuentra deprecado:
Deprecated in favor of %Stream.GlobalCharacter
Significa eso que ¿ustedes nos recomiendan cambiar a %Stream.GlobalCharacter?
En ese caso: ¿%Stream.GlobalCharacter? y/o %GlobalCharacterStream repercuten en caché , huérfanos, etc; es decir generan ficheros .stream persistentes en el servidor...?
Muchas gracias por atendernos
Un saludo Hola Yone,
Comentarte que las preguntas enviadas a la comunidad no tienen porqué ser respondidas por personal de InterSystems. La comunidad está abierta a que todos compartamos nuestra dudas y soluciones (incluidos los empleados de InterSystems, que, de vez en cuando también preguntamos). Si necesitas algo urgente y quieres estar segura de obtener respuesta por nuestra parte, lo mejor es que nos abras un caso en soporte desde el WRC.
Respecto a tu pregunta, todo lo que se guarda el un global de una base de datos distinta a la temporal, va a ser persistente. En el caso de los GlobalCharacter, se van a guardar en un global y por tanto va a ser persistente (es decir, que una vez guardado, si reinicias el servidor, el dato va a estar ahí).
Al ser persistente, si los mensajes no se purgan correctamente, podría dejar nodos huérfanos. Todo dependerá de como hayas implementado la clase y las purgas. Si tienes dudas al respecto, te animo a que abras otro nuevo hilo.
Finalmente, tal y como indica la documentación, lo suyo es que uses el tipo %Stream.GlobalCharacter, que tiene la misma función y es el que se va a mantener en futuras versiones. El tipo anterior, por estar "deprecated" dejará de funcionar en alguna versión futura.
Hola Yone,
Los Streams se utilizan para almacenar cadenas de datos sin límite de tamaño. Si en una clase persistente, incluyes propiedades de tipo Stream serán persistentes.
`%Stream.GlobalCharacter`, `%Stream.GlobalBinary`: persisten los datos en globals (en la base de datos).
`%Stream.FileCharacter`, `%Stream.FileBinary`: persisten los datos en ficheros (.stream).
Lo que te recomienda la documentación es que utilices estas clases en lugar de sus versiones antiguas, por ejemplo:
* Utiliza `%Stream.GlobalCharacter` en lugar de la antigua `%GlobalCharacterStream`.
* Utiliza `%Stream.FileCharacter` en lugar de la antigua `%FileCharacterStream`.
La gestión de los mensajes huérfanos es como siempre. Si tienes un árbol de clases persistente que cuelga de un mensaje de interoperabilidad (incluya o no Streams), recuerda siempre implementar el método `%OnDelete` para borrar su contenido adecuadamente.