Tecnologia além do código.
Régys Borges da Silveira
Início / Acervo

Tag: pascal

29 resultado(s)

Horse Streaming: Elevando a performance de APIs Delphi e Lazarus com Web Streams e Server-Sent Events (SSE)

Quem desenvolve APIs de alta performance no ecossistema Delphi e Lazarus conhece bem o Horse. Ele se consolidou como o framework web mais querido e utilizado devido à sua filosofia minimalista, velocidade e consumo irrisório de recursos.

Ver resumo completo

Quem desenvolve APIs de alta performance no ecossistema Delphi e Lazarus conhece bem o Horse. Ele se consolidou como o framework web mais querido e utilizado devido à sua filosofia minimalista, velocidade e consumo irrisório de recursos.

No entanto, à medida que a web evolui, novos desafios surgem. Até então, para enviar qualquer resposta HTTP, o Horse dependia de carregar todo o payload de dados na memória do servidor para depois escrevê-lo fisicamente no socket do cliente. Para grandes relatórios JSON, exportações em lote ou transmissões de dados em tempo real, isso gerava picos de consumo de memória física (heap) sob alta concorrência.

Com a chegada das arquiteturas modernas de Inteligência Artificial Generativa (onde o modelo responde palavra por palavra via tokens) e dashboards de monitoramento contínuo, a transmissão incremental de dados tornou-se mandatória. É com muito orgulho que anunciamos o suporte nativo a Web Streams e Server-Sent Events (SSE) no Horse!

Publicado em · Régys Borges da Silveira
Ler artigo →

WebSockets Nativos no Horse: Comunicação Bidirecional de Alta Performance no Delphi e Lazarus

No desenvolvimento de APIs modernas, a comunicação tradicional baseada em ciclos de requisição e resposta (HTTP tradicional) nem sempre é suficiente. Quando precisamos de atualizações em tempo real com baixíssima latência — como em painéis financeiros, sistemas de chat, telemetria de frotas ou dashboards de monitoramento — os WebSockets se tornam indispensáveis.

Ver resumo completo

No desenvolvimento de APIs modernas, a comunicação tradicional baseada em ciclos de requisição e resposta (HTTP tradicional) nem sempre é suficiente. Quando precisamos de atualizações em tempo real com baixíssima latência — como em painéis financeiros, sistemas de chat, telemetria de frotas ou dashboards de monitoramento — os WebSockets se tornam indispensáveis.

Com orgulho, apresentamos a nova especificação e suporte nativo a conexões bidirecionais baseadas no protocolo RFC 6455 (WebSockets) no núcleo e provedores do framework Horse. O suporte foi desenvolvido com foco em alta performance, thread-safety, concorrência e total compatibilidade com Delphi e Lazarus/FPC.

Publicado em · Régys Borges da Silveira
Ler artigo →

Delphi Horse: Simplifique suas APIs com Auto-binding e Validação de DTOs

Quem desenvolve APIs em Delphi utilizando o framework Horse sabe o quanto ele é leve, rápido e extremamente eficiente. No entanto, à medida que a aplicação cresce, começamos a nos deparar com um problema comum em nossos controllers: o excesso de código repetitivo (o famoso boilerplate) para ler payloads de requisições e validar os dados de entrada.

Ver resumo completo

Quem desenvolve APIs em Delphi utilizando o framework Horse sabe o quanto ele é leve, rápido e extremamente eficiente. No entanto, à medida que a aplicação cresce, começamos a nos deparar com um problema comum em nossos controllers: o excesso de código repetitivo (o famoso boilerplate) para ler payloads de requisições e validar os dados de entrada.

Se você se cansa de escrever dezenas de linhas checando se campos obrigatórios foram preenchidos, se e-mails são válidos ou se um valor numérico está no intervalo correto, você precisa conhecer o horse-dto.

Neste artigo, vamos entender como esse middleware automatiza o processo de desserialização e validação declarativa de dados usando atributos no Delphi.

Publicado em · Régys Borges da Silveira
Ler artigo →

