Category: Desenvolvimento

Reinicializações Agendadas: Uma Abordagem Preventiva

2024-12-13

Uma equipe de pesquisa universitária enfrentou um problema desafiador de administração de sistemas: seus servidores estavam funcionando há muito tempo e precisavam ser reinicializados, mas reinicializações frequentes interrompem a experiência do usuário. Seu padrão era evitar reinicializações, mas uma reinicialização em larga escala recente devido ao tempo de atividade prolongado forçou uma mudança. Para evitar problemas semelhantes, eles decidiram um cronograma de reinicialização anual — pelo menos três vezes por ano, alinhando-se com o cronograma de ensino da universidade — equilibrando a manutenção preventiva com a experiência do usuário.

Microsoft lança código aberto MarkItDown: Ferramenta de conversão de arquivos para Markdown

2024-12-13
Microsoft lança código aberto MarkItDown: Ferramenta de conversão de arquivos para Markdown

A Microsoft lançou o código aberto do MarkItDown, uma ferramenta Python que converte vários arquivos (incluindo PDF, PowerPoint, Word, Excel, imagens, áudio e HTML) para o formato Markdown. A ferramenta possui uma API simples, suporta uma ampla variedade de tipos de arquivos e incorpora OCR e transcrição de fala para maior funcionalidade, tornando-a ideal para análise de texto ou indexação. Contribuições são bem-vindas, e o projeto segue o Código de Conduta de Código Aberto da Microsoft.

Coleta de Lixo de Ciclos Concorrentes: Ponteiros Inteligentes com Coleta de Lixo em Rust para Scheme

2024-12-13

Este artigo detalha a implementação de um coletor de lixo de ciclos concorrentes em Rust para ponteiros inteligentes com coleta de lixo (Gc) dentro de um interpretador Scheme. Gc funciona de forma semelhante a Arc>, suportando mutabilidade interna, clonagem e envio entre threads. O artigo explica detalhadamente a implementação de Gc, incluindo mutabilidade interna segura para threads usando semáforos e bloqueios de leitura/escrita, e os detalhes de implementação da coleta de lixo de ciclos concorrentes com base no algoritmo de Bacon e Rajan. Isso inclui o traço de atributo, detecção de ciclos e mecanismos para lidar com modificações concorrentes.

Desenvolvimento Coleta de Lixo Concorrência

HyperDX Contrata Engenheiros Full-Stack, Front-end e Back-end

2024-12-13
HyperDX Contrata Engenheiros Full-Stack, Front-end e Back-end

A HyperDX, apoiada pela Y Combinator, está contratando Engenheiros Full-Stack, Front-end e Back-end. A HyperDX constrói uma plataforma de observabilidade de código aberto e amigável para desenvolvedores, com o objetivo de substituir ferramentas como Datadog e New Relic, ajudando os engenheiros a identificar problemas de produção mais rapidamente. Oferece salários competitivos e opções de trabalho remoto, visando engenheiros experientes.

Desenvolvimento Engenheiros Observabilidade

Criador constrói jogo de tiro a laser: de um brinquedo da Legoland a diversão do Halloween com ESP32

2024-12-13
Criador constrói jogo de tiro a laser: de um brinquedo da Legoland a diversão do Halloween com ESP32

Inspirado por um brinquedo de aventura egípcia da Legoland, o autor decidiu criar um jogo de tiro semelhante. Usando microprocessadores ESP32 baratos, pistolas de laser infravermelho e alvos caseiros, ele construiu com sucesso um jogo de tiro temático de Halloween. Ao longo do caminho, ele aprendeu programação Arduino e MicroPython, superando desafios em conexões de hardware, fonte de alimentação e comunicação. O jogo foi um sucesso em eventos na escola e em casa. Planos futuros incluem melhorar o design do alvo, os efeitos de iluminação e as placas de circuito para aprimorar a experiência de jogo.

Desenvolvimento Criador

Novas Funções Hash Rain Hashes: Velocidade e Segurança Combinadas

2024-12-13
Novas Funções Hash Rain Hashes: Velocidade e Segurança Combinadas

