Category: Desenvolvimento

Pacotes JSON Experimentais do Go 1.25: Aumento de Desempenho e Sintaxe Mais Estrita

2025-09-10

O Go 1.25 introduz os pacotes experimentais `encoding/json/v2` e `encoding/json/jsontext` para aprimorar os recursos de codificação e decodificação JSON em Go. Esses pacotes resolvem problemas no pacote `encoding/json` existente, como o tratamento impreciso da sintaxe JSON, gargalos de desempenho e deficiências na API. As melhorias incluem o tratamento mais rigoroso de UTF-8 inválido, chaves duplicadas e slices/maps nulos. O processamento em streaming melhora significativamente o desempenho, especialmente a desserialização. Embora seja amplamente compatível com versões anteriores, os desenvolvedores são incentivados a testar com `GOEXPERIMENT=jsonv2` e fornecer feedback.

(go.dev)
Desenvolvimento

arXivLabs: Colaboração da Comunidade em Novos Recursos do arXiv

2025-09-10
arXivLabs: Colaboração da Comunidade em Novos Recursos do arXiv

arXivLabs é uma estrutura experimental que permite a colaboradores desenvolverem e compartilharem novos recursos do arXiv diretamente no site. Participantes, incluindo indivíduos e organizações, compartilham os valores do arXiv 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 melhorar a comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Bottlefire: Imagens de contêiner transformadas em executáveis Linux independentes

2025-09-10

Bottlefire transforma imagens de contêiner em executáveis Linux independentes e sem dependências, que incluem o Firecracker e iniciam microVM automaticamente. Os usuários podem executar esses executáveis em qualquer plataforma Linux amd64/arm64 moderna com suporte a KVM, sem precisar de privilégios de root ou configurações complexas de nível de sistema. As microVMs do Bottlefire possuem rede de espaço de usuário de configuração zero, mapeamento de portas e compartilhamento de diretórios de host para VM, oferecendo a facilidade de uso de contêineres. Basta baixar e executar com um comando curl para uma experiência surpreendentemente simplificada.

Desenvolvimento

Além do debug com print: 7 superpoderes dos debuggers

2025-09-10
Além do debug com print: 7 superpoderes dos debuggers

Cansado de infinitas declarações de impressão para depuração? Este artigo revela sete vantagens ocultas dos debuggers: inspecionar toda a pilha de chamadas, avaliar dinamicamente expressões (como um REPL), capturar exceções com precisão, alterar o fluxo de execução sem alterações de código, padronizar a configuração do projeto, simplificar a colaboração e fornecer uma integração mais suave para novos colaboradores. Debuggers não são apenas ferramentas de rastreamento de código; são armas poderosas para aumentar a eficiência do desenvolvimento e a qualidade do código, levando você da depuração tediosa com impressões para um desenvolvimento eficiente.

Desenvolvimento

Hypervisor RISC-V em 1.000 linhas de Rust

2025-09-10

Este livro online ensina como construir um hipervisor RISC-V mínimo capaz de inicializar sistemas operacionais baseados em Linux usando Rust. Sequência de 'Sistema Operacional em 1.000 linhas', ele começa com programação bare-metal e utiliza o ecossistema do Rust para simplificar o desenvolvimento, visando um hipervisor tipo 1 em menos de 1.000 linhas de código. Exemplos de implementação estão disponíveis no GitHub.

Desenvolvimento Hipervisor

Sintese de Design Orientado a Objetos e Funcional para Promover Reutilização

2025-09-09

Este artigo da ECOOP de 1998 aborda o desafio de estender ferramentas e tipos de dados em programas em evolução, combinando os pontos fortes da programação orientada a objetos e da programação funcional. Abordagens tradicionais têm dificuldades em suportar ambas: a programação funcional se destaca na adição de ferramentas, enquanto a POO se destaca na adição de novas ferramentas ou na extensão de conjuntos de dados, mas não ambas simultaneamente. O artigo propõe um padrão de design composto que sintetiza o melhor de ambas as abordagens, sugerindo novos recursos linguísticos para linguagens baseadas em classes para alcançar extensibilidade sem modificar o código existente.

