Category: Desenvolvimento

Backend de construção uv: Builds de Python mais rápidos e suaves

2025-07-03

O backend de construção nativo do uv, uv_build, melhora significativamente a velocidade e a experiência do usuário na construção de projetos Python. Ele possui configurações padrão razoáveis, com o objetivo de exigir configuração zero para a maioria dos usuários, mas oferece configuração flexível para acomodar diversas estruturas de projeto. O uv_build atualmente suporta código Python puro; backends alternativos são necessários para bibliotecas com módulos de extensão. Use este backend adicionando `uv_build` ao seu `pyproject.toml` ou criando um novo projeto com `uv init --build-backend uv`. O uv_build também otimiza a normalização do nome do pacote, a descoberta do módulo e as estratégias de inclusão/exclusão de arquivos, levando a builds mais previsíveis e repetíveis.

Desenvolvimento

Código é tudo o que você precisa: As limitações dos pipelines de múltiplos componentes (MCPs)

2025-07-03
Código é tudo o que você precisa: As limitações dos pipelines de múltiplos componentes (MCPs)

Este artigo questiona a praticabilidade dos Pipelines de Múltiplos Componentes (MCPs) para muitas tarefas, argumentando que sua forte dependência de inferência os torna ineficientes e difíceis de escalar. O autor usa um exemplo pessoal - convertendo reStructuredText para Markdown - para demonstrar uma abordagem superior: usar LLMs para gerar código que executa a tarefa, seguido de validação baseada em LLM. Este método reduz a dependência de inferência, melhora a confiabilidade e escala bem, especialmente para tarefas repetitivas. Embora reconheça os pontos fortes do MCP em cenários de nicho, o autor conclui que suas limitações inerentes dificultam a automação em larga escala. O futuro, sugere, reside no desenvolvimento de técnicas de geração de código mais eficazes, combinadas com validação e explicação de LLM para melhorar a usabilidade e a aplicabilidade.

Desenvolvimento

Imagebin do Max: Um Testamento à Simplicidade

2025-07-03
Imagebin do Max: Um Testamento à Simplicidade

Esta história conta a saga de Max, um programador, e seu Imagebin, um script de upload de imagens PHP com 15 anos de idade. O código do Imagebin é notavelmente simples, apenas 233 linhas, a maioria das quais são logs de alterações. O autor tentou uma reescrita em Go, mas descobriu que o código aumentou e a legibilidade diminuiu. Isso levou a uma reflexão sobre a complexidade do design de software, destacando a facilidade de manutenção oferecida por um código conciso. A longevidade do Imagebin de Max é atribuída a essa simplicidade. No final, o autor decidiu manter o código de Max e continuar usando PHP.

Desenvolvimento

Construindo um kernel Linux nativamente no macOS: Uma jornada pelo inferno da compilação

2025-07-03
Construindo um kernel Linux nativamente no macOS: Uma jornada pelo inferno da compilação

Este artigo detalha a experiência do autor ao construir um kernel Linux (arquitetura RISC-V) nativamente no macOS. A jornada foi repleta de desafios: uma versão desatualizada do make, o ld do macOS sendo incompatível com as expectativas do Linux, falta dos headers elf.h e byteswap.h, e conflitos de versão com uuid_t e sed. O autor superou esses problemas usando o Homebrew para instalar toolchains atualizadas (make, llvm, lld, libelf, gnu-sed) e criando patches para resolver discrepâncias de arquivos de header e conflitos de definição de tipo. O kernel foi construído com sucesso, com o macOS mostrando tempos de construção mais rápidos que o Docker para construções limpas, mas construções incrementais mais lentas. O autor conclui que corrigir problemas de construção é um processo contínuo e iterativo, semelhante à integração contínua.

Desenvolvimento

Perguntas e Respostas Comuns sobre Avaliação de IA: Lições de 700+ Engenheiros e Gerentes de Produto

