Nueva publicación

Pesquisar

Artículo
· 5 jun, 2025 Lectura de 5 min

Usando Django e Vue.js para criar uma aplicação web no IRIS: Explorando o framework Django

Por muito tempo, eu quis aprender o framework Django, mas sempre surgia algum projeto mais urgente que acabava tomando prioridade. Como muitos desenvolvedores, eu uso Python para projetos de machine learning, mas quando comecei a aprender programação para web, o PHP ainda dominava. Então, quando precisei escolher um framework mais robusto para criar aplicações web e publicar meu trabalho de machine learning, acabei voltando para o PHP. Durante um tempo, utilizei o framework Laravel para construir meus sites, e foi com ele que conheci o padrão Model-View-Controller (MVC) moderno de programação web. Para deixar as coisas ainda mais complexas, gosto de desenvolver o front-end usando um framework moderno de JavaScript. O que eu mais domino é o Vue.js, então mantive essa escolha nesse projeto — embora seja mais comum ver as pessoas usando React.

Por que usar um framework complexo afinal? Quais os maiores desafios de aprender um framework como Django, Laravel, React ou Vue?

Cada um tem sua resposta para isso, mas eu passei a gostar de frameworks MVC porque eles oferecem uma estrutura clara para organizar o projeto. Isso me evita ter que reinventar a roda toda vez. No começo, esses frameworks podem parecer restritivos e confusos, mas, depois que você se familiariza com a estrutura, fica mais fácil adicionar novas funcionalidades.

O desafio é que as coisas podem até ficar “simples demais”. Frameworks como o Django usam muitas convenções e atalhos, baseados em conceitos comuns, mas com nomes e estruturas específicas. No meu projeto, por exemplo, o Django gerencia as APIs e todo o roteamento web. Se quero adicionar um novo endpoint de API, preciso criar uma função no arquivo views.py, depois ir até o urls.py e adicionar uma instrução para importar essa função e outra para definir a URL onde esse endpoint estará disponível. Depois disso, preciso editar meu componente Vue para, via JavaScript, consultar esse endpoint, exibir os dados ou manipulá-los para o usuário.

Depois que o projeto está configurado, adicionar novas funcionalidades é rápido. Basta incluir umas quatro linhas de código e posso focar na lógica da função nova no views.py para processar a requisição HTTP e devolver os dados em JSON. O mais desafiador é entender como esses arquivos funcionam juntos para formar a aplicação como um todo.

Eu encontrei a melhor maneira de aprender um frameowork com Django, basicamente, é encontrar um projeto funcionando e começar a fazer pequenas alterações para entender o fluxo dos dados. Consultar a documentação conforme os conceitos vão ficando mais claros e pedir para modelos de IA explicarem trechos de código e a função dos arquivos padrão de um framework ajuda muito. Logo fica evidente que essas ferramentas surgiram justamente para poupar tempo no longo prazo e facilitar a manutenção e atualização das aplicações. Como Django e Vue seguem estruturas padronizadas, quando você volta a trabalhar neles depois de um tempo, fica mais fácil entender o que foi feito e retomar o ritmo. E também é mais simples pegar um projeto de outra pessoa e entender as funções principais, já que a estrutura básica é familiar. 

Conceitos fundamentais de Django

Para quem está começando, a primeira coisa importante é saber que os projetos Django são criados rodando um comando que gera os arquivos e pastas base para iniciar o desenvolvimento. Essa estrutura inicial inclui alguns arquivos de configuração que se aplicam ao projeto inteiro. Os dois mais importantes e que você vai visitar com frequência são:

  • settings.py — onde ficam as configurações do projeto (se você perguntar “onde o Django configura o diretório de arquivos estáticos?”, a resposta está aqui)
  • urls.py — onde você registra as rotas de URL da aplicação.

Além desses arquivos no nível do projeto, você cria apps dentro dele, que são pastas onde fica o código de cada funcionalidade específica. Esses apps precisam ser registrados no settings.py. No meu projeto, o app principal se chama documents. Dentro dele, tenho:

  • models.py — onde defino meu objeto Document e seus campos. O Django se encarrega de criar a tabela correspondente no banco IRIS.
  • serializer.py — onde defino como converter o objeto para JSON e vice-versa. Para casos simples, isso é bem direto.
  • views.py — onde ficam as funções que recebem requisições HTTP e devolvem dados (pode ser uma resposta completa ou JSON, se for uma API).

