Category: Desenvolvimento

Paralelismo Verdadeiro com Estado Mutável Global em Ruby

2025-03-25

Este artigo explora como alcançar verdadeiro paralelismo com estruturas de dados concorrentes em Ruby, superando a limitação das primitivas internas do Ruby que não suportam estado mutável global para concorrência. O autor demonstra um método para alcançar isso, requerendo familiaridade com Ruby, Rust e C, juntamente com algumas ferramentas adicionais. Exemplos de código estão disponíveis no GitHub e exigem uma versão recente do Ruby (recomenda-se o branch master para compilação local), Rust e compiladores C.

Desenvolvimento

Risco de segurança no GitHub Actions: A vulnerabilidade de tags mutáveis

2025-03-25
Risco de segurança no GitHub Actions: A vulnerabilidade de tags mutáveis

Um ataque recente ao GitHub Action tj-actions/changed-files destacou uma vulnerabilidade de segurança. Ao modificar uma tag Git mutável, atacantes conseguiram injetar código malicioso e vazar segredos de logs de compilação, que são públicos para repositórios públicos. O autor compartilha um script shell para auditar os GitHub Actions usados, enfatizando a importância do uso de IDs de commit imutáveis para segurança. O script analisa arquivos YAML de workflow para identificar e contar ações, priorizando aqueles de grandes organizações ou scripts escritos pelo próprio autor em vez de outros menos confiáveis. O autor defende a priorização de ações de grandes organizações e a escrita de scripts personalizados sempre que possível.

Desenvolvimento

Aceleração de 100x: Coleta de Lixo e GPUs em Python

2025-03-25
Aceleração de 100x: Coleta de Lixo e GPUs em Python

Esta publicação descreve como o autor conseguiu uma aceleração de 100x em um programa Python por meio de otimizações de código simples. O programa inicial utilizava NumPy para computação paralela, mas era lento e consumia muita memória devido ao gerenciamento de memória inadequado. Ao implementar um mecanismo simples de coleta de lixo para liberar variáveis intermediárias não utilizadas, o autor reduziu o tempo de execução de 40 segundos para 10 segundos, diminuindo significativamente o uso de memória. Posteriormente, usando CuPy para transferir a computação para a GPU, o tempo de execução foi reduzido ainda mais para 1,5 segundos, demonstrando uma melhoria de desempenho dramática.

Desenvolvimento Otimização Python

Jakt: Uma Linguagem de Programação de Sistemas Segura em Memória

2025-03-25
Jakt: Uma Linguagem de Programação de Sistemas Segura em Memória

Jakt é uma nova linguagem de programação de sistemas segura em memória, atualmente sendo transpilada para C++. Ela utiliza estratégias como contagem automática de referências, tipagem forte e verificação de limites para garantir a segurança de memória, evitando ponteiros brutos. Jakt enfatiza a legibilidade do código com um sistema de módulos flexível e sintaxe limpa. Suporta structs, classes, enums, correspondência de padrões, genéricos, sobrecarga de operadores e tratamento de exceções, além de recursos poderosos em tempo de compilação, como execução de funções em tempo de compilação. Embora ainda esteja em desenvolvimento, Jakt visa equilibrar desempenho, segurança e produtividade do desenvolvedor.

Desenvolvimento

Macros X: A Arma Secreta de Geração de Código do Compilador Chapel

2025-03-25

O compilador Chapel utiliza de forma inteligente macros X para simplificar drasticamente a geração de código. O artigo usa a interação de strings e a hierarquia de classes AST como exemplos, mostrando como as macros X geram elegantemente grandes quantidades de código repetitivo. Isso inclui declarar e inicializar mais de 100 variáveis de string e gerar código de padrão de visitante para nós AST. As macros X conseguem isso definindo macros em arquivos de cabeçalho, que são então incluídos no código, aumentando assim a manutenibilidade e escalabilidade do código. Até mesmo a geração de uma hierarquia de classes Python é facilmente gerenciada. O artigo conclui discutindo as vantagens e desvantagens dessa abordagem, observando que, embora as dependências sejam mais fortes, a natureza declarativa torna o código mais legível e fácil de manter.

