Category: Desenvolvimento

Armadilhas na Comparação de Ponto Flutuante: O que Você Precisa Saber

2025-05-15
Armadilhas na Comparação de Ponto Flutuante: O que Você Precisa Saber

Este artigo mergulha nas complexidades da comparação de números de ponto flutuante. O autor destaca a falta de confiabilidade das verificações de igualdade simples devido às limitações inerentes de precisão e erros de arredondamento acumulados. Dois métodos de comparação são detalhados: erro relativo (epsilon) e ULP (Unidades no Último Lugar), juntamente com seus pontos fortes e fracos. O artigo enfatiza a falha das comparações de erro relativo próximo a zero, propondo uma solução que combina erro absoluto. Um exemplo convincente usando `sin(π)` demonstra o cancelamento catastrófico e como erros de representação de ponto flutuante podem melhorar a precisão de π.

Desenvolvimento precisão

Armadilha de Inicialização em C++: As Sutilezas de `=default`

2025-05-15

Este artigo mergulha no mundo intrigante da inicialização em C++. Um exemplo simples revela o impacto significativo da colocação de `=default` na inicialização dos membros de uma struct: membros de struct com `=default` na declaração são inicializados com zero (valor 0), enquanto aqueles com `=default` na definição têm valores indeterminados, levando a comportamento indefinido se lidos. O artigo explica detalhadamente as diferenças entre inicialização padrão, inicialização por valor e inicialização com zero, e enfatiza a importância de inicializar explicitamente as variáveis para evitar bugs potenciais e riscos de segurança.

Desenvolvimento

Google aumenta a produtividade de desenvolvedores com preenchimento de código semântico híbrido de ML

2025-05-15
Google aumenta a produtividade de desenvolvedores com preenchimento de código semântico híbrido de ML

Pesquisadores do Google desenvolveram um novo sistema de preenchimento de código semântico híbrido baseado em Transformer que combina aprendizado de máquina (ML) e mecanismos semânticos baseados em regras (SEs) para melhorar significativamente a produtividade do desenvolvedor. O sistema integra ML e SEs de três maneiras: 1) reordenando sugestões de token único do SE usando ML; 2) aplicando preenchimentos de linha única e múltipla usando ML e verificando a correção com o SE; e 3) usando continuação de linha única e múltipla por ML de sugestões semânticas de token único. Um estudo de três meses com mais de 10.000 desenvolvedores internos do Google mostrou uma redução de 6% no tempo de iteração de codificação com preenchimento de ML de linha única. Atualmente, mais de 3% do novo código é gerado pela aceitação de sugestões de preenchimento de ML. O sistema suporta oito linguagens de programação e incorpora verificações semânticas para garantir a correção do código, aumentando significativamente a confiança e a eficiência do desenvolvedor.

Desenvolvimento

Verificação de Ano Bissexto em Três Instruções

2025-05-15

Este artigo apresenta um algoritmo surpreendentemente eficiente para determinar se um ano (0 ≤ y ≤ 102499) é bissexto usando apenas cerca de três instruções de CPU. Ele utiliza manipulação de bits e números mágicos cuidadosamente escolhidos para transformar as complexas regras de ano bissexto em uma operação aritmética simples e comparação. O autor explica meticulosamente a derivação do algoritmo, comparando-o com métodos tradicionais e destacando sua significativa vantagem de velocidade. Embora ligeiramente mais lento em casos extremos, sua eficiência em aplicações práticas é impressionante.

Desenvolvimento ano bissexto

LLMs estão matando o Stack Overflow?

2025-05-15

O Stack Overflow, o paraíso dos programadores, está enfrentando uma crise sem precedentes. O artigo revela um declínio constante nas perguntas feitas desde 2014, dramaticamente acelerado pelo advento do ChatGPT. A plataforma, que já foi uma tábua de salvação para inúmeros desenvolvedores, agora vê o volume de perguntas cair para níveis vistos pela última vez em 2009. Embora políticas de moderação mais rígidas e o surgimento de LLMs provavelmente tenham contribuído, o avanço rápido da IA está inegavelmente remodelando a maneira como os desenvolvedores buscam ajuda.

Desenvolvimento

Além do REST: Por que a sincronização de estado é o futuro dos aplicativos web