Desenvolvimento reutilização de código

Notas de design do X: Unificando módulos OCaml

2025-09-09

O autor está projetando uma nova linguagem de programação, X, com o objetivo de combinar a inferência de tipo e a subtipagem estrutural do PolySubML com a maioria dos recursos do OCaml, abordando especialmente as diferenças sintáticas e conceituais entre o sistema de módulos do OCaml e os valores comuns. A publicação detalha como os módulos OCaml são unificados no X, cobrindo aspectos como membros de alias em registros, sintaxe struct e sig, abertura e inclusão de módulos, extensão de módulos e abstração com tipos existenciais. Propõe melhorias ao sistema de módulos do OCaml, como evitar importações com curingas. O objetivo final é uma linguagem de programação mais simples, fácil de entender e poderosa.

Desenvolvimento

O Fim da Codificação Manual? Uma Perspectiva de Desenvolvedor da Amazon para uma Startup

2025-09-09

Após deixar a equipe de assistente de codificação de IA da Amazon, o autor ingressou na Icon, testemunhando em primeira mão a revolução da IA no desenvolvimento de software. Os processos lentos da Amazon e as decisões orientadas por KPIs prejudicaram a eficiência, ao contrário da abordagem alimentada por IA da Icon, onde os desenvolvedores se concentram no design e nas necessidades do usuário, automatizando grande parte da codificação. O autor prevê que as habilidades de codificação pura serão menos cruciais, enquanto a compreensão do usuário, a estratégia do produto e o marketing se tornarão primordiais. Os desenvolvedores precisam se adaptar, aprimorando suas habilidades nessas áreas para se manterem competitivos na era da IA.

Desenvolvimento

Pacotes DuckDB do npm Comprometidos com Malware

2025-09-09
Pacotes DuckDB do npm Comprometidos com Malware

Os pacotes Node.js npm do DuckDB foram comprometidos por um ataque de phishing sofisticado. Versões maliciosas de quatro pacotes foram publicadas, contendo código projetado para interferir em transações de criptomoedas. Felizmente, essas versões maliciosas aparentemente não foram baixadas antes de serem identificadas e depreciadas pela equipe do DuckDB. A equipe respondeu rapidamente depreciando as versões maliciosas e lançando versões atualizadas e seguras. O ataque envolveu um site npm falso convincente que enganou um mantenedor para redefinir seu 2FA, dando aos atacantes a capacidade de publicar os pacotes maliciosos. Este incidente destaca a importância de práticas de segurança robustas, mesmo para desenvolvedores experientes.

Desenvolvimento

Ataque de malware em pacote NPM e defesa com LavaMoat

2025-09-09
Ataque de malware em pacote NPM e defesa com LavaMoat

Um ataque recente envolveu código malicioso injetado no pacote NPM `is-arrayish`, com o objetivo de roubar ETH de transações de usuários. O malware conseguiu isso substituindo funções do navegador como `fetch`, `XMLHttpRequest` e `window.ethereum.request`. Em vez de uma análise detalhada do ataque, o artigo demonstra como o LavaMoat previne esses ataques. O LavaMoat isola os módulos de cada dependência em contextos globais lexicais separados (Compartimentos), restringindo o acesso a variáveis globais e importações especificadas em uma política. Isso impede que o código malicioso altere endereços de transação. Mesmo malware sofisticado teria dificuldades para contornar as defesas do LavaMoat.

Guia Visual do Sistema de Tipos Rust

2025-09-09
Guia Visual do Sistema de Tipos Rust

RustCurious.com apresenta um guia visual do sistema de tipos Rust, usando um gráfico interativo para categorizar todos os tipos possíveis em Rust. O guia se concentra em `lang_items` - tipos e traços integrados que suportam sintaxe específica - para desmistificar o que pode ser construído puramente em código de biblioteca. `Vec`, `String` e `HashMap` são excluídos, pois são simplesmente structs. A separação clara do núcleo independente de plataforma do Rust permite crates no_std, crucial para firmware embutido e outros sistemas onde um heap dinâmico não está disponível.

