Buscar

Limpiar filtro
Anuncio
Esther Sanchez · 4 feb, 2022

Los mejores autores de la Comunidad de Desarrolladores durante 2021

¡Hola desarrolladores! Ya podemos anunciar los autores que mejor han contribuido en la Comunidad de Desarrolladores de InterSystems durante 2021 🎉 Dividimos en tres categorías a los autores más activos en todas las Comunidades (EN, ES, PT, JP, CHN): Autores Más Leídos Autores Expertos Autores Líderes de Opinión Este es el "Muro de la fama" de la Comunidad de Desarrolladores de 2021: Insignia Ganadores Definición de cada categoría Categoría: InterSystems Best-Selling Author (Autores Más Leídos) 1er puesto: Gold Best-Selling Author 2021 @Yuri.Gomes 1º / 2º/ 3º / 4º-20º puestos en la categoría "DC Best-Selling Author 2021". Autores cuyos artículos consiguieron el mayor número de visualizaciones en la Comunidad de Desarrolladores durante el año 2021. 2º puesto: Silver Best-Selling Author 2021 @Mihoko.Iijima @Robert.Cemper1003 3er puesto: Bronze Best-Selling Author 2021 @姚.鑫 @Toshihiko.Minamoto Puestos del 4 al 20: Best-Selling Author 2021 @Tani.Frankel @Alberto.Fuentes @Xuying.Zheng @Yunfei.Lei @Hao.Ma @Dmitry.Maslennikov@Evgeny.Shvarov @Henrique.GonçalvesDias@Anton.Umnikov @Megumi.Kakechi @Ricardo.Paiva @Shintaro.Kaminaka @Muhammad.Waseem @Jose-Tomas.Salvador @Nigel.Salm9724 Categoría: InterSystems Expert (Autores Expertos) 1er puesto: Gold Expert 2021 @Robert.Cemper1003 1º / 2º / 3º / 4º-20º puestos en la categoría “DC Expert 2021". Autores que consiguieron el mayor número de "Respuestas aceptadas" durante el año 2021. 2º puesto: SilverExpert 2021 @Dmitry.Maslennikov @Eduard.Lebedyuk 3er puesto: Bronze Expert 2021 @Vic.Sun @Marc.Mundt Puestos del 4 al 20: DC Expert 2021 @Julius.Kavay@Vitaliy.Serdtsev @Jeffrey.Drumm @Timothy.Leavitt@Julian.Matthews7786 @David.Hockenbroch @Tani.Frankel @Nigel.Salm9724@Evgeny.Shvarov @Lin.Zhu@Yunfei.Lei@David.Reche @Toshihiko.Minamoto @Louis.Lu @Guillaume.Rongier7183 Categoría: InterSystems Opinion Leader (Autores Líderes de Opinión) 1er puesto: Gold Opinion Leader 2021 @Anastasia.Dyubaylo 1º / 2º / 3º / 4º-20º puestos en la categoría “DC Opinion Leader 2021”. Autores cuyas publicaciones y respuestas obtuvieron el mayor número de votos en la Comunidad de Desarrolladores durante el año 2021. 2º puesto: Silver Opinion Leader 2021 @Robert.Cemper1003 3er puesto: Bronze Opinion Leader 2021 @Yuri.Gomes Puestos del 4 al 20: DC Opinion Leader 2021 @Angelo.Braga5765 @Dmitry.Maslennikov @Evgeny.Shvarov @Eduard.Lebedyuk@Andre.LarsenBarbosa @Nigel.Salm9724 @Olga.Zavrazhnova2637 @Henrique.GonçalvesDias@Henry.HamonPereira @Benjamin.DeBoe@Timothy.Leavitt@MikhailenkoSergey @John.Murray @Muhammad.Waseem @Oliver.Wilms @Benjamin.Spead @Mihoko.Iijima Este listado es una excelente guía sobre "A quién seguir" en la Comunidad de Desarrolladores, ¿cierto? ¡UN GRAN APLAUSO A TODOS ELLOS! 👏👏 ¡Enhorabuena y gracias por vuestra excelente contribución a la Comunidad de Desarrolladores en 2021! ¡Felicidades! Congratulations to you, Anastasia! You are THE opinion leader!! 👏👏
Artículo
Luis Angel Pérez Ramos · 9 mar, 2023

Simplifica los paquetes de Python con zpip, un empaquetador pip de irispython

``` _________ ___ ____ |__ / _ \_ _| _ \ / /| |_) | || |_) | / /_| __/| || __/ /____|_| |___|_| ``` > Desde la versión 2021.1, InterSystems IRIS empezó a distribuirse con un runtime de Python en el motor del kernel. Sin embargo, no había forma de instalar paquetes desde dentro de la instancia. La principal ventaja de Python es su enorme ecosistema de paquetes. Con ello en mente, os presento mi proyecto zpip, un empaquetador pip que se puede invocar desde el terminal de iris. # ¿Qué es zpip? zpip es un empaquetador para python pip que permite a los desarrolladores añadir de forma rápida paquetes a una instancia, a través del terminal de InterSystems IRIS. ## Características * Empaquetador pip de python para InterSystems IRIS * Instalación/Desinstalación paquetes python * La instalación añade la palabra clave `zpip` al lenguaje ## Instalación de zpip ```cos %SYS> zpm "install zpip" ``` ## Lista de tareas * [ ] API invocable con retorno de estados # Uso de zpip Todos los comandos* pip están soportados. Sin embargo, cualquier comando interactivo requerirá que uses la versión no-interactiva del comando. Por ejemplo, para [desinstalar](#uninstalling-a-python-package) un package, tendrás que usar -y en el comando para confirmar el proceso. ## Instalación de los paquetes python con zpip ```cos // Install multiple packages // beautiful soup and requests libraries %SYS> zpip "install requests bs4" ``` ... en acción: ```cos %SYS>zpip "install emoji" Processing /home/irisowner/.cache/pip/wheels/ae/80/43/3b56e58669d65ea9ebf38b9574074ca248143b61f45e114a6b/emoji-2.1.0-py3-none-any.whl Installing collected packages: emoji Successfully installed emoji-2.1.0 %SYS> ``` ### Especificación de un directorio de instalación diferente: ```cos // Install to some other python package target $SYS> zpip "install --target '/durable/iconfig/lib/python' emoji" ``` ## Desinstalación de un paquete python ```cos // Requires -y! %SYS>zpip "uninstall -y emoji" Found existing installation: emoji 2.1.0 Uninstalling emoji-2.1.0: Successfully uninstalled emoji-2.1.0 ``` ## Otros comandos de pip útiles ### lista de paquetes ```cos // List Packages %SYS> zpip "list" Package Version ---------------------------- ----------- absl-py 1.1.0 argon2-cffi 21.3.0 argon2-cffi-bindings 21.2.0 asttokens 2.0.5 astunparse 1.6.3 attrs 21.4.0 backcall 0.2.0 beautifulsoup4 4.11.1 bleach 5.0.0 bs4 0.0.1 ... ``` # Limitaciones * Los comandos interactivos no están soportados. * Uso de `-y` para desinstalar. * La búsqueda puede no funcionar dependiendo de la configuración del sistema. * Usa la infraestructura pip subyacente del sistema operativo, por lo que la instalación depende de la versión pip del sistema operativo. Este artículo ha sido etiquetado como "Mejores prácticas" ("Best practices"). Los artículos con la etiqueta "Mejores prácticas" incluyen recomendaciones sobre cómo desarrollar, probar, implementar y administrar mejor las soluciones de InterSystems.
Artículo
Ariel Glikman · 21 abr, 2025

