Anúncio Evgeny Shvarov · Nov. 16, 2021

Olá Desenvolvedores!

Aqui estão os bônus tecnológicos para o Concurso de Segurança 2021 que irão fornecer mais pontos para seus projetos:

  • Uso de Autenticação Básica - 2
  • Uso de Autenticação Bearer/JWT - 3
  • Uso de OAuth 2.0 - 5
  • Uso de componentes de Autorização - 2
  • Uso de Autitoria - 2
  • Uso de Criptografia de Dados - 2
  • Uso de contêiner Docker - 2 
  • Implantação com pacote ZPM - 2
  • Demonstração Online - 2
  • Validação da Qualidade de Código - 1
  • Artigo na Comunidade de Desenvolvedores - 2
  • Vídeo no YouTube - 3

Vejam os detalhes abaixo.<--break-><--break->

0
0 68
Anúncio Evgeny Shvarov · Ago. 27, 2021

Olá Desenvolvedores!

Aqui estão os bônus tecnológicos para o Concurso InterSystems IRIS Analytics que irão fornecer pontos extras na votação.

Uso de Cubos do Adaptive Analytics (AtScale) - 4 pontos
O InterSystems Adaptive Analytics fornece a opção de criar e utilizar cubos do AtScale em soluções analíticas.

Você pode utilizar o servidor AtScale que disponibilizamos para o concurso (a URL e as credenciais podem ser obtidas através do Canal do Discord) para utilizar os cubos ou criar o seu próprio e conectar com seu servidor IRIS através de JDBC.

A camada de visualização para sua solução analítica com o AtScale pode ser construída com o uso do Tableau, PowerBI, Excel ou Logi.

Documentação, Documentação do AtScale

Treinamento

0
0 86
Anúncio Evgeny Shvarov · Ago. 16, 2021

Olá Comunidade e Parceiros InterSystems!

Estamos orgulhosos em compartilhar as grandes novidades para Membros do Diretório de Parceiros InterSystems:
Aqui está uma lista de serviços que vocês podem utilizar para ganharem maior visibilidade em nossa Comunidade InterSystems.

Como um parceiro você pode solicitar um destes serviços inteiramente grátis a cada seis meses:

Voucher de Campanha Google AdWord de US$1.000
Nós iremos configurar e lançar a campanha para você

0
0 88
Anúncio Evgeny Shvarov · Ago. 16, 2021

Olá Desenvolvedores!

No momento estamos vivenciando problemas técnicos com o login na Comunidade de Desenvolvedores e você pode não conseguir se logar e contribuir para a Comunidade de Desenvolvedores.

Nossos engenheiros já estão trabalhando na solução destes problemas então, estamos comprometidos com uma solução rápida para o mesmo.

Para se manter em contato, vamos continuar nossas discussões técnicas no Servidor Discord para Desenvolvedores InterSystems 👈

Obrigado pela sua paciência!

0
0 68
Anúncio Evgeny Shvarov · Jul. 7, 2021

Olá Desenvolvedores!

Aqui estão os bônus tecnológicos para o Concurso Programação de Inteligência Artificial InterSystems que irão garantir pontos extras a seus projetos durante a votação.

Uso do IntegratedML - 4 pontos

Utilize o IntegratedML da InterSystems em sua solução de IA/ML. Aqui está o modelo que o utiliza.

Se certifique de que a versão da plataforma de dados InterSystems IRIS que você está utilizando não seja anterior a 2021. As imagens mais recentes do IntegratedML com ZPM são:

intersystemsdc/iris-ml-community:2021.1.0.215.0-zpm
intersystemsdc/irishealth-ml-community:2021.1.0.215.0-zpm

Utilização do R Gateway e do Python gateway - 4 pontos

A versão 2021 da plataforma de dados InterSystems IRIS possui duas novas funcionalidades - O gateway para R e o gateway para Python. Aqui está o modelo de como utilizar o gateway para R. E aqui uma pequena demosntração de como utilizá-lo.

Uso do Python Incorporado - 4 pontos

