Category: Desenvolvimento

Meta Combate Spam em Escala com Haskell

2024-12-22
Meta Combate Spam em Escala com Haskell

O sistema Sigma do Meta, uma arma crucial na luta contra spam e malware, passou por uma revisão de dois anos. O sistema foi reescrito em Haskell, uma escolha menos comum para sistemas de produção em larga escala, atingindo mais de um milhão de solicitações por segundo. A mudança para Haskell aproveitou sua natureza puramente funcional e fortemente tipada, e a estrutura Haxl permitiu o agrupamento automático e a recuperação de dados concorrente. Foram observadas melhorias de desempenho de 20% a 30% em relação ao sistema anterior baseado em FXL. O projeto também envolveu contribuições significativas para o compilador GHC, resolvendo vários bugs.

Desenvolvimento Filtragem de Spam

Projeto Open Source GitHub: epub-tts Converte eBooks para Áudio

2024-12-22
Projeto Open Source GitHub: epub-tts Converte eBooks para Áudio

Um projeto open-source no GitHub chamado epub-tts converte ebooks EPUB em arquivos de áudio. Escrito em Go, ele depende do ffmpeg e do comando `say` do MacOS para analisar o EPUB em seções (capítulos) e converter cada seção em um arquivo de áudio. Atualmente em versão alfa, ele fornece uma alternativa simples para quando os olhos estão cansados, mas a mente não está. Os planos futuros incluem otimização de código, conversão em lote, tamanhos de arquivo de áudio menores e suporte para mais idiomas.

Desenvolvimento conversão de áudio

twtxt: Um serviço de microblog minimalista e descentralizado

2024-12-22

twtxt é um serviço de microblog minimalista e descentralizado, projetado para hackers. Sua documentação cobre instalação, início rápido, uso, configuração e detalhes da API. Os usuários podem seguir e deixar de seguir fontes, postar atualizações de status, visualizar seus timelines e feeds de fontes específicas e interagir com o twtxt via interface de linha de comando (CLI). O código-fonte é hospedado no GitHub e contribuições são bem-vindas.

Desenvolvimento descentralizado microblog

Filtros de Bloom: O Segredo para Deixar o SQLite 10 Vezes Mais Rápido

2024-12-22

Pesquisadores usaram filtros de Bloom de forma inteligente para tornar as consultas analíticas do SQLite 10 vezes mais rápidas. Eles descobriram que as junções de loop aninhado do SQLite eram ineficientes, com muito tempo gasto em sondagens de árvore B. Ao usar um filtro de Bloom antes da operação de junção para filtrar rapidamente as linhas que provavelmente não correspondem e, em seguida, realizar sondagens de árvore B apenas em correspondências potenciais, o número de sondagens foi significativamente reduzido. Os filtros de Bloom têm uma sobrecarga de memória mínima e foram fáceis de integrar no mecanismo de consulta existente do SQLite, resultando em um aumento significativo de desempenho. Essa melhoria foi integrada ao SQLite v3.38.0.

(avi.im)

Jujutsu: Um Sistema de Controle de Versão Revolucionário

2024-12-22

Jujutsu é um novo sistema de controle de versão baseado no Git, oferecendo uma abordagem simplificada para interação de arquivos locais por meio de um modelo conceitual único e um conjunto de comandos diferente. Ao contrário do Git, o Jujutsu sempre trata o estado da cópia de trabalho como um commit, refletindo instantaneamente qualquer edição no disco no commit atual. Isso simplifica muitas operações, incluindo a correção de erros em commits antigos, visualização de diferenças e gerenciamento de trabalhos em andamento. O fluxo de trabalho é intuitivo, acessível mesmo sem experiência prévia com Git, e integra-se perfeitamente ao ecossistema Git. Embora alguns recursos, como a integração perfeita com o VSCode, ainda estejam faltando, o Jujutsu demonstra um imenso potencial com seu design inovador e experiência amigável para o usuário.

Desenvolvimento

CodeMic: Ferramenta de Geração de Código com IA

2024-12-22