A DOSAYGO Research lançou Rain Hashes, uma nova família de funções hash com os algoritmos Rainbow e Rainstorm. O Rainbow se destaca pela velocidade excepcional, tornando-o ideal para hashing de uso geral. Sua implementação em C++ passou em todos os testes do SMHasher3 e é caracterizada por seu código conciso e eficiente. O Rainstorm prioriza a segurança; embora não tenha sido auditado formalmente, seu design incorpora elementos de funções hash criptográficas e oferece tamanhos de saída de 64 a 512 bits. O projeto fornece implementações em C++, WASM e Node.js, juntamente com uma ferramenta de linha de comando e testes de benchmark para fácil avaliação e uso.

Desenvolvimento função hash

Web Origami: Uma nova linguagem de programação para simplificar a construção de sites

2024-12-13

Web Origami é uma nova linguagem de programação projetada para simplificar a criação de sites de pequeno a médio porte. Usando uma sintaxe concisa que complementa HTML e CSS, os usuários podem descrever a estrutura do site usando fórmulas semelhantes às de planilhas, transformando dados e arquivos em HTML e outros recursos do site por meio de programas simples. Mesmo sem conhecimento de JavaScript, recursos como pesquisa de texto completo e feeds RSS podem ser criados. O Origami fornece uma interface de linha de comando, funções integradas e uma biblioteca async-tree, com suporte para extensões JavaScript. Seu conceito central é abstrair a construção de sites como transformação de dados, tornando a criação e implantação de sites eficientes, de baixo custo e fáceis de entender.

Vulnerabilidades de segurança decorrentes do PRNG fraco do Dart/Flutter

2024-12-13
Vulnerabilidades de segurança decorrentes do PRNG fraco do Dart/Flutter

A pesquisa da Zellic descobriu várias vulnerabilidades de segurança causadas por um gerador de números pseudoaleatórios (PRNG) fraco em Dart/Flutter. Uma falha na inicialização da função `Random()` no Dart SDK resultou em entropia insuficiente nas chaves geradas, tornando-as suscetíveis a ataques de força bruta. Isso permitiu que atacantes acessassem facilmente o Dart Tooling Daemon, permitindo que eles lessem ou escrevessem arquivos de espaço de trabalho e até executassem código arbitrário. Além disso, os projetos Proton Wallet e SelfPrivacy também foram afetados por esse PRNG fraco, experimentando vulnerabilidades de criptografia e problemas de senhas previsíveis, respectivamente. Embora a vulnerabilidade tenha sido corrigida, os desenvolvedores são instados a ter cuidado ao usar a função `Random()` e usar `Random.secure()` quando números aleatórios criptograficamente seguros forem necessários.

Ideia revolucionária: Aplicando os princípios do Magit ao sistema de controle de versão jj

2024-12-13

O autor propõe uma abordagem inovadora: aplicar a interface de controle de versão Magit do Emacs (que usa arquivos de texto como sua interface de usuário) ao nascente ecossistema de controle de versão jj. O artigo destaca que a interface de usuário baseada em texto do Magit oferece eficiência e portabilidade. Aproveitando o protocolo LSP, uma experiência semelhante ao Magit pode ser implementada em vários editores, evitando o desenvolvimento redundante. O autor prevê a geração de arquivos de texto específicos (como .jj/status.jj) e o uso de recursos do LSP, como tokens semânticos, faixas de dobramento e ir para a definição, para alcançar operações de controle de versão semelhantes ao Magit. O objetivo final é criar uma interface de usuário eficiente e multiplataforma para o controle de versão jj.

Desenvolvimento

Consistência Eventual: Desafios e Padrões em Sistemas Distribuídos

2024-12-13
Consistência Eventual: Desafios e Padrões em Sistemas Distribuídos

A consistência eventual é inevitável em sistemas distribuídos. Este artigo explora quatro padrões comuns para lidar com a consistência eventual: consistência eventual baseada em eventos, consistência eventual de sincronização em segundo plano, consistência eventual baseada em saga e consistência eventual baseada em CQRS. Cada padrão tem suas vantagens e desvantagens. Por exemplo, o padrão baseado em eventos enfatiza sistemas fracamente acoplados e escalabilidade, mas a consistência leva tempo; enquanto o padrão baseado em saga é adequado para transações complexas e de longa duração, garantindo consistência por meio de transações compensatórias. A escolha do padrão depende das necessidades e compensações específicas do sistema.