Desenvolvimento

Domando código legado: Um resumo de "Working Effectively with Legacy Code" de Michael Feathers

2025-09-09
Domando código legado: Um resumo de

Este artigo resume as ideias centrais do livro clássico de Michael Feathers, "Working Effectively with Legacy Code". O livro argumenta que o cerne do código legado é a falta de testes. Para modificar o código legado com segurança, testes devem ser adicionados primeiro. Isso é desafiador porque adicionar testes requer modificar o código, criando um paradoxo. O livro descreve etapas para identificar pontos de mudança (Seams), quebrar dependências, escrever testes e refatorar, juntamente com técnicas de teste incremental (Sprout e Wrap) e uma técnica para entender rapidamente o código (Scratch Refactoring). O autor enfatiza a importância dos testes unitários e apresenta testes de caracterização para capturar o comportamento do código existente. Finalmente, o artigo aconselha a evitar dependência direta de implementações de biblioteca para reduzir os custos de manutenção.

Nomes de tabelas de banco de dados: singular ou plural?

2025-09-09

Um debate comum em design de banco de dados é se os nomes das tabelas devem ser singulares ou plurais. Embora nomes plurais (como 'usuarios') pareçam intuitivos, o autor argumenta que nomes singulares (como 'usuario') oferecem vantagens significativas. Nomes singulares melhoram a legibilidade em junções SQL e previnem inconsistências com ORMs que pluralizam nomes automaticamente. Manter nomes singulares garante consistência do esquema e evita potenciais conflitos de nomenclatura.

Desenvolvimento

CRDTs: A chave para a Consistência Eventual Forte

2025-09-09
CRDTs: A chave para a Consistência Eventual Forte

CRDTs (Tipos de Dados Replicados sem Conflito) são estruturas de dados que podem ser replicadas em vários nós, editadas independentemente e mescladas sem problemas. Este artigo aprofunda como os CRDTs alcançam a Consistência Eventual Forte (SEC), um modelo mais robusto do que a consistência eventual tradicional. A SEC garante que, mesmo com atualizações independentes em vários nós, os conflitos são resolvidos automaticamente e de forma determinística, levando a baixa latência, alta tolerância a falhas e funcionalidade offline. O autor argumenta que os CRDTs são blocos de construção fundamentais para sistemas consistentemente eventualmente fortes, com aplicações que se estendem muito além da edição colaborativa e listas de tarefas para vários jogadores, para bancos de dados distribuídos e muito mais.

Contratos para C: Uma Prova de Conceito

2025-09-09
Contratos para C: Uma Prova de Conceito

Este artigo explora a possibilidade de trazer o conceito de contratos do C++ para a linguagem C. O autor propõe uma solução usando macros `contract_assert` e `contract_assume` para verificações de pré-condição e pós-condição, respectivamente. A macro `defer` e a macro `unreachable` do C23 simplificam a expressão de pós-condições. O artigo demonstra como funções inline e funções auxiliares podem adicionar verificações de contrato sem alterar as implementações principais das funções, aproveitando otimizações do compilador. Embora seja necessário refinar ainda mais a especificação da interface, este artigo fornece uma prova de conceito viável para contratos em C.

Desenvolvimento Contratos

Uma Abordagem Elegante para Detecção de Bloqueadores de Anúncios: Um Prompt Suave

2025-09-09

Cansado de anúncios na internet poluindo a web e da pequena renda que eles geram, o autor implementou uma solução inteligente: um prompt não intrusivo sugerindo que os usuários usem bloqueadores de anúncios como uBlock Origin para uma melhor experiência online. O prompt só aparece se nenhum bloqueador de anúncios for detectado e houver espaço suficiente, oferecendo um botão de fechamento fácil e um mecanismo de cookie para evitar repetições. O código é limpo, usando JavaScript e CSS, e considera vários métodos de bloqueio de anúncios e compatibilidade com navegadores.

Desenvolvimento

