Category: Desenvolvimento

Conectando backends Elixir e Go com um wrapper Crystal

2025-06-19
Conectando backends Elixir e Go com um wrapper Crystal

A equipe Mozi precisava conectar um novo aplicativo Elixir Phoenix LiveView a um backend Go existente. Eles exploraram NIFs e Ports, mas acabaram optando pela abordagem de Nó C do Erlang, usando Crystal para escrever um wrapper C para melhorar a manutenção. Isso desacopla as bases de código em tempo de compilação e execução, usando `Node.list` no Elixir para detectar a conectividade do nó C e S6 para reinicializações dentro do contêiner. Embora haja uma penalidade de desempenho ao cruzar o limite C/Go, isso é aceitável para o caso de uso deles. O resultado é uma combinação elegante de três linguagens (Elixir, Crystal, Go) que aprimora a manutenção.

Desenvolvimento

Atualização do Protocolo de Contexto do Modelo (MCP): Segurança e Funcionalidade Aprimoradas

2025-06-19

O Protocolo de Contexto do Modelo (MCP) lançou uma nova versão com atualizações importantes, incluindo: remoção do suporte para processamento em lote JSON-RPC; adição de suporte para saída de ferramenta estruturada; classificação de servidores MCP como Servidores de Recursos OAuth, com metadados de recursos protegidos adicionados para descobrir o servidor de autorização correspondente; exigência de que os clientes MCP implementem Indicadores de Recurso conforme descrito na RFC 8707 para evitar que servidores maliciosos obtenham tokens de acesso; esclarecimento de considerações de segurança e melhores práticas na especificação de autorização e em uma nova página de melhores práticas de segurança; adição de suporte para elicitação, permitindo que os servidores solicitem informações adicionais dos usuários durante as interações; adição de suporte para links de recursos nos resultados da chamada de ferramenta; exigência de que a versão do protocolo negociada seja especificada por meio do cabeçalho MCP-Protocol-Version em solicitações subsequentes ao usar HTTP; alteração de SHOULD para MUST na Operação de Ciclo de Vida; e outras alterações de esquema, como a adição de um campo _meta a tipos de interface adicionais, a adição de um campo context a CompletionRequest e a adição de um campo title para nomes de exibição amigáveis. O changelog completo está disponível no GitHub.

Desenvolvimento

Acessibilidade no Linux: O Lamento de um Desenvolvedor Voluntário

2025-06-19
Acessibilidade no Linux: O Lamento de um Desenvolvedor Voluntário

Um desenvolvedor GNOME expressa sua frustração com os desafios de melhorar a acessibilidade na área de trabalho Linux. Apesar de investimentos significativos da Fundação GNOME e inúmeras horas de trabalho voluntário, os progressos são pouco reconhecidos, ofuscados por críticas negativas e injustas. O artigo expõe empresas que lucram com o GNOME sem contribuir, incentivando a comunidade Linux a reconhecer a dedicação dos desenvolvedores de acessibilidade e a abordar os problemas sistêmicos que dificultam o progresso.

Desenvolvimento

BeeKEM: Um novo mecanismo de encapsulamento de chave para mensagens de grupo seguras descentralizadas

2025-06-19
BeeKEM: Um novo mecanismo de encapsulamento de chave para mensagens de grupo seguras descentralizadas

Este artigo mergulha no BeeKEM, um novo mecanismo de encapsulamento de chave para mensagens de grupo seguras descentralizadas. Ao contrário do TreeKEM tradicional, o BeeKEM aprimora a recuperação de atualizações offline conflitantes e divisões de rede, permitindo que várias "épocas" de estado do grupo coexistam simultaneamente. Quando os membros recebem atualizações conflitantes, eles retêm todas as chaves recebidas, marcando-as como "conflito", continuando assim a descriptografar e ler mensagens de épocas conflitantes. As atualizações prosseguem tratando os nós conflitantes como em branco. O BeeKEM desbloqueia novas possibilidades para a construção de aplicativos locais prioritários com maior privacidade e autonomia.

Unregistry: Registro de imagens Docker leve para transferências sem esforço

2025-06-19
Unregistry: Registro de imagens Docker leve para transferências sem esforço

