#Ambiente de Desenvolvimento

0 Seguidores · 46 Postagens

Um ambiente de desenvolvimento integrado (IDE) é uma aplicação de software que fornece facilidades abrangentes aos programadores no desenvolvimento de software.

A IDE oficial para produtos da Plataforma de Dados InterSystems é oAtelier.

Anúncio Angelo Bruno Braga · Mar. 23, 2022

É um prazer anunciar o lançamento da versão 1.4.4 da extensão para VS Code, que contém as seguintes melhorias e correções. Os links irão levá-los para o problema  no GitHub que está sendo endereçado. Como sempre, se você já possuir a extensão instalada, o VS Code deverá atualizar automaticamente sua extensão. Se você é um novo usuário, utilize estas instruções para iniciar. 

Log de Mudanças

0
1 119
Artigo Larissa Prussak · Out. 28, 2021 2m read

Eu escrevi um tutorial passo a passo no repositório qewd-howtos  sobre como você pode escrever aplicativos da web Node.js de última geração de várias páginas usando o  QEWD-Up WebSocket/REST api back-end integrado com um framework da web como NuxtJS e Vue.js. Em particular com o mais recente framework NuxtJS/Vue.js , escrever aplicativos da web torna-se divertido novamente, permitindo que você escreva seus aplicativos de forma muito eficiente, ocultando todo o código template de você.

O tutorial deve ser muito fácil de fazer em sua máquina de desenvolvimento e consiste em duas partes:

Você pode simplesmente clonar as configurações de demonstração do GitHub e executá-las em sua máquina de desenvolvimento usando Visual Studio Code onde sua instância de desenvolvimento IRIS / Caché está rodando. A demonstração é mantida o mais fácil possível, mas contém todas as etapas principais de que você precisa para começar a escrever aplicativos da vida real..

0
0 428
Artigo Larissa Prussak · Out. 20, 2021 1m read

A versão mais recente do Serenji se concentra na experiência de depuração. Agora você não só pode depurar no local, não importa onde esteja ou o que estiver fazendo, mas também adicionamos alguns recursos menores que tornarão a depuração mais direta.

  • Executar e depurar CodeLenses - links clicáveis ​​acima de cada método de classe, procedimento, sub-rotina ou função extrínseca.
  • Solicitação intuitiva de pontos de entrada e argumentos - ao depurar um método de classe, produzir, sub-rotina ou função extrínseca.
  • Plano de fundo sombreado somente leitura - para diferenciar claramente entre documentos editáveis ​​e somente leitura.
  • Saída do programa no console de depuração - a saída é mostrada no console de depuração.
  • Comandos do Serenji nas árvores de namespace do Server Manager - permitindo que você inicie o Serenji por meio do Server Manager.

Saiba mais em nossas notas de lançamento aqui

0
0 122
Artigo Larissa Prussak · Out. 8, 2021 1m read

Olá desenvolvedores! 

Incorporamos o suporte do VS Code para várias sessões de depuração simultâneas e consoles na versão mais recente do Serenji

Portanto, se você estiver trabalhando com processos que se relacionam ou dependem uns dos outros, agora você pode depurá-los juntos. Basta iniciar uma segunda sessão de depuração do Serenji (F5) enquanto a primeira ainda está ativa

Este pequeno vídeo abaixo mostra como funciona. Esperamos que você ache este recurso útil!

Laurel 

https://www.youtube.com/watch?v=cs6UiAvUj24

0
0 146
Artigo Larissa Prussak · Out. 5, 2021 1m read

O lançamento mais recente do Serenji apresenta nossa inovadora tecnologia gj :: locate. Era uma ferramenta autônoma que criamos originalmente para um concurso da Comunidade de Desenvolvedores no início deste ano, mas nós a incorporamos em nosso depurador após alguns ótimos comentários dos desenvolvedores.

Ele funciona navegando diretamente para a fonte de seus erros do lado do servidor em apenas alguns cliques - permitindo que você corrija os erros rapidamente sem a necessidade de contar linhas tediosas de código ... e sejamos realistas, quem tem tempo para que quando você está sob pressão para consertar esse bug?

É simples e fácil de usar:

1. Clique no painel gj :: locate na barra de status

2. Insira a mensagem de erro do ObjectScript ou a referência de linha de uma rotina class / .mac.

3. gj :: locate então faz o trabalho para você, levando-o diretamente para a linha correspondente em seu código-fonte.