Desligamento Suave (Graceful Shutdown) no Horse: Resiliência Enterprise para suas APIs Delphi e Lazarus

No desenvolvimento de APIs e microsserviços modernos, garantir a alta disponibilidade e a integridade dos dados durante atualizações de versão é um requisito essencial. Se você implanta suas aplicações em ambientes de contêineres (como Docker e Kubernetes) ou atrás de um balanceador de carga, certamente já enfrentou o desafio de atualizar um serviço em produção sem derrubar as…

Ver resumo completo

No desenvolvimento de APIs e microsserviços modernos, garantir a alta disponibilidade e a integridade dos dados durante atualizações de versão é um requisito essencial. Se você implanta suas aplicações em ambientes de contêineres (como Docker e Kubernetes) ou atrás de um balanceador de carga, certamente já enfrentou o desafio de atualizar um serviço em produção sem derrubar as conexões ativas dos usuários.

Com a nova atualização do Horse, o framework web minimalista mais popular do ecossistema Delphi e Lazarus, introduzimos o suporte nativo ao Graceful Shutdown (Desligamento Suave). Neste artigo, vamos entender como esse recurso funciona, quais são os ganhos reais para suas aplicações e como utilizá-lo na prática.

Publicado em · Régys Borges da Silveira
Ler artigo →

Delphi Voando Baixo: Como Levamos o gRPC no Horse a 9.7k QPS com Otimizações de Baixo Nível

No desenvolvimento de microsserviços modernos, a velocidade de comunicação entre APIs é um dos fatores mais críticos para a escalabilidade de toda a infraestrutura. É por isso que o gRPC (baseado em HTTP/2 e Protocol Buffers) tornou-se o padrão ouro de comunicação interna em gigantes da tecnologia, superando o tradicional REST/JSON em termos de vazão e uso de…

Ver resumo completo

No desenvolvimento de microsserviços modernos, a velocidade de comunicação entre APIs é um dos fatores mais críticos para a escalabilidade de toda a infraestrutura. É por isso que o gRPC (baseado em HTTP/2 e Protocol Buffers) tornou-se o padrão ouro de comunicação interna em gigantes da tecnologia, superando o tradicional REST/JSON em termos de vazão e uso de banda.

Recentemente, no ecossistema do Horse — o micro-framework web preferido dos desenvolvedores Delphi e Lazarus —, iniciamos uma jornada intensa de engenharia de software para construir um provedor gRPC nativo (Cleartext h2c) capaz de bater de frente com os gigantes do mercado, como C#, Go e Rust. O resultado? Alcançamos a marca de 9.773 QPS (requisições por segundo) com uma latência média de apenas 20ms no host local.

Neste artigo, vou revelar os bastidores técnicos de como implementamos otimizações em nível de hardware, CPU, alocação de heap e concorrência para atingir essa marca histórica de performance no Delphi.

Publicado em · Régys Borges da Silveira
Ler artigo →

Novidade no Horse: Ganchos de Ciclo de Vida (Lifecycle Hooks) Integrados ao Core!

Se você desenvolve APIs robustas e de alta performance em Delphi ou Lazarus, com certeza já conhece ou utiliza o Horse. Hoje, trazemos uma novidade incrível e muito aguardada pela comunidade que acaba de ser integrada oficialmente ao Core do framework: os Lifecycle Hooks (Ganchos de Ciclo de Vida)!

Ver resumo completo

Se você desenvolve APIs robustas e de alta performance em Delphi ou Lazarus, com certeza já conhece ou utiliza o Horse. Hoje, trazemos uma novidade incrível e muito aguardada pela comunidade que acaba de ser integrada oficialmente ao Core do framework: os Lifecycle Hooks (Ganchos de Ciclo de Vida)!

Inspirado em padrões consolidados de ecossistemas web modernos (como Fastify e Express), o Horse agora oferece 5 momentos distintos no pipeline de execução de uma requisição. Isso abre portas para você plugar regras de auditoria de dados, caching inteligente, criptografia de payloads, monitoramento de latência e muito mais, mantendo sua aplicação limpa e altamente manutenível.