Unregistry é um registro de imagens de contêiner leve que armazena e serve imagens diretamente do armazenamento do seu daemon Docker. O comando `docker pussh` permite enviar imagens para servidores Docker remotos via SSH, transferindo apenas as camadas ausentes para maior velocidade e eficiência. Ignore as complexidades do Docker Hub ou registros auto-hospedados; simplesmente use `docker pussh myapp:latest user@server` para uma transferência direta e simples. Ele estabelece um túnel SSH, executa um contêiner Unregistry temporário, envia apenas as camadas ausentes e, em seguida, fecha o túnel. Perfeito para implantações de produção, pipelines de CI/CD e ambientes isolados.

fang: Aprimorando seus aplicativos CLI Cobra

2025-06-19
fang: Aprimorando seus aplicativos CLI Cobra

fang é uma pequena biblioteca experimental que fornece aprimoramentos integrados para aplicativos CLI baseados em Cobra. Ele possui recursos como páginas de ajuda e uso totalmente estilizadas, erros estilizados, tratamento automático de --version, geração de páginas man (usando mango), conclusão de shell, temas e saída de uso silenciosa. A integração é simples, exigindo alterações mínimas de código para melhorar significativamente a experiência do usuário do seu CLI.

Desenvolvimento

arXivLabs: Projetos Experimentais com Colaboração da Comunidade

2025-06-18
arXivLabs: Projetos Experimentais com Colaboração da Comunidade

arXivLabs é uma estrutura que permite a colaboradores desenvolverem e compartilharem novos recursos do arXiv diretamente em nosso site. Indivíduos e organizações que trabalham com o arXivLabs adotaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade dos dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Desmontando os Módulos VAC: Uma Imersão Profunda no Anti-Cheat do Steam

2025-06-18

Este post detalha uma jornada de engenharia reversa no sistema Anti-Cheat (VAC) da Valve. O autor analisa meticulosamente o processo de serviço do Steam (steamservice.dll), descobrindo as intrincadas funcionalidades de carregamento e execução dos módulos VAC. Ao modificar uma instrução específica, o autor força o VAC a usar LoadLibrary para o carregamento de módulos, permitindo a extração dos módulos VAC. O processo é explicado passo a passo, incluindo a localização das chamadas LoadLibraryW, o rastreamento das cadeias de chamadas de funções e a identificação de arquivos temporários. A extração bem-sucedida dos módulos VAC e a revelação de funções-chave dentro deles estabelece a base para análises futuras dos mecanismos anti-cheat do VAC.

Desenvolvimento

Automatizando a portabilidade de C para Rust com LLMs: Uma estratégia surpreendentemente eficaz

2025-06-18

Este post detalha a experiência do autor em automatizar a portabilidade de código C para Rust usando modelos de linguagem grandes (LLMs). Após experimentar várias abordagens, uma estratégia baseada em ordenação topológica e testes de fuzzing se mostrou altamente eficaz. Os símbolos no código C foram ordenados topologicamente, então o LLM gerou versões Rust de cada símbolo junto com testes de fuzzing. A comparação de saída verificou a correção. Isso portou com sucesso a biblioteca de compressão Zopfli de C para Rust com resultados idênticos. Embora não seja totalmente automatizado, isso reduziu drasticamente o custo e o esforço, oferecendo uma nova abordagem para manutenção e atualizações de grandes bases de código.

(rjp.io)

S-expr: Um analisador de S-expressões peculiar

2025-06-18
S-expr: Um analisador de S-expressões peculiar

S-expr é uma biblioteca de análise de S-expressões com extensões exclusivas para a sintaxe de S-expressões. Suporta strings e comentários de uma e várias linhas e introduz um conceito inovador chamado "blocos transpostos". Os blocos transpostos permitem que o código seja escrito com linhas e colunas trocadas, melhorando a legibilidade para expressões aninhadas complexas. Este design visa equilibrar a simplicidade das S-expressões com melhor legibilidade e expressividade do código. Embora mais complexo do que o Lisp tradicional, prioriza o equilíbrio entre simplicidade e usabilidade.

Construindo Agentes de IA Empresariais com Flink SQL: Conectando LLMs a Dados Internos

2025-06-18