Ataque massivo à cadeia de suprimentos de pacotes NPM: milhões de downloads comprometidos

2025-09-09
Ataque massivo à cadeia de suprimentos de pacotes NPM: milhões de downloads comprometidos

Um ataque significativo à cadeia de suprimentos atingiu o ecossistema npm, comprometendo vários pacotes com mais de 2,6 bilhões de downloads semanais. Os atacantes usaram e-mails de phishing para obter acesso à conta de um mantenedor, injetando posteriormente malware em vários pacotes amplamente utilizados. Este malware intercepta transações de criptomoedas no navegador, redirecionando fundos para carteiras controladas pelos atacantes. Embora algumas versões maliciosas tenham sido removidas pela equipe do NPM, o incidente destaca as vulnerabilidades das cadeias de suprimentos de software e a crescente ameaça de phishing e ataques baseados em navegador. O impacto foi mitigado em certa medida, pois afetou apenas usuários com instalações recentes em um período de tempo limitado.

Desenvolvimento

O futuro incerto do Nova Launcher: promessa de código aberto em risco?

2025-09-09
O futuro incerto do Nova Launcher: promessa de código aberto em risco?

Após as demissões de quase toda a equipe do Nova Launcher no ano passado, o fundador Kevin Barry deixou a empresa depois de ser pedido para interromper o desenvolvimento e os esforços de código aberto. O site do Nova está fora do ar, e o futuro do popular lançador Android é incerto. A Branch Metrics, que adquiriu o Nova, afirmou anteriormente que a disponibilização do código aberto era uma obrigação contratual se Barry saísse. No entanto, com Barry e o ex-CEO fora da empresa, essa promessa permanece não cumprida, levando a um abaixo-assinado da comunidade exigindo código aberto.

Desenvolvimento Lançador Android

Criador do Nova Launcher se despede, planos de código aberto suspensos

2025-09-09

Kevin Barry, criador do Nova Launcher, anunciou sua saída da Branch e o fim dos esforços para tornar o Nova Launcher de código aberto. Apesar do compromisso anterior da Branch de abrir o código-fonte após a partida de Kevin, essa promessa não foi cumprida. Kevin passou o último ano mantendo sozinho o Nova Launcher e fez grandes preparativos para seu lançamento de código aberto, incluindo limpeza de código e revisão de licenças. Essa decisão causou preocupação e lamento na comunidade, deixando o futuro deste popular lançador incerto.

Desenvolvimento Saída

LLVM IR recebe tipo byte: Suporte nativo para operações de memória bruta

2025-09-09

Um projeto do Google Summer of Code 2025 na Infraestrutura do Compilador LLVM adicionou com sucesso um novo tipo byte ao LLVM IR, representando valores de memória bruta. Isso permite a implementação nativa de intrínsecos de memória como memcpy, memmove e memcmp, corrige transformações inseguras e desbloqueia novas otimizações, tudo com mínimo impacto no desempenho. O projeto abordou a falta de um tipo para representar memória bruta no LLVM, melhorando a correção e otimização do compilador por meio do rastreamento da proveniência do ponteiro e da representação precisa de bits de veneno. O tratamento do Clang dos tipos de acesso à memória bruta em C/C++ também foi aprimorado, juntamente com correções para várias otimizações inseguras.

Desenvolvimento

Recriando o efeito Liquid Glass da WWDC 2025 da Apple com CSS, SVG e Física

2025-09-09
Recriando o efeito Liquid Glass da WWDC 2025 da Apple com CSS, SVG e Física

Este artigo mergulha na recriação do impressionante efeito de IU Liquid Glass apresentado na WWDC 2025 da Apple. Ele usa mapas de deslocamento CSS, SVG e cálculos de refração baseados em física para alcançar uma aproximação convincente. O autor explica os princípios da refração, detalhando como a luz se curva ao passar por diferentes materiais e como funções matemáticas descrevem a forma da superfície do vidro. Mapas de deslocamento SVG são então empregados para simular o efeito de refração. O artigo culmina na criação de componentes de IU, como lupas, caixas de pesquisa, interruptores e controles deslizantes, com o efeito Liquid Glass. Observe que o desempenho ideal é atualmente visto no Chrome devido à compatibilidade do navegador com filtros SVG como filtro de plano de fundo.