Muito fácil ... e com tempo de sobra para fazer um café antes do prazo!

Abaixo há um link do vídeo que mostra isso em ação - diga-nos se você já tentou. Ou, se você estiver interessado em experimentá-lo, oferecemos uma licença de avaliação gratuita de 30 dias, apenas me mande uma mensagem através da Comunidade de Desenvolvedores ou envie um e-mail para info@georgejames.com.

Serenji 3.2.0 utilising gj::locate technology

0
0 149
Anúncio Rochael Ribeiro · Mar. 12, 2021

Concurso Grand Prix da InterSystems: PARABÉNS OS VENCEDORES!
Olá a todos,

O InterSystems Grand Prix Contest acabou. Foi uma competição incrível com um número recorde de aplicativos e desenvolvedores participantes!

Obrigado a todos pela participação! E agora é hora de anunciar os vencedores!

0
0 149
Artigo Yuri Marx · jan 25, 2021 2m read

Olá comunidade,

No passado, a documentação técnica do código-fonte e dos produtos de software era gerada em chm, arquivos pdf e geradores de documentação das próprias linguagens de programação. Essa abordagem antiga tinha as seguintes limitações:
1. Documentação desatualizada;
2. Documentação não interativa e de difícil consulta;
3. Layout sem resposta, não amigável e não aderente ao HTML;
4. Incapacidade de customizar o layout da documentação;
5. Incapacidade de ter documentação HTML 5 online e offline.
6. Falta de suporte de Markdown.

0
0 305
Artigo Yuri Marx · jan 25, 2021 3m read

A linguagem ObjectScript do InterSystems IRIS possui um mecanismo de metadados muito poderoso chamado XData. Este recurso permite criar definições de metadados para as classes úteis para serem utilizadas pelo compilador ou por programas que irão estender as funcionalidades padrão da linguagem baseados nas definições de XData do seu escopo de atuação.

Um exemplo é o IRIS Publisher, uma aplicação Open Source da comunidade capaz de coletar todas as definições de XData no formato HTML e/ou Markdown e gerar um Portal Web com toda a documentação da aplicação montada a partir destes elementos XData.

0
0 174
Anúncio Tatiana Krupenya · Dez. 2, 2020

É um prazer anunciar que o DBeaver suporta a plataforma de dados InterSystems IRIS nativamente desde a versão 7.2.4. Você não precisa realizar uma configuração manual mais, basta identificar o ícone do IRIS na lista de conexões. 

<--break->Todos os campos necessários já vem preenchidos mas, não se esqueça de colocar seu usuário e senha !!!!

0
0 405
Pergunta Arian Botine · Nov. 15, 2020

Caché: 2017.2.1.801.0

Fala pessoal, tenho uma dúvida relacionada um problema especifico que eu estou tentando entender, onde ainda não tenho muitas informações, porém estou tentando criar uma forma de levantar dados precisos para expor mais detalhes aqui na comunidade ou até mesmo consultar o suporte da IS, a questão é muito simples:

Precisava saber através de código/rotina a seletividade de uma propriedade de tabela, atualmente consigo realizar um SET utilizando o comando:

SYSTEM.SQL.SetFieldSelectivity("#PACOTE","#TABELA","#PROPRIEDADE","#SELETIVIDADE","")
3
0 213
Anúncio Jose-Tomas Salvador · Nov. 3, 2020

Desta vez, quero falar sobre algo não específico do InterSystems IRIS, mas que acho importante se você deseja trabalhar com Docker e seu servidor no trabalho é um PC ou laptop com Windows 10 Pro ou Enterprise.

Como você provavelmente sabe, a tecnologia de contêineres vem basicamente do mundo Linux e, hoje em dia, está em hosts Linux onde apresenta potencial máximo. Quem usa o Windows normalmente vê que tanto a Microsoft quanto o Docker têm feito esforços importantes nos últimos anos que nos permitem rodar contêineres baseados em imagens Linux em nosso sistema Windows de uma maneira muito fácil... mas é algo que não é suportado para sistemas em produção e, este é o grande problema, não é confiável se quisermos manter os dados persistentes fora dos contêineres, no sistema host... principalmente devido às grandes diferenças entre os sistemas de arquivos Windows e Linux. No final, o próprio _Docker para Windows usa uma pequena máquina virtual Linux (MobiLinux) para executar os contêineres... ele faz isso de forma transparente para o usuário do Windows... e funciona perfeitamente bem se, como eu disse, você não exigir que seus bancos de dados sobrevivam mais do que o contêiner...