2025-05-15

Ao construir aplicativos web com React, Typescript e um backend Rust/Axum REST, o autor encontrou desafios significativos com a abordagem de transferência de estado do REST para o que são essencialmente problemas de sincronização de estado. Usando um exemplo simples de entrada de texto, o artigo destaca problemas como condições de corrida de solicitações concorrentes, indicadores de carregamento imprecisos e inconsistências em várias instâncias do aplicativo. O autor argumenta em favor de uma mudança para protocolos de sincronização de estado, como aqueles baseados em CRDTs, para melhorar a eficiência e eliminar bugs comuns relacionados ao REST.

Desenvolvimento Sincronização de Estado

O Desastre Pontilhado do Curl: Dois CVEs e uma Perseguição Sem Fim

2025-05-15
O Desastre Pontilhado do Curl: Dois CVEs e uma Perseguição Sem Fim

A equipe do curl enfrentou uma luta persistente com pontos finais em nomes de host em URLs. Inicialmente os ignorando, o curl posteriormente restabeleceu o suporte para sites que exigem pontos finais. No entanto, essa alteração inadvertidamente introduziu duas vulnerabilidades de segurança (CVE-2022-27779 e CVE-2022-30115) afetando o tratamento de cookies e o mecanismo HSTS, respectivamente. Essas vulnerabilidades decorreram do tratamento inadequado de pontos finais, levando a correspondências de domínio incorretas. O curl 7.83.1 corrige esses problemas, mas o autor suspeita que isso pode ser apenas o começo de uma batalha prolongada.

Desenvolvimento

Refatorando Clojure: Criando um Gerador de Texto Markov Elegante

2025-05-15
Refatorando Clojure: Criando um Gerador de Texto Markov Elegante

Este artigo descreve a refatoração de um código Clojure que gera um texto de Markov de primeira ordem em nível de palavra. Em vez de modificar o código original diretamente, o autor começa caracterizando seu comportamento com testes abrangentes. O código refatorado usa funções mais claras e uma estrutura mais compreensível, empregando `reduce` e chamadas de funções recursivas para geração de texto eficiente. O resultado é uma melhoria significativa na legibilidade e manutenibilidade, mantendo a funcionalidade original.

Desenvolvimento cadeia de Markov

Registro de Desenvolvimento do Software de Áudio Tengri: Vislumbre do Progresso Recente

2025-05-15
Registro de Desenvolvimento do Software de Áudio Tengri: Vislumbre do Progresso Recente

A equipe de desenvolvimento do software de áudio de código aberto Tengri atualizou recentemente seu log de projeto no GitHub, detalhando as atividades desde maio. Isso inclui uma refatoração significativa do arranjador, a reativação do suporte LV2, melhorias no processo de construção (como builds em contêineres Docker), atualizações de documentação e correções de bugs. O log reflete um processo de desenvolvimento iterativo, abordando ativamente problemas e mostrando o status de desenvolvimento ativo do projeto.

Desenvolvimento software de áudio

Além da Seleção Escalar: Processamento em Lote de Fluxos de Eventos para Eficiência

2025-05-15

O autor descreve a ineficiência do antipadrão de seleção escalar no design de serviços com estado, exemplificado por um servidor LSP. Processar eventos um de cada vez leva a atrasos e desperdício de recursos. A solução proposta é processar fluxos de eventos em lote. Uma função `batch_stream` mescla eventos recebidos em lotes, melhorando significativamente a eficiência. Sob baixa carga, ele se comporta como processamento de evento único, mas sob alta carga, reduz drasticamente a sobrecarga, aumentando o desempenho.

Desenvolvimento evento-driven

A Eficácia Surpreendente de um Loop de Agente LLM com Uso de Ferramentas

2025-05-15

O autor e sua equipe desenvolveram um assistente de programação de IA chamado Sketch, cujo núcleo é um loop surpreendentemente simples: o LLM recebe a entrada do usuário, executa ações (potencialmente envolvendo chamadas de ferramentas como bash) e retorna resultados. Esse loop simples, combinado com LLMs poderosos como o Claude 3.7 Sonnet, permite que o Sketch manipule eficientemente muitas tarefas de programação, como operações git, modificações de código e tratamento de erros. O autor acredita que essa abordagem de loop de agente LLM terá um uso generalizado na automação do dia a dia, melhorando drasticamente a eficiência.