Este artigo explora a construção de agentes de IA empresarial usando Flink SQL, conectando modelos de linguagem grandes (LLMs) a dados e recursos internos. Para dados estruturados, a semântica de junção SQL do Flink SQL integra facilmente dados de bancos de dados externos com a entrada do LLM. Para dados não estruturados, o artigo propõe a geração aumentada por recuperação (RAG), codificando dados em vetores armazenados em um banco de dados vetorial, e então consultando e integrando por meio do suporte de tipo vetorial do Flink SQL. Usando o exemplo de resumir artigos de pesquisa e incorporar pesquisas internas, o artigo demonstra a construção de um sistema de agente de IA com dois trabalhos Flink SQL: um atualiza o armazenamento vetorial, o outro consulta e invoca o LLM. Finalmente, menciona o uso de Process Table Functions (PTFs) para integrar o padrão MCP da Anthropic para uma construção de agente de IA mais flexível.

Desenvolvimento

Melhorando a Qualidade do Banco de Conhecimento para Sistemas RAG: Boas Práticas para IA e Humanos

2025-06-18
Melhorando a Qualidade do Banco de Conhecimento para Sistemas RAG: Boas Práticas para IA e Humanos

Este guia descreve as melhores práticas para criar documentação que atenda efetivamente leitores humanos e IAs/LLMs em sistemas de Geração Aumentada por Recuperação (RAG). Documentação de alta qualidade melhora as respostas de IA e a experiência do usuário, criando um ciclo de feedback positivo. O artigo detalha como os sistemas de IA processam a documentação (recuperação, banco de dados vetorial, geração), destacando a importância de conteúdo claro, conciso e contextualmente completo. As recomendações incluem o uso de HTML semântico, evitar PDFs, criar conteúdo amigável para rastreadores, garantir clareza semântica, fornecer equivalentes de texto para elementos visuais e manter layouts simples. O guia também aborda desafios comuns de design de conteúdo, como dependências contextuais, lacunas de descobribilidade semântica, suposições de conhecimento implícito e dependências de informações visuais. Ele defende uma arquitetura de informação hierárquica, seções autocontidas e o fornecimento de contexto de erro com soluções. Em última análise, o objetivo é uma documentação que seja ao mesmo tempo legível para humanos e amigável para IA.

Desenvolvimento documentação de IA

ChatGPT: Meu Gerador de Sites Estáticos

2025-06-18
ChatGPT: Meu Gerador de Sites Estáticos

Cansado dos geradores de sites estáticos tradicionais, o autor explorou várias opções antes de optar por uma solução inesperada: ChatGPT! Basta copiar e colar posts novos e antigos no ChatGPT para gerar as páginas HTML sem esforço, sem necessidade de configuração. Embora exista o risco do ChatGPT alterar sutilmente o texto original, a simplicidade e velocidade do método são convincentes — até este artigo foi criado dessa forma. O autor especula sobre a IA substituindo ferramentas tradicionais em mais áreas, como geradores de documentação e ferramentas de linha de comando.

Desenvolvimento

DSC: Uma biblioteca de tensores compatível com PyTorch e estrutura de inferência

2025-06-18
DSC: Uma biblioteca de tensores compatível com PyTorch e estrutura de inferência

DSC é uma biblioteca de tensores compatível com PyTorch e uma estrutura de inferência para modelos de aprendizado de máquina. Possui uma API de baixo nível compatível com C, encapsulada em uma API Python moderna semelhante ao NumPy/PyTorch, com melhorias de usabilidade. Recursos-chave incluem uma API intuitiva, suporte integrado a redes neurais, suporte a vários backends (CPU e CUDA), dependências externas mínimas e nenhuma alocação em tempo de execução. A instalação é simples, exigindo apenas um compilador C++20 e GNU Make. Aceleração CUDA é suportada; basta definir variáveis de ambiente para habilitá-la. Testes unitários são executados por meio do pytest, garantindo a precisão.

Desenvolvimento biblioteca de tensores

arXivLabs: Projetos experimentais com colaboradores da comunidade

2025-06-18
arXivLabs: Projetos experimentais com colaboradores da comunidade

