#Entorno de desarrollo

0 Seguidores · 66 Publicaciones

Un entorno de desarrollo integrado (IDE) es una aplicación de software que proporciona entornos completos para que los programadores informáticos desarrollen software.

El IDE oficial para los productos que se encuentran en la plataforma de datos de InterSystems es Atelier.

Artículo Jose-Tomas Salvador · mayo 11, 2022 3m read

Una de las formas más sencillas de configurar entornos de desarrollo repetibles es utilizar contenedores para ellos. Descubrí que cuando cambian rápidamente, era muy conveniente alojar una instancia de vscode dentro de mi contenedor de desarrollo. De este modo, he creado un script de contenedor sencillo que permite añadir en un contenedor IRIS un vscode basado en un navegador. Esto debería funcionar para la mayoría de los contenedores 2021.1 y posteriores. El repositorio de mi código se puede encontrar aquí

El contenedor de InterSystems IRIS con vscode y pre-conectado

CredValue
User_SYSTEM
PasswordSYS

image

Visión general

Este proyecto crea un contenedor IRIS con una versión servidor (basada en web) de vscode disponible en el mismo contenedor IRIS. Esto ofrece:

  • Edición del código en el mismo contenedor
  • Pre-conexión a la instancia del contenedor de IRIS
  • Enlaces desde el Management Portal
  • Arranque automático del IDE con el contenedor

Inicio rápido

  1. Descarga o git clone https://github.com/nickmitchko/Hosting-vscode-in-a-container.git
  2. En la raíz del proyecto, ejecuta docker build . -t vscode-irishealth-ml:latest --no-cache
  3. Ejecuta docker-compose up
    • No usas docker compose? Echa un vistazo aquí
  4. Ve al Management Portal
  5. Inicia sesión con el usuario y contraseña mostrada anteriormente
  6. Haz clic en el enlace a VSCODE en el panel Favoritos
  7. Cuando te pregunte, utiliza la misma contraseña en vscode para conectar con la instancia de IRIS.
# New folder for project
mkdir vscode-iris
cd vscode-iris

# Clone repo here
git clone https://github.com/nickmitchko/Hosting-vscode-in-a-container.git .

# Build image
docker build . -t vscode-irishealth-ml:latest --no-cache

# Only Run (A) or (B)
#
# (A) Run compose file
docker-compose up
# OR (B) if you want a daemon
docker-compose up -d

Añadiendo Persistencia

Si quieres una instancia de IRIS persistente, descomenta las lineas 16 a 20 en el fichero docker-compose.yml. Esto monta un volumen de almacenamiento persistente al contenedor.

    volumes:
    - "./durable/:/durable/"
    environment:
    - ISC_DATA_DIRECTORY=/durable/iconfig

Cambiando la imagen de base

Esta imagen se construye sobre las imágenes zpm de la Comunidad de Desarrolladores de InterSystems (las puedes encontrar aquí). Estas imágenes incluyen el comando zpm que nos permite instalar fácilmente desde el repositorio, pero solo tiene una licencia "community" de 90 días.

La etiqueta de imagen usada para builds es:

FROM intersystemsdc/irishealth-ml-community:latest

Si quieres cambiar la imagen, cambia la primera línea del archivo docker a tu etiqueta de imagen deseada (o una instancia de IRIS modificada o una oficialmente soportada). Por ejemplo:

FROM containers.intersystems.com/intersystems/irishealth-community:2021.2.0.651.0

Sin Docker-Compose

Si no usas docker compose, aún puedes ejecutar el contenedor así:

# After building the container
# --after command is required
docker run --name vscode -d \
    --publish 1972:1972 \
    --publish 52773:52773 \
    --publish 51773:51773 \
    --publish 53773:53773 \
    --publish 8080:8080 \
    --publish 8888:8888 \
    vscode-irishealth-ml:latest \
    --after "/bin/bash /install/boot.sh"
1
0 148
Artículo Luis Angel Pérez Ramos · sep 29, 2022 2m read

Como sabéis, el namespace EnsDemo de Ensemble ya no está disponible en IRIS.

Esto es algo positivo, ya que IRIS está orientada a la nube y por lo tanto debe ser lo más ligera y rápida posible. La nueva forma de compartir ejemplos de código o módulos es a través de git, integración continua y OpenExchange.

Pero no os preocupéis, somos conscientes de que, en algunos casos, querréis volver a recuperar ejemplos y código presente en EnsDemo, ya sea como fuente de inspiración o para ayudaros a revisar buenas prácticas.

0
0 157
Artículo Alberto Fuentes · ago 31, 2022 2m read

¡Hola desarrolladores!

Cuando desarrollas con ObjectScript Package Manager, un aspecto crucial es la versión del paquete, que situamos en el fichero module.xml. Cuando añadimos cambios al paquete y estamos listos para publicar una nueva versión del paquete en el registro, también necesitamos aumentar el número de versión. Esto está claro, pero es un poco molesto, y a menudo podemos olvidarnos de hacerlo. 

Este breve artículo os ayudará a automatizar ese proceso.

Probot logo

0
0 233
Artículo Alberto Fuentes · jun 8, 2022 4m read

Hola desarrolladores!

Este es otro artículo para simplificar la vida de los desarrolladores. Hablamos de hacer que GitHub ejecute tus pruebas unitarias (unittest) con cada push que hagas a tu repositorio simplemente añadiendo un fichero. Gratis :). En GitHub Cloud. Suena genial, ¿no?

Es factible, y además muy sencillo. El mérito es para @Dmitry Maslennikov (y su repo), el gestor de paquetes ZPM y las GitHub Actions. Vamos a ver cómo funciona todo en conjunto.

Something for Nothing by Robert Sheckley - YouTube

0
0 533
Anuncio David Reche · mayo 3, 2022

Hola comunidad, os anuncio el lanzamiento de la versión 1.8.0 de la extensión VS Code, que contiene las siguientes mejoras y correcciones de fallos que paso a resumir.

La más importante es el soporte a archivos de proyecto del lado del servidor, es una funcionalidad similar a la de los proyectos de Studio, como los más viejos del lugar recordarán. Si trabajas en el lado del cliente, VS Code ya tiene buenas funcionalidades para la gestión de proyectos. Puedes simplemente usar una carpeta como un proyecto, o usar workspaces multi-raíz. Pero si trabajas en el lado del servidor, podrás apreciar algunas mejoras en la gestión de artefactos. Puedes saber más en el nuevo capítulo Projects de la documentación.