Desenvolvimento

Ataque Massivo na Cadeia de Suprimentos do npm: 2 Bilhões de Downloads Semanais Comprometidos

2025-09-09
Ataque Massivo na Cadeia de Suprimentos do npm: 2 Bilhões de Downloads Semanais Comprometidos

Em 8 de setembro, pesquisadores de segurança descobriram um ataque massivo na cadeia de suprimentos direcionado a 18 pacotes npm populares, acumulando mais de 2 bilhões de downloads semanais. O malware intercepta silenciosamente atividades criptográficas e Web3 nos navegadores, manipulando interações de carteira e redirecionando fundos para contas controladas por atacantes. O atacante comprometeu a conta do mantenedor por meio de e-mails de phishing, atualizando os pacotes silenciosamente. Embora alguns pacotes afetados tenham sido limpos, recomenda-se cautela; utilize práticas seguras de gerenciamento de pacotes npm.

Sites Conscientes da Rede: Tornando seu Site Mais Verde

2025-09-08

Este artigo explora o conceito de 'sites conscientes da rede', que ajustam o desempenho do site com base na porcentagem de energia renovável na rede elétrica do usuário para reduzir as emissões de carbono. O autor demonstra a implementação de consciência da rede em frameworks 11ty e Astro usando um exemplo de página de exibição de produto de comércio eletrônico, detalhando a implementação técnica, desafios e direções futuras. A ideia central é ajustar dinamicamente a funcionalidade do site com base na limpeza da energia da rede, simplificando as páginas e reduzindo o consumo de recursos em redes 'sujas' para diminuir a pegada de carbono do site. Embora enfrente desafios de custo da API e colaboração entre pilhas, essa tecnologia tem o potencial de se tornar uma ferramenta significativa para melhorar a sustentabilidade do site.

Desenvolvimento web verde

Executando LLMs Localmente no macOS: Um Guia Cético

2025-09-08

Este post de blog detalha a experiência do autor executando modelos de linguagem grandes (LLMs) localmente em sua máquina macOS. Embora expressando ceticismo sobre o hype em torno de LLMs, o autor fornece um guia prático para instalar e usar ferramentas como llama.cpp e LM Studio. O guia abrange a escolha de modelos apropriados com base em fatores como tamanho, tempo de execução, quantização e capacidades de raciocínio. O autor enfatiza os benefícios de privacidade e a menor dependência de empresas de IA que vêm com a implantação local de LLM, oferecendo dicas e truques, como utilizar MCPs para expandir a funcionalidade e gerenciar a janela de contexto para evitar perda de informações. O post também aborda as preocupações éticas em torno do estado atual da indústria de IA.

Desenvolvimento

Gerentes de Pacotes: A Caixa de Pandora da Programação?

2025-09-08

Este artigo examina criticamente as desvantagens dos gerenciadores de pacotes em linguagens de programação. O autor argumenta que os gerenciadores de pacotes automatizam o "inferno de dependências", mascarando a complexidade do projeto e levando a uma confiança excessiva em código de terceiros. Especialmente em linguagens que carecem de bibliotecas padrão robustas, as definições inconsistentes de pacotes por diferentes gerenciadores podem até levar a "gerenciadores de gerenciadores de pacotes". O autor defende a gestão manual de dependências, acreditando que isso força os desenvolvedores a pensar criticamente sobre as dependências e melhora a estabilidade e a manutenibilidade do código. Embora reconheça o custo de tempo, o autor argumenta que a segurança e o controle superam a conveniência da automação, usando a biblioteca padrão abrangente do Go como exemplo.

Desenvolvimento gerenciadores de pacotes

Comparação de Recursos: Dois Poderosos Aplicativos de Gerenciamento de Fotos e Vídeos