O Python Incorporado é uma nova funcionalidade da plataforma de dados InterSystems IRIS que lhe dá a opção de utilizar o python como "cidadão de primeira classe" no desenvolvimento da lógica de de negócio no backend com as classes InterSystems. Pequena demonstração do Python Incorporado.

O Python Incorporado pode ser utilizado através de imagens sob demanda que são disponibilizadas através do Programa de Acesso Antecipado InterSystems  (EAP). Você pode solicitar a participação no programa enviando mensagem para python-interest@intersystems.com.

Aqui está o pacote de modelo de como utilizar o Python Incorporado utilizando a implantação via ZPM. Não se esqueça de alterar a imagem do modelo pela imagem que você receberá após solicitar a participação no Programa de Acesso Antecipado InterSystems.

Uso de PMML - 4 pontos

O PMML  - Predictive Modelling Markup Language  (formato de intercâmbio de modelos preditivos baseado em XML) pode ser utilizado para construir soluções de IA/ML com a plataforma de dados InterSystems IRIS. Veja mais na documentação.

Aqui você encontra um exemplo de como utilizar o PMML no Open Exchange.

0
0 73
Anúncio Evgeny Shvarov · Mar. 24, 2021

Olá Comunidade!

Nós gostariamos de convidá-los para se juntar a nossa plataforma de gamificação da InterSystems chamada de Global Masters!

O  Global Masters é nossa plataforma de engajamento de  clientes onde você será convidado a se divertir completando desafios divertidos,  ganhando distintivos pela sua contribuição à Comunidade de Desenvolvedores, se comunicando com outros participantes e acumulando pontos que podem ser resgatados e trocados por uma variedade de recompensas e honras especiais.

0
0 88
Artigo Evgeny Shvarov · Nov. 30, 2020 2m read

Olá, desenvolvedores!

Suponha que você publicou sua aplicação no Open Exchange com a versão 1.00. E, então, você adicionou um novo recurso excelente e faz um novo lançamento.

Você também pode fazer um novo lançamento da sua aplicação no Open Exchange.

Por que fazer lançamentos no Open Exchange? 

Esta é uma maneira de você destacar os novos recursos da sua aplicação. Quando você publica um novo lançamento, acontece o seguinte:

As notas de lançamento aparecem na página de Notícias do Open Exchange

A versão de sua aplicação muda

A aba de Histórico de Versão é atualizada

Todos os seus seguidores, sua aplicação ou sua empresa recebem uma notificação por e-mail.

O resumo semana e mensal do Open Exchange no OEX e no Developer Community incluirá uma nota sobre o seu lançamento.

Como fazer um novo lançamento

Abra a página da aplicação publicada e clique em Configurações-> Editar:

Faça alterações na descrição ou tag, se a nova versão trouxer essas alterações, e clique em Salvar. Salve-a mesmo que você não tenha nenhuma alteração nas propriedades da aplicação.

Em seguida, clique em 'Enviar  para aprovação para atualizar a versão e enviar as Notas de Lançamento:

Você verá a janela com o número da versão e notas de lançamento. 

Nós aumentamos automaticamente a versão secundária no número da versão atual, mas depende de você qual versão lançar ou até mesmo não alterar o número da versão. As notas de lançamento suportam Markdown, então prepare o texto markdown em qualquer editor compatível (ex., VSCode) e copie-o e cole-o aqui. Em seguida, clique no botão Enviar:

O markdown que enviei aqui:

## Atualização de imagem docker InterSystems IRIS 