Dominando a Depuração em Ruby: De puts a Ferramentas Profissionais

2024-12-13
Dominando a Depuração em Ruby: De puts a Ferramentas Profissionais

Este post do blog JetBrains RubyMine explora diversas abordagens para depurar código Ruby, desde comandos `puts` básicos até consoles interativos (IRB e Pry) e depuradores poderosos (byebug, debug e o depurador RubyMine). Usando um exemplo de bug do mundo real, ele destaca os pontos fortes e fracos de cada ferramenta, guiando os desenvolvedores na seleção do depurador mais apropriado para melhorar a eficiência. O artigo enfatiza que a depuração eficaz não se trata apenas de corrigir erros; trata-se de obter um entendimento fundamental do código para escrever aplicativos Ruby mais robustos.

Compilador Rust: Uma Arquitetura de Compilação Incremental Baseada em Consultas

2024-12-13

Para resolver os problemas de eficiência da compilação tradicional em pipeline, o compilador Rust utiliza uma arquitetura de compilação incremental baseada em consultas. Essa arquitetura divide o processo de compilação em uma série de consultas interdependentes, usando um banco de dados de compilação para armazenar em cache os resultados intermediários. Isso permite recompilar apenas as seções de código necessárias. Semelhante à gestão de dependências de um sistema de construção, isso melhora significativamente a velocidade de compilação, especialmente benéfico em cenários como integração com IDE. Embora introduza complexidade, essa abordagem oferece uma experiência de compilação incremental mais estável e eficiente para Rust em comparação com melhorias graduais em métodos tradicionais, sendo agora o padrão para builds de desenvolvimento.

Refatoração em C++: Melhores Técnicas e Práticas

2024-12-13
Refatoração em C++: Melhores Técnicas e Práticas

Este artigo explora técnicas comuns de refatoração em C++ e as melhores práticas para melhorar a qualidade do código. Refatoração, o processo de reestruturar código existente sem alterar a funcionalidade, melhora a legibilidade, a eficiência e a manutenção. O artigo abrange técnicas como renomear variáveis e funções, extrair funções, simplificar instruções condicionais, otimizar loops e remover duplicação de código. Enfatiza a importância do uso de IDEs com recursos de refatoração automática e destaca as melhores práticas, como refatoração em etapas menores, uso de controle de versão e testes automatizados para minimizar a dívida técnica e melhorar a qualidade geral do código.

Projeto Git em impasse sobre a integração do Rust

2024-12-13

O projeto Git está envolvido em um debate acalorado sobre a integração da linguagem de programação Rust. Os proponentes argumentam que a segurança de memória e a facilidade de refatoração do Rust melhorariam a segurança e a experiência do desenvolvedor do Git. No entanto, os oponentes temem que a integração do Rust possa comprometer o suporte a plataformas de nicho como o NonStop, potencialmente prejudicando a viabilidade a longo prazo do Git. A prevalência do NonStop no setor financeiro, sua dependência do Git e a falta de um compilador Rust para a plataforma complicam a questão. A discussão, por fim, não chegou a uma resolução, deixando o projeto Git lutando com uma decisão crítica entre manter o amplo suporte à plataforma e melhorar a segurança e a experiência do desenvolvedor.

Desenvolvimento Suporte à Plataforma

Ambiente de Trabalho Trinity R14.1.3 Lançado: Leve, Eficiente e Ideal para Hardware Antigo

2024-12-13

A equipe do projeto Trinity Desktop Environment (TDE) lançou a versão R14.1.3, um ambiente de desktop leve e gratuito, projetado para usuários que preferem uma experiência enxuta e eficiente. Esta versão suporta várias distribuições Linux, BSD e DilOS, possui baixos requisitos de sistema, tornando-a ideal para hardware antigo. O R14.1.3 inclui várias melhorias, como integração da API do Portal da Área de Trabalho XDG, um novo módulo de configurações da trackpad, novos temas e esquemas de cores e suporte para vários aplicativos e linguagens de programação como Python 3.13. O projeto incentiva doações para apoiar seu desenvolvimento contínuo.