0
0 132
Anuncio David Reche · abr 5, 2022

Me complace anunciar el lanzamiento de la versión 1.4.4 de la extensión VS Code, que contiene las siguientes mejoras y correcciones de fallos. Los enlaces que llevan a las issues de GitHub han sido corregidos. Como siempre, si ya tienes la extensión instalada, VS Code debería actualizar automáticamente tu extensión. Si no la tienes instalada, sigue estas instrucciones para empezar. 

Registro de cambios

0
0 120
Artículo Jose-Tomas Salvador · sep 6, 2021 2m read

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

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

3
0 526
Artículo Alberto Fuentes · dic 29, 2021 1m read

No hace mucho GitHub introdujo una nueva funcionalidad que permite ejecutar muy rápidamente VSCode en el navegador para cualquier repositorio alojado allí. Haz clic en la tecla . en cualquier repositorio o pull-request, o intercambia .com con .dev en la URL, para ir directamente a un entorno VS Code en tu navegador.

github dev

Este VSCode es una versión light de la versión de escritorio, pero funciona totalmente en el navegador. Debido a esto, están limitadas las extensiones permitidas para trabajar así.

Aquí podemos utilizar la flamante nueva versión 1.2.1 de la extensión VSCode-ObjectScript smiley, que ahora puede ser ejecutada en modo Navegador.

1
0 235
Artículo Jose-Tomas Salvador · dic 29, 2021 1m read

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 .

0
0 224
Artículo Ricardo Paiva · oct 28, 2021 2m read

¡Hola comunidad!

En el pasado, la documentación técnica del código fuente y de los productos de software se generaba en archivos chm, pdf y generadores de documentación de los propios lenguajes de programación. Este enfoque antiguo tenía las siguientes limitaciones:

  1. Documentación obsoleta,
  2. Documentación no interactiva y difícil de consultar,
  3. Diseño poco amigable y que no se adhiere a HTML,
  4. Imposibilidad de personalizar el diseño de los documentos,
  5. Imposibilidad de tener documentación en HTML 5 online y offline.
  6. Falta de soporte a Markdown.

Hoy en día, existen varias soluciones de generación de documentación que producen Portales de Documentación Web muy atractivos, interactivos y con opciones estáticas y dinámicas, con soporte total para HTML 5 y más recientemente Markdown.

Consulta la tabla con las opciones de código abierto más populares:

0
0 290
Artículo Jose-Tomas Salvador · sep 22, 2021 13m read

¡Hola desarrolladores!

Muchos de vosotros publicáis vuestras bibliotecas de InterSystems ObjectScript en Open Exchange y Github.

Pero, ¿qué puedes hacer para facilitar a los desarrolladores el uso y la colaboración en tu proyecto?

En este artículo, quiero presentar una forma sencilla de poner en marcha y contribuir en cualquier proyecto ObjectScript con solo copiar un conjunto estándar de archivos en tu repositorio.

¡Vamos!

TLDR: copia estos archivos desde el repositorio a tu repositorio:

Dockerfile

docker-compose.yml

Installer.cls

iris.script