Publicado em · Régys Borges da Silveira
Ler artigo →

Arquitetura Multi-Instance no Horse: Como Rodar Múltiplos Servidores HTTP Isolados no Mesmo Processo com Delphi e Lazarus

No desenvolvimento de APIs modernas e microsserviços, é muito comum nos depararmos com o seguinte cenário: você precisa expor uma API pública para consumo externo na porta 80, mas ao mesmo tempo precisa expor um painel administrativo ou endpoints de monitoramento de métricas em uma porta interna reservada (como a porta 8080).

Ver resumo completo

No desenvolvimento de APIs modernas e microsserviços, é muito comum nos depararmos com o seguinte cenário: você precisa expor uma API pública para consumo externo na porta 80, mas ao mesmo tempo precisa expor um painel administrativo ou endpoints de monitoramento de métricas em uma porta interna reservada (como a porta 8080).

No ecossistema Delphi e Lazarus, o Horse consolidou-se como o framework web mais popular, leve e minimalista. No entanto, historicamente o framework operava sob uma fachada central baseada em métodos de classe estáticos (singletons globais). É exatamente aqui que entra a nova e poderosa funcionalidade da arquitetura Multi-Instance.

Neste artigo, vamos explorar como o Horse foi redesenhado para suportar servidores logicamente isolados rodando concorrentemente no mesmo processo de aplicação, e entender o "pulo do gato" de infraestrutura para colocar isso de pé em produção.

Publicado em · Régys Borges da Silveira
Ler artigo →

Dext Collections: Como acelerar o build do Delphi em 60% e otimizar a performance em até 40x

Se você desenvolve em Delphi há algum tempo, certamente já sentiu o peso das Generics.Collections. Embora tenham revolucionado a forma como manipulamos dados, elas trouxeram dois grandes vilões silenciosos: o Code Bloat (inchaço de código) e o aumento drástico no tempo de compilação.

Ver resumo completo

Se você desenvolve em Delphi há algum tempo, certamente já sentiu o peso das Generics.Collections. Embora tenham revolucionado a forma como manipulamos dados, elas trouxeram dois grandes vilões silenciosos: o Code Bloat (inchaço de código) e o aumento drástico no tempo de compilação.

No artigo de hoje, vamos explorar como o Project Dext resolveu esses problemas, trazendo uma nova arquitetura de coleções que não só compila mais rápido, mas entrega uma performance que deixa a RTL (Runtime Library) padrão comendo poeira.

Publicado em · Régys Borges da Silveira
Ler artigo →
delphi na era da ia

Delphi na Era da IA – Implementando Clientes REST para OpenAI e Gemini

A integração de modelos de linguagem (LLMs) em aplicações desktop deixou de ser uma novidade para se tornar um requisito de competitividade. No ecossistema Delphi, a biblioteca REST Client Library é a ferramenta nativa mais robusta para essa tarefa.

Ver resumo completo

A integração de modelos de linguagem (LLMs) em aplicações desktop deixou de ser uma novidade para se tornar um requisito de competitividade. No ecossistema Delphi, a biblioteca REST Client Library é a ferramenta nativa mais robusta para essa tarefa.

Embora existam bibliotecas de terceiros, compreender como manipular diretamente TRESTClient, TRESTRequest e TRESTResponse oferece ao desenvolvedor controle total sobre timeouts, manipulação de headers, segurança e tratamento de erros — aspectos cruciais em aplicações de produção.

Este artigo demonstra como construir uma camada de abstração para enviar prompts e processar respostas JSON da OpenAI (GPT) e Google (Gemini), exibindo o resultado formatado.

Publicado em · Régys Borges da Silveira
Ler artigo →
delphi na era da ia

Delphi na Era da IA – Automatizando a Documentação com IA e Mermaid.

Em projetos corporativos complexos, a "documentação" costuma ser o primeiro artefato a morrer. No entanto, no ecossistema do Delphi 13, a manutenibilidade é crítica.

Ver resumo completo