CodeMic é uma ferramenta alimentada por IA que gera código com base em descrições em linguagem natural. Ela produz código de alta qualidade rapidamente, aumentando significativamente a eficiência do desenvolvimento. Tanto programadores experientes quanto iniciantes podem usar o CodeMic com facilidade, permitindo que se concentrem em aspectos mais criativos do trabalho. O CodeMic suporta várias linguagens de programação e aprende e melhora continuamente, fornecendo aos desenvolvedores uma poderosa assistência de código.

Lançado o Fish Shell 4.0b1 Beta: Código principal reescrito em Rust, grandes melhorias incluídas

2024-12-22
Lançado o Fish Shell 4.0b1 Beta: Código principal reescrito em Rust, grandes melhorias incluídas

O Fish Shell 4.0b1 beta foi lançado! O principal destaque é a portabilidade do código principal de C++ para Rust, resultando em melhorias significativas de desempenho e aprimoramentos. Muitas outras melhorias foram incluídas, como melhor suporte de terminal, recursos de vinculação aprimorados, recursos de script aprimorados e uma melhor experiência interativa. Mudanças de incompatibilidade regressiva notáveis incluem uma nova notação de tecla para vinculações e a ativação padrão do recurso qmark-noglob. Em geral, esta é uma versão significativa que oferece aos usuários uma experiência de shell mais poderosa e eficiente.

Desenvolvimento

Notion: Seu Espaço de Trabalho Tudo-em-Um

2024-12-22
Notion: Seu Espaço de Trabalho Tudo-em-Um

Notion é um espaço de trabalho tudo-em-um que combina notas, gerenciamento de tarefas, wikis e bancos de dados em uma única plataforma. Ele permite que os usuários organizem e gerenciem todas as suas informações em um só lugar, aumentando a produtividade. Seja para notas pessoais, colaboração em equipe ou construção de banco de conhecimento, o Notion atende a várias necessidades, e seus recursos altamente personalizáveis ​​o tornam uma ferramenta poderosa para indivíduos eficientes.

cURL e libcurl abandonam o Hyper

2024-12-22
cURL e libcurl abandonam o Hyper

Após quatro anos de experimento, o projeto cURL anunciou que está abandonando o uso da biblioteca Hyper baseada em Rust como backend HTTP. Apesar das vantagens de segurança de memória do Hyper e do suporte do Let's Encrypt, a falta de demanda do usuário e o envolvimento do desenvolvedor levaram à sua terminação. A equipe do cURL citou o alto custo de manutenção do código Hyper e o foco em melhorar e manter a base de código existente. Embora o experimento tenha falhado, o cURL ganhou experiência valiosa e melhorou suas capacidades de manipulação HTTP.

Desenvolvimento

Leitores de Feed teimosos derrubam site

2024-12-22

Um blogueiro enfrentou indisponibilidade do site, rastreando-a não para operadoras ou hospedagem, mas para softwares de leitores de feed com mau comportamento. Esses leitores ignoram as melhores práticas, enviando solicitações incondicionais e ignorando erros 429 (solicitações demais), fazendo com que o servidor desligasse defensivamente. O blogueiro recorreu a uma postagem no blog, pedindo aos usuários que verificassem seus leitores de feed, oferecendo uma ferramenta chamada "Pontuação do Leitor de Feed" para analisar o comportamento do leitor e resolver o problema.

Novo artigo de Tao: Investigando a distribuição de autovalores de GUE e suas menores

2024-12-22
Novo artigo de Tao: Investigando a distribuição de autovalores de GUE e suas menores

Em seu último preprint no arXiv, o renomado matemático Terence Tao investiga a distribuição de autovalores do Conjunto Unitário Gaussiano (GUE) e suas menores em índices fixos. Usando processos determinantais e técnicas analíticas sofisticadas, o artigo estabelece várias estimativas sobre lacunas de autovalores, abordando questões anteriormente sem resposta e abrindo caminho para trabalhos futuros sobre o comportamento limitante de 'colmeias' com condições de contorno GUE. Esta pesquisa contribui significativamente para a compreensão de modelos de matrizes aleatórias e campos relacionados.