Revitalizando o TLA⁺: Um Chamado à Ação para o Desenvolvimento de Ferramentas

2025-05-15
Revitalizando o TLA⁺: Um Chamado à Ação para o Desenvolvimento de Ferramentas

O Evento da Comunidade TLA⁺ de 2025 destacou o estado atual e a direção futura das ferramentas TLA⁺. O autor argumenta que a facilidade de desenvolvimento dentro do ecossistema TLA⁺ é primordial. Os analisadores sintáticos, interpretadores e verificadores de modelos existentes são revisados, juntamente com os desafios, como código legado e lacunas na documentação. Estratégias para superar esses obstáculos incluem desenvolvimento orientado a testes, integração de desenvolvedores e subsídios. Direções futuras incluem testes gerativos e simplificação de sintaxe, culminando em um objetivo ambicioso: aumentar a taxa de transferência do TLC para 1 bilhão de estados por minuto.

Desenvolvimento

NumPy: Um relacionamento de amor e ódio com a biblioteca de arrays do Python

2025-05-15
NumPy: Um relacionamento de amor e ódio com a biblioteca de arrays do Python

Este artigo mergulha nos pontos problemáticos do uso do NumPy, a popular biblioteca de computação de arrays do Python, ao lidar com arrays multidimensionais. Embora o NumPy se destaque por sua simplicidade e eficiência para arrays de dimensões inferiores, seu mecanismo de broadcast e indexação se tornam incrivelmente complexos e difíceis de entender ao lidar com operações multidimensionais mais intrincadas. O autor argumenta que o problema central do NumPy decorre de seu mecanismo de broadcast substituir os índices, resultando em expressividade limitada. O artigo utiliza vários exemplos para destacar as dificuldades do NumPy com cálculos de arrays complexos, comparando os prós e contras do uso de loops e np.einsum, expressando, por fim, frustração com o NumPy e o desejo por uma linguagem de arrays mais amigável ao usuário.

Desenvolvimento arrays multidimensionais

Desvendando a Concorrência em Ruby: Processos, Ractors, Threads e Fibers

2025-05-15
Desvendando a Concorrência em Ruby: Processos, Ractors, Threads e Fibers

Ruby, conhecida por sua elegância e legibilidade, apresenta um modelo de concorrência que pode ser inicialmente confuso. Este artigo mergulha nas quatro principais maneiras de lidar com concorrência em Ruby: processos, Ractors, threads e fibers. Processos oferecem isolamento completo de memória, ideal para tarefas que precisam de separação absoluta; Ractors, introduzidos no Ruby 3, fornecem paralelismo dentro de um único processo, usando passagem de mensagens para evitar condições de corrida; threads são leves, mas são limitadas pelo GIL à concorrência, não ao verdadeiro paralelismo; e fibers, o mecanismo mais leve, oferecem multitarefa cooperativa por meio da troca manual de controle. Exemplos de código e explicações claras esclarecem as diferenças e casos de uso, fornecendo uma compreensão abrangente da paisagem complexa da concorrência em Ruby.

Desenvolvimento

Navegador bloqueando a porta 6000? Vulnerabilidade de script entre protocolos!

2025-05-15
Navegador bloqueando a porta 6000? Vulnerabilidade de script entre protocolos!

Ao trabalhar em um projeto Docker e Flask, o autor encontrou um problema em que a porta 6000 era inacessível, enquanto a porta 8000 funcionava corretamente. A investigação revelou que os navegadores bloqueiam ativamente certas portas, incluindo a 6000, como medida de segurança contra vulnerabilidades de script entre protocolos (XSS). O Chrome exibe um erro ERR_UNSAFE_PORT, o Safari mostra uma página em branco e o Firefox fornece uma mensagem mais informativa "Este endereço é restrito". O navegador cancela as solicitações a essas portas antes mesmo de serem enviadas. O autor confirmou que o servidor estava funcionando corretamente usando o curl, isolando o problema nas políticas de segurança do navegador. O artigo lista as portas bloqueadas pelo Firefox e seus serviços, explicando como essa proteção funciona.

Desenvolvimento Segurança do navegador