Substituição de Código Quente Elixir/Erlang: Implementações com Zero Downtime

2024-12-13

Este artigo mergulha nas capacidades de troca de código quente do Elixir/Erlang, permitindo o carregamento e descarregamento de código em tempo de execução sem exigir reinicializações do sistema para atualizações de aplicativos. Um exemplo simples do módulo KV demonstra a troca quente manual, enquanto os comandos c/1 e r/1 do iex e a ferramenta Relups são introduzidos para facilitar o gerenciamento de aplicativos e atualizações de versões. O artigo explica aplicativos Erlang, lançamentos, appups e relups, detalhando o uso da ferramenta Distillery para gerar lançamentos de aplicativos e lançamentos de atualização, alcançando, em última análise, implementações com zero downtime e evitando interrupções do serviço.

Desenvolvimento troca de código quente

Domando LLMs: Um Guia Prático para Evitar Armadilhas

2024-12-12

Este livro, "Domando LLMs", explora as limitações principais e as armadilhas de implementação encontradas por engenheiros e gerentes de produto técnicos ao construir aplicativos com tecnologia LLM. Em vez de focar apenas nas capacidades, ele aborda desafios práticos, como lidar com saídas não estruturadas, gerenciar janelas de contexto e otimização de custos. Com exemplos de código Python reprodutíveis e ferramentas de código aberto testadas em combate, ele fornece um guia prático para navegar por esses desafios, permitindo que os leitores aproveitem o poder dos LLMs, evitando suas limitações inerentes.

Stripe investiga pico inesperado de erros de DNS: Uma investigação de rede complexa

2024-12-12
Stripe investiga pico inesperado de erros de DNS: Uma investigação de rede complexa

O Stripe experimentou recentemente um pico inesperado de erros de DNS. Esta publicação detalha como eles usaram ferramentas como Unbound, tcpdump e iptables para rastrear a causa raiz. A investigação revelou que um trabalho do Hadoop que analisava logs de rede estava realizando inúmeras consultas de DNS reversas (registros PTR), levando à amplificação de tráfego devido a tentativas excedendo os limites do resolvedor VPC da AWS. O Stripe resolveu o problema ajustando as configurações de encaminhamento do Unbound para distribuir a carga entre hosts individuais do Hadoop. O caso destaca a importância do monitoramento robusto, solução de problemas multifacetada e estratégias para lidar com picos de tráfego em sistemas de alta disponibilidade.

O Humilde Loop For em Rust: Desempenho e Legibilidade

2024-12-12

Este artigo explora as compensações entre o humilde loop `for` e abordagens de programação funcional como `map` e `fold` em Rust, considerando tanto o desempenho quanto a legibilidade. Através de benchmarks comparando diferentes métodos em operações de vetores e vetores aninhados, o autor descobre que `map` frequentemente supera loops `for` em transformações simples, oferecendo um estilo mais declarativo. No entanto, para cenários mais complexos, como achatamento de vetores aninhados ou tratamento de erros, loops `for` demonstram uma vantagem significativa de desempenho e mantêm maior clareza de código. O autor defende uma abordagem pragmática, escolhendo a melhor ferramenta para o trabalho em vez de favorecer cegamente a programação funcional.

Desenvolvimento desempenho loop for

WordPress Contra Private Equity: Uma Luta pelo Futuro do Open Source

2024-12-12
WordPress Contra Private Equity: Uma Luta pelo Futuro do Open Source