Desenvolvimento Macros X Compilador Chapel

Polypane: Construa, depure e teste sites em um só lugar

2025-03-25
Polypane: Construa, depure e teste sites em um só lugar

Polypane é uma ferramenta poderosa de desenvolvimento web que permite construir, depurar e testar todos os aspectos do seu site sem alternar de contexto. Ele suporta design responsivo, verificações de acessibilidade, verificação de meta tags e testes de desempenho. Veja todos os viewports de uma vez, de telas de dispositivos móveis a monitores 5K; obtenha feedback instantâneo sobre estrutura, metadados e acessibilidade; e teste facilmente diferentes visualizações, como modo escuro e claro. Todas as ações são espelhadas em todos os dispositivos para um fluxo de trabalho simplificado.

Desenvolvimento Ferramenta de Depuração

Hann: Uma biblioteca de busca de vizinhos mais próximos aproximados ultrarrápida para Go

2025-03-25
Hann: Uma biblioteca de busca de vizinhos mais próximos aproximados ultrarrápida para Go

Hann é uma biblioteca de busca de vizinhos mais próximos aproximados (ANN) de alto desempenho para Go. Ela oferece várias estruturas de dados de índice (HNSW, PQIVF, RPT) para buscas de similaridade eficientes em espaços de alta dimensionalidade, atuando como um componente central para bancos de dados vetoriais. Aumente suas aplicações Go com recursos de busca de similaridade na memória rápida. Suporta vários cálculos de distância (Euclidiana, Manhattan, cosseno), salvamento e carregamento de índice e operações em massa.

A Revisão de Aplicativos da Apple: Um Obstáculo para os Desenvolvedores?

2025-03-25
A Revisão de Aplicativos da Apple: Um Obstáculo para os Desenvolvedores?

Este artigo critica o processo de revisão da App Store da Apple, argumentando que sua ineficiência dificulta os desenvolvedores a aproveitarem as ferramentas de IA para desenvolvimento e lançamento rápidos de aplicativos. Com o surgimento de ferramentas de desenvolvimento assistidas por IA, a velocidade de desenvolvimento de software aumentou dramaticamente, mas o processo de revisão de aplicativos da Apple continua sendo complicado, levando os desenvolvedores a plataformas alternativas, como React Native ou implantações em nuvem. O autor sugere que, se a Apple não melhorar seu processo de revisão de aplicativos, corre o risco de perder desenvolvedores e, consequentemente, afetar sua posição de mercado.

Desenvolvimento

Codificador Agêntico Minimalista em 200 Linhas de TypeScript

2025-03-25

Um codificador agêntico minimalista, mycoder-mini, construído usando o LLM Claude 3 da Anthropic, foi implementado em apenas 200 linhas de TypeScript. Ele recebe prompts do usuário, gera comandos de shell por meio do Claude 3, os executa e itera até que a tarefa seja concluída. Embora limitado pela execução síncrona, falta de integração com o navegador e um conjunto de ferramentas restrito, o mycoder-mini demonstra claramente os princípios básicos da codificação agêntica, fornecendo um ótimo ponto de partida para aprender e explorar sistemas mais sofisticados.

Desenvolvimento Codificação Agêntica

IngressNightmare: Vulnerabilidades Críticas Afetam Milhares de Clusters Kubernetes

2025-03-25
IngressNightmare: Vulnerabilidades Críticas Afetam Milhares de Clusters Kubernetes