EIP de Sinalização de Atualização On-Chain do Ethereum: Consenso da Comunidade Impulsiona Atualizações

2024-12-22
EIP de Sinalização de Atualização On-Chain do Ethereum: Consenso da Comunidade Impulsiona Atualizações

Esta proposta apresenta um mecanismo on-chain que permite aos clientes Ethereum sinalizar sua prontidão para atualizações de protocolo, incorporando um indicador de "voto" no campo extraData de blocos recém-minerados. Blocos futuros de ativação de fork só ocorrerão se blocos suficientes dentro de uma janela especificada sinalizarem "a favor" da atualização. Isso transfere as decisões de atualização da Ethereum Foundation para os participantes da rede, aumentando a descentralização e mitigando os riscos de centralização.

Minimizar o consumo da bateria Wi-Fi em projetos de IoT

2024-12-22
Minimizar o consumo da bateria Wi-Fi em projetos de IoT

Nos estágios iniciais do desenvolvimento do PetDrifts, um dispositivo IoT baseado no ESP32 C3, a duração da bateria era um grande desafio, durando apenas um dia. O culpado foi identificado como o alto consumo de energia durante as solicitações HTTP POST a cada 15 minutos. Para resolver isso, a equipe explorou duas soluções: mudar de TCP para UDP para reduzir a sobrecarga da rede e adotar o MQTT para conexões persistentes e menor consumo de energia. Embora tenham sido observadas melhorias, a duração da bateria não foi suficiente. Por fim, eles optaram por um MCU Bluetooth para alcançar uma duração de bateria significativamente maior.

Desenvolvimento Otimização de energia

Armazenamento de chave-valor com suporte SQLite: Manipulação de objetos semelhante a JS e serialização JSON automática

2024-12-22
Armazenamento de chave-valor com suporte SQLite: Manipulação de objetos semelhante a JS e serialização JSON automática

Um projeto no GitHub apresenta um armazenamento de chave-valor construído sobre o SQLite, permitindo manipulação de objetos semelhante a JavaScript com serialização JSON automática. A função `createDatabaseClient` cria um cliente paralelo com componentes de leitor (`rdr`) e escritor (`wtr`) separados. O escritor utiliza proxies para atualizações parciais de JSON, enquanto o leitor retorna objetos JavaScript simples. Testes abrangentes cobrem operações CRUD básicas, atualizações aninhadas, exclusões e manipulações de matrizes.

Nix Home Manager: Um guia para gerenciamento de dotfiles

2024-12-22

Este artigo mergulha nas vantagens e técnicas de usar o Nix Home Manager para gerenciamento de dotfiles. O autor começa reconhecendo a curva de aprendizado íngreme do Nix e do Home Manager, recomendando uma abordagem gradual para dominar seus recursos. O artigo explica vários casos de uso do Home Manager, incluindo instalação de software, configuração de programas e serviços declarativos e gerenciamento de dotfiles. O foco principal é na função `mkOutOfStoreSymlink`, que cria links simbólicos para dotfiles, permitindo modificações sem reconstruir todo o sistema. Um exemplo de módulo personalizado é fornecido para facilitar a alternância entre configurações mutáveis e imutáveis. Por fim, o autor compara o Home Manager com outras ferramentas de gerenciamento de dotfiles, destacando seus benefícios de reprodutibilidade.

Desenvolvimento

Falha na compilação do GCC: Um mistério de depuração causado pela refatoração do sbuild

2024-12-22

As compilações oficiais do Debian GCC começaram a falhar misteriosamente após uma refatoração do sbuild. Uma equipe embarcou em uma investigação de seis etapas, descobrindo finalmente um conflito entre o novo sistema de inicialização do sbuild e um teste de unidade da linguagem D. O teste acidentalmente encerrou seu próprio grupo de processos, interrompendo a compilação. A causa raiz foi o uso de -2 como um valor especial de PID no teste de unidade da linguagem D, levando a sinais SIGTERM sendo enviados para o grupo de processos errado. A troca para o sistema de inicialização antigo ou a modificação do código do teste resolveram o problema.