WordPress, o sistema de gerenciamento de conteúdo líder mundial, está em uma batalha com a empresa de private equity Silver Lake e seu investimento, WP Engine. Após receber um investimento maciço, a WP Engine, uma empresa com fins lucrativos construída sobre o WordPress, explorou agressivamente a marca WordPress enquanto contribuía minimamente para a comunidade de código aberto. Após várias tentativas de comunicação fracassadas, o CEO da Automattic e cofundador do WordPress, Matt Mullenweg, tomou medidas, restringindo o acesso da WP Engine aos recursos do WordPress.org para defender a comunidade de código aberto e o futuro do WordPress. Esse conflito destaca o conflito fundamental entre comunidades de código aberto e empresas de private equity que visam maximizar lucros, servindo como um conto de advertência sobre a saúde a longo prazo de projetos de código aberto.

Desenvolvimento

Teclado virtual leve: Unexpected Keyboard chega ao Android

2024-12-12
Teclado virtual leve: Unexpected Keyboard chega ao Android

Unexpected Keyboard é um teclado virtual leve para Android, projetado para desenvolvedores. Seu recurso principal é a capacidade de digitar mais caracteres deslizando para os cantos das teclas. Originalmente projetado para usuários do Termux, agora é adequado para uso diário. O aplicativo é sem anúncios, não faz nenhuma solicitação de rede e é de código aberto. Os usuários podem acessar símbolos especiais deslizando para os cantos das teclas; por exemplo, deslizar para o canto inferior esquerdo abre as configurações. Aplicativos semelhantes incluem Calculator++.

Regras não ditas dos programas de terminal: Uma retrospectiva de 20 anos

2024-12-12

Este artigo resume a experiência de 20 anos do autor com programas de terminal, destilando regras comuns, embora não oficiais, de comportamento. Essas regras cobrem as respostas dos programas a Ctrl-C, Ctrl-D e à tecla 'q', uso de cores, suporte a vinculações de teclas readline e saída de pipe. O autor observa que, embora não sejam padrões obrigatórios, a compreensão dessas regras ajuda a prever o comportamento do programa de terminal e reduz a curva de aprendizado. O artigo usa exemplos para analisar a aplicabilidade e as exceções a essas regras, enfatizando a importância de distinguir entre a responsabilidade do próprio programa e o comportamento padrão do sistema operacional.

Engenheiro Implementa Autômato Celular Reversível 1D Usando Operações Bit a Bit

2024-12-12
Engenheiro Implementa Autômato Celular Reversível 1D Usando Operações Bit a Bit

Richard Palethorpe, um engenheiro, criou uma demonstração usando a biblioteca GFXPrim, mostrando um autômato celular binário unidimensional e sua contraparte reversível. O autômato evolui com base em regras onde o estado de cada célula é determinado por seu próprio estado e pelos estados de seus vizinhos esquerdo e direito. O artigo detalha otimizações de operações bit a bit, como o processamento paralelo de várias células usando inteiros de 64 bits e rotação de bits para simular a interação entre vizinhos. A implementação reversível é alcançada usando XOR com o estado anterior. O autor explora os impactos da otimização do compilador e da vetorização no desempenho e, por fim, implementa um método de renderização eficiente.

A Ascensão e Queda da Ashton-Tate: A Saga do dBASE

2024-12-12
A Ascensão e Queda da Ashton-Tate: A Saga do dBASE

A Ashton-Tate, um nome importante na revolução do computador pessoal da década de 1980, alcançou a fama com seu software de banco de dados, dBASE. Inicialmente concebido por Wayne Ratliff como Vulcan, o programa rapidamente se tornou um padrão para sistemas CP/M e mais tarde floresceu com a ascensão do IBM PC. Sua interface amigável e recursos poderosos impulsionaram a Ashton-Tate a um IPO e a um sucesso significativo. No entanto, as lutas posteriores da empresa com o desenvolvimento do dBASE III, a crescente concorrência e problemas internos acabaram levando à sua aquisição pela Borland. Esta história detalha o legado do dBASE, a ascensão e queda da Ashton-Tate, oferecendo insights valiosos sobre a dinâmica da indústria de software.

Desenvolvimento software de banco de dados

Extensão do GitHub resume artigos do Hacker News com LLMs

2024-12-12
Extensão do GitHub resume artigos do Hacker News com LLMs