arXivLabs é uma estrutura que permite que colaboradores desenvolvam e compartilhem novos recursos do arXiv diretamente em nosso site. Indivíduos e organizações que trabalham com o arXivLabs adotaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade dos dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Entendendo NAT: A solução inteligente do Linux para a escassez de endereços IPv4

2025-06-18

Imagine sua rede Wi-Fi doméstica: todos os dispositivos compartilham o mesmo endereço IP público. Isso é graças à Tradução de Endereço de Rede (NAT). Com o número limitado de endereços IPv4, a NAT mapeia inteligentemente IPs privados para um único IP público em seu roteador, permitindo que vários dispositivos compartilhem um único IP público. Este artigo mergulha no funcionamento da NAT, explorando diferentes tipos (Full Cone, Restricted Cone, Symmetric NAT) e sua implementação no Linux (usando nftables), ilustrado com um exemplo do Docker. Embora a NAT resolva temporariamente o esgotamento do IPv4, ela introduz limitações como a quebra da conectividade de ponta a ponta e a complicação da criptografia. Em última análise, a adoção generalizada do IPv6 é a verdadeira solução.

Desenvolvimento

Workout.cool: A Plataforma de Fitness de Código Aberto Renascida

2025-06-18
Workout.cool: A Plataforma de Fitness de Código Aberto Renascida

Workout.cool é uma plataforma moderna de treinamento físico de código aberto, renascida das cinzas de sua predecessora, workout.lol. Após o projeto original ser abandonado devido a problemas de licenciamento de vídeo, o desenvolvedor Snouzy assumiu e reconstruiu a plataforma do zero, oferecendo um banco de dados abrangente de exercícios, rastreamento de progresso e planos de treino personalizados. Construído com Next.js App Router e arquitetura Feature-Sliced Design, o projeto acolhe contribuições da comunidade. É um projeto da comunidade, para a comunidade, com o objetivo de fornecer uma plataforma confiável e fácil de manter para a comunidade de fitness de código aberto.

Desenvolvimento

Um Programador Rejeita Ferramentas de Codificação de IA: Eficiência, Ética e Meio Ambiente

2025-06-18

Um programador experiente explica sua recusa em usar ferramentas de codificação de IA, não por resistência tecnológica, mas por preocupações profundas com eficiência, ética e meio ambiente. O autor argumenta que os ganhos de produtividade das ferramentas de IA atuais são questionáveis ​​e que elas correm o risco de introduzir mais erros. Além disso, o treinamento de modelos de IA coloca uma pressão imensa no meio ambiente, e suas fontes de dados levantam preocupações éticas, incluindo violação de propriedade intelectual. O autor enfatiza a alegria da "luta e aprendizado" na programação e as vantagens do código escrito manualmente em termos de qualidade e manutenibilidade. Em última análise, ele escolhe seguir os métodos de programação tradicionais e pede uma regulamentação mais rigorosa da tecnologia de IA.

Desenvolvimento

Criptografia Homomórfica e Software Local-First: Um Compromisso?

2025-06-18
Criptografia Homomórfica e Software Local-First: Um Compromisso?

Este artigo explora os desafios de usar criptografia homomórfica para proteger dados privados em software local-first. Embora a criptografia homomórfica permita computação sem descriptografia, ela introduz sobrecargas significativas de desempenho e armazenamento. O autor demonstra as limitações práticas da criptografia homomórfica em CRDTs construindo um registro CRDT 'last-write-wins' criptografado homomorficamente. O artigo destaca como a criptografia homomórfica requer operações sob suposições de pior caso, aumentando drasticamente a complexidade de espaço e tempo. Em última análise, o autor conclui que proteger aplicativos local-first sem degradar severamente a usabilidade permanece um problema em aberto.

Desenvolvimento software local-first

Entendendo o Algoritmo A* de Busca de Caminho: De Busca em Largura a Busca Gulosa

2025-06-18
Entendendo o Algoritmo A* de Busca de Caminho: De Busca em Largura a Busca Gulosa