2025-07-03
Perguntas e Respostas Comuns sobre Avaliação de IA: Lições de 700+ Engenheiros e Gerentes de Produto

Esta publicação resume perguntas frequentes encontradas ao ensinar 700+ engenheiros e gerentes de produto em um curso de avaliação de IA. Os tópicos abordados incluem se RAG está morto, seleção de modelos, ferramentas de anotação, metodologias de avaliação, geração de dados sintéticos e lacunas nas ferramentas de avaliação existentes. Os autores enfatizam a importância da análise de erros, defendendo avaliações binárias em vez de escalas de Likert, e compartilhando as melhores práticas para construir ferramentas de anotação personalizadas, escolher tamanhos de chunk apropriados e avaliar sistemas RAG. A publicação também discute as diferenças entre guardrails e avaliadores, configuração mínima viável de avaliação, avaliação de fluxos de trabalho agentivos e os diferentes usos das avaliações em CI/CD versus monitoramento de produção.

Desenvolvimento Análise de Erros

Declarações de Função JavaScript: Três Maneiras de Definir Funções

2025-07-03
Declarações de Função JavaScript: Três Maneiras de Definir Funções

Este artigo mergulha nas nuances dos três estilos de declaração de função do JavaScript: declarações de função, expressões de função e funções de seta. As declarações de função são içadas; as expressões de função podem ser nomeadas, mas seus nomes não são vinculados ao escopo; as funções de seta são concisas, mas carecem de vinculação `this`, capacidades de construtor e funcionalidade de gerador. A escolha depende se você está usando a palavra-chave `this`, precisa de funções geradoras e prioriza a legibilidade do código. Um fluxograma é fornecido para orientar os desenvolvedores na escolha do estilo de declaração de função apropriado para diferentes situações.

Desenvolvimento funções

O Futuro Incerto da Programação: Ansiedade, Esperança e a Ascensão do Desenvolvedor Aumentado por IA

2025-07-03
O Futuro Incerto da Programação: Ansiedade, Esperança e a Ascensão do Desenvolvedor Aumentado por IA

A ansiedade de um jovem programador desencadeia uma reflexão sobre o futuro das carreiras em programação na era da IA. O autor, com base em 28 anos na área de tecnologia, aborda as preocupações sobre o deslocamento de empregos impulsionado pela IA. O argumento afirma que a IA não substituirá os programadores, mas sim aumentará suas habilidades, libertando-os para se concentrarem na resolução criativa de problemas. O programador do futuro precisará dominar o contexto, orientar eficazmente as ferramentas de IA e ser um aprendiz constante para evitar a estagnação. O valor fundamental de um programador — resolução de problemas, pensamento crítico e engenhosidade exclusivamente humana — permanece insustituível pela IA.

Desenvolvimento

LLMs: Aceleração na Geração de Código, Mas a Compreensão Continua Sendo o Gargalo

2025-07-03
LLMs: Aceleração na Geração de Código, Mas a Compreensão Continua Sendo o Gargalo

O advento dos Grandes Modelos de Linguagem (LLMs) aumentou dramaticamente a velocidade de geração de código. No entanto, isso não resolveu os verdadeiros gargalos na engenharia de software: revisões de código, transferência de conhecimento, testes, depuração e colaboração em equipe. O artigo argumenta que os LLMs reduzem o custo de escrever código, mas o custo de entender, testar e confiar nesse código é maior do que nunca. Código gerado por LLM pode ser difícil de entender, violar convenções estabelecidas ou introduzir efeitos colaterais imprevistos, aumentando a dificuldade de revisão e manutenção. Em última análise, a engenharia de software ainda depende da confiança da equipe, do contexto compartilhado e da revisão cuidadosa do código — essas são as chaves para a eficiência.

Desenvolvimento

LLMs como Compiladores: O Futuro da Geração de Código?

2025-07-03