Nesta versão eu atualizei uma imagem [InterSystems Docker](https://hub.docker.com/publishers/intersystems) com a nova versão 2019.4

Assim que a versão for aprovada, as notas de lançamento serão enviadas a todos os seus assinantes e publicadas na página de Notícias:

Envie seus comentários abaixo se você tiver alguma dúvida e também envie sugestões e relatórios de bug aqui.

Faça novos lançamentos de suas aplicações InterSystems no Open Exchange e fique atento!

0
0 69
Artigo Evgeny Shvarov · Nov. 9, 2020 4m read

Olá Comunidade!

Como você sabe, temos o nosso marketplace para soluções e ferramentas das Plataformas de Dados InterSystems, o InterSystems Open Exchange!

Mas como publicar sua aplicação no OE?

Antes de começar, deixe-me responder a algumas perguntas básicas.

Quem pode publicar?

Basicamente, todo mundo. Você pode entrar no Open Exchange com a sua conta do InterSystems Developer Community ou da Central de Suporte (WRC).

O que é uma aplicação?

Uma aplicação Open Exchange é uma solução, ferramenta, adaptador de interoperabilidade e interfaces, desenvolvidas usando qualquer produto das Plataformas de Dados InterSystems: Caché, Ensemble, HealthShare, InterSystems IRIS ou InterSystems IRIS for Health.

Ou esta ferramenta ou solução deve ajudar no desenvolvimento, testes, implantação ou gerenciamento de soluções nas Plataformas de Dados InterSystems.

O que é uma aplicação para Open Exchange? 

Na verdade, é o nome, descrição e o conjunto de links para as entradas da aplicação: página de download, documentação, repositório de código (se houver), licença, etc.

Deixe-me ilustrar o processo com um exemplo pessoal.

Enviando uma aplicação para o Open Exchange

Para ilustrar o procedimento, desenvolvi uma aplicação fantástica em ObjectScript para o InterSystems IRIS e quero compartilhá-la com o Developer Community: Ideal ObjectScript.

Ela demonstra o uso ideal das diretrizes de codificação do ObjectScript para vários casos de uso com ObjectScript.

Existem campos obrigatórios que devem ser apresentados em todas as aplicações no Open Exchange.

  1. Nome - um nome único no Open Exchange para a aplicação

  2. Descrição - descrição da aplicação. O campo suporta markdown.

  3. URL do Produto - o link para uma página de download da sua aplicação. 

  4. Licença - o link para a página que exibe a licença da sua aplicação.

  5. Plataformas de Dados InterSystems - conjunto de Plataformas de Dados InterSystems que sua aplicação se destina.

Todos os demais campos são opcionais.

Então, vamos enviar a minha aplicação.

Eu tenho o nome: Ideal ObjectScript

Descrição: O Ideal ObjectScript demonstra o uso ideal das diretrizes de codificação do InterSystems ObjectScript para vários casos de uso com ObjectScript.

URL do Produto: https://github.com/evshvarov/ideal_objectscript/releases/tag/1.0  - o link para a versão 1.0 da aplicação na seção de lançamentos do GitHub.

URL da Licença: https://github.com/evshvarov/ideal_objectscript/blob/1.0/LICENSE - o link para o arquivo da LICENÇA da aplicação.

Plataformas de Dados InterSystems: E a aplicação suporta InterSystems IRIS, Caché e Ensemble - esta é a lista de produtos InterSystems com os quais eu mesmo testei a aplicação.

Com isso, estamos prontos para enviar a aplicação.

Versão da aplicação

Depois de clicar em Enviar para aprovação, você precisa fornecer a versão da aplicação e as notas da versão. Usamos o Semver para controle de versão. As notas de lançamento serão publicadas na seção de notícias do Open Exchange, Redes Sociais DC e histórico de versão da aplicação.

Depois disso, a aplicação entra no fluxo de trabalho de aprovação que resulta com a aprovação automática no OpEx ou com algumas recomendações de como corrigir as descrições e links da aplicação.

Inserir 

Parâmetros adicionais

URL da Imagem

Coloque uma URL para o ícone de imagem de sua aplicação que será exibida em um bloco. Você pode omitir isso e o ícone do OpEx será mostrado.

URL do GitHub

Coloque o link para o repositório no GitHub de sua aplicação se você o tiver. Temos a integração com o GitHub no Open Exchange, portanto, se você inserir o link para o repositório de sua aplicação, o Open Exchange mostrará a descrição no GitHub automaticamente (tudo o que está listado no Readme.md). Ex. veja como a página do Ideal ObjectScript é exibida no Open Exchange.

URL do Artigo da Comunidade

É claro que você pode falar sobre a sua aplicação no Developer Community com um bom artigo, então coloque a URL dele aqui!

Como você pode ver o procedimento é muito simples! Estou ansioso para ver suas aplicações para a Plataformas de Dados InterSystems no Open Exchange!

Mantenha-se informado!

0
0 90
Artigo Evgeny Shvarov · Out. 26, 2020 5m read

Olá, desenvolvedores!

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

Quero compartilhar com vocês um novo recurso bem maneiro que descobri no novo lançamento 0.8 do plugin VSCode ObjectScript de @Dmitry Maslennikov e CaretDev.

O lançamento traz uma nova configuração "docker-compose", que resolve o problema com as portas necessárias para fazer o VSCode Editor se conectar à IRIS. Não era muito conveniente se você tivesse mais de um contêiner Docker com a IRIS em execução na mesma máquina. Agora, esse problema foi resolvido!

Veja abaixo como funciona.

O conceito de usar o Docker localmente para desenvolvimento com a IRIS  pressupõe que você tem o dockerfile e o docker-compose.yml no repositório usado para compilar o ambiente do projeto e carregar todo o código ObjectScript no contêiner IRIS obtido pelo Docker Hub. Além disso, você tem o arquivo .vscode/settings.json do VSCode no repositório ao qual você aponta a porta de conexão do servidor web IRIS (junto com outras configurações de conexão, como URL, Namespace e credenciais de login).

A pergunta é: qual é a porta à qual o VSCode deve se conectar?

Você pode usar a porta 52773, que é a porta IRIS padrão para servidores web. Mas, se você tentar iniciar o segundo contêiner do Docker, haverá uma falha, pois você não pode executar dois contêineres do Docker na mesma máquina que esperam conexões pela mesma porta. Mas você pode expor uma porta externa para o contêiner do Docker, e isso pode ser configurado por um arquivo docker-compose.yml. Veja um exemplo (a porta mapeada está em negrito):

version: '3.6'
services:
  iris:
    build: .
    restart: always
    ports:
      - 52791:52773
    volumes:
      - ~/iris.key:/usr/irissys/mgr/iris.key
      - ./:/irisdev/app

No docker-compose, você deve inserir a mesma porta em .vscode/settings.json:

Mas qual é o problema?

O problema é que, quando você expõe seu projeto como uma biblioteca ou demonstração e convida pessoas a executar e editar o código com o VSCode, você não quer que elas configurem a porta manualmente e quer que elas clonem o repositório, executem o Docker e tenham a opção de colaborar imediatamente. Eis a pergunta: no docker-compose, a que você deve mapear seu projeto para que não haja conflito com o ambiente de outra pessoa?

Mesmo se você não o expuser a ninguém exceto você mesmo, que porta deve colocar nas configurações de conexão do .vscode/settings.json?

A resposta é: quando você inicia um novo Docker com a IRIS, é exibida a mensagem de erro dizendo que a porta já está sendo usada e que você deve interromper os outros contêineres ou inventar uma nova porta que provavelmente não esteja em uso e tentar usá-la no docker-compose e settings.json.

Que chatice! É uma operação inútil que gasta tempo demais. Ninguém gosta de fazer isso.

O mesmo ocorre se você expuser a biblioteca.

O alívio chegou com o novo lançamento 0.8 do VSCode ObjectScript, em que você pode incluir uma seção docker-compose, que resolve o problema para sempre:

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

A seção contém os parâmetros "service" e "internalPort", que informam ao VSCode que, para encontrar a porta de conexão, deve-se verificar o arquivo docker-compose.yml que temos no mesmo repositório, encontrar "iris" na seção "service" e obter a porta, mapeada para a porta interna 52773.

Viva!

O mais maneiro é que agora o Docker tem o modo para docker-compose.yml em que você pode não configurar nenhuma porta no Docker. Você pode deixar o símbolo "-" na porta mapeada, e o Docker usará uma porta disponível aleatoriamente. 

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

Viva de novo! Agora, você tem uma opção para não se preocupar mais com as portas do servidor web da IRIS às quais o VSCode se conecta.

Como funciona nesse caso: executamos o docker-compose.yml, o Docker escolhe uma porta aleatória do servidor web e executa a IRIS com ela, o VSCode obtém essa porta pelo Docker e conecta-se à IRIS por ela, e você pode editar e compilar o código imediatamente. Sem nenhuma configuração adicional.

Não tem nada melhor que isso!

E você pode fazer o mesmo com o seguinte modelo que enviei recentemente de acordo com o novo recurso do VSCode ObjectScript 0.8, que atualizou o settings.json e o docker-compose.yml. Para testar o modelo, execute os comandos abaixo no terminal (testados no Mac). Você também precisa do git e do Docker Desktop instalados. 

$ git clone https://github.com/intersystems-community/objectscript-docker-template.git

$ cd objectscript-docker-template

$ docker-compose up -d

Abra essa pasta no VSCode (é preciso ter o plugin VScode ObjectScript instalado):

Verifique se o VSCode está conectado – clique na linha de status do VSCode:

Reconecte o VSCode, se necessário.

Você pode abrir o IRIS Terminal no VSCode, se necessário, com o menu ObjectScript.

Concluído! Agora, você pode executar, compilar e depurar o código!

Viva a programação!

0
0 171
Artigo Evgeny Shvarov · Out. 6, 2020 13m read

Olá, desenvolvedores!

Muitos de vocês publicam suas bibliotecas InterSystems ObjectScript no Open Exchange e GitHub.

Mas o que você faz para facilitar o uso e a colaboração do seu projeto por desenvolvedores?

Neste artigo, quero apresentar uma maneira fácil de iniciar e contribuir com qualquer projeto ObjectScript apenas copiando um conjunto padrão de arquivos para o seu repositório.

Vamos lá!

Copie esses arquivos deste repositório para o seu repositório:

Dockerfile

docker-compose.yml

Installer.cls

iris.script

settings.json{#9f423fcac90bf80939d78b509e9c2dd2-d165a4a3719c56158cd42a4899e791c99338ce73}

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

E você agora possui uma maneira padrão de lançar e colaborar com seu projeto. Abaixo está o longo artigo sobre como e por que isso funciona.

OBS.: Neste artigo, consideraremos projetos que podem ser executados no InterSystems IRIS 2019.1 e versões mais recentes.

Escolhendo o ambiente de lançamento para projetos do InterSystems IRIS

Normalmente, queremos que um desenvolvedor teste o projeto/biblioteca e tenha certeza de que será um exercício rápido e seguro.

Na minha humilde opinião, a abordagem ideal para lançar qualquer coisa nova de forma rápida e segura é através da utilização do contêiner Docker, que dá ao desenvolvedor uma garantia de que tudo o que ele/ela inicia, importa, compila e calcula é seguro para a máquina host e de que nenhum sistema ou código será destruído ou deteriorado. Se algo der errado, basta parar e remover o contêiner. Se a aplicação ocupa uma quantidade enorme de espaço em disco, você a limpa com o contêiner e seu espaço estará de volta. Se uma aplicação deteriora a configuração do banco de dados, você exclui apenas o contêiner com configuração deteriorada. É assim, simples e seguro.

O contêiner Docker oferece segurança e padronização.

A maneira mais simples de executar o contêiner Docker do InterSystems IRIS é executar uma imagem do IRIS Community Edition:

  1. Instale o Docker desktop 

  2. Execute no terminal do sistema operacional o seguinte:

docker run --rm -p 52773:52773 --init --name my-iris store/intersystems/iris-community:2020.1.0.199.0
  1. Em seguida, abra o Portal de Administração do IRIS em seu navegador host em:

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

  1. Ou abra uma sessão no terminal:

    docker exec -it my-iris iris session IRIS

  2. Pare o contêiner IRIS quando não precisar mais dele:

    docker stop my-iris

OK! Executamos o IRIS em um contêiner docker. Mas você deseja que um desenvolvedor instale seu código no IRIS e talvez faça algumas configurações. Isso é o que discutiremos a seguir.

Importando arquivos ObjectScript

O projeto InterSystems ObjectScript mais simples pode conter um conjunto de arquivos ObjectScript como classes, rotinas, macro e globais. Verifique o artigo sobre nomenclatura e estrutura de pastas proposta.

A questão é: como importar todo esse código para um contêiner IRIS?

Aqui é o momento em que o Dockerfile nos ajuda pois podemos usá-lo para pegar o contêiner IRIS padrão, importar todo o código de um repositório para o IRIS e fazer algumas configurações com o IRIS, se necessário. Precisamos adicionar um Dockerfile no repositório.

Vamos examinar o Dockerfile do repositório de modelos ObjectScript:

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

 

As primeiras linhas ARG definem a variável $IMAGE - que usaremos então em FROM. Isso é adequado para testar/executar o código em diferentes versões do IRIS, trocando-os apenas pelo que é a última linha antes do FROM para alterar a variável $IMAGE. 

Aqui temos: 

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

FROM $IMAGE

Isso significa que estamos pegando o IRIS 2020 Community Edition versão 199.

Queremos importar o código do repositório - isso significa que precisamos copiar os arquivos de um repositório para um contêiner do docker. As linhas abaixo ajudam a fazer isso:

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 - aqui, mudamos o usuário para root para criar uma pasta e copiar arquivos no docker.

WORKDIR  /opt/irisapp - nesta linha configuramos o diretório de trabalho no qual copiaremos os arquivos.

RUN chown ${ISC_PACKAGE_MGRUSER}:${ISC_PACKAGE_IRISGROUP} /opt/irisapp   -  aqui, damos os direitos ao usuário e grupo irisowner que executam o IRIS.

USER irisowner - trocando usuário de root para irisowner

COPY Installer.cls .  - copiando o Installer.cls para a raiz do workdir. Não esqueça aqui do ponto.

COPY src src - copia os arquivos de origem da pasta src no repo para a pasta src no workdir no docker.

No próximo bloco, executamos o script inicial, onde chamamos o instalador e o código ObjectScript:

COPY iris.script /tmp/iris.script # executar o iris e iniciar 
RUN iris start IRIS \
    && iris session IRIS < /tmp/iris.script

COPY iris.script / - copiamos iris.script para o diretório raiz. Ele contém o ObjectScript que desejamos chamar para configurar o contêiner.

RUN iris start IRIS</span>  - inicia o IRIS

&& iris session IRIS < /tmp/iris.script - inicia o terminal IRIS e insere o ObjectScript inicial nele.

Ótimo! Temos o Dockerfile, que importa arquivos no docker. Mas nos deparamos com outros dois arquivos: installer.cls e iris.script. Vamos examiná-los.

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 ]
{
  #; Deixe o documento XGL gerar código para este método. 
  Quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "setup")
}

}