settings.json{#9f423fcac90bf80939d78b509e9c2dd2-d165a4a3719c56158cd42a4899e791c99338ce73}

.dockerignore{#f7c5b4068637e2def526f9bbc7200c4e-c292b730421792d809e51f096c25eb859f53b637}
.gitattributes{#fc723d30b02a4cca7a534518111c1a66-051218936162e5338d54836895e0b651e57973e1}
.gitignore{#a084b794bc0759e7a6b77810e01874f2-e6aff5167df2097c253736b40468e7b21e577eeb}

Y obtienes la forma estándar de poner en marcha y colaborar en tu proyecto. A continuación, se explica detalladamente cómo y por qué funciona esto así.

Nota: En este artículo, consideraremos los proyectos que se pueden ejecutar en InterSystems IRIS 2019.1 y versiones posteriores.

Cómo elegir el entorno de lanzamiento de los proyectos con InterSystems IRIS

Normalmente, queremos que un desarrollador pruebe el proyecto/biblioteca y esté seguro de que será un ejercicio rápido y seguro.

En mi modesta opinión, el enfoque ideal para poner en marcha cualquier cosa nueva de forma rápida y segura es el contenedor Docker, que ofrece al desarrollador la garantía de que todo lo que inicie, importe, compile y calcule es seguro para el servidor y ningún sistema o código será destruido o estropeado. Si algo sale mal, solo hay que parar y retirar el contenedor. Si la aplicación ocupa una enorme cantidad de espacio en el disco, la retiras junto con el contenedor y vuelves a tener espacio. Si una aplicación estropea la configuración de la base de datos, solo tienes que borrar el contenedor con la configuración estropeada. Así de simple y seguro.

El contenedor Docker ofrece seguridad y estandarización.

La forma más sencilla de ejecutar un contenedor Docker común de InterSystems IRIS es ejecutar una imagen de la Edición Community de IRIS:

  1. Instala Docker desktop 

  2. Ejecuta lo siguiente en el terminal del sistema operativo:

docker run --rm -p 52773:52773 --init --name my-iris store/intersystems/iris-community:2020.1.0.199.0
  1. A continuación, abre el Portal de Administración en tu navegador del servidor en:

http://localhost:52773/csp/sys/UtilHome.csp

  1. O abre un terminal en IRIS:

    docker exec -it my-iris iris session IRIS

  2. Deja de usar el contenedor IRIS cuando no lo necesites:

    docker stop my-iris

¡Muy bien! Ejecutamos IRIS en un contenedor Docker. Pero quieres que un desarrollador instale tu código en IRIS y tal vez haga algunos ajustes. Esto es lo que discutiremos a continuación.

Importación de archivos ObjectScript

El proyecto más sencillo de InterSystems ObjectScript puede contener un conjunto de archivos ObjectScript como clases, rutinas, macros y globales. Consulta el artículo sobre la convención de nombres y la estructura de carpetas propuesta.

La pregunta es: ¿cómo importar todo este código a un contenedor de IRIS?

Este es el momento en el que nos ayuda Dockerfile y podemos utilizarlo para coger el contenedor común de IRIS e importar todo el código de un repositorio a IRIS, y hacer algunos ajustes con IRIS si es necesario. Necesitamos añadir un Dockerfile en el repositorio.

Vamos a examinar el Dockerfile del repositorio ObjectScript template:

ARG IMAGE=store/intersystems/irishealth:2019.3.0.308.0-community
ARG IMAGE=store/intersystems/iris-community:2019.3.0.309.0
ARG IMAGE=store/intersystems/iris-community:2019.4.0.379.0
ARG IMAGE=store/intersystems/iris-community:2020.1.0.199.0
FROM $IMAGE

USER root

WORKDIR /opt/irisapp
RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp

USER irisowner

COPY  Installer.cls .
COPY  src src
COPY iris.script /tmp/iris.script # run iris and initial 

RUN iris start IRIS \
    && iris session IRIS < /tmp/iris.script

  Las primeras líneas ARG establecen la variable $IMAGE, que después utilizaremos en FROM. Esto es adecuado para probar/ejecutar el código en diferentes versiones de IRIS cambiándolas solo por la última línea antes de FROM, para cambiar la variable $IMAGE. 

Aquí tenemos: 

ARG IMAGE=store/intersystems/iris-community:2020.1.0.199.0

FROM $IMAGE

Esto significa que estamos tomando la versión 199 de la Edición Community de IRIS 2020.

Queremos importar el código desde el repositorio. Eso significa que necesitamos copiar los archivos de un repositorio a un contenedor Docker. Las siguientes líneas ayudan a hacer eso:

USER root

WORKDIR /opt/irisapp
RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp

USER irisowner

COPY  Installer.cls .
COPY  src src

USER root: aquí cambiamos de usuario a root para crear una carpeta y copiar archivos en Docker.

WORKDIR  /opt/irisapp: en esta línea configuramos el workdir en el que copiaremos los archivos.

RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp   :  aquí le damos los derechos al usuario irisowner y al grupo que ejecuta IRIS.

USER irisowner: cambia de usuario de root a irisowner

COPY Installer.cls .  - copia Installer.cls a una raíz de workdir. No te olvides el punto.

COPY src src : copia archivos fuente desde la carpeta src del repositorio a la carpeta src de workdir en el Docker.

En el siguiente bloque ejecutamos el script inicial, donde llamamos al instalador y al código ObjectScript:

COPY iris.script /tmp/iris.script # run iris and initial 
RUN iris start IRIS \
    && iris session IRIS < /tmp/iris.script

COPY iris.script /: copiamos iris.script en el directorio raíz. Contiene el ObjectScript que queremos llamar para configurar el contenedor.

RUN iris start IRIS</span>  - inicia IRIS

&& iris session IRIS < /tmp/iris.script - inicia el terminal IRIS e introduce el ObjectScript inicial dentro de él.

¡Bien! Tenemos el Dockerfile, que importa archivos en Docker. Pero nos encontramos con otros dos archivos: installer.cls e iris.script. Vamos a examinarlos.

Installer.cls

Class App.Installer
{

XData setup
{
<Manifest>
  <Default Name="SourceDir" Value="#{$system.Process.CurrentDirectory()}src"/>
  <Default Name="Namespace" Value="IRISAPP"/>
  <Default Name="app" Value="irisapp" />

  <Namespace Name="${Namespace}" Code="${Namespace}" Data="${Namespace}" Create="yes" Ensemble="no">

    <Configuration>
      <Database Name="${Namespace}" Dir="/opt/${app}/data" Create="yes" Resource="%DB_${Namespace}"/>

      <Import File="${SourceDir}" Flags="ck" Recurse="1"/>
    </Configuration>
    <CSPApplication Url="/csp/${app}" Directory="${cspdir}${app}"  ServeFiles="1" Recurse="1" MatchRoles=":%DB_${Namespace}" AuthenticationMethods="32"
       
    />
  </Namespace>

</Manifest>
}

ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger) As %Status [ CodeMode = objectgenerator, Internal ]
{
  #; Let XGL document generate code for this method. 
  Quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "setup")
}

}

Sinceramente, no necesitamos Installer.cls para importar archivos. Esto podría hacerse con una sola línea. Pero a menudo, además de importar el código, es necesario configurar la aplicación CSP, introducir la configuración de seguridad, crear bases de datos y namespaces.

En este Installer.cls creamos una nueva base de datos y un namespace con el nombre IRISAPP, y creamos la aplicación /csp/irisapp predeterminada para este namespace.

Todo esto lo realizamos en el elemento <Namespace>:

E importamos todos los archivos desde SourceDir con la etiqueta Import:

SourceDir aquí es una variable, que se establece en el directorio actual/src:

Cuando Installer.cls cuenta con esta configuración nos da la confianza de que creamos una nueva base de datos IRISAPP limpia en la que importamos el código ObjectScript que queramos desde la carpeta src.

iris.script

Aquí puedes proporcionar cualquier código de configuración inicial de ObjectScript que quieras para iniciar tu contenedor IRIS.

Por ejemplo, aquí cargamos y ejecutamos installer.cls y después hacemos que las password de usuario no expiren solo para evitar la primera solicitud de cambio de contraseña porque no necesitamos esta línea de comandos para el desarrollo.

; run installer to create namespace
do $SYSTEM.OBJ.Load("/opt/irisapp/Installer.cls", "ck")
set sc = ##class(App.Installer).setup()  zn "%SYS"
Do ##class(Security.Users).UnExpireUserPasswords("*") ; call your initial methods here
halt

docker-compose.yml

¿Por qué necesitamos docker-compose.yml? ¿No podríamos simplemente construir y ejecutar la imagen solo con Dockerfile? Sí, podríamos. Pero docker-compose.yml simplifica la vida.

Normalmente, docker-compose.yml se utiliza para lanzar varias imágenes Docker conectadas a una red.

docker-compose.yml también se podría utilizar para hacer más fácil el lanzamiento de una imagen Docker cuando tenemos una gran cantidad de parámetros. Se puede utilizar para pasar parámetros a Docker, como el mapeo de puertos, volúmenes, o parámetros de conexión VSCode.

version: '3.6' 
services:
  iris:
    build: 
      context: .
      dockerfile: Dockerfile
    restart: always
    ports: 
      - 51773
      - 52773
      - 53773
    volumes:
      - ~/iris.key:/usr/irissys/mgr/iris.key
      - ./:/irisdev/app

Aquí declaramos el servicio de iris, que utiliza el archivo Dockerfile y expone los siguientes puertos de IRIS: 51773, 52773, 53773. También este servicio mapea dos volúmenes: iris.key desde el directorio principal del equipo servidor a la carpeta IRIS donde se espera y mapea la carpeta raíz del código fuente a la carpeta /irisdev/app.

Docker-compose nos da el comando más corto y unificado para construir y ejecutar la imagen, independientemente de los parámetros que se hayan configurado en docker compose.

en cualquier caso, el comando para construir y presentar la imagen es:

$ docker-compose up -d

 y para abrir el terminal de IRIS:

$ docker-compose exec iris iris session iris

Node: 05a09e256d6b, Instance: IRIS

USER>

Además, docker-compose.yml ayuda a configurar la conexión para el plugin VSCode-ObjectScript.

.vscode/settings.json

La parte que se refiere a la configuración de la conexión del complemento de ObjectScript es esta:

{
    "objectscript.conn" :{
      "ns": "IRISAPP",
      "active": true,
      "docker-compose": {
        "service": "iris",
        "internalPort": 52773
      }
    }     

}

Es aquí donde vemos la configuración, que es diferente de la configuración predeterminada del plugin VSCode-ObjectScript.

Aquí podemos decir que queremos conectarnos al namespace IRISAPP (que creamos con Installer.cls):

"ns": "IRISAPP",

y hay una configuración para docker-compose, que dice que en el archivo docker-compose dentro del servicio "iris", VSCode se conectará al puerto 52773 que se mapea a:

"docker-compose": {
        "service": "iris",
        "internalPort": 52773
      }

Si revisamos lo que tenemos para 52773 vemos que el puerto mapeado no está definido para 52773:

ports: 
      - 51773
      - 52773
      - 53773

Esto significa que se tomará un puerto aleatorio disponible en un equipo servidor, y VSCode se conectará automáticamente a este IRIS en Docker por medio del puerto aleatorio.

Esta es una función muy útil, porque te da la opción de ejecutar cualquier cantidad de imágenes Docker con IRIS en puertos aleatorios y tener VSCode conectado a ellos de forma automática.

¿Qué sucede con los otros archivos?

También tenemos:

.dockerignore: archivo que se puede utilizar para filtrar los archivos del equipo servidor que no quieres que se copien en la imagen Docker que creaste. Normalmente . git y . DS_Store son líneas obligatorias.

.gitattributes: atributos para git, que unifican los finales de línea de los archivos ObjectScript en las fuentes. Esto es muy útil si en el repositorio colaboran usuarios de Windows y Mac/Ubuntu.

.gitignore: archivos a los que no quieres que git siga el historial de cambios. Por lo general, son algunos archivos ocultos a nivel de sistema operativo, como .DS_Store.

¡Bien!

¿Cómo hacer que tu repositorio sea ejecutable por Docker y fácil para colaborar?

  1. Clona este repositorio.

  2. Copia todos estos archivos:

Dockerfile

docker-compose.yml

Installer.cls

iris.script

settings.json{#9f423fcac90bf80939d78b509e9c2dd2-d165a4a3719c56158cd42a4899e791c99338ce73}

.dockerignore{#f7c5b4068637e2def526f9bbc7200c4e-c292b730421792d809e51f096c25eb859f53b637}
.gitattributes{#fc723d30b02a4cca7a534518111c1a66-051218936162e5338d54836895e0b651e57973e1}
.gitignore{#a084b794bc0759e7a6b77810e01874f2-e6aff5167df2097c253736b40468e7b21e577eeb}

a tu repositorio.

Cambia esta línea en Dockerfile para que coincida con el directorio que cuenta con ObjectScript en el repositorio que quieres importar en IRIS (o no lo cambies si lo tienes en la carpeta /src).

Eso es todo. Todos (y tú también) tendrán tu código importado en IRIS en un nuevo namespace de IRISAPP.

Cómo lanzará la gente tu proyecto

La secuencia para ejecutar cualquier proyecto ObjectScript en IRIS sería:

  1. Clonar el proyecto localmente con git clone

  2. Ejecutar el proyecto:

$ docker-compose up -d
$ docker-compose exec iris iris session iris

Node: 05a09e256d6b, Instance: IRIS

USER>zn "IRISAPP"

**¿Cómo contribuirán los desarrolladores a tu proyecto? **

  1. Crea un fork del repositorio y clona el fork en local

  2. Abre la carpeta en VSCode (también se necesita que las extensiones Docker y ObjectScript estén instaladas en VSCode)

  3. Haz clic derecho en docker-compose.yml->Reinicia - VSCode ObjectScript se conectará automáticamente y estará listo para editar, compilar o depurar

  4. Confirma, envía y extrae los cambios de solicitud a tu repositorio

Aquí os muestro en un breve gif cómo funciona esto:

¡Y esto es todo! Happy coding!

0
0 298
Artículo Ricardo Paiva · sep 3, 2021 3m read

El lenguaje ObjectScript de InterSystems IRIS tiene un motor de metadatos muy potente llamado XData. Esta característica permite crear definiciones de metadatos para tus clases, que serán utilizadas por el compilador o por los programas para ampliar las características estándar del lenguaje, basándose en las definiciones XData de su campo de acción.

Un ejemplo es IRIS Publisher, una aplicación de código abierto de la Comunidad, capaz de recopilar todas las definiciones de XData en formato HTML y/o Markdown, y que puede generar un Portal web con todos los documentos de la aplicación, recopilados a partir de estos elementos XData.

Aquí puedes ver todo el proceso:

El Publicador de IRIS en acción

Vamos a ver un ejemplo práctico. Sigue estos pasos:

  1. Accede al enlace https://openexchange.intersystems.com/package/IRIS-Publisher para descargar IRIS Publisher

  2. Clona el repositorio del proyecto en git en una carpeta local de tu elección: git clone https://github.com/yurimarx/iris-publisher

  3. Abre el código fuente del proyecto. Está en la carpeta iris-publisher. Con él vamos a crear algunos elementos XData

  4. Ve a la clase Person dentro de src/dc/Sample. Inspecciona las dos definiciones de XData de ejemplo que se encuentran entre las líneas 34 y 43

    /// Documentation for Person in HTML
    XData PersonDocHtml [ MimeType = text/html ]
    {
    <h1>This is the Person class</h1>
    }
     
    /// Documentation for Person in Markdown
    XData PersonDocMarkdown [ MimeType = text/markdown ]
    {
    <h1>This is the Person class in MD</h1>
    }
    </div>
    
    1. Hay 3 bloques grandes: el texto después de ///, donde es posible escribir una descripción del elemento XData; la propia definición de XData y MimeType (solo se capturan HTML y Markdown); y, finalmente, entre {}, todo el contenido HTML o Markdown que compondrá tu documentación. En este ejemplo utilizamos ambos, pero recomendamos definir solo uno de ellos
    2. Es posible anotar todas las clases del proyecto, o parte de ellas, con XData, para crear una documentación muy completa de tu aplicación
    3. Después de documentar tus clases usando XData, vamos a compilar los documentos del proyecto en el terminal. Ejecuta: docker-compose up -d --build
    4. Después de la ejecución, tu instancia estará activa y podrás ejecutar la API de IRIS Publisher
    5. Ejecuta http://localhost:52773/swagger-ui/index.html?Url=http://localhost:52773/api/mgmnt/v1/USER/spec/crud#/default/UpdateDocConfig para definir el título, la información del desarrollador y describir tu aplicación. Utiliza el siguiente contenido como ejemplo:
    {
    "SiteName":"Publisher",
    "Summary":"Documentation of the Publisher",
    "Description":"This an Application to generate documentation from XDATA",
    "DeveloperName":"Yuri Gomes",
    "DeveloperEmail": "yurimarx@gmail.com",
    "DeveloperWebsite": "ymservices.tech"
    }
    1. Ejecuta http://localhost:52773/swagger-ui/index.html?url=http://localhost:52773/api/mgmnt/v1/USER/spec/crud#/default/InitiatePublisher para generar la documentación e iniciar el Portal de Documentos para tu aplicación
    2. ¡Ve a http: // localhost: 8000 y consulta toda la documentación on line!

0
0 150
Artículo Eduardo Anglada · jul 27, 2021 2m read

Además de IntelliJ IDEA, ahora es posible configurar SublimeText3 para compilar código con él. Solo necesitarás el servidor de idiomas que hice.

Captura de pantalla

  • Descarga la última versión del Servidor de Idiomas desde la página de descargas, y extráela
  • Instala el archivo Package-Control en SublimeText3
  • Instala Syntax Highlighting para ObjectScript
  • Instala el plugin LSP
    • Package Control: Install Package busca LSP (nombre exacto), instálalo
  • Menú Preferences -> Package Settings -> LSP -> Settings
    • Actualiza el archivo de configuración para que sea algo parecido a lo siguiente, y en command configura la ruta correcta hacia el ejecutable extraído de Language Server para tu plataforma
      {
      

"clients": { "intersystems": { "enabled": true, "command": [ "PATH/TO/intersystems-ls" ], "languages": [ { "scopes": [ "source.objectscript" ], "languageId": "objectscript", "syntaxes": [ "Packages/ObjectScript.tmBundle/Syntaxes/objectscript.tmLanguage" ] }, { "scopes": [ "source.objectscript_class" ], "languageId": "objectscript_class", "syntaxes": [ "Packages/ObjectScript.tmBundle/Syntaxes/objectscript-class.tmLanguage" ] } ] } } }

  * Configura el acceso a IRIS 
    <pre>"LSP": {
"intersystems": {
  "settings": {
    "objectscript": {
      "conn": {
        "active": true,
        "host": "localhost",
        "ns": "USER",
        "superPort": 1972,
        "username": "_SYSTEM",
        "password": "SYS"
      }
    }
  }
}

}

  • El conjunto de comandos, LSP: Toggle Log Panel debería mostrar mensajes después de guardar los archivos modificados
0
0 91
Artículo Eduardo Anglada · jul 22, 2021 2m read

Os presento el soporte de InterSystems IRIS en IntelliJ IDEA. Este plugin añade soporte de Syntax Highlighting para ObjectScript, así como la auto importación y la compilación en el servidor después de guardar un archivo modificado. Utiliza LanguageServer escrito en Rust, donde se añadió la capacidad de importar y compilar código.

Instalación

  • Necesitarás la última versión de IntelliJ IDEA, con la Edición Community también es compatible. Probablemente otras ediciones de los productos de IntelliJ también sean compatibles, pero no se han probado
  • Descarga la última versión del plugin desde la página de versiones, no lo extraigas
  • Abre IntelliJ IDEA, ve a Settings, Plugins, icono Gear, Install Plugin from Disk, y selecciona el archivo descargado
  • Reinicia el entorno de desarrollo integrado (IDE)

Ahora puedes abrir cualquier carpeta con el código fuente de ObjectScript que ya tengas como un proyecto nuevo.

Y, en primer lugar, debes configurar la conexión a IRIS. Settings -> Languages & Frameworks -> InterSystems. Ten en cuenta que hay un puerto SuperServer, no uno de WebServer.

Después, cuando modifiques el archivo mac o cls, después de guardarlo, se importará al servidor y se compilará automáticamente.

0
0 383
Artículo Alberto Fuentes · jun 15, 2021 2m read

¿Os gustaría poder acceder al Terminal Web directamente desde vuestro VSCode?

Este es otro genial artículo de la serie de Tani Frankel sobre "Trucos y consejos de VSCode" y es bastante similar al anterior sobre el Asistente SOAP.

Es el mismo principio y se obtiene el mismo resultado, aunque el caso de uso es diferente.

Supongamos que quieres abrir desde VSCode el WebTerminal (para quienes aún no están familiarizados con esta excelente herramienta diseñada por el increíble @Nikita Savchenko, consulten la web del proyecto).

Puedes adoptar un enfoque similar al del artículo anterior. Describimos nuevamente cuáles son los pasos:

  • En la configuración (settings) de JSON, abre la extensión de ObjectScript
  • En el objeto "conn", añade un objeto "links"
  • Dentro de "links" añade esta línea:
            "$(terminal) WebTerminal": "${serverUrl}/terminal/?ns=${ns}${serverAuth}"

Esto se verá así:

 

Una vez hecho esto, cuando hagas clic en la opción Connection en la parte inferior de la barra de estado de VSCode, deberías encontrar el Terminal web en el menú.

Esto se mencionó en este debate sobre Problemas con VSCode que se encuentra en el GitHub VSCode ObjectScript (acerca de las variables ${...} que se utilizaron en la URL anterior), con comentarios de @John Murray 

Os dejo un breve GIF mostrando el proceso (comienza con el menú estándar y termina con la opción de lanzar el Terminal web).

 

0
1 288
Artículo Alberto Fuentes · jun 8, 2021 3m read

Otro artículo sobre "Trucos y consejos de VSCode" -

¿Quieres ver esta opción en VSCode?

Esta vez nos centraremos en cómo obtener el Asistente SOAP (*SOAP Wizard*) tal y como estaba disponible en Studio — para definir un cliente de servicio web SOAP basado en WSDL (y *Business Operation*), o servicio —.

Si trabajas con Servicios web (Web services), lo más probable es que hayas utilizado el Asistente SOAP en Studio. Lo abrirías en Tools > Add-Ins:

Y este abría una "Server Template":

En VSCode, puede que te preguntes cómo puedes acceder a eso.

Bueno, el hecho básico que hay que comprender es que realmente este complemento o asistente es simplemente una página web, que se muestra en Studio como hemos visto anteriormente y, como tal, también se puede acceder a ella desde un simple navegador. VSCode facilita la apertura de dicho navegador con el contenido deseado (construyendo la URL correcta con el nombre del servidor, el puerto, la aplicación web, etc.).

El resultado sería el mismo que ver una opción para abrir el Portal de administración o la Referencia de clase (con las URLs correspondientes) al hacer clic en la Conexión del servidor sobre la barra de estado inferior de VSCode, por ejemplo:

También verás una entrada para el Asistente SOAP.

Puedes conseguir esto al añadir una entrada 'links' a tu objeto 'conn' que se encuentra en tu configuración de JSON de tu extensión ObjectScript, y especificando la URL deseada (utilizando las variables correspondientes).

Esto se mencionó en un debate sobre Problemas con VSCode que se encuentra en el GitHub VSCode ObjectScript, como problema "Asistente SOAP", con comentarios de @John Murray y @Ondřej Hoferek, y también se menciona en esta respuesta de @Timothy Leavitt a una pregunta de la Comunidad.
 

El valor JSON sería:

"SOAP Wizard": "${serverUrl}/isc/studio/templates/%25ZEN.Template.AddInWizard.SOAPWizard.cls?Namespace=${namespace}${serverAuth}"

Y esta parte se vería así:

Una vez que tengas esto, verás una opción adicional cuando hagas clic en la Conexión -

Y al elegir esa opción accederás al esperado asistente (abierto en un navegador):

Os dejo un breve GIF mostrando este proceso (comienza por el menú normal al hacer clic en la Conexión, y termina con el menú que incluye el Asistente SOAP).

 

Fíjate que hay otros asistentes (o plantillas) que puedes añadir de esta manera (como el Asistente XSD, por ejemplo).

2
1 1128
Artículo Jose-Tomas Salvador · mar 31, 2020 6m read

Esta vez quiero hablar de algo que no es específico de InterSystems IRIS, pero que creo que es importante si quieres trabajar con Docker y tu máquina de trabajo es un PC o portátil con Windows 10 Pro o Enterprise.

Como probablemente sabes la tecnología de contenedores viene básicamente del mundo Linux y, a día de hoy, es en los hosts que corren Linux donde pueden mostrar su máximo potencial. Los que usamos Windows vemos que tanto Microsoft como Docker han hecho grandes esfuerzos estos últimos años y nos permiten correr contenedores Linux en nuestro sistema Windows de una manera muy sencilla... pero no está soportado para entornos productivos y, aquí viene el gran problema, no es fiable si queremos mantener persistencia de datos fuera del contenedor, en el sistema host,...  debido principalmente a las importantes diferencias entre los sistema de archivos de Windows y Linux. Al final el propio Docker for Windows utiliza una pequeña máquina Linux virtual (MobiLinux) sobre la que realmente se levantan los contenedores.... lo hace de forma transparente para el usuario de windows... y de hecho funciona muy bien hasta que, como digo, quieren hacer que tus bases de datos sobrevivan más allá de la vida del contenedor...

En fin,... que me enrollo,... el caso es que muchas veces, para evitar problemas y simplificar, lo que se precisa es de un sistema Linux completo... y, si nuestra máquina es Windows, la única forma de tenerlo es vía una máquina virtual. Al menos hasta que salga WSL2 en Windows 10 en unos meses, pero eso es otra historia.

En este artículo te voy a contar, paso a paso, como instalar un entorno en el que puedas trabajar con contenedores Docker sobre un Ubuntu en tu servidor Windows. Vamós allá...

3
0 8264
Artículo Alberto Fuentes · jun 1, 2021 4m read

¡Hola Comunidad!

¿Necesitas conectar tu VSCode a un servidor de InterSystems? Le echamos un vistazo hoy a un gran truco que nos pasa Tani Frankel

¿Has oído hablar de esta opción?

Con cada vez más personas usando VSCode como IDE para nuestros productos, pensé que podría ser beneficioso ir ofreciendo pequeños trucos y consejos para ayudar a la gente a empezar a utilizarlo y a ser más productiva. Así que, con esta publicación, comienzo la serie de pequeños artículos.

Unas aclaraciones importantes:

  1. Esto no pretende ser un tutorial ni un método de aprendizaje formal - si buscas uno de ellos, puedes echar un vistazo a este excelente ejercicio online o revisar esta estupenda sesión de nuestro último Virtual Summit. 

  2. Estos "Trucos y consejos" no son de mi invención - normalmente ya están documentados o se mencionan en algún lugar, yo solo quería reunirlos y quizá ofrecer un poco más de orientación o ejemplos. Trataré de referirme a la fuente cuando sea importante.

  3. Aunque ya he anotado algunas ideas y temas que quiero cubrir en esta "serie", no sé cómo de rápido voy a ser capaz de publicarlas, así que no puedo comprometerme con la frecuencia con la que aparecerán...

Aquí va el primero de los "trucos y consejos":

Una de las primeras cosas que tendrás que hacer en VSCode es definir tus conexiones al servidor. Puedes hacerlo manualmente dentro del archivo de Configuración (Settings) de JSON en la extensión InterSystems Server Manager, o pulsando el signo (+) mientras intentas conectarte a un servidor (y respondes a las indicaciones), pero si estás en Windows, simplemente puedes importar tus definiciones del servidor desde el Registro de Windows.

De hecho, esto está documentado como parte de la documentación de la extensión InterSystems Server Manager - en el Marketplace de extensiones de VSCode, en el archivo Readme del Repositorio GitHub, y como se muestra en la página de Detalles de la extensión dentro del propio VSCode, realmente todo el mismo texto...) -

En Windows, puedes ejecutar Import Servers from Registry desde Command Palette para crear entradas de conexión para todas las conexiones que hayas definido previamente con InterSystems Server Manager.

  Cuando instalas una instancia en un equipo con Windows, o defines servidores para un cliente por medio de la herramienta Server Manager, se actualiza el Registro de Windows.

Por ejemplo, tenía un cliente con 9 servidores diferentes, a los que podría querer conectarse (entornos de Producción / Desarrollo / Pruebas, LAN vs. DMZ, etc.); otro cliente tiene incluso más (muchos más). Hacer esto uno por uno en VSCode podría ser tedioso (y propenso a errores humanos). 

Supongamos que, por ejemplo, tengo esta situación en mi equipo, como se define en InterSystems Server Manager -

Puedo utilizar la opción "Import Servers From Registry" en la extensión InterSystems Server Manager.

Simplemente abre Command Palette (View -> Command Palette... o Ctrl+Mayúscula+P), empieza a escribir "InterSystems" después del carácter > y deberías ver esta opción -

Otra opción que puedes utilizar es hacer click en los ... (3 puntos) en la esquina superior derecha del panel de InterSystems Tools, y te aparecerá la opción:

A continuación, se te pedirá un nombre de usuario (Username) para conectarse a uno de los servidores (no tienes que introducir uno si no quieres que se guarde, sino que se te pedirá cada vez que te conectes), luego una contraseña, si quieres guardar la contraseña para todos los demás servidores también (no tienes que guardar la contraseña en absoluto si no quieres) y entonces se añadirán todas las definiciones del servidor.

Por ejemplo, según la imagen del Server Manager de arriba (y asumiendo que proporcioné un nombre de usuario de SuperUser, así es como se verá la configuración de JSON después de la importación -

Aquí os dejo un breve GIF mostrando este rápido proceso (comienza con solo tener definidas las 3 conexiones predeterminadas del servidor, y termina con los 5 servidores adicionales según el ejemplo anterior):

 

0
0 168
Artículo Alberto Fuentes · mayo 19, 2021 1m read

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

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

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

¿Cómo se logra esto en VSCode?

En realidad es bastante sencillo, con Ctrl + T (por ejemplo, en Windows), o Go -> Go to Symbol en el espacio de trabajo..., escribes el nombre de la clase... ¡y listo!

Por ejemplo:

Esta solución fue mencionada por @Dmitry Maslennikov como una sugerencia para un informe de incidencias en GitHub (marcada como enhacement request, mejora del productopara este tipo de funciones - "Abrir la clase por su nombre desde el servidor".

Este es un breve GIF para demostrar cómo funciona:

 

0
0 974
Artículo Eduardo Anglada · abr 28, 2021 3m read

Ahora que la extensión de ObjectScript para VS Code ha alcanzado la versión 1.0 y ha sido presentada en varias sesiones de la Cumbre Virtual 2020, parece un buen momento para ofrecer algunos consejos sobre cómo reportar problemas.

InterSystems ObjectScript para VS Code se basa en tres extensiones de VS Code que colaboran entre sí. Para facilitar la instalación y la administración hay una cuarta entidad, el paquete de extensiones de InterSystems ObjectScript. Es la mejor manera de empezar con un mínimo de clics y es práctico tenerlo incluso si ya habéis instalado las otras extensiones.

Esta arquitectura modular también significa que hay tres repositorios diferentes de GitHub donde se pueden crear incidencias. Afortunadamente, el propio VS Code ayuda con la tarea. A continuación, te explicamos cómo utilizarlo:

  1. Desde el menú Help en VS Code, selecciona Report issue. O abre la Command Palette (normalmente hago esto presionando la tecla F1) y ejecuta Help: report issue... (Truco: escribe solo hri y comprueba lo rápido que te lleva al comando correcto).

  2. Aparece un diálogo como este:

  3. Utiliza el primer campo para clasificar tu incidencia:

    • Bug report -> Reportar un error
    • Feature request -> Solicitar una nueva funcionalidad
    • Performance Issue -> Problema de rendimiento
  4. En el segundo campo, selecciona "An extension".

  5. El tercer menú desplegable te permite elegir una de tus extensiones instaladas. También puedes escribir algunos caracteres para encontrar la entrada correcta. Por ejemplo, isls selecciona rápidamente "InterSystems Language Server". ¿Cuál elegir? Esta es una guía aproximada:

    • InterSystems Language Server * code colo(u)ring -> código de colores * Intellisense
    • InterSystems ObjectScript
      • export, import and compile -> exportar, importar y compilar
      • ObjectScript Explorer (navegar por el contenido del namespace)
      • Edición directa del lado del servidor por medio del uso de carpetas isfs:// en un espacio de trabajo
      • Integración con el control de fuentes del lado del servidor, etc
    • InterSystems Server Manager
      • Administración de contraseñas en la cadena de claves
      • Definición y selección de entradas en `intersystems.servers`

    Si no puedes decidir, selecciona InterSystems ObjectScript.

  6. Escribe un resumen descriptivo de una sola línea sobre tu incidencia. El diálogo puede ofrecer una lista de incidencias existentes que podrían estar duplicadas. Si no encuentras una que cubra la tuya, continúa.

  7. Comienza introduciendo detalles. En esta etapa normalmente escribo un solo carácter, después hago clic en "Preview on GitHub" para iniciar una página del navegador donde puedo utilizar la conocida interfaz de usuario de incidencias GH para completar mi reporte. Consejos para utilizarlo allí:

  • Pega las imágenes del portapapeles directamente en el campo de informe en GH. Para incidencias difíciles de describir, un GIF animado obtiene puntos de bonificación.
  • Vincula a otras incidencias poniendo delante del número de destino el símbolo #
  • Recuerda que todo lo que publiques aquí es visible para cualquier persona en Internet. Enmascara/elimina la información confidencial. Sé amable.
  1. Cuando estés satisfecho con lo que has escrito (consejo: utiliza la pestaña Preview), haz clic en "Submit new issue".

Al usar Help: report issue... los números de tu versión se agregan automáticamente.

El artículo original, escrito por John Murray, se puede encontrar aquí.

0
0 99
Artículo Nancy Martínez · abr 20, 2021 2m read

Al trabajar desde casa durante estos "días de coronavirus", me faltan recursos.

  • no tengo ninguna máquina Linux disponible
  • espacio en disco limitado

Además, Docker Desktop (en Windows10) bloqueó de alguna manera los scripts de Durable %SYS como se describe aquí.
Investigando el caso, descubrí que se almacenaban muchos más datos de los que realmente necesitaba.
Así que diseñé mi durabilidad personalizada.

De forma similar a lo que hice tiempo atrás para los contenedores de Caché.

Utilizando las características de **iris-main **agrego un script de pre-procesamiento para iniciar mi contenedor con 

Después de que termina, guardo lo que creo necesitar para el próximo inicio.

Y eso es bastante menos.
De acuerdo: Puede que se me escapen algunas cosas y finalmente es más lento en start/stop. Muy bien. ¡Pero está en mis manos!
  Los scripts para ejecutar y también los datos guardados están almacenados en el directorio externo que necesito para la licencia.
Y esos scripts son bastante sencillos:

# post.copy
cp -uf /usr/irissys/iris.cpf /external/iris.cpf
cp -uf /usr/irissys/mgr/IRIS.DAT /external/mgr/IRIS.DAT
cp -uf /usr/irissys/mgr/messages.log /external/console.log

y

# pre.copy
cp -f /external/iris.cpf /usr/irissys/iris.cpf
cp -f /external/mgr/IRIS.DAT /usr/irissys/mgr/IRIS.DAT
rm -f /usr/irissys/mgr/messages.log

Como no hay nada que configurar en la primera ejecución, omito pre.copy como la primera ejecución hecha.
Por lo demás, mi comando de ejecución en Docker tiene el siguiente aspecto:

docker run --name iris1 --init -it 
 -p 52773:52773 -p 51773:51773 
 --volume c:/external:/external 
 --rm 
intersystems/iris:2020.2.0.198.0 
  --key /external/key/iris.key 
  -e /external/post.copy 
  -b /external/pre.copy 

Si tiempo después descubro que necesito guardar/recuperar algo más (por ejemplo, para CSP, ... ) es fácil añadirlo.
La clave del éxito fue dejar la base de datos IRISSYS en la ubicación que se incluye en el contenedor. Su tamaño de ~92 MB (en mi caso) no es relevante.

0
0 115
Artículo Yuri Marx · feb 4, 2021 1m read

Con https://openexchange.intersystems.com/package/IRIS-Publisher puedes documentar tu IRIS Application y generar el Portal Web con Documentación de la Aplicación (responsive). Mira los resultados:

Página principal:

Menú "Clases" y página "Clase": La página "clase" con documentación de la clase, la lista de métodos y propiedades.

Navigation and Search bar: 

Cuadro de búsqueda:

Página "Sobre nosotros": tus contactos

Cambia el tema:

 

0
0 92
Artículo Yuri Marx · dic 23, 2020 1m read

¡Hola Comunidad!

Yo utilizo un excelente servicio para recoger el tiempo que dedico a programar. Es el WakaTime: https://wakatime.com/.

Este servicio se integra con la mayoría de los IDEs, incluyendo VSCode, y recoge el tiempo dedicado por proyecto, lenguaje, IDE... y estadísticas de código general. Mira mis últimos 7 días:

Esta información me ayuda a organizarme y equilibrar mis objetivos por proyecto.

Para utilizar Waka, inicia sesión en el servicio: https://wakatime.com/signup. Y en tu VSCode, en "Extensiones", busca Waka. Mira:

0
0 356
Artículo Mathew Lambert · jul 31, 2020 2m read

¡Hola desarrolladores!

Después de trabajar un poco con IRIS, queremos compartir con vosotros la "caja de herramientas" para InterSystems IRIS: ToolBox-4-Iris.

¿En qué consiste?

ToolBox-4-Iris es una API para IRIS que incluye un conjunto de herramientas muy útiles, no disponibles en IRIS y que simplifican enormemente el desarrollo de aplicaciones. Permite ahorrar tiempo y esfuerzo en las "herramientas típicas" que todo desarrollador necesita. Esto incluye clases adicionales, métodos individuales o incluso macros más eficientes, que se describen en sus respectivos paquetes.

Contenido

0
0 152
Artículo Mathew Lambert · jul 24, 2020 2m read

¡Hola desarrolladores!

Estoy seguro de que la mayoría de vosotros ya conoceis la posibilidad de usar GZIP en los productos de InterSystems. Pero el problema es que GZIP trabaja con un único archivo o flujo de datos, y no admite carpetas. Al trabajar con sistemas Unix, es posible solucionarlo con la herramienta de compresión tar, incluida en cada sistema Linux de forma predeterminada. Pero ¿qué hacer si debemos trabajar también en Windows, que no lo incluye?

Me alegra poder enseñaros el nuevo proyecto, isc-tar, que os ayudará a no preocuparos del sistema operativo y os permitirá gestionar los archivos tar en cualquier sitio.

0
0 109
Artículo Mathew Lambert · jul 15, 2020 4m read

¡Hola desarrolladores!

Aquí podéis ver el anuncio del proyecto isc-tar de @Dmitriy Maslennikov. En ocasiones, la historia de porque se ha llegado a un resultado es igual o más interesante que el resultado: cómo se construyó, cómo funciona y qué sucede en torno al proyecto. Esta es la historia:

  • Cómo desarrollar este proyecto
  • Cómo probarlo
  • Cómo lanzar nuevas versiones para publicar
  • Cómo automatizar todo lo anterior
  • Integración continua

Os hablaré de todo eso.

0
0 134
InterSystems Official Jose-Tomas Salvador · abr 16, 2020

Estoy encantado de anunciar que InterSystems se unirá a la comunidad de código abierto (open source) en el proyecto de Extensión de Visual Studio Code para InterSystems ObjectScript. A principios de este año Raj Singh publicó que emprendíamos un viaje para redefinir el futuro de nuestra estrategia en relación al IDE, y llegamos a la conclusión de que es Visual Studio Code el IDE que puede soportar ese futuro. Es rápido, estable, rico en funcionalidad, y construido sobre una arquitectura tecnológica moderna que nos da la posibilidad de ofrecerte una funcionalidad como nunca antes para tu

0
0 124
Artículo Mathew Lambert · feb 21, 2020 1m read

Estaba buscando la forma mas simple de conectar desde el visual studio code a mi instancia local por el terminal sin tener que ir cambiando de ventana.

Soy consciente de que esto tambien se puede conseguir por telnet pero me parece complicar la cosa para conectarme a mi local.

La solución mas sencilla me ha parecido navegar a la carpeta /bin de la instalación (o añadirla al PATH), y ejecutar .\csession.exe NOMBREDEINSTANCIA.

De hecho si tienes añadidas instancias remotas como conexiones, también se puede acceder a ellas.

Eso es todo!

0
0 278