Bem... vamos direto ao ponto... o ponto é que muitas vezes, para evitar problemas e simplificar, precisamos de um sistema Linux completo e, se nosso servidor for baseado em Windows, a única maneira de fazê-lo é por meio de uma máquina virtual. Pelo menos até o WSL2 no Windows ser lançado, mas isso será uma outra história e com certeza levará um pouco de tempo para se tornar robusto o suficiente.

Neste artigo, vou lhe dizer, passo a passo, como instalar um ambiente onde você poderá trabalhar, se precisar, com contêineres Docker em um sistema Ubuntu em seu servidor Windows. Vamos lá...

1. Habilite o Hyper-V

Se você ainda não o habilitou, vá em adicionar Recursos do Windows e habilite o Hyper-V. Você precisará reiniciar (os textos da imagem estão em espanhol pois esse é o meu espaço de trabalho atual. Espero que junto com as instruções ajudem a "descriptografá-la" se você não conhece a língua de Dom Quixote 😉) 

2. Crie uma máquina virtual Ubuntu no Hyper-V

Não acho que haja uma maneira mais fácil de criar uma máquina virtual (VM). Basta abrir a janela do Gerenciador Hyper-V,  ir para a opção  Criação Rápida...(logo acima na tela) e criar sua máquina virtual usando qualquer uma das versões do Ubuntu já oferecidas (você pode baixar um arquivo _ISO _de qualquer outro Linux e assim criar a VM com uma distro diferente). No meu caso, escolhi a última versão disponível do Ubuntu: 19.10. Enfim, tudo que você verá aqui é válido para o dia 18/04. Em 15 ou 20 minutos, dependendo do que a imagem leva para baixar, você terá sua nova VM criada e pronta.

Importante:Deixe a opção de Switch padrão como é oferecida. Isso garantirá que você tenha acesso à Internet tanto no host quanto na máquina virtual.

3. Crie uma sub-rede local

Um dos problemas no uso de máquinas virtuais que encontrei com frequência tem a ver com configuração de rede... às vezes funciona, outras não, ou funciona se eu estiver conectado com Wi-Fi, mas não por cabo ou o oposto, ou se eu estabelecer uma VPN no host Windows, perco o acesso à Internet na VM, ou a comunicação entre a VM (Linux) e o host (Windows) quebra... enfim... é uma loucura!  Faz com que eu não confie no meu ambiente quando uso meu laptop para desenvolvimento, pequenas e rápidas demonstrações ou para apresentações, onde provavelmente o acesso à Internet não é tão importante quanto ter certeza de que as comunicações entre meu host e minhas VMs funcionam em uma forma confiável.

Com uma sub-rede local ad-hoc, compartilhada entre seu host Windows e suas máquinas virtuais, você resolve. Para permitir que eles se comuniquem entre si, você usa essa sub-rede e é isso. Você só precisa atribuir IPs específicos ao seu host e às suas VMs e tudo pronto.

É muito fácil fazer isso com essas etapas. Basta ir em Gerenciador de Comutador virtual...  que você encontrará em seu  Gerenciador Hyper-V:

Uma vez lá, vá até a opção _Novo  Comutador Virtual __ _(será como uma nova placa de rede para a VM):

Certifique-se de defini-la como uma Rede Interna , escolha o nome que queremos e deixe as outras opções como padrão

Agora, se formos ao Painel de Controle do Windows > Central de Rede e Compartilhamento, veremos que já temos lá o switch que acabamos de criar:

4. Configure a sub-rede local compartilhada pelo host e as máquinas virtuais

Neste ponto, você pode concluir a configuração de sua nova rede local. Para fazer isso, coloque o cursor sobre a conexão  Meu Novo Comutador LOCAL,  clique e vá em Propriedades, e de lá para o protocolo IPv4 para atribuir um endereço IP fixo:

 

Importante: O IP que você atribuir aqui será o IP do seu host (Windows) nesta sub-rede local.

5. Conecte e configure sua nova rede local para sua máquina virtual

Agora volte ao seu  Gerenciador Hyper-V. Se sua VM estiver em execução, pare-a. Depois de parado, vá para sua configuração e adicione o novo switch virtual interno:

_(Nota – Na imagem você pode ver outro switch, o Comutador INTERNO Hyper-V. É para outra sub-rede que eu tenho. Mas não é necessário para você nesta configuração) _

Depois de clicar em Adicionar, você só terá que selecionar o switch que você criou anteriormente:

Bem, uma vez feito isso, clique em Aplicar, Aceitar... e você está pronto! Você pode iniciar e entrar novamente em sua máquina virtual para finalizar a configuração da conexão interna. Para fazer isso, assim que a VM iniciar, clique no ícone de rede (à direita) e você verá que tem 2 redes: _eth0 _e eth1. O eth1 aparece como desconectado... por agora:

Vá para a configuração da Ethernet (eht1) e atribua um IP fixo para esta sub-rede local, por exemplo: 155.100.101.1, e a máscara de sub-rede:_ 255.255.255.0_

e isso é tudo. Aqui você tem sua máquina virtual, identificada com o IP 155.100.101.1 compartilhando a mesma sub-rede com seu host.

7. Permitir acesso ao Windows 10 de sua máquina virtual

Você provavelmente descobrirá que o Windows 10 não permite por padrão a conexão de outro servidor e, para o seu sistema Windows, a VM que você acabou de criar é exatamente isso, um servidor externo e potencialmente perigoso... então você terá que adicionar uma regra no Firewall para poder se conectar ao seu host a partir dessas máquinas virtuais. Como? Muito fácil, basta procurar pelo Firewall do Windows Defender no seu Painel de Controle do Windows, ir em Configuração Avançada e  criar uma nova Regra de Entrada:

Você pode definir uma porta ou um ou vários intervalos nelas... (também pode definir a regra para todas as portas)...

A ação que queremos é Permitir Conexão...

Para todos os tipos de redes...

Dê um nome à sua regra...

importante, imediatamente depois disso, abra novamente as propriedades de sua regra recém-criada e limite o escopo da aplicação, para aplicar apenas nas conexões dentro de sua sub-rede local...

8. PRONTO. Instale o Docker e qualquer outra aplicação em sua nova máquina virtual Ubuntu

Depois de passar por todo o processo de instalação e ter sua nova VM pronta e atualizada, com acesso à internet, etc. você pode instalar as aplicações que desejar... Docker é o mínimo, essa foi a ideia para começar, você também pode instalar seu cliente VPN se precisar de uma conexão com a rede de sua empresa, VS Code, Eclipse+Atelier,...

Especificamente, para instalar o Docker, em sua VM, você pode seguir as instruções que encontrará aqui: https://docs.docker.com/install/linux/docker-ce/ubuntu/

Certifique-se de que o tempo de execução do Docker está funcionando, baixe alguma imagem de teste, etc... e é isso.

Com isso... Está tudo pronto!, agora você poderá ter contêineres rodando sem limitações (além da capacidade do seu hardware) em sua VM Ubuntu, aos quais você poderá se conectar a partir de seu host Windows 10, de um navegador ou aplicativo e vice-versa, de seu Ubuntu VM  para seu host Windows 10. Tudo isso usando  seus endereços IP configurados em sua sub-rede local compartilhada, que funcionará independente se você tem uma VPN estabelecida ou não, se você acessa à Internet através de seu adaptador Wi-Fi ou via cabo ethernet.

Ah... um último conselho. Se você deseja trocar arquivos entre o Windows 10 e suas máquinas virtuais, uma opção muito útil e simples é usar o WinSCP. É gratuito e funciona muito bem.

Bem, com certeza existem outras configurações... mas esta é a que utilizo e provou ser a mais confiável. Espero que você também ache útil. Se eu evitei qualquer dor de cabeça, este artigo terá valido a pena.

Boa codificação! 

0
0 910
Artigo Rochael Ribeiro · Out. 23, 2020 1m read

A versão GA foi publicada para a versão 1.0 da extensão InterSystems ObjectScript para Visual Studio Code 1.0! O produto deve ser instalado de dentro do Visual Studio Code IDE usando estas instruções gerais e pesquisando no mercado de extensões por "ObjectScript". Como alternativa, a instalação pode começar na lista do VS Code Marketplace. Os usuários devem aceitar os prompts para instalar também as extensões "InterSystems Server Manager" e "InterSystems Language Server". A extensão ObjectScript inclui estes recursos principais:·        Realce de sintaxe· Suporte Intellisense para comandos,

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