Francamente, não precisamos do Installer.cls para importar arquivos. Isso pode ser feito com uma linha. Mas frequentemente, além de importar o código, precisamos configurar a aplicação CSP, introduzir configurações de segurança, criar bancos de dados e namespaces.

Neste Installer.cls, criamos um novo banco de dados, namespace com o nome IRISAPP e criamos a aplicação /csp/irisapp padrão para este namespace.

Tudo isso realizamos no elemento <Namespace>:

<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>

E importamos todos os arquivos do SourceDir com a tag Import:

<Import File="${SourceDir}" Flags="ck" Recurse="1"/>

SourceDir aqui é uma variável, que é definida para o diretório/pasta src atual:

<Default Name="SourceDir" Value="#{$system.Process.CurrentDirectory()}src"/>

Uma classe Installer.cls com essas configurações nos dá a confiança de que criamos um novo banco de dados IRISAPP limpo, no qual importamos código ObjectScript arbitrário da pasta src.

iris.script

Aqui, você é bem-vindo para fornecer qualquer código de configuração ObjectScript inicial que deseja para iniciar seu contêiner IRIS.

Ex. Aqui carregamos e executamos o installer.cls e então criamos o UserPasswords sem expiração, apenas para evitar a primeira solicitação de alteração da senha, pois não precisamos desse prompt para o desenvolvimento.