Shaders de Assembly ARB: Um mergulho profundo antes do GLSL

2025-05-15
Shaders de Assembly ARB: Um mergulho profundo antes do GLSL

Este artigo mergulha nos shaders de assembly ARB, uma linguagem de sombreamento usada no OpenGL antes do advento do GLSL. Ele detalha a integração de shaders ARB, recursos de linguagem, conjuntos de instruções e comparações com GLSL. Embora agora esteja em grande parte obsoleto, a compreensão do assembly ARB fornece insights valiosos sobre a evolução da programação gráfica moderna e os mecanismos subjacentes das tecnologias de gráficos de baixo nível.

Desenvolvimento

Avanço em Coloração de Grafos: Algoritmo Quase Ótimo Alcançado

2025-05-15
Avanço em Coloração de Grafos: Algoritmo Quase Ótimo Alcançado

Imagine a complexidade de gerenciar o tráfego aéreo no aeroporto de Newark. Para evitar colisões, os pesquisadores modelam o problema como um problema de coloração de grafos: cada rota de voo é uma linha, cada local um ponto. Por décadas, o progresso em algoritmos eficientes foi lento. Mas recentemente, uma grande descoberta: um algoritmo de tempo quase linear, quase tão rápido quanto teoricamente possível, oferecendo novas possibilidades para controle de tráfego aéreo e outros aplicativos. Isso resolve um problema de décadas, um verdadeiro marco.

Desenvolvimento coloração de grafos

Trophy reformula a documentação para desenvolvedores para uma experiência melhor

2025-05-15
Trophy reformula a documentação para desenvolvedores para uma experiência melhor

A Trophy reformulou sua documentação para desenvolvedores para fornecer uma experiência mais rica e intuitiva. Eles escolheram o Mintlify como seu provedor de documentação como serviço, apreciando sua experiência de escrita, suporte a componentes React personalizados e hospedagem de domínio personalizado econômica. Os novos documentos usam um layout com guias, segmentando claramente documentos da plataforma, referências de API, tutoriais e exemplos. A legibilidade aprimorada vem de diagramas Mermaid e trechos de código adaptados a várias linguagens de programação. Um mecanismo de feedback e a integração do GitHub incentivam o envolvimento da comunidade. Os planos futuros incluem recursos de reconhecimento do usuário, suporte multilíngue e integração de LLM para melhor capacidade de pesquisa.

Fresh 2.0 Atrasado: A Nova Geração do Framework Web do Deno Recebe uma Atualização de Base

2025-05-15
Fresh 2.0 Atrasado: A Nova Geração do Framework Web do Deno Recebe uma Atualização de Base

A equipe do Deno anunciou um atraso para o Fresh 2.0, seu framework web construído com base nos mais recentes padrões da web, adiando o lançamento para o final do terceiro trimestre de 2025. O atraso decorre do foco em melhorar o núcleo da plataforma Deno e o registro JavaScript (JSR), resolvendo problemas de compatibilidade com o Node.js e, em última análise, construindo uma base mais robusta para a velocidade, extensibilidade e facilidade de uso do Fresh 2.0. O Fresh 2.0 terá APIs semelhantes ao Express/Hono, componentes assíncronos reais e um novo sistema de plug-ins. Ele já está sendo usado em produção nos sites deno.com e Deno Deploy, com uma versão alfa disponível para os desenvolvedores testarem, juntamente com um guia de migração para projetos existentes.

Desenvolvimento

Árvores Wavelet: Uma Abordagem Elegante para Consultas de Classificação em Sequências

2025-05-15
Árvores Wavelet: Uma Abordagem Elegante para Consultas de Classificação em Sequências

Este post de blog apresenta a Árvore Wavelet, uma estrutura de dados elegante para responder consultas de classificação em sequências sobre alfabetos grandes. Atingindo uma complexidade de tempo de O(log₂A) (onde A é o tamanho do alfabeto), ela organiza uma string em uma hierarquia de vetores de bits. O post detalha a construção e a consulta da Árvore Wavelet, destacando técnicas de otimização usando estruturas RRR ou outros índices de classificação binária para compressão e velocidade. Uma implementação na biblioteca de estrutura de dados comprimida de Francisco Claude (libcds) é recomendada para aplicação prática.