O autor prevê um novo paradigma de desenvolvimento de software: usar Modelos de Linguagem Grandes (LLMs) como compiladores. Em vez de escrever código diretamente, os engenheiros fornecem contexto (requisitos, casos de teste, etc.) ao LLM, que gera e integra código iterativamente. Os engenheiros se concentram no contexto e nos testes, enquanto o LLM cuida da geração e integração de código. Isso reduz a barreira de entrada, aumenta a velocidade de desenvolvimento e potencialmente revoluciona a engenharia de software. Embora as saídas do LLM não sejam perfeitamente previsíveis, testes e iteração garantem confiabilidade. A ideia central é tratar o código como uma camada intermediária; o objetivo é a funcionalidade, não o código perfeito.

Desenvolvimento

A Evolução das Bibliotecas de Cache em Go: De Ristretto a Otter v2

2025-07-03

Este artigo explora a evolução das bibliotecas de cache em Go. As bibliotecas de cache Go iniciais sofriam de concorrência e gargalos de desempenho. O Ristretto surgiu como líder, oferecendo alta taxa de transferência e boas taxas de acerto, mas suas falhas de design acabaram levando à diminuição das taxas de acerto e desempenho subótimo em determinadas cargas. Theine e Otter v1 se seguiram, tentando resolver as deficiências do Ristretto, cada uma com seus próprios pontos fortes e fracos. Finalmente, o autor desenvolveu o Otter v2, que incorpora lições aprendidas com seus predecessores e toma emprestado da biblioteca Caffeine do Java para atingir alta taxa de transferência, altas taxas de acerto e recursos ricos, tornando-o um dos principais concorrentes entre as bibliotecas de cache Go.

Desenvolvimento cache Go algoritmos de cache

Caçando um Higgs-Bugson: Depurando um Problema de NFS/Kerberos em Nível de Kernel

2025-07-03
Caçando um Higgs-Bugson: Depurando um Problema de NFS/Kerberos em Nível de Kernel

Engenheiros encontraram um bug difícil de reproduzir que causava falhas na cópia de arquivos (-EACCES) em Gord, um sistema crítico de dados de negociação. Desabilitar o Kerberos resolveu o problema, indicando problemas de autenticação. A investigação revelou que o kernel obtém credenciais Kerberos por meio do daemon rpc_gssd, mas os logs não mostraram anomalias. Testes extensivos, incluindo a criação de um sistema de arquivos falso na memória e o uso do bpftrace para rastreamento do kernel, finalmente identificaram o problema: alta carga do servidor NFS causou retransmissões de solicitações. O kernel lidou mal com solicitações/respostas com XIDs idênticos, mas números de sequência GSS diferentes, levando a incompatibilidades de checksum e erros. O engenheiro corrigiu o kernel para evitar a retransmissão imediata devido a incompatibilidades de número de sequência.

Desenvolvimento bug do kernel

10 Recursos Incríveis da Linguagem de Programação D

2025-07-03

Esta publicação amigável para iniciantes explora dez recursos cativantes da linguagem de programação D. De pequenas melhorias na qualidade de vida a recursos importantes como construtores automáticos, design por contrato, execução de funções em tempo de compilação (CTFE) e testes unitários integrados, o artigo fornece explicações claras. As poderosas capacidades de metaprogramação de D também são destacadas, rivalizando com poucas linguagens compiladas estaticamente em flexibilidade e poder de modelagem. A publicação também abrange recursos de sintaxe exclusivos do D, como o operador de dólar, a omissão de parênteses e a sintaxe de chamada de função uniforme (UFCS), melhorando significativamente a legibilidade e a eficiência do código. Além disso, D suporta importações com escopo e seletivas e um gerador de documentação integrado, melhorando ainda mais a manutenibilidade e a legibilidade do código. Em resumo, D oferece uma combinação convincente de recursos para programação eficiente e conveniente.

Desenvolvimento Recursos

Pare de construir agentes de IA!

2025-07-03
Pare de construir agentes de IA!