; 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 que precisamos de docker-compose.yml ? Não poderíamos simplesmente construir e executar a imagem apenas com Dockerfile? Sim, poderíamos. Mas docker-compose.yml simplifica a vida.

Normalmente, docker-compose.yml é usado para iniciar várias imagens docker conectadas a uma rede.

docker-compose.yml também pode ser usado para tornar a inicialização de uma imagem docker mais fácil quando lidamos com muitos parâmetros. Você pode usá-lo para passar parâmetros para o docker, como mapeamento de portas, volumes, parâmetros de conexão 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

Aqui, declaramos o serviço iris, que usa o arquivo docker Dockerfile e expõe as seguintes portas do IRIS: 51773, 52773, 53773. Além disso, este serviço mapeia dois volumes: iris.key do diretório inicial da máquina host para a pasta IRIS onde é esperado, e ele mapeia a pasta raiz do código-fonte para a pasta /irisdev/app.

Docker-compose nos oferece o comando mais curto e unificado para construir e executar a imagem, quaisquer que sejam os parâmetros que você configurar no docker compose.

em qualquer caso, o comando para construir e lançar a imagem é:

$ docker-compose up -d

 e para abrir o terminal IRIS:

$ docker-compose exec iris iris session iris

Node: 05a09e256d6b, Instance: IRIS