Cuándo tener en cuenta useIrisFsGroup en vuestros despliegues con IKO

Si echáis un vistazo al archivo values.yaml del Helm chart de IKO, encontraréis: useIrisFsGroup: false Vamos a desglosar qué es useIrisFsGroup y en qué situaciones puede ser útil activarlo. FsGroup se refiere al file system group (grupo del sistema de archivos). Por defecto, los volúmenes en Kubernetes son propiedad del usuario root, pero necesitamos que IRIS sea propietario de sus propios archivos (IRIS en contenedores se instala bajo el usuario irisowner). Para solucionar esto, utilizamos uno de estos dos métodos: 1) initContainers Los initContainers se ejecutan antes que los contenedores de la aplicación (como IRIS) en un pod. Generalmente preparan el entorno para la aplicación y luego terminan. El initContainer se ejecuta como root antes que IRIS y ejecuta: chown irisowner:irisowner /irissys/* El SecurityContext está, por defecto, configurado como: RunAsUser: 51773 RunAsGroup: 51773 RunAsNonRoot: true para el pod. Y vemos que 51773 es el ID de usuario y grupo para irisowner: $ id uid=51773(irisowner) gid=51773(irisowner) groups=51773(irisowner) 2) Montar volúmenes con una propiedad de grupo específica Algunos entornos pueden restringir que los contenedores se ejecuten como root, por ejemplo, mediante las Security Context Constraints en OpenShift. En este caso, ni siquiera podemos ejecutar un initContainer como root y necesitaremos que los volúmenes tengan la propiedad del sistema de archivos correcta en el momento de su montaje. Para hacerlo, desplegad el InterSystems Kubernetes Operator con: useIrisFsGroup: true en el archivo /chart/iris-operator/values.yaml. Ahora, vuestros pods se desplegarán sin initContainers. Una advertencia: si deseáis configurar sidecars, se requiere un paso adicional. No podréis utilizar el sidecar habitual de Apache/NGINX. Encontraréis este problema: >> kubectl get pods NAME READY STATUS RESTARTS AGE intersystems-iris-operator-amd-76b75f6b48-7lnw2 1/1 Running 0 43m iris-data-0-0 1/2 Error 2 (22s ago) 2m lo que resultará en un CrashLoopBackOff. Un análisis más profundo nos muestra que cuando el sidecar habitual de Apache/NGINX está presente, el parámetro useIrisFsGroup no se tiene en cuenta. Esto se debe a que estos contenedores de Apache/NGINX, en este caso el sidecar, se ejecutan como root. IRIS no se ejecuta como root y no puede acceder a sus directorios, lo que causa nuestro problema. irisowner@iris-data-0-0:/irissys$ ls -l total 16 drwxrwxrwx 3 root root 107 Mar 31 14:28 cpf drwxr-xr-x 3 root root 4096 Mar 31 14:21 data drwxr-xr-x 3 root root 4096 Mar 31 14:21 journal1 drwxr-xr-x 3 root root 4096 Mar 31 14:21 journal2 drwxrwxrwt 3 root root 100 Mar 31 14:28 key drwxr-xr-x 3 root root 4096 Mar 31 14:21 wij IRIS falla con el error: [ERROR] Command "iris start IRIS quietly" exited with status 256 03/31/25-14:41:06:870 (795) 3 [Utility.Event] Error while moving data directories ERROR #5001: Cannot create target: /irissys/data/IRIS/ En su lugar, deberíamos utilizar la imagen non-root del web gateway (ya que suponemos que queremos que todas nuestras imágenes se ejecuten como no root). Esto implicaría un web gateway restringido o locked-down. También debemos asegurarnos de agregar el security context para hacer cumplir esta condición. Necesitamos declarar explícitamente: securityContext: runAsUser: 51773 runAsGroup: 51773 runAsNonRoot: true fsGroup: 51773 en vuestros nodos de datos/cómputo. Un ejemplo de YAML para nuestro IrisCluster CRD que integra todo esto se puede ver a continuación. apiVersion: intersystems.com/v1alpha1 kind: IrisCluster metadata: name: iris spec: licenseKeySecret: name: iris-key-secret configSource: name: iris-cpf imagePullSecrets: - name: intersystems-pull-secret topology: data: image: containers.intersystems.com/intersystems/irishealth:2025.1 compatibilityVersion: "2025.1.0" mirrored: true podTemplate: spec: resources: requests: memory: "4Gi" cpu: "2" limits: memory: "4Gi" cpu: "2" securityContext: runAsUser: 51773 runAsGroup: 51773 runAsNonRoot: true fsGroup: 51773 webgateway: image: containers.intersystems.com/intersystems/webgateway-lockeddown:2025.1 type: apache-lockeddown applicationPaths: - /csp/sys - /csp/user - /csp/broker - /api - /isc - /oauth2 - /ui - /csp/healthshare loginSecret: name: iris-webgateway-secret webgateway: replicas: 1 image: containers.intersystems.com/intersystems/webgateway-lockeddown:2025.1 type: apache-lockeddown podTemplate: spec: resources: requests: memory: "2Gi" cpu: "1" limits: memory: "2Gi" cpu: "1" applicationPaths: - /csp/sys - /csp/user - /csp/broker - /api - /isc - /oauth2 - /ui - /csp/healthshare alternativeServers: LoadBalancing loginSecret: name: iris-webgateway-secret arbiter: image: containers.intersystems.com/intersystems/arbiter:2025.1 serviceTemplate: spec: type: ClusterIP Feliz YAMLing
Pregunta
Bernabé Martín · 11 mayo, 2020

Evolucion de MUMPS

Acabo de darme de alta en la Comunidad. Soy, lo que hoy se denomina un Dinosaurio, en el ámbito de la llamada informática. Hace ya años pasé a la jubilación, conservo una versión de Cache 5.2, (y una versión MSM V4), en la que conservo y añado los programas que se me ocurren para uso privado. Yo comencé con MUMPS instalado en el sistema VMS de Digital, en el área de análisis y programación de los años 90, del siglo pasado. Sé que hasta hace unos 15 años aún se utilizaban mis aplicaciones, basadas en MUMPS puro y duro. En la versión 5.2 (en una Maquina Virtual con WXP), el Studio, solo lo utilizo para edición de rutinas (*.int) Toda esta exposición es para poner en antecedentes de mi solicitud. Me gustaría obtener de la Comunidad información para darle a mis RUTINAS MUMPS las capas de cebolla necesarias para convertirlas mas visuales, es decir más Windows. Muchas gracias, y pedir disculpas por alterar el discurrir de esta Comunidad. El código Mumps y sus variantes, sean Micronetics Standard Mumps, Digital Standard Mumps, DataTree Mumps se puede seguir ejecutando en versiones recientes de la plataforma Caché, Ensemble y la más reciente InterSystems IRIS. Historicamente, clientes que han querido dotar una aplicación texto de una capa visual han optado por: un entorno Visual para desarrollar la parte cliente en Visual Basic o más recientemente .NET, o a veces con frameworks visuales Java. Se pueden conectar a la plataforma mediante ODBC/ADO.NET/JDBC u otros mecanismos , (incluido el ya muy antiguo MSM-Activate). un desarrollo directo en entorno Web, sea mediante la generación directa de paginas Web desde CSP (Caché Server Pages). Más recientemente muchos desarrollos Web se realizan con frameworks modernos como Angular, VueJS o React, connectando-los a un back-end Caché/IRIS donde ejecutar el código. En este ejemplo se explica como hace esto: https://es.community.intersystems.com/post/ejemplo-de-aplicaci%C3%B3n-angular-intersystems-iris Hola Bernabé, eres la prueba viviente de la resiliencia de una buena tecnología! Lo cierto es que han pasado varias "eras" tecnológicas desde los tiempos que comentas... pero a ver quien es el milenial que se enfrenta a un dinosaurio a pecho descubierto! Te aconsejaría "empaquetar" la lógica que tienes en tus rutinas en clases... y dejar Caché a un lado, con todos los honores que se merece, para empezar con InterSystems IRIS... A partir de ahí, depende de lo que tengas, te resultará más o menos fácil, pero en la mayoría de los casos tendría que ser bastante directo. Una vez que te manejes con las clases, tus opciones son muchas... puedes desarrollar APIs REST, o Web Services,... que te sirvan para publicar funcionalidad que luego puedan utilizarse desde una aplicación en Angular, React, Vue..si te inclinas por aplicaciones web, o en .Net, Java,... Por supuesto siempre puedes ejecutar comandos en modo terminal para funciones atómicas, pero si quieres un interfaz más moderno, el terminal queda descartado. No te libras de tener que familiarizarte con alguna tecnología de front-end... las que te comento u otras... cuando lo hagas, siguiendo algún tutorial, verás que todo absolutamente todo lo que te planteen en temas de intercomunicación con un motor de BD, lo puedes hacer con IRIS. Pero bueno, hay camino que recorrer... aparte de este foro, tienes el Open Exchange, con muchas aplicaciones open source que te pueden ser muy útiles y dar ideas. También tienes cursos gratuitos en la sección de Learning... En el Try InterSystems IRIS puedes probar en una máquina virtual durante un mes... o también puedes bajarte una versión gratuita de InterSystems IRIS Community aquí. Para ir haciéndote una idea... puedes empezar por los Quick Start. Ponerse al día puede ser lento al principio... en cuanto le cojas el hilo a los objetos, empezarás a correr. En todo caso, por seguir tu analogía... desde cuando los obstáculos de unos mamíferos bípedos insignificantes han parado a un T-Rex??!! Bueno, espero haberte ayudado... o encaminado al menos. Gracias, lo miro Gracias, Un T-rex!!!, un poco ranqueante. He intentado, antes de llegar aquí, buscar algun tutorial, pero.... Miraré de bajar la versión de IRIS, supongo que esta no caduca, ya que tardaré algun tiempo. Salud Hola Bernabé, He visto tu Post y la verdad es que me ha hecho ilusión que hay alguien que no ha dejado el "viejo Mumps" como yo. Hace mucho tiempo que mis entornos laborales no me hacen trabajar con Mumps y ahora que tengo tiempo me gustaría retomarlo. He visto que tienes un MSM versión 4. Te importaría compartirlo? La verdad es que no lencuentro en ningún lado y es el que había trabajado más con él. Te doy las gracias por adelantado Santi Hola Santi, Si tengo esa version de Micronetics, quizas no me expliqué bien no la tengo instalada. Utilizo la 5.2 de Intersystems Supongo que ya debe de estar descatalogada y no habría problemas en pasartela. Sería mejor que utilices mi correo bernabe1955@gmail.com Salud Bernabé
Artículo
Luis Angel Pérez Ramos · 13 jun, 2023

Mi primera experiencia usando IAM

Experiencia & comentarios del curso online "Hands-On with InterSystems API Manager for Developers" Con mis conocimientos básicos de contenedores Docker y API REST, me gustaría probar el uso del administrador de APIs de InterSystems para gestionar las API y los microservicios. Completé este curso en línea utilizando mi instancia local de IRIS como host (sistema operativo Windows) e IAM ejecutándose en una máquina virtual Linux. En primer lugar, presentaré InterSystems API Manager (IAM), a continuación explicaré los pasos para configurar mi entorno local y, por último, repasaré los capítulos del curso. Introducción Hoy en día, la administración de API es muy importante al aprovechar las ventajas de una implementación fácil, siempre que se cuente con un portal de interfaz de usuario centralizado para administrar, monitorizar y proteger el tráfico de las APIs. InterSystems API Manager (IAM) permite la gestión de las API y los microservicios consumidos y expuestos por la aplicación IRIS. Es una puerta de enlace API entre los sistemas ascendentes y descendentes y también tiene una forma de seguimiento visual para averiguar a qué API se llama, con qué frecuencia se han llamado y quién las llamó. Beneficios del uso de IAM: Monitorización de APIs basadas en HTTP Control del tráfico. Protección de la seguridad de las APIs mediante el uso de mecanismos de securización. Facilidad de uso para nuevos desarrolladores. Configuración de IAM Lo que tengo instalado antes de empezar a configurar el IAM: Windows (Instancia de IRIS instalada) Linux VM (Docker instalado) Habilitación de la instancia de InterSystems IRIS para usar IAM Open management portal of IRIS instance, enable IAM. En el Portal de Gestión seleccionar System Administration > Security > Users y seleccionar al usuario IAM Hacer click en la opción Password Introducir y confirmar una contraseña para el usuario IAM Habilitar el usuario IAM marcando el check box Grabar Habilitar la aplicación web IAM (Asegúrate que tu licencia de IRIS especifica "API Management") En el Portal de Gestión selecciona System Administration > Security > Applications > Web Applications y selecciona "/api/iam" Marca Habilitar aplicación Grabar Descarga y descomprime los archivos de instalación de IAM Descarga el kit de instalación de IAM de WRC para entornos Linux Extrae los archivos tar (No descomprimas iam-image.tar, es la imagen de Docker de IAM) Configuración y arranque de IAM En este paso, he usado el usuario ROOT porque recibía errores como "No se puede cargar el Portal de Gestión correctamente" o el script de configuración no pasaba el valor de la variable de entorno al archivo docker-compose.yml cuando usaba sudo con mi usuario de Linux. Una solución a este último fue usar "sudo -E" para pasar las variables de entorno. Abrir el terminal y ejecutar el comando "docker load -i iam_image.tar" desde el directorio en el que se ubicó el tar de la imagen de IAM. Ejecuta "source ./scripts/iam-setup.sh" en el directorio actual o "source ./iam-setup.sh" desde la carpeta "scripts". Introduce el nombre exacto de la imagen de IAM y el nombre del repositorio de https://containers.intersystems.com/contents Por ejemplo: intersystems/iam:3.0.2.0-2 (Este paso es obligatorio; de lo contrario, recibirá un error sobre fallo de autenticación del repositorio al ejecutar "docker compose") Introduce la IP de tu máquina (Puedes encontrarla bajo la etiqueta de IPV4 en la configuración de Windows o lanzando un ipconfig (no uses localhost o 127.0.0.1) Introduce el puerto web de la instancia de IRIS, for example 52773 Configura el password definido previamente para el usuario IAM Dentro de la carpeta "scripts" asegúrate de ejecutar "iam-test.sh" para probar la conexión Dentro de la carpeta "scripts" ejecuta "docker compose up -d" para arrancar la IAM Abre el portal de gestión del IAM accediendo a: http://localhost:8002/overview Si no puede hacer ping a la dirección del host usando VM, comprueba el Firewall de Windows - Advanced Settings - Inbound Rules. Habilita File and Printer Sharing (Echo Request - ICMPv4-In) Profile: Private, Public Prueba de IAM Dentro del kit de instalación, encontrará un script llamado "iam-test.sh" en el directorio de scripts. Escriba y ejecute "./iam-test.sh" para comenzar a probar la conexión entre IAM y la instancia de IRIS. Nota: Si el resultado de la prueba dice "Error al crear el servicio. Código de estado HTTP: 000 o Error al crear el servicio. Código de estado HTTP: 409", comprueba el estado de Docker, si funciona correctamente pero sigue sin funcionar, tire el contenedor desplegado y ejecuta nuevamente la instrucción de docker compose, por mi experiencia, esto puede suceder tras pausar la máquina virtual. Para más información puedes encontrar aquí la documentación de configuración de IAM: https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls?KEY=CIAM3.0_install#CIAM3.0_install_setupIAM Y el ejercicio: https://learning.intersystems.com/course/view.php?name=IAMExercise Capítulos del curso Tras realizar el ejercicio podemos encontrar 3 capítulos principales: Configuración de Servicios (Services) Configuración de Rutas (Routes) Configuración de Consumidores y Plugins (Consumers) Antes de comenzar a usar IAM, este ejercicio me pedía que hiciera una solicitud REST usando el método GET, esta solicitud HTTP es del servidor del cliente que apunta directamente al punto final, que es una aplicación web creada en una instancia de IRIS. Para los siguientes pasos, este ejercicio me mostró cómo configurar los servicios a los que se reenvía la solicitud API y la ruta que analiza la solicitud entrante y luego la asigna a la API más adecuada. Configuración de servicios y enrutadores ¿Qué es un servicio? Se configura un servicio para conectar API Manager a InterSystems IRIS; normalmente tiene un servicio por cada servicio REST o aplicación web dentro de InterSystems IRIS. Por ejemplo, si tiene una aplicación web con la ruta base /rest/coffeemakerapp, configurará un servicio dentro de API Manager para esta URL. Los servicios generalmente se definen antes que las rutas. ¿Qué es una Ruta? Una ruta define lo que llamarán las aplicaciones cliente a InterSystems API Manager. Por lo general, define un servicio antes que una ruta porque la interfaz le permite crear fácilmente las rutas correspondientes directamente desde un servicio definido. Las rutas suelen ser versiones simplificadas de las rutas dentro de InterSystems IRIS. En el siguiente ejemplo, creará rutas para /test, /coffeemakers, /coffeemaker y /newcoffeemaker. Cuanto más específicas sean sus rutas, más control tendrá sobre sus API dentro de API Manager, tanto en la visualización de métricas como en la adición de complementos a rutas específicas. Crear un servicio: Desde el portal de administración de IAM, seleccione la pestaña Services Haga clic en New Service y asígnele un nombre Seleccione Add usando URL Proporcione la URL base, que es la ruta URL exacta que especificó en la aplicación web, y verifique que la dirección IP de la instancia sea correcta (no use localhost o 127.0.0.1) Crear una ruta: Desplácese hacia abajo en el resumen del servicio y haga clic en Add a Route Especifique nombre, protocolos, ruta(s) El campo Service debe generarse automáticamente con los detalles del servicio creado previamente. El ejercicio requería que deseleccionáramos Strip Path en Advanced Fields. Si se selecciona, esto elimina la ruta al enviar la solicitud a InterSystems IRIS, que es un elemento importante para conectarse al endpoint de InterSystems IRIS. Una vez creados el servicio y la ruta, puede utilizar un cliente REST como Postman para enviar una solicitud directamente a IAM y recibir una respuesta "200 ok", por ejemplo: GET http://10.0.0.1:8000/test ( /test es la Route creada). Nota: en mi caso, la URL de la solicitud HTTP debe coincidir con la dirección IP de la VM de Linux, puedes encontrar la dirección IP a través de Configuración-Red o ejecutar el comando "ifconfig" en la terminal. Abra el Portal de administración de IAM, verá que la solicitud para mostrar todas las cafeteras se registró correctamente, desde el cliente REST hasta IAM. Incluso con las solicitudes CRUD básicas, en lugar de enviar una solicitud HTTP directamente a la aplicación web de IRIS, el uso de IAM le brinda una representación visual para tomar el control de las API y mantener la seguridad de los endpoints. Uso de complementos Uno de los beneficios de usar IAM es que tiene muchos complementos disponibles, como el complemento de limitación de velocidad para ayudar con la limitación, el complemento ACL, el complemento OAuth2.0. En mi caso, compartiré mi experiencia de habilitar la autenticación básica y crear un consumidor. Habilitar complemento de autenticación básica Abra el portal de administración de IAM Admin y selecciona la pestaña de Plugin Click en New Plugin > Basic Authentication > Create Cree un usuario de IRIS que necesite para la autenticación básica Abra el portal de gestión de IRIS Vaya a Administración del sistema > Seguridad > Usuarios > Crear nuevo usuario Establecer nombre de usuario, contraseña Puedes dejar el resto de campos en blanco, en mi caso he creado un usuario llamado "CoffeeManager" Crear un consumidor y configurar sus credenciales Vaya al Portal de administración de IAM, seleccione la pestaña Consumers Haga clic en New Consumer > Introduce CoffeeManager (en mi caso) en Username > Create Vaya a la página de información de CoffeeManager > Credentials > New Basic Auth Credential Utilice las credenciales de usuario que creamos en la instancia de IRIS > Guardar Hemos concluido con todos los requisitos para que el plugin de autenticación básica sea funcional. Enviemos una solicitud HTTP utilizando autenticación básica con la credencial "CoffeeManager" que creamos en el último paso Vaya a la página de información de CoffeeManager > Activity, verá que se ha registrado una solicitud con éxito Conclusión En conclusión, he comenzadopresentando qué es InterSystems API Manager (IAM) y sus beneficios. A continuación he seguido de un tutorial sencillo sobre cómo configurar IAM en una máquina virtual Linux y cómo usar IAM implementando sus funciones básicas, crear servicios y rutas, habilitar complementos y consumidores. Si tienes alguna pregunta y comentario, no dudes en ponerte en contacto. ¡Diviértete y disfruta con IAM!
Anuncio
Esther Sanchez · 21 feb, 2023

Novedades en Open Exchange

¡Hola Comunidad! Os mostramos aquí las mejoras que hemos realizado en Open Exchange. Echadle un vistazo y esperamos que os resulten útiles! Si tenéis alguna duda o pregunta, podéis dejarla en los comentarios de la publicación. En la pestaña ANALYTICS de vuestras apps, ahora podéis ver estadísticas detalladas del número de instalaciones de vuestra app a través de IPM (antes ZPM) El filtro "ObjectScript quality test" ahora permite encontrar apps que han sido probadas por Community objectscriptQuality. Podéis acceder al informe de calidad en la misma página de la app, en la columna de la derecha, para ver su rendimiento. Y no dudéis en usar esa app para probar vuestros propios proyectos. Apps con el filtro "ObjectScript quality test passed" >> Ahora también se pueden afinar los resultados de las búsquedas para que muestren solo aplicaciones que incluyan Docker y/o Python: Apps con Docker Apps con Python O buscar solo aplicaciones que estén soportadas oficialmente por InterSystems: Apps soportadas oficialmente por InterSystems >> Tanto la página con el perfil personal como la página de cada app tienen una pestaña AWARDS (premios) que muestra todos los premios que han recibido tanto los miembros de Open Exchange como las aplicaciones: Miembros de Open Exchange más premiados >> Si queréis asociar vuestra aplicación con uno o varios artículos en la Comunidad o con vídeos en YouTube, ahora podéis incluir múltiples enlaces a ellos cuando editéis la aplicación.
Artículo
Ricardo Paiva · 17 jun, 2021

Cómo crear un PDF a partir de un archivo de texto

## Cómo utilizar Java Gateway para acelerar el desarrollo InterSystems IRIS incluye Object Gateways dinámicos para Java, .NET y (ahora) Python. Estos *gateways* permiten que tu aplicación IRIS utilice bibliotecas en estos lenguajes, eliminando la necesidad de crear todo desde cero en ObjectScript. En este ejemplo, utilizamos las bibliotecas [iTextPdf](https://itextpdf.com/) y [Apache PdfBox](https://pdfbox.apache.org/) para leer un archivo de texto y producir un PDF básico a partir de él. Estas bibliotecas son controles PDF profundos y ricos, por lo que un poco de desarrollo podría producir una aplicación de ejemplo que ofrezca resultados mucho más convincentes para tus necesidades. También he incluído un archivo de clase corto el cual hace que su uso desde ObjectScript sea muy sencillo.   ## Repositorio de GitHub Las fuentes de la demostración están disponibles en el github de la Comunidad de InterSystems.      ## Instalación La instalación de TextToPDF requiere que tengas suficiente acceso a tu servidor IRIS para trabajar con *gateways* y clases. ### 1. Clonar este repositorio Clona este repositorio en un directorio de tu servidor IRIS: git clone https://github.com/intersystems-community/iris-pdf-generator.git ### 2. Crear un Java Gateway En la consola de administración, ve a *System Administration* > *Configuration* > *Connectivity* > *Object Gateways* y elige "*Create New Gateway*" Object Gateway For: Java Gateway Name: iris-pdf-generator Port: 54545 Class Path: (directory where you cloned the repo)/target/iris-pdf-generator-0.1.0-jar-with-dependencies.jar Deja todo lo demás como predeterminado y haz clic en *Save*. ### 3. Cargar el archivo de clase En la consola de administración, asegúrate de que estás en el *namespace* del usuario, ve a *System Explorer* > *Classes*, y elige "*Import*". Busca el directorio donde clonaste este repositorio y elige "*all files*" en el desplegable con los tipos de archivos. Selecciona el archivo PdfGenerator.cls. Haz clic en "*Next*" y luego en "*Import*". ## Uso Ahora que todo está instalado, puedes usarlo desde IRIS. Abre una consola y haz lo siguiente, sustituyendo "" con el nombre del directorio en el que clonaste este repositorio en: set status = ##class(User.PdfGenerator).TextToPdf("<clone dir>\example.txt", "<clone dir>\example.pdf") Eso creará `example.pdf` como una versión PDF de `example.txt`.
Anuncio
David Reche · 24 mar, 2020

Varios avisos sobre HealthShare (23 de marzo)

Este mensaje contiene tres Avisos recientes sobre HealthShare. El detalle de estos avisos también se encuentran en la página de Alertas y Avisos de Productos de InterSystems Advisory: Patient data is missing in the HSAA.PatientNumber table Advisory: The UpdatePlan for all cubes and cube groups is set to be Manual instead of BuildSynch Advisory: Slow DELETE query during Health Insight data ingestion Si tenéis alguna pregunta sobre estos avisos, contactad por favor con el Centro de Soporte Internacional (WRC).
Anuncio
David Reche · 13 mayo, 2020

Varios avisos sobre HealthShare (12 de mayo, 2020)

Este mensaje contiene tres Avisos recientes sobre HealthShare. Estos avisos también se encuentran en la Página de Avisos y Alertas de Productos de InterSystems Advisory: A manager from one facility could view users from another facility Advisory: Significant Performance Issues with ListEncounterRelationships() Advisory: The Lab Results Table in Clinical Viewer does not display "IM" results Si tenéis alguna pregunta sobre estos avisos, contactad por favor con el Centro de Soporte Internacional (WRC), a través de su email: support@InterSystems.com o su teléfono: +1.617.621.0700.
Anuncio
Esther Sanchez · 8 jun, 2021

¡Global Masters en español!

¡Hola desarrolladores! Estamos encantados de anunciaros que ya podéis elegir el idioma de Global Masters, la plataforma de fidelización de InterSystems! Está disponible en los cinco idiomas de la Comunidad de Desarrolladores: inglés, español, portugués, japonés y chino. Cómo cambiar el idioma en el perfil: No os olvidéis de hacer clic en “Guardar” Vamos traduciendo todo poco a poco. La mayoría de los retos, por ejemplo, están en inglés. ¡Pero esto es solo el comienzo, pronto veréis más contenido en el idioma que hayáis elegido! ¿Aún no eres miembro de Global Masters? Puedes darte de alta aquí usando tus credenciales de acceso a la Comunidad de Desarrolladores. Y descubre más sobre Global Masters en este artículo.
Anuncio
Esther Sanchez · 20 jul, 2021

Nuevo vídeo: Continuando con ObjectScript

¡Hola Comunidad! Hemos grabado el webinar que hicimos ayer y lo hemos subido al canal de YouTube de la Comunidad de Desarrolladores en español. Si os perdisteis el webinar o lo queréis volver a ver con más detalle, ya está disponible la grabación! David Reche es uno de los cracks de InterSystems. Así que, si queréis seguir aprendiendo ObjectScript... ¡no os perdáis el vídeo! ⏯ Continuando con ObjectScript Por cierto, en las listas de reproducción del canal de YouTube de la Comunidad de Desarrolladores en español podéis ver todos los webinars que hemos realizado (¡ya llevamos trece!), varios tutoriales, trucos, demos... ¡Echadle un ojo y dadle al play! ▶️
Anuncio
Jose-Tomas Salvador · 22 dic, 2021

Peticiones de Mejoras, Ideas e Innovación

Sólo quería dar visibilidad a un repositorio en GitHub donde todo el mundo puede publicar Peticiones de Mejora de producto, Ideas e Innovaciones que crea que estarían muy bien tener dentro de nuestro ecosistema de tecnologías de InterSystems. Si quieres añadir tu solicitud de mejora, o echar un vistazo y ver si ya está allí, votar por ella, contribuir, etc.., haz click en este link. No garantiza que Product Management vaya a decidir ir en esa dirección, tienen que sopesar muchas cosas para decidir el roadmap de nuestros productos, pero tener un input directo desde nuestra comunidad creo que es de un valor incalculable. Así que, ¡anímate y haznos sugerencias!
Anuncio
David Reche · 25 mar, 2021

Nuevo Concurso para Desarrolladores: Herramientas para desarrolladores

¡Hola desarrolladores! Lo habéis pedido – ¡y ya está aquí! Lanzamos un nuevo concurso para crear soluciones de código abierto utilizando InterSystems IRIS. El tema de este noveno concurso es: Developer Tools Envía una aplicación que ayude a desarrollar más rápido o a tener código de más calidad, o que ayude en la etapa de pruebas, en la implementación, en el soporte o la monitorización de las soluciones desarrolladas con InterSystems IRIS. Estará activo durante cuatro semanas: del 29 de marzo al 25 de abril de 2021. Total en premios: $8,500 Premios 1. Nominación de los expertos - los ganadores serán elegidos por un jurado especialmente formado para el concurso. Los premios serán: 🥇 1er puesto - $4,000 🥈 2º puesto - $2,000 🥉 3er puesto - $1,000 2. Nominación de la Comunidad - ganará la aplicación que obtenga el mayor número total de votos. Los premios serán:: 🥇 1er puesto - $750 🥈 2º puesto - $500 🥉 3er puesto - $250 Si dos o más participantes obtienen la misma cantidad de votos, todos serán considerados ganadores y el dinero del premio se repartirá entre todos. ¿Quién puede participar? Cualquier miembro registrado en la Comunidad de Desarrolladores de cualquier país puede participar en el concurso, excepto los empleados de InterSystems. Regístrate aquí en la Comunidad si aún no tienes una cuenta. 👥 Los desarrolladores pueden hacer equipos para crear una aplicación colaborativa. Se permiten de 2 a 5 desarrolladores en cada equipo. No os olvidéis de nombrar a todos los miembros del equipo en el README de vuestra aplicación – los perfiles de usuario de la DC. Duración del concurso 🛠 Del 29 de marzo al 18 de abril: Fase de desarrollo de aplicaciones y registro (durante este período, se pueden modificar los proyectos). ✅ Del 19 al 25 de abril: Fase de votación. 🎉 26 de abril: Anuncio de los ganadores. Tema del concurso 💡 InterSystems IRIS developer tools 💡 En este concurso, esperamos aplicaciones que mejoren la experiencia de los desarrolladores IRIS, ayuden a desarrollar más rápido, o a tener código de más calidad, o que ayuden en la etapa de pruebas, implementación, soporte o monitorización de las soluciones desarrolladas con InterSystems IRIS. Requisitos: Aplicaciones aceptadas: aplicaciones 100% nuevas, o que ya existan pero que presenten una mejora significativa. Nuestro equipo revisará todas las aplicaciones antes de aprobarlas para el concurso. Tipo de aplicaciones posibles: UI-frameworks, IDE, Database management, monitoring, deployment tools, etc. La aplicación debe funcionar en IRIS Community Edition o IRIS for Health Community Edition o IRIS Advanced Analytics Community Edition. La aplicación debe ser Open Source y publicarse en GitHub. El fichero README de la aplicación debe contener los pasos de la instalación y un vídeo-demo y/o una descripción de cómo funciona la aplicación. El código fuente de la aplicación estará disponible en formato UDL (no XML). Ejemplo. Estos requisitos están sujetos a cambios. Recursos útiles Aplicaciones de ejemplo: iris-rad-studio - RAD for UI cmPurgeBackup - backup tool errors-global-analytics - errors visualization objectscript-openapi-definition - open API generator Test Coverage Tool - test coverage helper and many more. Plantillas recomendadas con las que empezar: objectscript-docker-template rest-api-contest-template native-api-contest-template iris-fhir-template iris-fullstack-template iris-interoperability-template iris-analytics-template Cómo presentar una aplicación a los concursos: How to publish an application on Open Exchange How to apply for the contest Jurado Consulta los Criterios del Jurado y las Reglas sobre los votos aquí. Así que... Ready. Set. Code. ¡Suerte a todos! ❗️ Echad un vistazo a los Términos Oficiales del Concurso.❗️ Bonus tecnológicos para el concurso >>
Anuncio
Esther Sanchez · 10 ene, 2020

Resumen Anual - Todos los artículos publicados en la Comunidad de Desarrolladores en 2019

a {color:#2a2e78;} Empieza un nuevo año y toca hacer balance de 2019. Por eso os traemos un resumen con todos los artículos que publicamos en la Comunidad de Desarrolladores el año pasado. ¿Los leíste todos? Aprovecha y echa un vistazo a los artículos más leídos, los más comentados, los más votados... Y nunca dejes de aprender Los artículos más leídos ¡Bienvenido a la Comunidad de Desarrolladores de InterSystems en español!by David Reche 393 Demo de IRIS + Kong + Kongaby Joel Espinoza 142 Serialización y deserialización de objetos en formato JSON (u otro cualquiera)by Jose Tomas Salvador 139 Clases, tablas y globals - ¿Cómo funcionan?by David Reche 103 Administración de la fecha y hora durante las operaciones en Cachéby Nancy Martínez 95 Presentación de InterSystems API Managerby David Reche 94 Cómo instalar y usar TFS en Atelierby Francisco López 89 Algoritmo de agrupamiento K-medias sobre datos en IRISby Alberto Fuentes 89 Dominando JDBC con SQL Gatewayby Bernardo Linarez 87 API RESTfulby Francisco López 85 Uso de expresiones regulares en ObjectScriptby Alberto Fuentes 81 Clases de consulta en InterSystems Cachéby Francisco López 81 Desarrollar un Backend de servicios REST para una aplicación Angular 1.x con Caché - Parte 1 de variasby Joel Espinoza 81 Desarrollar un backend de servicios REST para una aplicación Angular 1.x con Caché - comencemos aquíby Joel Espinoza 80 InterSystems IRIS edición Community gratuita disponible en AWSby David Reche 77 Crear un Backend con Node/Express y conectarlo a IRIS en menos que decimos 'Mississippi'by David Reche 76 Ejecutar un comando externo (Windows / Unix) de forma interactiva desde IRISby Alberto Fuentes 74 Conectarse a Caché con SQuirreL SQL, un cliente externo de SQLby Bernardo Linarez 73 Estructura Interna de los Bloques de Bases de Datos en Caché (Parte 1)by Estevan Martinez 73 Guía rápida para conectar Apache Spark y Apache Zeppelin con InterSystems IRIS by Alberto Fuentes 70 Ver todos los artículos más leídos » Los más votados ¡Bienvenido a la Comunidad de Desarrolladores de InterSystems en español!by David Reche 6 Tutorial de WebSocketsby Ricardo Paiva 3 Uso de expresiones regulares en ObjectScriptby Alberto Fuentes 3 Crear un Backend con Node/Express y conectarlo a IRIS en menos que decimos 'Mississippi'by David Reche 2 Mejoras en procesamiento JSONby Alberto Fuentes 2 Demo de IRIS + Kong + Kongaby Joel Espinoza 2 Clases, tablas y globals - ¿Cómo funcionan?by David Reche 2 Los Globals son espadas mágicas para almacenar datos. Parte 3. Matrices dispersas.by Francisco López 2 Cómo mejorar las búsquedas dentro de la comunidadby David Reche 2 Ejecutar un comando externo (Windows / Unix) de forma interactiva desde IRISby Alberto Fuentes 2 Configurar un servicio REST en IAM y publicarlo en el Developer Portalby Alberto Fuentes 2 Serialización y deserialización de objetos en formato JSON (u otro cualquiera)by Jose Tomas Salvador 2 Pruebas unitarias en Transformaciones de Datosby Alberto Fuentes 2 Traducir un número en textoby Francisco López 1 Conectarse a Caché con SQuirreL SQL, un cliente externo de SQLby Bernardo Linarez 1 Configuración de aplicaciones cliente de Caché para SSL/TLSby Ricardo Paiva 1 Funciones del lenguaje que deberías conocer desde el día 1by Jose Tomas Salvador 1 Cómo mejorar el rendimiento de SQL en las consultas sobre el rango de fechasby Ricardo Paiva 1 Publicador-Subscriptor simple con $system.Eventby Alberto Fuentes 1 Jugando con la Sincronización de Objetosby Jose Tomas Salvador 1 Ver todos los artículos más votados » Los más comentados ¡Bienvenido a la Comunidad de Desarrolladores de InterSystems en español!by David Reche 3 Clases, tablas y globals - ¿Cómo funcionan?by David Reche 2 Uso de expresiones regulares en ObjectScriptby Alberto Fuentes 2 Serialización y deserialización de objetos en formato JSON (u otro cualquiera)by Jose Tomas Salvador 2 Publicador-Subscriptor simple con $system.Eventby Alberto Fuentes 1 Como añadir una traducción al español de un articulo en inglésby David Reche 1 Demo de IRIS + Kong + Kongaby Joel Espinoza 1 Configurar un servicio REST en IAM y publicarlo en el Developer Portalby Alberto Fuentes 1 Demo de SUDOKUby Robert Cemper 1 Los Globals son espadas mágicas para almacenar datos. Parte 2. Árbolesby Francisco López 1 Ver todos los artículos más comentados » Los 20 autores más leídos David Reche 1138 Francisco López 770 Alberto Fuentes 681 Estevan Martinez 438 Jose Tomas Salvador 426 Nancy Martínez 416 Joel Espinoza 401 Ricardo Paiva 371 Bernardo Linarez 310 Mario Sanchez Macias 78 Yone Moreno 58 Dmitriy Maslennikov 55 Esther Sanchez 50 Evgeny Shvarov 48 Julio Francisco 19 Robert Cemper 19 Ver todos los autores »
Artículo
Luis Angel Pérez Ramos · 2 ene, 2023

Plantilla de Python Embebido

¡Hola desarrolladores! Comparto con vosotros una plantilla de Python Embebido básica, que recomiendo como punto de partida para cualquier proyecto general con InterSystems IRIS que use Python Embebido. Funcionalidades: Python Embebido configurado; 3 ejemplos con difentes formas de desarrollar con Python Embebido; VSCode configurado; Docker disponible; Demo online disponible; Desarrollo ZPM First disponible. Vamos a comentar estas funcionalidades. Primero vamos a hablar de Python Embebido. Esta funcionalidad viene con InterSystems IRIS 2021.2 y permite desarrollar soluciones usando InterSystems IRIS con Python. IRIS 2021.2 y posteriores permiten la ejecución de scripts de Python en un entorno de memoria compartida con InterSystems IRIS que ofrece opciones únicas a los desarrolladores Python al usar la bases de datos en la que el código está cerca de los datos. 3 formas de desarrollar con Python Embebido Invocación a librerías de Python desde ObjectScript Esto es posible por la clase %SYS.Python, que permite importar librerías de python y llamar a Python a través de ObjectScirpt. Documentación, Ejemplo. Aquí podéis ver un ejemplo de código: ClassMethod Today() As %Status { Set sc = $$$OK Set dt = ##class(%SYS.Python).Import("datetime") write dt.date.today().isoformat() Return sc } Escribir métodos de clase de ObjectScript en Python De hecho, ahora los desarrolladores pueden usar la etiqueta [Language=python] en la declaración del método y codificar en Python puro. Hay también una librería de ayuda en Python "iris" que se puede utilizar para hacer referencia a las clases y globals de ObjectScript. Documentación, Ejemplo, código de muestra: ClassMethod CreateRecordPython(propValue As %VarString, ByRef id As %Integer) [ Language = python ] { import iris obj=iris.cls(__name__)._New() obj.Test=propValue sc=obj._Save() id=obj._Id() return sc } Codificar las soluciones de InterSystems IRIS en Python puro Esta es la tercera opción para que los desarrolladores puedan trabajar con IRIS. Aquí el script de Python necesita ser conectado a IRIS, y esto se puede hacer a través de variables de entorno y el servicio CallIn configurado a "On". Podéis ver los detalles más abajo. Una vez configurado el script de Python es ejecutado en la memoria compartida junto con IRIS. Aquí la librería "iris" es muy útil también. Documentación, Ejemplo. def create_rec(var): obj=iris.cls('dc.python.PersistentClass')._New() obj.Test=var obj._Save() id=obj._Id() return id # test record creation from datetime import datetime now=str(datetime.now()) print("Creating new record in dc.python.PersistentClass") print(create_rec(now)) ## run SQL and print data def run_sql(query): rs=iris.sql.exec(query) for idx, row in enumerate(rs): print(f"[{idx}]: {row}") query="Select * from dc_python.PersistentClass" print("Running SQL query "+query) run_sql(query) Docker configurado El repositorio de la plantilla ejecuta IRIS en un contenedor y configura todo lo necesario para trastear con Python Embebido. Variables de entorno. Python Embebido necesita configurar ciertas variables de entorno para conectarse a IRIS y ejecutar los scripts de Python. Esta es la configuración que lo posibilita en dockerfile: # init Python env ENV PYTHON_PATH=/usr/irissys/bin/irispython ENV SRC_PATH=/irisrun/repo ENV IRISUSERNAME "SuperUser" ENV IRISPASSWORD "SYS" ENV IRISNAMESPACE "USER" También, Python Embebido necesita el servicio CallIn "on". Esto se configura en el iris.script durante la fase del build del docker: ; enabling callin for Embedded Python do ##class(Security.Services).Get("%Service_CallIn",.prop) set prop("Enabled")=1 set prop("AutheEnabled")=48 do ##class(Security.Services).Modify("%Service_CallIn",.prop) Además, tu solución puede necesitar algunas librerías de Python a mayores. Esto es proporcionado mediante el archivo requirements.txt en la raíz del repositorio y una llamada pip3 en el dockerfile: pip3 install -r requirements.txt && \ VSCode configurado Es muy recomendable desarrollar en VSCode usando docker. Si quieres desarrollar IRIS con Python Embebido en Docker, VSCode necesita ser configurado a modo Devcontainer. Para ello, introduce el archivo devcontainer.json file en la carpeta .devcontainer folder. Describe qué servicio docker necesita para trabajar con (iris en nuestro caso) y esto ayuda a ejecutar los scripts de Python en VSCode que serán servidos por el motor de Python utilizado por IRIS que se está ejecutando en el contenedor. El archivo devcontainer.json también tiene una sección con una descripción de qué extensiones son necesarias en modo contenedor: "extensions": [ "ms-python.python", "ms-python.vscode-pylance", "intersystems-community.vscode-objectscript", "intersystems.language-server", "intersystems-community.servermanager", "ms-vscode.docker" ], Instalar Python Embebido con ZPM Esta plantilla está configurada como un repositorio de desarrollo "ZPM first". Esto significa que todo el código desarrollado está descrito en module.xml y es instalado como un módulo ZPM cada vez que la imagen del docker es desplegada por el desarrollador mediante la siguiente líne de código en iris.script: zpm "load /home/irisowner/irisbuild/ -v":1:1 Y el código de Python Embebido también está descrito en el módulo ZPM - siendo instalado a través de FILECOPY: <FileCopy Name="python/" Target="${libdir}python/"/> Con esta expresión indicamos que queremos empaquetar todos los scripts de Python bajo la carpeta /python en el repositorio e instalarla en la carpeta python/ en un directorio de librerías de la instalación IRIS de destino. Si los scripts de Python son copiados bajo la carpeta ${libdir}python/, estarán disponibles para ser invocadas desde ObjectScript o desde Python en la máquina IRIS de destino. ¡Ojo! Asegúrate de que los nombres de tus carpeta tienen nombres únicos para los scripts de Python para no invalidar otro código Python accidentalmente. Espero que esta plantilla os resulte útil. Comentarios y especialmente pull requests son bienvenidos :D