Em projetos corporativos complexos, a "documentação" costuma ser o primeiro artefato a morrer. No entanto, no ecossistema do Delphi 13, a manutenibilidade é crítica. Quando falamos de sistemas com milhões de linhas de código, o custo de um desenvolvedor novo entender uma Unit complexa é altíssimo.

Neste artigo, vamos implementar um workflow moderno de Documentation-as-Code. Vamos sair do comentário manual e utilizar IA para gerar documentação técnica compatível com o LSP (Language Server Protocol) do Delphi e diagramas arquiteturais vivos para seus repositórios Git.

Publicado em · Régys Borges da Silveira
Ler artigo →
delphi na era da ia

Delphi na Era da IA – Debugging Assistido com IA: Analisando Access Violations e Memory Leaks no Delphi 13

Se existe algo que tira o sono de qualquer desenvolvedor Delphi — seja ele júnior ou sênior — é o fatídico Access Violation intermitente em produção ou aquele Memory Leak silencioso que derruba o servidor após dias de execução.

Ver resumo completo

Se existe algo que tira o sono de qualquer desenvolvedor Delphi — seja ele júnior ou sênior — é o fatídico Access Violation intermitente em produção ou aquele Memory Leak silencioso que derruba o servidor após dias de execução.

Com a chegada do Delphi 13 e a modernização da linguagem, temos ferramentas cada vez mais robustas. No entanto, a complexidade das aplicações também aumentou. Felizmente, hoje temos um novo aliado no nosso cinto de utilidades: a Inteligência Artificial Generativa (LLMs).

Neste artigo, não vamos falar sobre como pedir para a IA escrever código, mas sim como utilizá-la para realizar uma autópsia de erros. Vamos explorar como interpretar logs de ferramentas como EurekaLog, madExcept ou o nativo report do FastMM, transformando stack traces crípticos em diagnósticos lógicos precisos.

Publicado em · Régys Borges da Silveira
Ler artigo →
delphi na era da ia

Delphi na Era da Ia – Maximizando a QA no Delphi: Gerando Testes Unitários (DUnit/DUnitX) Automaticamente com IA

A escrita de testes unitários é, indiscutivelmente, um dos pilares da qualidade de software moderno. No entanto, no ecossistema Delphi, muitos desenvolvedores ainda enxergam a criação de suítes de teste (seja em DUnit ou DUnitX) como uma tarefa árdua, verbosa e que "rouba tempo" da implementação de features.

Ver resumo completo

A escrita de testes unitários é, indiscutivelmente, um dos pilares da qualidade de software moderno. No entanto, no ecossistema Delphi, muitos desenvolvedores ainda enxergam a criação de suítes de teste (seja em DUnit ou DUnitX) como uma tarefa árdua, verbosa e que "rouba tempo" da implementação de features.

A virada de chave para a produtividade não é parar de testar, mas sim mudar como escrevemos esses testes. Com o uso de Grandes Modelos de Linguagem (LLMs), podemos transformar a criação de cenários de teste, mocks e validações de "edge cases" em um processo quase instantâneo.

Neste artigo, vou explorar uma estratégia prática para injetar classes de negócio em uma IA e obter uma cobertura de testes robusta e pronta para compilar.

Publicado em · Régys Borges da Silveira
Ler artigo →

Validação de Dados com Atributos: Substituindo IFs por Metadados

Você já se deparou com aquele botão "Salvar" que contém dezenas de linhas de if EditNome.Text = '' then ou if Length(EditCPF.Text) <> 11 then? Esse tipo de código, conhecido como Spaghetti Code, mistura regras de validação com a lógica de interface (UI), tornando o sistema difícil de manter e testar.

Ver resumo completo

Você já se deparou com aquele botão "Salvar" que contém dezenas de linhas de if EditNome.Text = '' then ou if Length(EditCPF.Text) <> 11 then? Esse tipo de código, conhecido como Spaghetti Code, mistura regras de validação com a lógica de interface (UI), tornando o sistema difícil de manter e testar.

Neste artigo, vamos explorar como o RTTI (Run-Time Type Information) e os Atributos Customizados (Custom Attributes) do Delphi podem transformar essa bagunça em um código limpo, declarativo e elegante.