USER>

Além disso, docker-compose.yml ajuda a configurar a conexão para o plugin VSCode ObjectScript.

.vscode/settings.json

A parte relacionada às configurações de conexão da extensão ObjectScript é esta:

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

}

Aqui vemos as configurações, que são diferentes das configurações padrão do plugin VSCode ObjectScript.

Aqui, dizemos que queremos nos conectar ao namespace IRISAPP (que criamos com Installer.cls):

"ns": "IRISAPP",

e há uma configuração docker-compose, que informa que, no arquivo docker-compose dentro do serviço "iris", o VSCode se conectará à porta, para a qual 52773 está mapeado:

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

Se verificarmos o que temos para 52773, veremos que esta é a porta mapeada não definida para 52773:

ports: 
      - 51773
      - 52773
      - 53773

Isso significa que uma porta aleatória disponível em uma máquina host será obtida e o VSCode se conectará a este IRIS no docker via porta aleatória automaticamente.

Este é um recurso muito útil, pois oferece a opção de executar qualquer quantidade de imagens do docker com IRIS em portas aleatórias e ter VSCode conectado a elas automaticamente.

E quanto a outros arquivos?

Nos também temos:

.dockerignore  - arquivo que você pode usar para filtrar os arquivos da máquina host que você não deseja que sejam copiados para a imagem docker que você construir. Normalmente .git e .DS_Store são linhas obrigatórias.