O views.py é onde está a “graça” do Django: ele permite entregar páginas inteiras ou apenas JSON, de modo que você pode usar o Django tanto como front-end quanto apenas como back-end para um front separado.

No começo, seguir essas convenções pode parecer trabalhoso, mas logo você percebe que a aplicação simplesmente funciona, recebe as requisições e devolve os dados certos. Isso torna muito prazeroso continuar adicionando recursos. Depois que você cria um objeto, uma rota web e uma função para lidar com uma requisição, percebe como é fácil adicionar outra, e outra…

Meu projeto de exemplo

Eu fiz um fork do projeto Iris Django Template criado pelo @Guillaume Rongier no GitHub:
https://github.com/grongierisc/iris-django-template

Esse template contém apenas o Django e foi extremamente útil para eu aprender. A principal melhoria que adicionei foi integrar o Vue.js com Tailwind CSS, mostrando que dá para usar um framework moderno de JavaScript junto com Django e rodar uma Single Page Application (SPA) no IRIS. Uma SPA é uma aplicação JavaScript que faz requisições XHR para obter JSON e atualiza a página sem recarregar tudo — algo comum no desenvolvimento web moderno.

Convido você a olhar meu projeto não só como um exemplo de RAG e Vector Stores no IRIS, mas também como um template para usar Django, Vue.js e Tailwind CSS para criar aplicações web modernas, rápidas e flexíveis sobre o IRIS.
https://github.com/mindfulcoder49/iris-django-template

Fico à disposição para responder dúvidas ou compartilhar insights com quem quiser adaptar esse projeto para seu próprio uso.

Comentarios (0)1
Inicie sesión o regístrese para continuar
Anuncio
· 5 jun, 2025

The 4th InterSystems Ideas Contest

Hello Community,

We're thrilled to invite all our Developer Community members (both InterSystems employees and not) to participate in our next contest!

💡 The 4th InterSystems Ideas Contest 💡

We're looking for your innovative ideas to enhance InterSystems IRIS and related products and services. We encourage suggestions based on real-life use cases, highlighting the tangible benefits your idea will bring to other users and how it will enhance developers' experiences with InterSystems technology.

📅 Duration: June 9 - July 20, 2025

🏆 Prizes for the best ideas and a random draw!

🎁 Gifts for everyone: A special gift will be given to each author whose idea is accepted in the contest.

>> SUBMIT AN IDEA <<

Accepted ideas should:

  • be created during the Ideas Contest period by a user registered on the InterSystems Ideas portal (you can log in via InterSystems SSO);
  • not be part of other already existing ideas - only new ideas are allowed;
  • not describe the existing functionality of InterSystems IRIS and related Products or Services;
  • be posted in English;
  • be written by a person, not generated by AI;
  • be accepted as meaningful by InterSystems experts;
  • adhere to the structure below:
    • 1️⃣ Description of the idea
    • 2️⃣ Who is the target audience?
    • 3️⃣ What problem does it solve?
    • 4️⃣ How does this impact the efficiency, stability, reliability, etc, of the product?
    • 5️⃣ Provide a specific use case or scenario that illustrates how this idea could be used in practice.

All ideas are subject to moderation. We may request to clarify the submitted idea. Ideas that meet the requirements will receive a special "Ideas Contest" status.

Who can participate?

We invite EVERYONE to join our new Ideas Contest. Both InterSystems employees and non-employees are welcome to participate and submit their ideas. 

Prizes

1. Participation gift - authors of all accepted ideas will get:

🎁 Aluminum Media Stand

2. Expert award - InterSystems experts will select the best ideas. Winners will get:

🥇 1st place - Stilosa Barista Espresso Machine & Cappuccino Maker

🥈 2nd place - Osmo Mobile 7

🥉 3rd place -  Smart Mini Projector XGODY Gimbal 3

3. Random award - an idea chosen at random will get:

🏅 Smart Mini Projector XGODY Gimbal 3

Note: InterSystems employees are eligible to receive only the participation gift. Expert and Random awards can only be won by Developer Community members who are not InterSystems employees. 

Important dates:

⚠️ Idea Submission: June 9 - July 13

✅ Voting for ideas: July 14 - July 20

🎉 Winners announcement: July 21

Good luck! 🍀 


Note: All prizes are subject to availability and shipping options. Some items may not be available for international shipping to specific countries, in this case, an equivalent alternative will be provided. We will let you know if a prize is not available and offer a possible replacement. Prizes cannot be delivered to residents of Crimea, Russia, Belarus, Iran, North Korea, Syria, or other US-embargoed countries.

1 nuevo comentario
Comentarios (7)2
Inicie sesión o regístrese para continuar
Artículo
· 5 jun, 2025 Lectura de 4 min

TestCoverage para Embedded Python e UI

Duas Grandes Mudanças para a Ferramenta de Código Aberto TestCoverage: Suporte a Python Embutido e uma Nova Interface de Usuário

Python Embutido

Anteriormente, o TestCoverage conseguia rastrear a cobertura de testes unitários apenas para códigos escritos em ObjectScript. Ele ignorava o código escrito em outras linguagens, como Python, nas estatísticas de cobertura.

 

À medida que mais e mais código de aplicativo IRIS está sendo escrito em Python Embutido em vez de apenas ObjectScript, é fundamental que o TestCoverage possa incluir os resultados de cobertura para o código Python Embutido . Clientes (através dos issues do TestCoverage no GitHub), bem como outros na InterSystems, expressaram interesse em ver o suporte ao Python Embutido.

 

O usuário ainda instala e executa o TestCoverage da mesma forma que antes, conforme descrito no TestCoverage GitHub. TOs resultados de cobertura para código Python Embutido agora são incluídos nas estatísticas de cobertura agregadas, bem como na coloração individual das linhas, como exibido no exemplo acima.

Por baixo do capô, a cobertura do Python Embutido é rastreada usando o tracer sys.settrace do Python, independentemente do %Monitor.System.LineByLine do ObjectScript, e então os resultados são combinados e exibidos juntos. Isso pode causar pequenas discrepâncias em quais linhas são marcadas como executáveis (ou seja, podem ser executadas). Por exemplo, na imagem acima, o Python considera a instrução elif como executável, mas o ObjectScript não considera a instrução ElseIf como executável. No fim das contas, qualquer linha de código marcada em vermelho não foi coberta, e qualquer linha de código marcada em verde ainda foi coberta; isso apenas afeta ligeiramente quais linhas de código ignoramos, o que não causa nenhum problema.

Nova Interface de Usuário do TestCoverage

A interface de usuário anterior do TestCoverage era uma antiga Zen UI que não mostrava muitas das estatísticas úteis que o TestCoverage rastreava. Além disso, o TestCoverage só podia ser executado a partir da linha de comando.

Para resolver esses problemas, criamos uma nova Angular UI baseada no isc.perf.ui, a interface de usuário existente para interagir com o Line-By-Line Monitor (^%SYS.MONLBL). O aplicativo web vem com uma API REST e uma conexão WebSocket para recuperar dados do servidor IRIS. Ele também corrige a autenticação de usuário anterior para o isc.perf.ui, de modo que agora ele usa o login/logout padrão do IRIS. Isso também está publicamente disponível no Open Exchange, sob o nome isc-perf-ui. Abaixo estão algumas das novas funcionalidades e usos da interface de usuário.

Instalação

Existem algumas etapas adicionais para instalar o isc.perf.ui se você quiser usar os novos recursos do TestCoverage. Apenas no Windows, você precisa habilitar o protocolo WebSocket do IIS. Em qualquer sistema operacional, você precisa conceder a um usuário específico (geralmente CSPSystem) uma permissão de recurso (geralmente %DB_User) no portal de gerenciamento do IRIS. Essas etapas são descritas na página do GitHub do isc-perf-ui.

Página de Cobertura de Teste