Hugo, um especialista que aconselha equipes da Netflix, Meta e da Força Aérea dos EUA na construção de sistemas com base em LLMs, argumenta que muitas equipes adotam prematuramente agentes de IA, resultando em sistemas complexos e difíceis de depurar. Ele afirma que fluxos de trabalho mais simples, como encadeamento, processamento paralelo, roteamento e padrões de orquestrador-trabalhador, costumam ser mais eficazes do que agentes complexos. Agentes são a ferramenta certa apenas ao lidar com fluxos de trabalho dinâmicos que exigem memória, delegação e planejamento. O autor compartilha cinco padrões de fluxo de trabalho LLM e enfatiza a importância de construir sistemas observáveis e controláveis. Evite agentes para sistemas empresariais estáveis; eles são mais adequados para cenários com intervenção humana.

Desenvolvimento Fluxos de trabalho LLM

Gmailtail: Ferramenta de monitoramento de Gmail na linha de comando

2025-07-03
Gmailtail: Ferramenta de monitoramento de Gmail na linha de comando

Gmailtail é uma ferramenta de linha de comando para monitoramento em tempo real de mensagens do Gmail, com saída em JSON. Oferece filtragem flexível (remetente, assunto, etiquetas, anexos etc.), vários formatos de saída (JSON, JSON Lines, compacto), autenticação OAuth2 e de conta de serviço e checkpoints. Os usuários podem personalizar as regras de monitoramento por meio de argumentos simples de linha de comando ou um arquivo de configuração YAML, tornando-o ideal para automação, monitoramento e integração com outras ferramentas.

Desenvolvimento

O Truque Inteligente do XOR: Resolvendo Problemas de Entrevista Difíceis

2025-07-03

Esta publicação revela um truque inteligente usando o operador bit a bit XOR para resolver vários problemas comuns de entrevista. O XOR possui propriedades únicas: números idênticos resultam em 0, números diferentes resultam em um valor diferente de zero e a ordem das operações não afeta o resultado. Aproveitando essas propriedades, você pode encontrar elegantemente números ausentes ou duplicados em uma matriz, até mesmo dois números ausentes/duplicados, sem recorrer a algoritmos complexos ou estruturas de dados. A publicação explica progressivamente as aplicações do truque XOR com exemplos de código, oferecendo uma abordagem eficiente e concisa para resolver problemas.

Desenvolvimento perguntas de entrevista

Rails: O Milagre de Código Aberto e Seu Impacto em uma Geração de Frameworks

2025-07-02
Rails: O Milagre de Código Aberto e Seu Impacto em uma Geração de Frameworks

Lançado em 2004 sob a licença MIT, o Ruby on Rails revolucionou o desenvolvimento web com sua liberdade, flexibilidade e forte comunidade. Sua filosofia de 'convenção sobre configuração', o ORM ActiveRecord e as poderosas ferramentas de scaffolding melhoraram drasticamente a produtividade do desenvolvedor, influenciando profundamente frameworks posteriores como Laravel, Django e Phoenix. O Rails provou que o código aberto podia competir e superar alternativas comerciais, estabelecendo um modelo para outros e continuando a moldar o desenvolvimento web.

Desenvolvimento

IntyBASIC: Um Compilador BASIC que Revive o Desenvolvimento de Jogos Intellivision

2025-07-02
IntyBASIC: Um Compilador BASIC que Revive o Desenvolvimento de Jogos Intellivision

Inspirado pelos desafios do desenvolvimento de jogos para Intellivision, o autor criou o IntyBASIC, um compilador BASIC para o console Intellivision. Lançado em 2014, o IntyBASIC traduz código-fonte BASIC para assembly CP1610, suportando os recursos de vídeo e som do Intellivision. Seu sucesso gerou um aumento de novos jogos e homebrews Intellivision, levando até mesmo a uma competição de programação. O autor também escreveu dois livros compartilhando insights sobre o desenvolvimento de jogos, cobrindo técnicas básicas a avançadas com o código-fonte completo dos jogos incluído.

Desenvolvimento