Este artigo explica de forma clara o algoritmo A* de busca de caminho. Começando com a simples Busca em Largura (BFS), ele introduz progressivamente o algoritmo de Dijkstra (lidando com custos de movimento variados), a Busca Gulosa e, finalmente, o algoritmo A*. Por meio de diagramas e exemplos de código, o artigo mostra claramente a operação e as vantagens e desvantagens de diferentes algoritmos, discutindo sua aplicabilidade em diferentes cenários, como busca de caminho em mapas e IA de jogos. O A*, ao incorporar uma função heurística, encontra o caminho mais curto enquanto melhora a eficiência da busca, tornando-o um algoritmo de busca de caminho popular em muitos jogos.

Não zombe do que você não possui: Uma maneira melhor de testar dependências de terceiros

2025-06-18
Não zombe do que você não possui: Uma maneira melhor de testar dependências de terceiros

Este artigo aborda um problema comum em testes unitários: lidar com dependências de terceiros. Usando um cliente de repositório Docker como exemplo, o autor demonstra as desvantagens de simular diretamente dependências de terceiros (como clientes HTTP): os testes se tornam complexos, frágeis e difíceis de entender. A solução proposta envolve a introdução de uma fina camada de abstração para desacoplar a lógica de negócios de dependências externas, simplificando os testes e melhorando a legibilidade e a manutenção do código. Essa abordagem não apenas leva a testes mais limpos e concisos, mas também aprimora a legibilidade e a manutenção da própria lógica de negócios. Embora reconhecendo exceções, o autor conclui que esse princípio ajuda a escrever testes mais elegantes e fáceis de manter na maioria dos casos.

Lista de Funções da API Nativa do Windows NT

2025-06-18

Esta lista contém inúmeras funções da API nativa do Windows NT, abrangendo diversos aspectos como sistemas de arquivos, gerenciamento de processos, gerenciamento de threads, segurança e registro. Essas funções são essenciais para operações de baixo nível do Windows, formando a base para interfaces de aplicativos de nível superior. Compreendê-las é crucial para programadores de sistemas e pesquisadores de segurança.

Desenvolvimento

Scrappy: Criando aplicativos caseiros para amigos e familiares

2025-06-18
Scrappy: Criando aplicativos caseiros para amigos e familiares

John e Pontus criaram o Scrappy, um protótipo de pesquisa para a criação de aplicativos simples e personalizados para você e seus amigos. É uma ferramenta visual semelhante ao Figma ou Google Slides, mas permite anexar comportamentos a objetos interativos. Você arrasta e solta objetos como botões e campos de texto, e adiciona código JavaScript para definir suas ações, como registrar a entrada de texto ao clicar em um botão. Aplicativos Scrappy são multijogador, com estado persistente e sincronizado, tornando a colaboração com amigos e familiares perfeita. O objetivo é democratizar a criação de software, permitindo que mais pessoas criem aplicativos adaptados às suas necessidades exclusivas.

Editor de texto CLI de código aberto da Microsoft: Edit – Leve, rápido e semelhante ao VS Code

2025-06-18
Editor de texto CLI de código aberto da Microsoft: Edit – Leve, rápido e semelhante ao VS Code

A Microsoft lançou o Edit, um editor de texto de linha de comando de código aberto, leve, rápido e fácil de usar. Projetado com uma experiência de usuário semelhante ao VS Code, o Edit visa preencher a lacuna nas versões recentes do Windows, que não incluem um editor de texto CLI integrado. Embora voltado principalmente para usuários do Windows, o Edit também funciona no Linux e macOS. Sua edição sem modos, abertura de arquivos extremamente rápida e conjunto de recursos minimalista o tornam ideal para edições de texto rápidas. Embora não possua recursos avançados como destaque de sintaxe, sua velocidade e simplicidade o tornam uma alternativa atraente.

Desenvolvimento

Incant: Adicione feitiços mágicos ao seu código

2025-06-18
Incant: Adicione feitiços mágicos ao seu código

Incant é uma nova biblioteca que permite aos desenvolvedores integrarem invocações de modelos de linguagem com segurança. Ela fornece primitivas como `createSelector` e `createFilter` para operações em arrays, como selecionar o maior número ou filtrar nomes masculinos. Incant lê chaves de API de variáveis de ambiente, é fácil de configurar e garante segurança de tipo, prevenindo alucinações. No entanto, esteja ciente de que todos os dados de entrada são enviados para provedores de inferência a montante, portanto, evite enviar informações pessoais ou sensíveis.