Rust aprende com as capacidades dinâmicas do Python: Reflexão com Serde

2025-05-15
Rust aprende com as capacidades dinâmicas do Python: Reflexão com Serde

Este artigo detalha como o autor usou Rust e a biblioteca Serde para imitar o mecanismo de acesso a atributos dinâmicos do Python (__getattr__), criando uma API limpa e amigável para acessar informações do sistema. O artigo explica detalhadamente o processo de implementação, incluindo implementações personalizadas de trait, Deserializer e Visitor, e como usar o recurso derive(Deserialize) do Serde para simplificar o código. Por fim, o autor construiu com sucesso uma biblioteca Rust eficiente e amigável ao usuário que alcança uma API concisa semelhante ao Python, e discute abordagens alternativas e compensações.

Desenvolvimento

Contribuições de código aberto vs. empregos bem remunerados: LeetCode vence?

2025-05-15

Cinco anos após a graduação, um programador com uma grande quantidade de projetos de código aberto em seu currículo descobriu que seus anos de dedicação não se traduziram em um emprego bem remunerado. Ele trabalhou em duas startups, dedicando muitas horas por uma remuneração insignificante. No final, ele teve que abandonar seus amados projetos de código aberto e dedicar-se ao LeetCode, resultando em um aumento de 5 vezes no salário, mas também na perda da alegria e satisfação que ele tinha antes. Este artigo revela uma realidade cruel: o mercado de trabalho valoriza mais o LeetCode e a experiência em grandes empresas do que contribuições de projetos do mundo real.

Desenvolvimento procura de emprego

llm-min.txt: Compressão no estilo Min.js para contextos de LLM

2025-05-15
llm-min.txt: Compressão no estilo Min.js para contextos de LLM

llm-min.txt aborda o problema de corte de conhecimento em LLMs, onde assistentes de codificação de IA não têm acesso a atualizações recentes de bibliotecas de programação. Ele usa uma abordagem semelhante ao min.js, usando outra IA para destilar documentação técnica detalhada em um resumo superconciso e estruturado. Empregando o Formato de Conhecimento Estruturado (SKF), ele organiza informações em três seções principais (Definições, Interações, Padrões de Uso), alcançando uma redução de token de até 97% enquanto preserva informações essenciais para assistentes de IA. llm-min.txt utiliza o modelo de IA Google Gemini e oferece uso de linha de comando e API Python.

Desenvolvimento

Lançado o Elixir Lua Library v0.1.0: Execute Lua na BEAM VM

2025-05-15
Lançado o Elixir Lua Library v0.1.0: Execute Lua na BEAM VM

O primeiro lançamento estável da biblioteca Elixir Lua, v0.1.0, agora está disponível no hex.pm! Esta biblioteca permite que você execute programas Lua em sandbox diretamente na VM BEAM, não incorporando o tempo de execução e o compilador C Lua, mas por meio de uma implementação completa do Lua 5.3 em Erlang (alimentado pela biblioteca Luerl). As melhorias incluem melhores mensagens de erro, documentação abrangente, uma macro `deflua` para expor facilmente APIs Elixir ao Lua e um sigilo `~LUA` para verificação de sintaxe em tempo de compilação. Nascido das necessidades da TV Labs para construir testes de integração de dispositivos físicos, ele é usado como um alvo de compilação para seu construtor de automação de arrastar e soltar. Os planos futuros envolvem a fusão da biblioteca Elixir Lua com Luerl para mensagens de erro, documentação e recursos de sandbox aprimorados.

Desenvolvimento

Cobrança de outono: Evolução de Chaves Publicáveis para Ações de Servidor Criptografadas

2025-05-15
Cobrança de outono: Evolução de Chaves Publicáveis para Ações de Servidor Criptografadas

Uma empresa construindo um sistema de cobrança explorou várias abordagens para simplificar o desenvolvimento, abordando o desafio de operações de pagamento seguras na interface. Inicialmente, tentaram Chaves Publicáveis, mas encontraram limitações de segurança e funcionalidade. Em seguida, adotaram Ações de Servidor do Next.js, mas isso expôs IDs de clientes, criando uma vulnerabilidade de segurança. Finalmente, eles protegeram o sistema criptografando IDs de clientes em Ações de Servidor, mas essa abordagem depende de Ações de Servidor e carece de agnóstico de framework. Planos futuros envolvem uma solução mais geral, independente de framework, que simplifica a configuração de back-end.