Editor Visual de Fluxos de Conversação de Chatbot

2025-07-02
Editor Visual de Fluxos de Conversação de Chatbot

Uma ferramenta visual baseada em navegador para projetar, testar e exportar fluxos de conversa de chatbot como JSON. Adicione nós, edite conteúdo, teste o fluxo e importe/exporte JSON. O JSON exportado é compatível com qualquer aplicativo de chatbot. As opções de instalação incluem: instalar como dependência de desenvolvimento, adicionar a scripts de projeto ou instalação global.

Math.Pow(-1, 2) retorna -1 na versão Canary do .NET 8

2025-07-02
Math.Pow(-1, 2) retorna -1 na versão Canary do .NET 8

Um desenvolvedor do jogo osu! relatou um problema estranho na versão Canary do Windows 11 (27881.1000), onde `Math.Pow(-1, 2)` no .NET 8 retorna inesperadamente -1 em vez de 1. O problema também ocorre na função `std::pow()` do C++, mas funciona corretamente em Python. O desenvolvedor abriu uma issue no GitHub e sugere entrar no servidor Discord do osu! para mais detalhes.

Desenvolvimento Bug do Windows 11

Pare de dizer 'Clique aqui'! - Escrevendo textos de link melhores

2025-07-02

O W3C lançou um guia sobre como escrever textos de link mais eficazes. Ele desaconselha o uso de frases mecânicas como 'clique aqui', sugerindo, em vez disso, um texto conciso e significativo que descreva claramente o conteúdo do link, não a mecânica de clicar. O artigo também apresenta as Dicas de QA do W3C, um recurso que oferece conselhos práticos para desenvolvedores e designers web, incluindo como enviar dicas e um índice das existentes.

Desenvolvimento Texto do Link

Portabl E: Um Compilador AmigaE Multiplataforma

2025-07-02

Portabl E é uma recriação da linguagem de programação AmigaE, aprimorada com melhorias e projetada para compatibilidade multiplataforma. A versão r6b agora está disponível, com suporte total para AmigaOS4, AROS e MorphOS, bom suporte para AmigaOS3 e funcionalidade básica para Linux/Windows. O download requer o nome de usuário "user" e a senha "password". O projeto inclui código de exemplo, capturas de tela, programas pré-compilados, documentação, fóruns e listas de discussão para suporte à comunidade.

Desenvolvimento

arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

2025-07-02
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 abraçaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade de 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

arXivLabs: Experimentos com Colaboração da Comunidade

2025-07-02
arXivLabs: Experimentos com Colaboração da Comunidade

arXivLabs é uma estrutura que permite a colaboração no desenvolvimento e compartilhamento de novos recursos do arXiv diretamente no site. Indivíduos e organizações envolvidos compartilham os valores do arXiv de abertura, comunidade, excelência e privacidade de dados do usuário. O arXiv apenas se associa a aqueles que defendem esses valores. Tem alguma ideia para melhorar a comunidade arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Construindo uma Fábrica de Código de IA Auto-Aprimorante

2025-07-02
Construindo uma Fábrica de Código de IA Auto-Aprimorante

Este artigo detalha a experiência do autor na construção de uma fábrica pessoal de código de IA usando os modelos de IA Claude, o3 e Sonnet. O princípio fundamental é "consertar as entradas, não as saídas": em vez de corrigir diretamente o código gerado, o autor ajusta planos, prompts ou combinações de agentes. A fábrica melhora iterativamente por meio de planejamento (o3), execução (Sonnet) e verificação (o3 e Sonnet), usando worktrees Git para desenvolvimento paralelo. O autor compartilha estratégias de dimensionamento, como a criação de agentes especializados e a aplicação de regras de estilo de código consistentes. O objetivo final é um sistema de IA que gera, verifica e aprimora autonomamente seu próprio código.

Desenvolvimento

Spegel: Navegador de terminal que usa LLMs para reescrever páginas da web