Desenvolvimento ferramenta de desenvolvedor

Modelo de Regras Universais para Assistentes de Codificação de IA: Potencialize seu Fluxo de Trabalho

2025-06-18
Modelo de Regras Universais para Assistentes de Codificação de IA: Potencialize seu Fluxo de Trabalho

Cansado do comportamento inconsistente da IA em diferentes assistentes de codificação? Este modelo fornece uma estrutura robusta e multiplataforma para elevar sua experiência de programação em pares com IA. Ele utiliza princípios de engenharia de software estabelecidos e documentação estruturada para garantir a operação consistente da IA, compreensão profunda do projeto e fluxos de trabalho ótimos em ferramentas como Cursor, CLINE, RooCode, Windsurf e GitHub Copilot. Vá além de protótipos simples e crie aplicativos sofisticados com parceiros de IA que realmente entendam seu projeto.

Desenvolvimento

lstr: Visualizador de árvore de diretórios em Rust, com velocidade incrível

2025-06-18
lstr: Visualizador de árvore de diretórios em Rust, com velocidade incrível

lstr é um visualizador de árvore de diretórios minimalista e extremamente rápido, escrito em Rust. Inspirado no comando `tree`, o lstr oferece um poderoso modo interativo, além de uma visualização clássica. Ele utiliza a varredura de diretórios em paralelo para maximizar a velocidade, possui uma interface limpa e sem poluição visual, e fornece opções para exibir ícones de arquivos, permissões, tamanhos e status do Git. Integração com `.gitignore`, controle de profundidade e pesquisa fuzzy (via fzf) também são suportados. Você pode até integrar o lstr ao seu shell como um comando `cd` visual. Seja na visualização clássica em árvore ou no TUI interativo, a eficiência e o design limpo do lstr aprimorarão seu fluxo de trabalho de gerenciamento de arquivos.

Desenvolvimento árvore de diretórios

Projeto de um dia chuvoso: Um compilador de TinyBASIC para Go

2025-06-18

Em um fim de semana chuvoso, o autor construiu um compilador que traduz código TinyBASIC para Go. Usando nex (lexer) e goyacc (parser) do Go, o projeto compreende três etapas: análise lexical, análise sintática e geração de código. O autor detalha a gramática e o processo de geração de código, mostrando exemplos de programas e saídas. Este projeto divertido e desafiador demonstra a aplicação prática dos princípios de compiladores.

Desenvolvimento

Plasma 6.4: Experiência de desktop mais suave, amigável e poderosa

2025-06-17
Plasma 6.4: Experiência de desktop mais suave, amigável e poderosa

O KDE Plasma 6.4 chegou, oferecendo uma experiência de desktop mais suave, amigável e poderosa. As melhorias abrangem acessibilidade, renderização de cores, suporte para tablets, gerenciamento de janelas e muito mais. Recursos principais incluem layouts de ladrilhos personalizáveis por área de trabalho virtual, uma ferramenta de captura de tela Spectacle reformulada, visualização de cores no KRunner e suporte aprimorado para artistas digitais e monitores HDR. A atualização também aprimora notificações, widgets e monitoramento do sistema. O Plasma 6.4 se concentra na criação de um ambiente de desktop mais conveniente e eficiente.

Desenvolvimento

bzip2 em Rust: Mais rápido e com compilação cruzada simplificada

2025-06-17
bzip2 em Rust: Mais rápido e com compilação cruzada simplificada

A versão 0.6.0 do bzip2, recém-lançada, utiliza por padrão a implementação em Rust, libbz2-rs-sys, proporcionando melhorias significativas de velocidade na compressão e descompressão, além de simplificar a compilação cruzada. Este trabalho aborda a dependência contínua em bzip2 em muitos projetos, com a versão Rust oferecendo soluções para problemas de compilação de longa data, como a compilação WebAssembly e compatibilidade com Windows/Android. Testes de benchmark mostram que a implementação em Rust geralmente supera a implementação em C, e uma auditoria de segurança Miri garante a confiabilidade do código.

Desenvolvimento
1 2 57 58 59 61 63 64 65 214 215