A Wiz Research descobriu uma série de vulnerabilidades de execução remota de código não autenticada (apelidada de #IngressNightmare) no Ingress NGINX Controller para Kubernetes. A exploração concede acesso não autorizado a todos os segredos em todos os namespaces, potencialmente levando à tomada de controle do cluster. Aproximadamente 43% dos ambientes de nuvem são vulneráveis, com mais de 6.500 clusters afetados, incluindo empresas da Fortune 500, expondo publicamente componentes vulneráveis. A correção imediata é crucial. As medidas de mitigação incluem a atualização para a versão mais recente do Ingress NGINX Controller ou a desativação do componente do controlador de admissão.

SDK do Freedesktop remove extensão OpenH264: litígio de patentes e riscos de segurança

2025-03-25
SDK do Freedesktop remove extensão OpenH264: litígio de patentes e riscos de segurança

Este artigo detalha a remoção da extensão OpenH264 do SDK do Freedesktop. Inicialmente, para resolver problemas de patentes H.264, o libopenh264 da Cisco foi usado por meio de uma extensão Flatpak. No entanto, essa abordagem apresentou desafios: um certificado SSL inválido, riscos de segurança e atualizações difíceis. O SDK do Freedesktop integrou a decodificação H.264 na extensão codecs-extra, que inclui outras bibliotecas de codecs e é instalada automaticamente como uma extensão de tempo de execução. Isso resolveu os numerosos problemas associados à extensão OpenH264, reduzindo a sobrecarga de manutenção e melhorando a segurança.

Desenvolvimento SDK do Freedesktop

Reconstruindo a Biblioteca Padrão C++ do Zero: O Projeto Pystd

2025-03-25
Reconstruindo a Biblioteca Padrão C++ do Zero: O Projeto Pystd

Cansado dos tempos de compilação terríveis e da ilegibilidade da Biblioteca Padrão C++ (STL), um desenvolvedor open-source decidiu criar uma substituta do zero: Pystd. Inspirando-se na biblioteca padrão do Python, ele implementou gradualmente o manuseio de arquivos, manipulação de strings, validação UTF-8, mapas hash, vetores e ordenação. O resultado? Um aplicativo funcional com menos de 1000 linhas de código, comparável à versão STL. Pystd possui tempos de compilação significativamente mais rápidos e tamanhos de executáveis menores. Um esquema de versionamento exclusivo (por exemplo, pystd2025) garante estabilidade perfeita de ABI, facilitando atualizações e manutenção futuras.

Desenvolvimento Biblioteca Padrão

A Arte Perdida das Mensagens de Commit: Um Guia para Commits Git Eficazes

2025-03-25

Este artigo critica a prática comum de escrever mensagens de commit do Git vagas, como "corrigir bug" ou "atualizar código". Ele enfatiza a importância de mensagens de commit claras para a colaboração em equipe e a depuração futura. O artigo detalha um formato padronizado para mensagens de commit, incluindo tipo (feat, fix, chore, etc.), escopo, descrição curta, pontos detalhados e rodapé, com vários exemplos. O autor incentiva os desenvolvedores a cultivar o hábito de escrever mensagens de commit de alta qualidade para criar um histórico de projeto claro e compreensível.

Triforce: Um Formador de Feixe para Laptops com Apple Silicon

2025-03-25
Triforce: Um Formador de Feixe para Laptops com Apple Silicon

Triforce implementa um formador de feixe adaptativo de Resposta de Distorção Mínima e Variância para a matriz de microfones encontrada nos laptops Apple Silicon. As matrizes de microfones da Apple (triângulo ou linha reta) são muito sensíveis e omnidirecionais, exigindo formação de feixe para isolar os sinais desejados e reduzir o ruído de fundo. Este projeto visa fornecer um formador de feixe acessível, potencialmente menos eficiente que a implementação da Apple, mas com dependências mínimas e aberto a contribuições da comunidade.

Desenvolvimento formação de feixe

Vibe-Eyes: Dando visão aos LLMs em jogos de navegador

2025-03-25
Vibe-Eyes: Dando visão aos LLMs em jogos de navegador

Vibe-Eyes é um servidor MCP inovador que permite que modelos de linguagem grandes (LLMs) 'vejam' o que está acontecendo em jogos e aplicativos baseados em navegador. Ele usa uma arquitetura cliente-servidor: um cliente leve de navegador captura o conteúdo da tela e informações de depuração, enviando-as via WebSockets para um servidor Node.js. O servidor vetorializa as imagens em SVGs compactos, disponibilizando-as para LLMs via Protocolo de Contexto de Modelo (MCP). Isso permite que os LLMs 'vejam' o aplicativo e forneçam assistência de depuração rica em contexto, aprimorando significativamente a eficiência da 'codificação vibe'.

Desenvolvimento

É hora de parar de construir bancos de dados KV

2025-03-25
É hora de parar de construir bancos de dados KV

O autor critica os bancos de dados Key-Value por serem excessivamente simplistas e carentes de poder expressivo, tornando-os difíceis de usar. Embora populares entre fornecedores de mecanismos de armazenamento, os bancos de dados KV são meramente blocos de construção para modelos de dados razoáveis, obrigando os usuários a construí-los do zero, muitas vezes com resultados subótimos. O autor propõe um meio-termo: um banco de dados embutido com registros tipados, separando os esquemas lógicos e físicos, mas escrevendo consultas contra o esquema físico. Isso evita planejadores de consultas complexos, suporta alterações de esquema assíncronas e troca de layouts. Essa abordagem equilibra a independência de dados com a simplicidade necessária para sistemas embutidos, oferecendo uma alternativa convincente tanto para lojas KV simples quanto para as complexidades de bancos de dados relacionais completos.

Desenvolvimento

Modelica: Modelagem Elegante de Sistemas Ciberfísicos Complexos

2025-03-25

Modelica é uma linguagem para modelagem de sistemas ciberfísicos, suportando a conexão acausal de componentes governados por equações matemáticas para modelagem a partir de princípios primeiros. Sua estrutura orientada a objetos facilita a reutilização de modelos e simplifica a modelagem de sistemas complexos com componentes mecânicos, elétricos, eletrônicos, magnéticos, hidráulicos, térmicos, de controle, de potência ou de processo. Recursos de aprendizado incluem guias online, livros e a Biblioteca Padrão Modelica, que oferece convenções de codificação e numerosos modelos existentes para aprendizado e prática. Usar Modelica requer uma ferramenta que implemente a linguagem e acesso a bibliotecas de modelos.

MRubyD: Máquina virtual mruby em C# para integração perfeita com engines de jogos

2025-03-24
MRubyD: Máquina virtual mruby em C# para integração perfeita com engines de jogos

MRubyD é uma nova máquina virtual mruby implementada em C# puro, projetada para integração perfeita com engines de jogos baseadas em C#. Aproveitando recursos modernos do C#, oferece alto desempenho e extensibilidade, priorizando a compatibilidade com a API Ruby. Atualmente em versão de pré-visualização, alguns recursos como tipos e métodos integrados, bem como visibilidade privada/protegida, estão em desenvolvimento. Instale via `dotnet add package MRubyD` e explore suas funcionalidades por meio dos exemplos fornecidos. Requer o compilador mruby nativo para compilar código-fonte .rb em bytecode .mrb.

Desenvolvimento

Biblioteca de Autorização Flexível: RBAC, ABAC e ReBAC Combinados

2025-03-24
Biblioteca de Autorização Flexível: RBAC, ABAC e ReBAC Combinados

Uma biblioteca de autorização flexível que combina políticas de controle de acesso baseadas em função (RBAC), baseadas em atributo (ABAC) e baseadas em relacionamento (ReBAC). Suporta composição de políticas (AND, OR, NOT), rastreamento detalhado de avaliação e uma API de construtor fluente, com segurança de tipo e suporte assíncrono. Adicione facilmente várias políticas, como RBAC e ABAC, e crie políticas personalizadas usando PolicyBuilder. Exemplos demonstram RBAC, ReBAC e combinadores de políticas.

Desenvolvimento autorização

FaunaDB encerra as operações e migra para código aberto após investimento de US$ 27 milhões

2025-03-24
FaunaDB encerra as operações e migra para código aberto após investimento de US$ 27 milhões

A FaunaDB, startup de banco de dados que recebeu US$ 27 milhões em investimentos, anunciou o encerramento de seus serviços no final de maio, migrando para um modelo de código aberto. A empresa, que contava com 25.000 desenvolvedores usando seu banco de dados serverless, que combinava o poder relacional e a flexibilidade de documentos, citou a natureza intensiva em capital da escalabilidade de um serviço de banco de dados global e o ambiente de mercado atual como razões para o encerramento. Os clientes existentes serão migrados do serviço nos próximos meses. A versão de código aberto incluirá a tecnologia de banco de dados principal, com suporte a documentos JSON com recursos relacionais, como junções, chaves estrangeiras e aplicação de esquema, juntamente com sua linguagem de consulta FQL. Alguns observadores sugerem que uma abordagem de código aberto desde o início poderia ter levado a um maior sucesso.

Desenvolvimento

Vulnerabilidade Crítica no Kubernetes Ingress-Nginx: Risco de Execução de Código Arbitrário

2025-03-24

Múltiplas vulnerabilidades críticas foram descobertas no Kubernetes Ingress-Nginx, sendo a mais grave (CVE-2025-1974) com uma pontuação CVSS de 9.8, permitindo a execução de código arbitrário e potencial vazamento de segredos em todo o cluster. Todas as versões anteriores à v1.11.5 e v1.12.1 são afetadas. Recomenda-se a atualização imediata para a versão mais recente ou a desativação temporária do controlador de admissão de validação para reduzir o risco.

Desenvolvimento

O Sonho Pastoral do Programador: Fugindo do Código, Abraçando a Terra?

2025-03-24

Muitos programadores sonham em largar seus teclados e abraçar o trabalho manual, como carpintaria ou agricultura. Este artigo explora as razões por trás desse fenômeno, sugerindo que ele surge do esgotamento nas práticas de trabalho modernas de software e uma reavaliação do ideal do "homem que se fez sozinho" na cultura americana. O autor, com base em sua experiência pessoal, analisa as complexidades desse anseio, reconhecendo tanto a idealização romântica da vida rural quanto suas duras realidades. Em última análise, o autor argumenta que encontrar significado no trabalho reside não apenas na produção econômica, mas também na construção da comunidade e em um espírito de serviço.

Desenvolvimento programadores vida rural

Desafio Prospero: Renderização de Superfícies Implícitas com Desempenho Extremo

2025-03-24
Desafio Prospero: Renderização de Superfícies Implícitas com Desempenho Extremo

O Desafio Prospero convida desenvolvedores a renderizar uma superfície implícita definida por 7866 expressões matemáticas o mais rápido possível. Os participantes exploram várias técnicas de otimização, incluindo pré-análise de expressões, aceleração Numba, computação GPU e compilação LLVM, usando ferramentas como Python, Numpy, CUDA e compiladores JIT. As soluções alcançaram tempos de renderização em milissegundos e reduziram significativamente o consumo de memória. O desafio incentiva a experimentação e o compartilhamento de resultados para avançar o estado da arte na renderização de superfícies implícitas.

Desenvolvimento superfície implícita

Construindo uma API de E-mail Idempotente com River

2025-03-24

Este artigo demonstra como construir uma API de e-mail segura e idempotente usando o River. Muitos serviços de e-mail carecem de APIs que garantam idempotência, levando a e-mails duplicados ou ausentes. Ao aproveitar os recursos do River e combinar IDs de conta exclusivos com chaves de idempotência, o autor consegue o envio de e-mails idempotentes. Mesmo com erros de rede causando tentativas repetidas, o e-mail é garantido para ser enviado apenas uma vez. O artigo detalha a implementação, cobrindo a definição de argumentos de trabalho, a criação de trabalhadores, o tratamento de solicitações duplicadas e a segurança de correspondência de parâmetros. A API resultante é concisa, eficiente e pronta para produção, evitando muitos problemas comuns de envio de e-mail.

Desenvolvimento idempotência API de e-mail

Lilly: Uma alternativa simplificada ao Vim/Neovim

2025-03-24
Lilly: Uma alternativa simplificada ao Vim/Neovim

Lilly é um editor de texto em desenvolvimento, com o objetivo de ser uma alternativa leve ao Vim e Neovim. Ele se concentra em funcionalidades essenciais, eliminando o complexo ecossistema de plugins Lua para uma experiência de usuário mais simples e acessível. Um lançamento pré-alfa está disponível, e testes mostram zero vazamentos de memória. Contribuições e feedback são bem-vindos.

Desenvolvimento alternativa ao Vim

Dominando o Delphi 5: Uma Retrospectiva de 25 Anos

2025-03-24

Marco Cantu lançou uma edição anotada de 2025 gratuita de seu clássico 'Dominando o Delphi 5'. O livro de 1139 páginas apresenta 475 notas de rodapé e dezenas de novas capturas de tela comparando as interfaces antigas e novas do IDE e dos aplicativos. Embora parte do código não compile, a maioria dos programas ainda são executados, um testemunho do legado duradouro do Delphi. Este presente para a comunidade celebra o 30º aniversário do Delphi e oferece uma jornada nostálgica por sua história.

Desenvolvimento Retrospectiva

PicoRuby: Uma Implementação Ruby Leve para Microcontroladores

2025-03-24
PicoRuby: Uma Implementação Ruby Leve para Microcontroladores

PicoRuby é uma implementação leve do mruby com pequena pegada: 256KB de ROM e menos de 128KB de RAM (arquitetura de 32 bits). Altamente portável, depende apenas de bibliotecas C padrão e suporta microcontroladores como o Raspberry Pi Pico. Ainda em desenvolvimento, fornece documentação da API, vídeos de demonstração e ferramentas de construção. O comando `rake` compila três executáveis: `picorbc` (compila Ruby para código de VM mruby), `picoruby` (executa código Ruby diretamente) e `r2p2` (para uso específico). Desenvolvido por HASUMI Hitoshi e Monstarlab com financiamento da Ruby Association.

Desenvolvimento Ruby embarcado

Magic Todo: Lista de Tarefas Inteligente com IA

2025-03-24

O Magic Todo é um aplicativo de lista de tarefas inteligente que não apenas permite que você registre tarefas como uma lista de tarefas comum, mas também divide automaticamente as tarefas em etapas com base em um nível de ardência (🌶️) que você define. Quanto mais picante, mais detalhada a divisão. Ele categoriza automaticamente tarefas de nível superior com emojis e oferece filtragem por categoria ou status de conclusão. Cada item fornece recursos de edição, exclusão, adição de subtarefas e estimativa, com reordenação por arrastar e soltar. Recursos adicionais incluem sincronização de dispositivos, opções de exportação, desfazer/refazer e ações em massa.

LangGraph: Construindo um Assistente de Codificação de IA Flexível e com Boas Práticas

2025-03-24
LangGraph: Construindo um Assistente de Codificação de IA Flexível e com Boas Práticas

A Qodo construiu um assistente de codificação de IA usando o framework LangGraph, equilibrando flexibilidade com a adesão às melhores práticas de codificação. Inicialmente, eles usaram fluxos predefinidos para tarefas de codificação, mas com o advento de LLMs mais poderosos como o Claude Sonnet 3.5, eles mudaram para a abordagem baseada em grafos do LangGraph. O LangGraph permite a construção de agentes que variam de totalmente abertos a fluxos determinísticos totalmente estruturados, permitindo que a Qodo ajuste a estrutura de seus fluxos com base nas capacidades do LLM. A API limpa do framework, os componentes reutilizáveis e a administração de estado integrada simplificaram o desenvolvimento e suportam persistência, checkpoints e pontos de ramificação. Embora a documentação e os testes apresentem alguns desafios, o LangGraph forneceu uma base sólida para a Qodo construir um assistente de codificação de IA robusto.

Desenvolvimento
1 2 130 131 132 134 136 137 138 214 215