Publicado em · Régys Borges da Silveira
Ler artigo →
delphi na era da ia

Delphi na Era da IA – Engenharia de Prompt para Delphi: O Guia Definitivo para Código Object Pascal Compilável

A geração de código via IA para linguagens modernas e populares (como Python ou JavaScript) costuma ser direta. No entanto, para Delphi (Object Pascal), o desafio é único.

Ver resumo completo

A geração de código via IA para linguagens modernas e populares (como Python ou JavaScript) costuma ser direta. No entanto, para Delphi (Object Pascal), o desafio é único. O Delphi possui um legado de quase 30 anos, o que significa que existem dezenas de dialetos, bibliotecas obsoletas e paradigmas conflitantes misturados nos dados de treinamento dos modelos de IA.

Um prompt vago como "Crie uma função para baixar um arquivo em Delphi" pode resultar em um código "Frankenstein" que mistura sintaxe do Delphi 7 com recursos do Delphi Alexandria, ou que utiliza componentes que você não tem instalados.

Este artigo detalha como estruturar seus prompts para obter código limpo, moderno (ou legado, se necessário) e, acima de tudo, compilável.

Publicado em · Régys Borges da Silveira
Ler artigo →

Gerenciamento Automático de Memória no Delphi sem Interfaces: O Poder dos Custom Managed Records

Durante décadas, o mantra do desenvolvedor Delphi para gerenciamento de recursos (objetos, arquivos, handles do SO) foi o bloco try..finally. Embora robusto, ele introduz ruído visual e boilerplate, especialmente em rotinas complexas.

Ver resumo completo

Durante décadas, o mantra do desenvolvedor Delphi para gerenciamento de recursos (objetos, arquivos, handles do SO) foi o bloco try..finally. Embora robusto, ele introduz ruído visual e boilerplate, especialmente em rotinas complexas.

Com a chegada do Delphi 10.4 Sydney, a Embarcadero expôs publicamente um recurso poderoso: Custom Managed Records (CMR). Este recurso permite implementar o padrão RAII (Resource Acquisition Is Initialization) nativamente em records, permitindo que variáveis locais se "autodestruam" ao sair do escopo, sem a sobrecarga de contagem de referência das Interfaces (ARC) e sem alocação na Heap.

Este artigo explora como dominar os operadores Initialize, Finalize e Assign para criar códigos mais limpos e seguros.

Publicado em · Régys Borges da Silveira
Ler artigo →
generics

Escrevendo Menos Código: Criando um Repositório Base Genérico no Delphi 13

No desenvolvimento de software corporativo, a repetição é o inimigo da produtividade. Escrever os mesmos métodos de Insert, Update e Delete para cada entidade do sistema (Clientes, Produtos, Fornecedores) não só consome tempo, mas aumenta a superfície de bugs.

Ver resumo completo

No desenvolvimento de software corporativo, a repetição é o inimigo da produtividade. Escrever os mesmos métodos de Insert, Update e Delete para cada entidade do sistema (Clientes, Produtos, Fornecedores) não só consome tempo, mas aumenta a superfície de bugs.

O Delphi 13 (Athens) oferece um sistema de Generics robusto que, quando combinado com Constraints (restrições) e RTTI, permite criar uma arquitetura onde o código de persistência é escrito apenas uma vez.

Neste artigo, vamos construir um TRepository<T> capaz de manipular qualquer entidade do seu sistema, garantindo segurança de tipos em tempo de compilação.

Publicado em · Régys Borges da Silveira
Ler artigo →
delphi na era da ia

Delphi na Era da IA – Delphi, FireDAC e IA: Elevando a Programação com Otimização SQL e Automação de Código

A integração de Inteligência Artificial (LLMs como GPT-4, Claude ou Gemini) no fluxo de trabalho de desenvolvimento transcendeu a fase de curiosidade. Para desenvolvedores Delphi que mantêm sistemas de missão crítica — ERPs, emissores fiscais e PDVs — a IA não deve ser vista como um substituto do programador, mas como um arquiteto assistente e um automatizador de…

Ver resumo completo