Desenvolvimento depuração

O Legado duradouro da NeXT em OS X e iOS

2024-12-22
O Legado duradouro da NeXT em OS X e iOS

Este artigo explora o profundo impacto da NeXT e seu sistema operacional NeXTSTEP no OS X e iOS da Apple. A base UNIX do NeXTSTEP trouxe recursos cruciais como memória protegida, multitarefa preemptiva e daemons, melhorando a estabilidade e a eficiência. Também introduziu a linguagem de programação Objective-C e a estrutura Cocoa, simplificando o desenvolvimento de software e dando origem a ferramentas poderosas como o Interface Builder. Além disso, a tecnologia Display PostScript do NeXTSTEP lançou as bases para o sistema gráfico Quartz do OS X. Essas tecnologias permanecem no cerne dos dispositivos Apple hoje, destacando a contribuição significativa da NeXT para a computação moderna.

Desenvolvimento

Implementações Lentas Causam Reuniões: Uma Perspectiva Inversa

2024-12-22
Implementações Lentas Causam Reuniões: Uma Perspectiva Inversa

Programadores frequentemente reclamam de muitas reuniões que atrapalham a produtividade. Kent Beck questiona essa ideia, sugerindo que as reuniões são uma consequência, e não a causa, de implantações lentas. A experiência do Facebook mostra que aumentar a frequência de implantação é crucial. Quando a velocidade de implantação fica para trás em relação às mudanças de código, as organizações adicionam reuniões e revisões para mitigar riscos, reduzindo a eficiência. Em vez de reduzir as reuniões, concentre-se em melhorar a capacidade de implantação, encurtando ciclos ou melhorando a qualidade do código. Este ensaio oferece uma nova perspectiva, explorando o relacionamento contra-intuitivo entre implantações lentas e aumento da sobrecarga organizacional.

Melhorando o tratamento de erros em F#: Apresentando FaultReport

2024-12-22

Este artigo critica as deficiências do tipo Result do F# no tratamento de erros, destacando inconsistências nos tipos de erro e os problemas decorrentes do uso de strings como tipos de erro. O autor propõe o FaultReport como uma alternativa, usando uma interface IFault para padronizar os tipos de erro e um tipo Report<'Pass', 'Fail> para representar os resultados da operação, onde 'Fail deve implementar IFault. Isso garante um tratamento de erros consistente e com segurança de tipo, evitando os inconvenientes dos erros baseados em strings. O FaultReport fornece ainda Report.generalize para conversão para tipo superior e um padrão ativo FailAs para conversão para tipo inferior, facilitando o tratamento de diferentes tipos de erros. Embora substituir o Result do FSharp.Core seja uma tarefa significativa, o autor argumenta que o design do FaultReport oferece uma melhoria valiosa para o tratamento de erros do F#.

Desenvolvimento

Assistente GitHub: Explore Repositórios GitHub com Linguagem Natural

2024-12-22
Assistente GitHub: Explore Repositórios GitHub com Linguagem Natural

O Assistente GitHub é um projeto de prova de conceito que permite aos usuários explorar repositórios GitHub usando perguntas em linguagem natural. Construído com Relta e assistant-ui, ele permite que os usuários façam perguntas em português claro e recebam informações relevantes do repositório. O submódulo Relta é atualmente de código fechado, mas está disponível mediante solicitação. Requer Python 3.9+, npm, Git e configuração de uma chave de API OpenAI e URI de conexão do banco de dados.

Criador do Rosetta 2 se junta ao Lean FRO para aprimorar o gerador de código

2024-12-22
Criador do Rosetta 2 se junta ao Lean FRO para aprimorar o gerador de código