Na página de Cobertura de Teste, você pode selecionar os parâmetros com os quais deseja executar o TestCoverage em seus testes de unidade.

  

As explicações dos parâmetros incluem descrições do que cada um deles controla. Você também pode clicar em uma caixa de entrada para ver um valor de exemplo, e há validação de entrada para garantir que seus dados estejam em um formato válido.

Depois de clicar em "enviar", a chamada para executar o TestCoverage será iniciada, e você verá o progresso ao vivo dos seus testes de unidade no registro na parte inferior da página.

 

Após a conclusão da execução dos testes, o menu suspenso à direita deve abrir com uma lista de combinações de rotina e caminho de teste, bem como a porcentagem geral de cobertura do seu código e o link para os próprios resultados dos testes de unidade.

 

Clique em qualquer um deles para ser levado à página de resultados de cobertura daquela rotina, dentro do diretório de teste de unidade.

Aqui, você consegue ver quais linhas de código foram cobertas pelos seus testes de unidade, de acordo com o TestCoverage. Há também métricas adicionais, como TempoTotal, que monitora a quantidade de tempo que o código passou em uma determinada linha, do início ao fim da execução.

 

Você pode ordenar ainda mais em ordem crescente ou decrescente clicando nas setas ao lado dos cabeçalhos; essa é uma forma útil de ver quais linhas de código demoram mais para executar.

 

Por fim, o botão "Mostrar Métodos" abre uma tabela com a complexidade ciclomática de cada um dos seus métodos, mostrando quais são os mais complexos e vulneráveis a bugs.

 

Quando terminar, você pode clicar no botão "Voltar" para retornar à página inicial. O botão vermelho "Limpar resultados" permite apagar todas as suas execuções de cobertura de teste.

Página de Cobertura Histórica

Após clicar em um ID de Execução específico de uma execução anterior, você pode visualizar os resultados de cobertura em nível de classe (cobertura de linha, cobertura de método, tempo) para todas as classes daquela execução. Estes são os mesmos dados da página de resultados principal do TestCoverage. Esta tabela também é classificável por cada coluna.

 

Mais uma vez, ambas as ferramentas estão disponíveis no InterSystems Open Exchange (isc-perf-ui e Test Coverage Tool) e no GitHub. Bons testes a todos!

  

Comentarios (0)1
Inicie sesión o regístrese para continuar
Anuncio
· 5 jun, 2025

[Online Course] Getting Started with Data Fabric Studio

Hi Community,

Looking for a way to simplify your organization's approach to data access and integration?

🌐 Get an introduction to InterSystems® Data Fabric Studio™ and its low-code approach to managing your data.

Unify Your Data: Get started with Data Fabric Studio  

In this online course (45m), learn how to use Data Fabric Studio's intuitive UI to:

  • Configure your data sources.
  • Set up transformations and workflows.
  • Manage permissions.
Comentarios (0)1
Inicie sesión o regístrese para continuar
Anuncio
· 5 jun, 2025

Announcing Deltanji 8.1 source control

George James Software is excited to share a new release of Deltanji source control, version 8.1. This new release introduces a Git Location Driver along with several other functionality and usability improvements. 

Highlights of this release include: 

  • Git Location Driver, which enables Deltanji to integrate directly with Git repositories.
  • Additional signing methods for Task Server II.
  • DATA Component Driver proxy classes.
  • Add or remove from Work Lists incrementally. 
  • %ALL system definitions.
  • New Installation defaults. 
  • Improved file type classification for better granularity and flexibility. 
  • Enhanced component view navigation. 

Read the release notes here > https://www.georgejames.com/files-cgi/doc/deltanji/latest/WebDoc/docs/releasenotes81.html 

Existing customers can contact support@georgejames.com for their upgrade kit. 

For those unfamiliar with Deltanji, it is an enterprise-grade source control solution. It integrates tightly into InterSystems environments and is fully configurable. Its advanced features make it a sophisticated alternative to Git and GitHub, allowing users to perform concurrent development and keep track of changes with a comprehensive audit trail and a fully configurable workflow that goes beyond CI/CD. 

Visit georgejames.com/deltanji for more information, and email us at info@georgejames.com for a demo.     

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