2025-07-02
Spegel: Navegador de terminal que usa LLMs para reescrever páginas da web

Spegel é um navegador da web de terminal de prova de conceito que usa LLMs para transformar HTML em markdown, renderizando-o diretamente em seu terminal. Criado como um projeto de fim de semana, sua praticidade foi significativamente aumentada pelo lançamento do Google Gemini 2.5 Pro Lite mais rápido. O Spegel permite visualizações personalizadas por meio de prompts personalizados, como extrair apenas informações essenciais da receita. Embora não suporte solicitações POST, ele simplifica a navegação, focando nas necessidades definidas pelo usuário, oferecendo uma experiência mais limpa e menos desorganizada do que os navegadores de terminal tradicionais.

arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

2025-07-02
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 abraçaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade de 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

Edição Bidirecional em Tempo Real Entre Editor de Código e GUI via Servidor LSP

2025-07-02
Edição Bidirecional em Tempo Real Entre Editor de Código e GUI via Servidor LSP

Um programador construiu um sistema de prova de conceito usando um servidor LSP para habilitar edição bidirecional em tempo real entre qualquer editor de código moderno e uma GUI. Alterações no editor de código atualizam instantaneamente a GUI, e vice-versa, resolvendo uma limitação fundamental dos sistemas CAD baseados em código existentes. Isso permite que os usuários aproveitem seus editores preferidos enquanto desfrutam de feedback visual em tempo real. Embora atualmente seja uma pequena demonstração, ela mostra o potencial dos servidores LSP para a construção de ferramentas CAD baseadas em código mais poderosas.

Desenvolvimento servidor LSP CAD de código

Claude gera um fractal de Mandelbrot em assembly x86

2025-07-02
Claude gera um fractal de Mandelbrot em assembly x86

Inspirado por um tweet, o autor desafiou a IA Claude a gerar código assembly x86 para criar um fractal de Mandelbrot. Tentativas iniciais falharam na compilação, mas utilizando as capacidades de depuração e modificação iterativas do Claude Code, o autor compilou e executou com sucesso o código em um contêiner Docker, gerando um fractal de arte ASCII satisfatório. Isso demonstra as impressionantes habilidades de compreensão e depuração de código do Claude Code.

Desenvolvimento

Um Bot do Discord que Salvou Nossa Amizade

2025-07-01

Em 2022, um grupo de amigos espalhados pelo mundo lutou para se manter conectado durante a pandemia. O grupo do Signal se tornou uma bagunça caótica, dificultando a coordenação de noites de jogos. Um amigo criou um bot simples do Discord que envia uma notificação para um canal de texto sempre que alguém entra em um canal de voz. Essa solução aparentemente pequena não apenas resolveu o problema de comunicação, mas inesperadamente promoveu mais interação casual diária, tornando-se um 'sinal de morcego' digital para encontros espontâneos. Agora, eles usam o Discord quase todas as noites, até mesmo criando um evento anual "Discord Wrapped" para celebrar suas conexões digitais.

Desenvolvimento

Limites de Abstração São Limites de Otimização: Elevando Abstrações para Otimização de Consultas de Banco de Dados

2025-07-01
Limites de Abstração São Limites de Otimização: Elevando Abstrações para Otimização de Consultas de Banco de Dados

O problema da consulta N+1, em que um aplicativo envia uma consulta SQL para cada elemento de uma coleção, resulta de abstrações com vazamentos. Em vez de reduzir a fronteira de abstração (por exemplo, dizendo explicitamente ao ORM para buscar em massa), este artigo propõe aumentá-la. Ao integrar o ORM à linguagem, regras de reescrita podem mesclar N consultas em uma. Isso reflete o uso de regras de reescrita em Haskell para otimização de listas, aproveitando sua natureza declarativa para abstrair a semântica operacional de baixo nível para melhor otimização. A principal conclusão: aumentar a fronteira de abstração também aumenta a fronteira de otimização.

1 2 48 49 50 52 54 55 56 214 215