Leonardo de Moura, Cientista Aplicada Sênior Principal na AWS e Arquiteto Chefe do Lean FRO (uma organização sem fins lucrativos), anunciou que Cameron Zwarich, o brilhante criador do Rosetta 2 e um desenvolvedor de software excepcional com mais de 15 anos de experiência na Apple especializado em software de sistemas de baixo nível, se juntou à equipe do Lean FRO. Zwarich se concentrará em melhorar o gerador de código do Lean, prometendo um impacto significativo no ecossistema Lean.

Desenvolvimento Gerador de Código

Revolucionando o Fluxo de Trabalho: O Poder de um CHANGELOG Público

2024-12-22

O engenheiro da AWS, Daniel Doubrovkine, compartilha sua experiência com a manutenção de um CHANGELOG público de seu trabalho. Ao documentar abertamente suas tarefas semanais, ele promove transparência e colaboração. Essa prática gerou benefícios significativos: reuniões individuais mais produtivas, integração mais tranquila para novos engenheiros, acesso fácil ao trabalho anterior, autorreflexão aprimorada e aumento da confiança entre os colegas. Ele incentiva outros a adotarem essa abordagem e compartilha seu método simples de registro, juntamente com um script Ruby para gerar uma tabela de conteúdo anual.

Desenvolvimento registro de trabalho

Caso curioso de importação lenta de USD no Blender

2024-12-22
Caso curioso de importação lenta de USD no Blender

Um desenvolvedor encontrou tempos de importação inesperadamente lentos ao importar cenas USD para o Blender. A análise de desempenho revelou que o gargalo era a função de classificação de ID interna do Blender, `id_sort_by_name`. Essa função, que se esperava ter complexidade O(N), degradou para O(N²) devido ao esquema de nomenclatura nos arquivos USD. Ao modificar a convenção de nomenclatura e otimizar o algoritmo de classificação, o desenvolvedor reduziu os tempos de importação de 4 minutos e 40 segundos para 8 segundos para arquivos menores. No entanto, o problema subjacente decorre da exigência do Blender para IDs classificados, levando a sugestões para substituir a lista vinculada por uma árvore Trie ou uma tabela hash. Essa otimização destaca um desafio comum na otimização de desempenho: identificar e solucionar complexidade inesperada.

Desenvolvimento

cqd: Utilitário Python colorido para inspeção de atributos de objetos

2024-12-22
cqd: Utilitário Python colorido para inspeção de atributos de objetos