2025-09-08
Comparação de Recursos: Dois Poderosos Aplicativos de Gerenciamento de Fotos e Vídeos

Esta comparação analisa os recursos de dois aplicativos de gerenciamento de fotos e vídeos. Ambos suportam o upload e a visualização de vídeos e fotos, backup automático, prevenção de duplicação, backup seletivo de álbuns, download para dispositivos locais, suporte para vários usuários, álbuns e álbuns compartilhados, barras de rolagem arrastáveis, suporte a formatos RAW, visualização de metadados (EXIF, mapa), pesquisa por metadados, objetos, rostos e CLIP, rolagem virtual, suporte OAuth, backup e reprodução de LivePhoto/MotionPhoto, estruturas de armazenamento definidas pelo usuário, compartilhamento público, arquivamento e favoritos, mapa global, compartilhamento com parceiros, reconhecimento facial e agrupamento, memórias (x anos atrás), fotos empilhadas e visualização de pastas. No entanto, um aplicativo carece de funções administrativas, backup em segundo plano, exibição de imagem em 360 graus, tags e suporte offline.

Escrita de Histórias Visuais: Narrativa Interativa por meio de Manipulação Visual

2025-09-08
Escrita de Histórias Visuais: Narrativa Interativa por meio de Manipulação Visual

O Visual Story-Writing é um sistema que permite aos usuários editar histórias manipulando representações visuais de eventos, personagens e suas ações. Ele usa o GPT-4 para sugerir edições de texto com base em alterações na visualização (por exemplo, mover um personagem, conectar personagens). Construído com TypeScript, React e Vite, requer uma chave de API do OpenAI e inclui tutoriais em vídeo e um artigo no arXiv.

Desenvolvimento

Desenvolvedor do aplicativo ICEBlock ignora vulnerabilidades de segurança críticas

2025-09-08
Desenvolvedor do aplicativo ICEBlock ignora vulnerabilidades de segurança críticas

O aplicativo ICEBlock, baixado mais de um milhão de vezes, permite denúncias anônimas de avistamentos do ICE. No entanto, seu desenvolvedor, Joshua Aaron, ignorou vulnerabilidades de segurança críticas em seu servidor Apache. O pesquisador de segurança Micah Lee alertou Aaron repetidamente e forneceu soluções, mas Aaron os ignorou e até bloqueou as contas de Lee. Isso levanta sérias preocupações sobre a segurança dos dados do usuário e destaca a abordagem irresponsável do aplicativo em relação à segurança.

Leitura de Código: Um Superpoder para Caça de Bugs

2025-09-08

Este artigo descreve uma mudança significativa na carreira do autor: de codificação iterativa para a descoberta proativa de bugs. Em vez de depender apenas da iteração baseada em testes, o autor defende a leitura cuidadosa do código para identificar problemas preventivamente. A chave, argumenta o autor, é ler cuidadosamente o código, construir um modelo mental completo do programa e, em seguida, identificar as diferenças entre esse modelo e o código real no Git. A postagem sugere concentrar-se no fluxo de controle e nas estruturas de dados e identificar padrões potencialmente propensos a erros no código. Essa abordagem reduz drasticamente os bugs e melhora a qualidade do código.

Transformando Reclamações em Contribuições: Um Guia para Líderes

2025-09-08
Transformando Reclamações em Contribuições: Um Guia para Líderes

Reclamações persistentes em equipes impactam o moral e a produtividade. Este artigo explora a psicologia por trás das reclamações, incluindo reforço, impotência aprendida, locus de controle, vieses cognitivos e a necessidade de pertencimento. Em vez de reprimir ou solucionar reclamações, os líderes são incentivados a usar questionamentos para envolver os membros da equipe nas soluções. Ferramentas práticas como reformular reclamações, discussões em pequenos grupos, coleta de reclamações e rituais de reunião são sugeridas para transformar energia negativa em ação construtiva. O foco está em mudar da culpa para a responsabilidade e fomentar uma cultura de contribuição.

Desenvolvimento
1 2 7 8 9 11 13 14 15 214 215