Encontrar

Comentarios
· 11 hr atrás

VSCode Connections Local and Remote - Best practices?

Hi noble developers!

Have a question/discussion. Sometimes, while developing, we'd need to connect VSCode directly to a remote server (e.g., stage one) for debugging purposes. And after change back to local one. And then to remote again.

How do you perform this switching in VSCode in a convenient way?

I have several settings.json files (settings_local, settings_remote) which I put to a main settings.json when I need to make VSCode to connect to switch the connection:

Is it the best practice? Or maybe there is some option to make VSCode remember several of them and easily switching via command/button and indiicate clearly where I am? 

I develop locally for both cases.

Share your best practices?

3 nuevos comentarios
Comentarios (3)2
Inicie sesión o regístrese para continuar
Pregunta
· 12 hr atrás

XDBC memory leaks

I have a business service that actively reads data from a remote Postgres database. OnProcessInput opens a XDBC (actually JDBC) connection, executes an SQL query, fetches several thousand rows, iterates the resultset, and closes the connection. On each iteration I also need to update each source row in the remote database using PreparedStatement.

In other words, in every OnProcessInput call I have a long running SELECT statement and several thousands small UPDATE statements.

The problems I'm facing are:

7 nuevos comentarios
Comentarios (7)3
Inicie sesión o regístrese para continuar
Anuncio
· 20 dic, 2025

[Video] First Customers Using Vector Search - Real World Experiences and Lessons Learned

Hey Developers,

Enjoy the new video on InterSystems Developers YouTube

⏯ First Customers Using Vector Search - Real World Experiences and Lessons Learned @ READY 2025

Discover how early adopters are successfully using vector search in InterSystems IRIS to enhance user experiences, streamline workflows, and reduce operational complexity. This session features practical examples and real-world customer case studies—including the modernization of clinical exam registration systems — and explores how InterSystems IRIS Vector Search, Retrieval-Augmented Generation (RAG), and natural language processing (NLP) deliver accurate, contextually relevant results. Learn about implementation challenges, best practices, and the measurable outcomes achieved by customers who have improved service efficiency and accuracy through vector search integration.

Presenters:
🗣 @Thomas Dyar, Product Manager, ML/AI at InterSystems
🗣 @Fernando Ferreira, Sales Engineer at Intersystems
🗣 @Djeniffer Greffin, Consultora DBA at Sabin Medicina Diagnóstica (SABIN)
🗣 Claudio Laudeauzer, IT Executive, CIO, CTO at Digital Transformation (SABIN)
🗣 Holger Müller, Geschäftsführender Gesellschaft at AGIMERO
🗣 @Fabio Care, Developer at AGIMERO

Want to learn about best practices? Watch this video and subscribe to learn more! 👍

Comentarios (0)1
Inicie sesión o regístrese para continuar
Artículo
· 19 dic, 2025 Lectura de 6 min

Depuração 101: Seu Primeiro Breakpoint e Acompanhamento de Variáveis no VS Code

Neste artigo, vamos discutir todas as ferramentas de depuração incluídas no Microsoft Visual Studio Code.

O que será abordado:

  • Breakpoints  
  • Janela de observação (Watch window)  
  • Call Stack  

Vamos começar aprendendo sobre os requisitos para depuração!

Pré-requisitos

Existem dois plugins (extensões) para depuração de ObjectScript:

O primeiro faz parte do InterSystems ObjectScript Extension Pack. O segundo é Serenji, um plugin independente que fornece um editor, gerenciador de arquivos e funcionalidades de depuração. Ambos os plugins podem ser instalados a partir da loja de plugins. Para ativar funcionalidades principais, o Serenji requer uma licença. Para este artigo, usaremos o InterSystems ObjectScript Extension Pack para reduzir a curva de aprendizado. Depois de dominar o básico, você pode considerar a compra de uma licença paga para o Serenji.
 

Você ira precisar: 

  1. A versão mais recente do Microsoft Visual Studio Code 
  2. Plugin InterSystems ObjectScript Extension Pack (após instalar o Visual Studio Code)
  3. Instância do InterSystems IRIS. Você pode escolher entre a versão Docker ou o kit de instalação. (é necessário estar registrado no Developer Community)

Para saber como conectar seu IRIS ao IDE Microsoft Visual Studio Code, você pode ler aqui.

 

Configurando a função de depuração


Normalmente, o arquivo de configuração é gerado automaticamente após o início da depuração. Ele terá a seguinte aparência:

 

{
    "configurations": [
       
    {
        "type": "objectscript",
        "request": "launch",
        "name": "ObjectScript Run current routine",
        "program": "${file}"
    }
    ]
 
}

 

Onde type é a linguagem do código que está sendo depurado, request é a opção de início da depuração (launch – inicia e executa o código ou attach – conecta ao código que já está em execução), name é o identificador da depuração, e program é o nome da classe e do método que estão sendo depurados (nesta configuração, um arquivo aberto é selecionado).

Breakpoint

            Qualquer código de programa é executado de cima para baixo, linha por linha. Ao depurar, é importante entender o estado do programa em qualquer momento, incluindo os valores das variáveis locais e globais, a abertura e fechamento de arquivos, conexões web, entre outros.

            Breakpoint é uma ferramenta de depuração que permite pausar a execução do programa em uma linha específica para identificar mudanças indesejadas no estado do programa. Começar a depurar no Visual Studio Code é muito simples. Suponha que tenhamos o seguinte código:

 