cqd é um utilitário Python leve que fornece uma visualização colorida dos atributos de objetos, simplificando a inspeção de objetos durante o desenvolvimento e a depuração. Ele codifica por cores os atributos: métodos dunder (azul), atributos protegidos (amarelo) e atributos/métodos públicos (verde). Por exemplo, é útil para visualizar facilmente os atributos de um tokenizador Hugging Face. A instalação é fácil via `pip install cqd`. O uso envolve importar a função `cqd` e chamar `cqd(your_object).

JEP 483 do Java: Carregamento e Vinculação Antecipada de Classes Aumenta o Tempo de Inicialização

2024-12-22

O JEP 483 melhora significativamente o tempo de inicialização de aplicativos Java carregando e vinculando classes de aplicativos antecipadamente quando a JVM HotSpot inicia. Isso é alcançado monitorando uma única execução do aplicativo, armazenando as formas carregadas e vinculadas de todas as classes em um cache para reutilização em execuções subsequentes. Este recurso não requer alterações de código e oferece melhorias substanciais de velocidade para aplicativos de servidor grandes, com o Spring PetClinic mostrando uma redução de 42% no tempo de inicialização. Embora atualmente seja um processo de duas etapas, versões futuras simplificarão a criação do cache para uma única etapa e oferecerão uma configuração de execução de treinamento mais flexível.

Desenvolvimento

Tradução em Massa de Java para Kotlin no Meta: Superando Milhões de Linhas de Código

2024-12-22
Tradução em Massa de Java para Kotlin no Meta: Superando Milhões de Linhas de Código

O Meta empreendeu um esforço de vários anos para traduzir sua enorme base de código Android de Java para Kotlin. Esta postagem detalha como o Meta construiu o Kotlinator, uma ferramenta de automação, para superar desafios como velocidades de compilação lentas e linters insuficientes, convertendo com sucesso mais da metade de seu código. O Kotlinator compreende várias fases: pré-processamento, conversão J2K sem cabeça, pós-processamento e correção de erros. O Meta também colaborou com a JetBrains para melhorar o J2K e tornou de código aberto partes do processo para promover a colaboração da comunidade. O artigo destaca o tratamento de segurança nula e várias questões de código encontradas e resolvidas durante a conversão.

Desenvolvimento migração de código

Uma Conversa Através de uma Parede Mudou Minha Trajetória Como Programador

2024-12-21
Uma Conversa Através de uma Parede Mudou Minha Trajetória Como Programador

Em 1983, um programador trabalhando em uma grande empresa de defesa planejava seguir um doutorado em Química. Uma conversa casual através de uma parede com o gerente do grupo vizinho de "microcomputadores" (um entusiasta de tecnologia) o levou a um encontro sobre Apple II. Lá, ele foi encarregado de criar um emulador de terminal VT-100 em linguagem assembly 6502 em uma semana para permitir que o presidente da empresa lesse e-mails em casa. Essa experiência não apenas redirecionou sua carreira, levando-o a se juntar ao grupo de microcomputadores e se tornar o único programador de PC da empresa, mas também o levou a criar sua própria empresa. Anos depois, ele refletiu sobre como encontros casuais e conexões interpessoais moldaram significativamente sua vida.

Desenvolvimento carreira oportunidade

Filosofia de Design de Software: Domando a Complexidade

2024-12-21

Esta publicação resume três ideias-chave do livro "Uma Filosofia de Design de Software": tolerância zero para complexidade, o equívoco de que componentes menores sempre equivalem a melhor modularidade e as complexidades inerentes ao tratamento de exceções. O autor argumenta que a complexidade não é causada por erros isolados, mas se acumula ao longo do tempo. Exemplos de um sistema de processamento de pedidos e registro de usuários ilustram como evitar código duplicado e encontrar o equilíbrio certo entre o tamanho do componente e a modularidade. Além disso, a publicação detalha três técnicas para reduzir a complexidade do tratamento de exceções: eliminando erros, mascarando exceções e agregação de exceções, com o processamento de arquivos servindo como exemplo. O livro, em última análise, enfatiza a importância de simplificar consistentemente a complexidade no design de software.

Enum de Matrizes: Uma Nova Estrutura de Dados para Processamento Eficiente de Dados

2024-12-21
Enum de Matrizes: Uma Nova Estrutura de Dados para Processamento Eficiente de Dados

Este artigo apresenta uma estrutura de dados chamada "Enum de Matrizes" (EoA), semelhante ao popular "Struct de Matrizes" (SoA), mas com enums em seu núcleo. EoA compacta vários valores enum em uma matriz, usando uma única tag para identificar o tipo da matriz. Isso reduz o uso de memória e a sobrecarga de previsão de desvio, levando a um processamento de dados mais eficiente, particularmente benéfico para otimização SIMD. O artigo usa o sistema de banco de dados TigerBeetle como exemplo, ilustrando como EoA permite o processamento eficiente em lote, separando eficazmente o plano de controle e o plano de dados, resultando em um desempenho significativamente melhorado.

Yakari: Ferramenta de construção de comandos interativa simplifica CLIs complexas

2024-12-21
Yakari: Ferramenta de construção de comandos interativa simplifica CLIs complexas

Yakari é uma ferramenta interativa de construção de comandos projetada para simplificar interfaces de linha de comando complexas. Ela guia os usuários na construção de comandos passo a passo, eliminando a necessidade de memorizar sintaxes complexas. Com suporte a vários tipos de argumentos, Yakari oferece ajuda contextual e histórico de comandos, melhorando significativamente a usabilidade do CLI. Os usuários podem construir e executar comandos com atalhos simples, tornando acessíveis até mesmo comandos complexos.

Desenvolvimento interface interativa
1 2 190 191 192 194 196 197 198 201 202