O projeto GitHub `hn-tldr-extension` oferece uma extensão de navegador que usa os Large Language Models (LLMs) do OpenAI e Anthropic para resumir rapidamente artigos do Hacker News. Os usuários fornecem suas próprias chaves de API para habilitar um botão 'resumir' nas páginas do HN, fornecendo resumos concisos de artigos. O código da extensão é de código aberto e suporta navegadores como o Firefox.

Lançamento da biblioteca lfi de iteração concorrente de alto desempenho

2024-12-12

lfi é uma biblioteca de programação funcional leve focada em iteração síncrona, assíncrona e concorrente. Ela supera significativamente bibliotecas como p-map e p-filter na iteração concorrente, processando cada item de forma independente, resultando em ganhos de desempenho substanciais. lfi também possui avaliação preguiçosa, realizando operações apenas quando necessário para economizar memória, e possui um tamanho pequeno, tornando-a facilmente otimizável com tree shaking. Seu design de API limpo, combinado com a função pipe, leva a um código mais legível e fácil de manter.

Kubernetes Spec v1.32 Lançado: Guia de Referência abrangente de recursos

2024-12-12
Kubernetes Spec v1.32 Lançado: Guia de Referência abrangente de recursos

O kubespec.dev lançou um guia de referência e documentação para a especificação Kubernetes v1.32, fornecendo documentação completa para todos os recursos, propriedades, tipos e exemplos integrados. O guia abrange cargas de trabalho, cluster, rede, configuração, armazenamento, administração e controle de acesso, permitindo que os usuários encontrem e entendam rapidamente as funcionalidades do Kubernetes. O projeto é de código aberto e aceita contribuições.

Modelos de Memória de Linguagens de Programação: Desafios e Soluções na Programação Concorrente

2024-12-12

Este artigo aprofunda-se nos modelos de memória de linguagens de programação, especificamente o comportamento da memória compartilhada em programas multithread. Usando um programa simples semelhante a C como exemplo, ele ilustra como otimizações do compilador podem levar a resultados inesperados, como corridas de dados entre threads. Para resolver isso, linguagens modernas introduzem variáveis atômicas e operações atômicas para garantir a sincronização de threads e evitar corridas de dados. O artigo compara os modelos de memória de Java, C++, Rust e outras linguagens, analisando seus pontos fortes e fracos e evolução, e aponta os desafios restantes na formalização de modelos de memória.

Peter Solnica, membro da equipe principal do Hanami, anuncia sua aposentadoria

2024-12-12
Peter Solnica, membro da equipe principal do Hanami, anuncia sua aposentadoria

Peter Solnica, desenvolvedor principal do framework Hanami, anunciou recentemente sua aposentadoria da equipe principal. Após dois anos de reflexão, ele decidiu dedicar mais tempo à sua família e buscar um melhor equilíbrio entre vida profissional e pessoal. Solnica agradeceu a inúmeras pessoas e organizações que impactaram significativamente sua carreira, incluindo Lunar Logic, a equipe DataMapper e os membros da equipe Hanami. Ele afirmou que, embora não mais seja membro da equipe principal, continuará apoiando o desenvolvimento do Hanami e manterá contato com a comunidade. A aposentadoria de Solnica não reflete uma perda de fé no Hanami, mas sim um ajuste pessoal na administração do tempo e prioridades de vida, mudando seu foco para a família e o desenvolvimento Elixir.

Desenvolvimento Código aberto Aposentadoria

Prova do Último Teorema de Fermat: Computadores Enfrentam um Desafio Matemático

2024-12-12
Prova do Último Teorema de Fermat: Computadores Enfrentam um Desafio Matemático

Uma equipe está tentando provar o Último Teorema de Fermat usando Lean, encontrando desafios inesperados no caminho. Em vez de depender da prova original, eles estão usando uma abordagem moderna mais generalizada. Ao formalizar a cohomologia cristalina, descobriram um erro em um lema-chave, levando a uma reavaliação dos fundamentos da teoria. Eles finalmente encontraram uma solução alternativa usando uma prova diferente. Essa experiência destaca erros potenciais na literatura matemática moderna e sublinha a necessidade de provas formalizadas.

1 2 191 192 193 194 195 196 198