.gitattributes - atributos para git, que unificam terminações de linha para arquivos ObjectScript em fontes. Isso é muito útil se o repositório for colaborado por proprietários de Windows e Mac/Ubuntu.

.gitignore - arquivos, os quais você não deseja que o git rastreie o histórico de alterações. Normalmente, alguns arquivos ocultos no nível do sistema operacional, como .DS_Store.

Ótimo!

Como tornar seu repositório executável em docker e amigável para colaboração?

  1. Clone este repositório.

  2. Copie todos esses arquivos:

Dockerfile

docker-compose.yml

Installer.cls

iris.script

settings.json{#9f423fcac90bf80939d78b509e9c2dd2-d165a4a3719c56158cd42a4899e791c99338ce73}

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

para o seu repositório.

Altere esta linha no Dockerfile para corresponder ao diretório com ObjectScript no repositório que você deseja importar para o IRIS (ou não altere se estiver na pasta /src).

É isso. E todos (e você também) terão seu código importado para o IRIS em um novo namespace IRISAPP.

Como as pessoas irão iniciar o seu projeto

o algoritmo para executar qualquer projeto ObjectScript no IRIS pode ser:

  1. Clone o projeto Git localmente

  2. Execute o projeto:

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

Node: 05a09e256d6b, Instance: IRIS

USER>zn "IRISAPP"

**Como qualquer desenvolvedor pode contribuir para o seu projeto **

  1. Bifurque o repositório e clone o repositório git bifurcado localmente

  2. Abra a pasta no VSCode (eles também precisam que as extensões Docker e ObjectScript estejam instaladas no VSCode)

  3. Clique com o botão direito em docker-compose.yml->Reiniciar - VSCode ObjectScript irá conectar-se automaticamente e estará pronto para editar/compilar/depurar

  4. Commit, Push e Pull as mudanças solicitadas em seu repositório

Aqui está um pequeno gif sobre como isso funciona:

É isso! Viva a programação!

0
0 490