Desenvolvimento sistemas de pagamento

Coleção de artigos e projetos do programador Bradford J. Rodriguez

2025-05-15

O site pessoal de Bradford J. Rodriguez apresenta uma coleção de artigos, apresentações de seminários e programas de computador que ele publicou ao longo dos anos. O conteúdo abrange tópicos como escrita de kernel Forth, sistemas multiprocessamento, controle em tempo real, Forth orientado a objetos e montadores. Isso inclui o texto completo de suas dissertações de PhD e MS, juntamente com o código-fonte e a documentação de vários projetos menores. Esses recursos fornecem materiais de aprendizado valiosos para aqueles interessados em sistemas embarcados, a linguagem Forth e arquitetura de computadores.

Desenvolvimento Arquitetura de Computadores

1700 Filmes Subestimados Descobertos por meio da Mineração de Dados da Wikipédia

2025-05-15
1700 Filmes Subestimados Descobertos por meio da Mineração de Dados da Wikipédia

Cansado dos algoritmos de recomendação de filmes falhando? Um programador passou 12 horas usando Python para extrair 150 GB de dados em inglês da Wikipédia, descobrindo mais de 1700 filmes aclamados pela crítica de 83 países, abrangendo 19 gêneros e datando da década de 1910. A maioria desses filmes não está presente nas plataformas de recomendação convencionais, oferecendo aos cinéfilos uma oportunidade única de descobrir joias escondidas. O projeto não é um serviço de streaming, mas fornece um site listando esses filmes; as compras incluem atualizações gratuitas vitalícias.

LiveSplat: Algoritmo de Splatting Gaussiano em Tempo Real Lançado (Alfa)

2025-05-15
LiveSplat: Algoritmo de Splatting Gaussiano em Tempo Real Lançado (Alfa)

LiveSplat, um algoritmo de splatting gaussiano em tempo real usando fluxos de câmera RGBD, foi lançado. Desenvolvido como parte de um sistema de telerrobótica VR maior, seu lançamento público segue um interesse significativo da comunidade. Atualmente na versão alfa, requer Python 3.12+, Windows ou Ubuntu, uma GPU Nvidia e de um a quatro sensores RGBD. Embora seja de código fechado, instruções de instalação e um script de integração Intel Realsense são fornecidos. O autor está aberto a oportunidades de licenciamento.

Desenvolvimento splatting gaussiano

Fluxo de Registro de Schrödinger do Bitwarden: Uma Falha de UX de Segurança

2025-05-15
Fluxo de Registro de Schrödinger do Bitwarden: Uma Falha de UX de Segurança

Uma arquiteta de segurança, “Юленька”, descobriu uma falha lógica no processo de registro do Bitwarden. Os usuários podiam iniciar o registro no Dispositivo A, mas concluí-lo (incluindo a definição da senha mestre) no Dispositivo B, resultando em falha na criação da conta e aplicativos inutilizáveis. Após uma resposta desmistificadora do Bitwarden, “Юленька” relatou criativamente o problema usando uma rotina de stand-up humorística. O problema parece resolvido, mas o Bitwarden não ofereceu nenhum reconhecimento ou registro de alterações. Isso destaca a necessidade de um melhor design de UX em produtos de segurança e enfatiza a importância da comunicação clara na resolução de problemas de segurança.

Desenvolvimento

ALTCHA: Solução anti-spam leve e que preserva a privacidade

2025-05-15
ALTCHA: Solução anti-spam leve e que preserva a privacidade

ALTCHA é um serviço anti-spam auto-hospedado para sites e APIs. Ele usa um mecanismo de prova de trabalho em vez de CAPTCHAs, protegendo a privacidade do usuário e cumprindo com os padrões GDPR e WCAG 2.2 AA. ALTCHA é leve, sem cookies e totalmente acessível, oferecendo uma API SaaS e amplas opções de configuração, incluindo solicitações personalizadas, filtro de spam e ofuscação de dados. Seu tamanho é apenas 6% do reCAPTCHA.

Desenvolvimento prova de trabalho
1 2 87 88 89 91 93 94 95 214 215