Class Test.MyFile Extends %RegisteredObject
{

ClassMethod TestVar() As %Integer
{
    set randomNum = $RANDOM(10)
    return randomNum
}

ClassMethod MyMethod() As %Integer
{
    set randomNum = ..TestVar()
    set numVar = 2
    set numDivision = randomNum / numVar

    return numDivision
}
}

Precisamos entender o valor armazenado na variável x no método MyMethod(). Esse valor é retornado pelo método TestVar(). Definimos um breakpoint antes de realizar a operação aritmética com essa variável na linha 15 e clicamos no botão Debug. Se você não definir um breakpoint, a depuração simplesmente executará o código sem exibir nada no console.

Podemos ver o valor de uma determinada variável imediatamente após iniciar a depuração! Muito conveniente. Em seguida, podemos percorrer todo o programa linha por linha pressionando o botão Step into ou F11.

 

Ótimo! Agora sabemos os valores das variáveis em cada passo da execução do código.

Podemos percorrer as variáveis dentro de um loop da mesma maneira. Vamos considerar o seguinte código:

 

Class Test.MyFile Extends %RegisteredObject
{

ClassMethod LoopMethod() As %List
{

    set objList = $LB("string", 1, {"name":1})
    for i=1:1:$LL(objList){
        set item = $LG(objList, i)
    }
    
    return objList
}

}

Vamos definir um breakpoint no início do método e iniciar a depuração. Em seguida, usando o botão “Step into” no painel de depuração localizado na parte superior do IDE, avançamos no programa e observamos os valores atribuídos à variável item. Também podemos ver os valores de todas as outras variáveis do programa, incluindo a variável iteradora i, que neste caso é igual a 2.


 Assim, avançando pelo loop, você pode acompanhar qual valor será atribuído à variável item em cada passo do loop.

Janela de observação (Watch window)

Também podemos monitorar o estado de uma variável durante a depuração adicionando-a à janela de observação. No modo de observação, podemos aplicar métodos a uma variável e acompanhar seu estado em cada iteração. Por exemplo, considere o seguinte código:

Class Test.MyFile Extends %RegisteredObject
{

ClassMethod WatchAVariable() As %List
{
    set list = ""
    set randomNum = $RANDOM(100)
    for int=randomNum:randomNum:100000{
        set list = list _$LB(int)
    }

    return list
}
}

E vamos escrever três métodos para a variável list:

 
Queremos acompanhar o comprimento da lista $LL(list), o último número adicionado $LG(list, -1) e sua raiz quadrada $LG(list, -1) ** 0.5. Entramos no loop e obtemos os primeiros valores:

 Ao definir funções na janela de observação, podemos ver informações detalhadas da depuração! Além disso, a janela de variáveis continua exibindo os valores das variáveis iteradoras int e o passo do loop. Muito conveniente!

Janela da pilha de chamadas (Call Stack)

Observe a janela “Call Stack” na parte inferior. Essa janela mostra a ordem das chamadas de função no seu código. No nosso estado atual, temos dois itens: o loop e a atribuição das variáveis WatchVariable+7 e WatchVariable+6, respectivamente. Mas tudo aqui é bastante autoexplicativo. Vamos adicionar um pouco mais de lógica:

Class Test.MyFile Extends %RegisteredObject
{

ClassMethod RandomlyChangeVar() As %Integer
{
    return $RANDOM(100)
}

ClassMethod WatchAVariable() As %List
{

    set list = ""
    set randomNum = $RANDOM(100)
    for int=randomNum:randomNum:100000{
        set list = list _$LB(int)
        if $LG(list, -1) ** 0.5 > 10{
            set int = int + ..RandomlyChangeVar()
        }
    }
    return list
}


}  


Adicionamos um novo método, RandomlyChangeVar(), que irá alterar a próxima variável int se a raiz quadrada do último número for maior que 10. Continuamos o loop até que o estado das variáveis satisfaça a condição lógica:

 

Observe os valores da função de raiz quadrada e a ordem das chamadas de função na pilha de chamadas. Assim que a raiz quadrada ultrapassou 10, a função RandomlyChangeVar() foi chamada imediatamente! Além disso, ao medir o comprimento da lista, conseguimos acompanhar quantos passos do loop foram necessários para atingir a condição lógica desejada. Isso facilita rastrear a ordem e as condições de chamadas de múltiplas funções, não importa quão complexa seja a lógica.

É isso! Agora você domina a depuração de ObjectScript no VSCode.


Neste artigo, analisamos detalhadamente o recurso de depuração no VSCode. Definimos nosso primeiro breakpoint e acompanhamos os valores das variáveis.

Artigo Original: https://community.intersystems.com/post/debugging-101-your-first-breakpo...

1 nuevo comentario
Comentarios (1)1
Inicie sesión o regístrese para continuar
Anuncio
· 19 dic, 2025

[Video] Using InterSystems Data Studio with Supply Chain Module as a Data Gateway

Hey Community!

We're happy to share a new video from our InterSystems Developers YouTube:

⏯  Using InterSystems Data Studio with Supply Chain Module as a Data Gateway @ Ready 2025

The presentation shows how InterSystems Data Fabric Studio with the Supply Chain Module acts as a data gateway, integrating and unifying data from multiple ERP systems. Users can stage, transform, validate, reconcile, and promote data to internal or external systems, create snapshots for auditing, and schedule tasks for automation. All without coding, ensuring consistent and reliable supply chain data.

🗣 Presenter: Emily Cohen, Senior Solutions Developer, InterSystems

Enjoy watching, and subscribe for more videos! 👍

Comentarios (0)1
Inicie sesión o regístrese para continuar