A integração de Inteligência Artificial (LLMs como GPT-4, Claude ou Gemini) no fluxo de trabalho de desenvolvimento transcendeu a fase de curiosidade. Para desenvolvedores Delphi que mantêm sistemas de missão crítica — ERPs, emissores fiscais e PDVs — a IA não deve ser vista como um substituto do programador, mas como um arquiteto assistente e um automatizador de boilerplate.

Neste artigo, vamos explorar uma abordagem pragmática e tecnicamente embasada sobre como utilizar a IA para resolver três gargalos comuns em projetos Delphi de médio e grande porte: a refatoração de queries SQL legadas para alta performance, a geração de camadas de DTO (Data Transfer Objects) e a implementação de persistência em lote de alto desempenho com FireDAC (Array DML).

Publicado em · Régys Borges da Silveira
Ler artigo →
injeção de dependência

Desacoplando seu Projeto Delphi: Injeção de Dependência sem Frameworks

Muitos desenvolvedores Delphi, ao ouvirem falar de Injeção de Dependência (DI), pensam imediatamente em containers complexos ou frameworks como o Spring4D. Embora essas ferramentas sejam poderosas, elas são apenas facilitadores.

Ver resumo completo

Muitos desenvolvedores Delphi, ao ouvirem falar de Injeção de Dependência (DI), pensam imediatamente em containers complexos ou frameworks como o Spring4D. Embora essas ferramentas sejam poderosas, elas são apenas facilitadores. A Injeção de Dependência, em sua essência, é um padrão de projeto — uma disciplina de codificação que não exige bibliotecas externas para ser aplicada.

Este artigo explora a "DI Pura" (Pure DI), focando em como desacoplar suas classes manualmente para transformar a manutenibilidade e a testabilidade do seu software legado ou novo.

Publicado em · Régys Borges da Silveira
Ler artigo →
métodos anônimos

O Poder dos Métodos Anônimos no Delphi

Durante muito tempo, o Delphi foi sinônimo de Programação Orientada a Objetos (POO) pura. No entanto, com a evolução da linguagem (especificamente a partir do Delphi 2009), ganhamos recursos poderosos que nos permitem adotar um estilo de Programação Funcional.

Ver resumo completo

Durante muito tempo, o Delphi foi sinônimo de Programação Orientada a Objetos (POO) pura. No entanto, com a evolução da linguagem (especificamente a partir do Delphi 2009), ganhamos recursos poderosos que nos permitem adotar um estilo de Programação Funcional.

O recurso mais emblemático dessa mudança são os Métodos Anônimos. Eles não servem apenas para "escrever menos código"; eles mudam fundamentalmente a maneira como podemos arquitetar soluções, permitindo o desacoplamento de lógica e a criação de códigos muito mais seguros e elegantes.

Neste artigo, vamos explorar como tratar código como dados e implementar um padrão robusto para transações de banco de dados que eliminará centenas de linhas repetitivas do seu projeto.

Publicado em · Régys Borges da Silveira
Ler artigo →
delphi na era da ia

Delphi na Era da IA – Modernização de Código Legado com IA: Do VCL Antigo para o Moderno

A manutenção de sistemas legados em Delphi (VCL) é um desafio comum no mercado brasileiro. Décadas de desenvolvimento muitas vezes resultam em "God Classes", acoplamento excessivo e uso ineficiente de memória.

Ver resumo completo

A manutenção de sistemas legados em Delphi (VCL) é um desafio comum no mercado brasileiro. Décadas de desenvolvimento muitas vezes resultam em "God Classes", acoplamento excessivo e uso ineficiente de memória. Este artigo explora como utilizar Grandes Modelos de Linguagem (LLMs) para refatorar código espaguete, otimizar manipulação de strings e implementar Injeção de Dependência (DI), transformando código arcaico em arquiteturas limpas e testáveis.

Neste artigo vou abordar algumas técnicas de prompt e o uso extensivo da IA para modernização do seu código legado, transformando o velho no novo de forma simples e descomplicada.

Publicado em · Régys Borges da Silveira
Ler artigo →