Category: Desenvolvimento

Hackeando seu relógio para foco: um script bash simples para melhor concentração

2025-05-12
Hackeando seu relógio para foco: um script bash simples para melhor concentração

Frustrado com distrações constantes, o autor criou um hack inteligente usando a extensão "Formato de data do painel" do GNOME e um simples script bash no Ubuntu. Isso transforma o relógio do computador em um lembrete de foco persistente. O script permite definir uma tarefa de foco atual, que é exibida ao lado da hora. Este método não requer força de vontade, aproveitando a tendência natural de olhar para o relógio com frequência para uma melhoria sutil, mas eficaz, do foco sem interromper o fluxo de trabalho.

Desenvolvimento extensão GNOME script bash

Construindo um Coletor de Lixo do Zero: Uma Jornada de 20 Anos

2025-05-12

Um programador com 20 anos de experiência, após estudar o algoritmo de coleta de lixo Immix, decidiu implementar um novo coletor de lixo para o Guile Scheme. Seu objetivo inicial era criar uma interface de gerenciamento de memória genérica, mas acabou desenvolvendo um novo coletor de lixo chamado Nofl, que usa uma tabela auxiliar de um coletor mark-sweep para alocação de ponteiro bump. O autor também compartilha sua experiência de submeter sua pesquisa a uma conferência acadêmica e suas reflexões sobre pesquisa acadêmica e indústria.

Desenvolvimento

toyDB: Um banco de dados SQL distribuído em Rust para fins educacionais

2025-05-11
toyDB: Um banco de dados SQL distribuído em Rust para fins educacionais

toyDB é um banco de dados SQL distribuído construído do zero em Rust como um projeto educacional. Ele visa ilustrar a arquitetura e os conceitos por trás de bancos de dados SQL distribuídos de forma simples e compreensível, suportando a maioria dos recursos comuns do SQL, incluindo junções, agregações e transações. Embora desempenho e escalabilidade não sejam objetivos principais, uma ferramenta de benchmark está incluída para avaliar o desempenho em várias cargas de trabalho. O toyDB usa o Raft para consenso para gerenciar um armazenamento de chave/valor transacional, com um mecanismo de consulta SQL construído sobre ele.

Desenvolvimento Banco de dados distribuído

Resolvendo a Equação de Eikonal com Varredura Rápida em JAX

2025-05-11

Este post de blog explora a resolução da equação de Eikonal, crucial na evolução de interfaces e processamento de imagens, usando o método de varredura rápida implementado em JAX. Começa explicando os métodos de conjunto de níveis e a própria equação de Eikonal. O cerne do post detalha o algoritmo de varredura rápida, cobrindo a configuração da grade, atualizações iterativas e o esquema de vento ascendente de Godunov. Implementações de código NumPy e JAX são fornecidas, com benchmarks demonstrando a significativa vantagem de velocidade do JAX. O autor também discute as tentativas de paralelização do algoritmo e os desafios encontrados.

Scraperr: Extração precisa de dados da web com XPath

2025-05-11
Scraperr: Extração precisa de dados da web com XPath

Scraperr é um aplicativo de raspagem da web auto-hospedado que usa seletores XPath para extração precisa de dados. Ele oferece uma interface limpa para gerenciar trabalhos de raspagem, visualizar resultados e exportar dados em vários formatos. Os recursos incluem gerenciamento de filas, rastreamento de domínio, cabeçalhos personalizados, downloads de mídia, visualização de resultados e canais de notificação. Lembre-se de respeitar o robots.txt, os termos de serviço e implementar a limitação de taxa. Use apenas em sites que explicitamente permitem raspagem.

Desenvolvimento

Sandbox de bibliotecas: Um caminho espinhoso para a segurança

2025-05-11
Sandbox de bibliotecas: Um caminho espinhoso para a segurança

Este artigo mergulha nos desafios significativos de construir bibliotecas em sandbox. O autor explora modelagem de ameaças, manipulação de memória, interoperabilidade entre linguagens e reutilização de código. Mesmo linguagens como Java lutam com sandbox completo devido a recursos como reflexão, métodos globais e métodos nativos. Joe-E, uma linguagem de programação baseada em capacidade, embora restrinja severamente a funcionalidade do Java, oferece insights valiosos. No entanto, essa abordagem introduz o problema do "Objeto Deus", exigindo um único objeto para controlar todas as permissões, contradizendo bons princípios de OOP. O sistema Mojo do Chrome apresenta uma solução de sandbox baseada em processos, mas enfrenta desafios como APIs instáveis, dificuldades de reutilização de código e sobrecarga de desempenho. Em última análise, criar bibliotecas seguras em sandbox continua sendo um problema complexo e não resolvido.

Desenvolvimento

Cliente LSP em Clojure: 200 linhas de código, interação minimalista com servidor de linguagem

2025-05-11

Esta postagem de blog detalha como o autor implementou um cliente LSP mínimo em menos de 200 linhas de código Clojure e o usou para construir um analisador de código de linha de comando. Ele percorre a implementação da camada de comunicação básica, da camada JSON-RPC e da API do cliente para o protocolo LSP. O autor então discute os desafios de usar o LSP na prática, particularmente a dependência da maioria dos servidores de linguagem em notificações em vez de solicitações para diagnósticos, tornando uma ferramenta simples de linha de comando mais complexa do que o esperado. Finalmente, o autor resume os prós e contras do LSP e especula sobre o futuro dos servidores de linguagem baseados em WASM.

Desenvolvimento

Desenvolvedores Rust acham que somos desesperados: vamos provar que estão errados (com vazamentos de memória em C++)!

2025-05-11
Desenvolvedores Rust acham que somos desesperados: vamos provar que estão errados (com vazamentos de memória em C++)!

Este tutorial em vídeo desafia de forma divertida a percepção de que desenvolvedores C++ estão constantemente lutando contra vazamentos de memória. Ele demonstra, por meio de um programa C++ simples, como criar intencionalmente e, em seguida, rastrear esses vazamentos usando ferramentas de depuração como `_CrtDumpMemoryLeaks`. O autor apresenta a caça a vazamentos de memória como uma aventura divertida, quase imprudente, fornecendo finalmente um guia prático para identificar e corrigir problemas de memória em C++.

Desenvolvimento

Vazamentos de memória em C++: Mostre aos desenvolvedores Rust quem manda!

2025-05-11
Vazamentos de memória em C++: Mostre aos desenvolvedores Rust quem manda!

Este tutorial em vídeo demonstra como criar e rastrear intencionalmente vazamentos de memória em C++. Embora os desenvolvedores Rust frequentemente zombem do gerenciamento de memória do C++, este tutorial mostra como usar _CrtDumpMemoryLeaks e a macro DEBUG_NEW para detectar e identificar vazamentos de memória, provando que os desenvolvedores C++ podem lidar eficazmente com problemas de memória sem precisar de um verificador de empréstimo ou tempos de vida. Começando com um exemplo simples, o tutorial ensina progressivamente como usar ferramentas de depuração para rastrear vazamentos de memória, mesmo em programas complexos.

Desenvolvimento Vazamentos de Memória

Aplicativo de tarefas para Windows nativo em C puro

2025-05-11
Aplicativo de tarefas para Windows nativo em C puro

Um aplicativo de tarefas para Windows moderno e nativo, construído com C e a API Win32. Permite criar, editar, excluir e marcar itens de tarefas como concluídos, com armazenamento persistente em AppData. Inclui integração com a bandeja do sistema e aparência nativa do Windows. O aplicativo suporta até 100 itens de tarefas. O código-fonte é de código aberto e inclui instruções de compilação.

Desenvolvimento Web sem Frameworks: Um Guia para o JavaScript Puro

2025-05-11

Este site oferece um guia completo sobre como construir sites e aplicativos web usando apenas um editor, um navegador e padrões web — sem ferramentas de construção ou frameworks. Ele mergulha no uso de Web Components como blocos de construção fundamentais, aproveitando as capacidades do CSS moderno e criando projetos web e aplicativos de página única sem ferramentas de construção, frameworks ou lógica do lado do servidor. Destinado a desenvolvedores já familiarizados com HTML, CSS e JavaScript, este tutorial defende uma abordagem mais simples e fácil de manter para o desenvolvimento web, abordando a complexidade e a sobrecarga de manutenção frequentemente associadas a frameworks modernos.

Desenvolvimento JavaScript puro CSS moderno

Visualizando a Prova Matemática: Insights do Lean Blueprints

2025-05-11

Lean Blueprints, uma ferramenta de planejamento de projetos inspirada no método de blueprint dos matemáticos para formalizar provas, oferece insights únicos sobre o processo de prova. Ele usa um gráfico onde os nós representam definições, lemas e teoremas, com cores indicando seu status (verde: provado, azul: declarado mas não provado, preto: não escrito). Ao rastrear o controle de versão de projetos Lean (por exemplo, a formalização de Terrence Tao da conjectura PFR), podemos visualizar a evolução das provas, revelando como os matemáticos trabalham e fornecendo dados para a construção de ferramentas para auxiliá-los. Essa visualização oferece insights previamente ocultos sobre como as provas matemáticas são construídas.

Desenvolvimento Prova Formal

Desenvolvendo aplicativos iOS em dispositivos não Apple: um campo minado legal

2025-05-11
Desenvolvendo aplicativos iOS em dispositivos não Apple: um campo minado legal

A possibilidade de construir aplicativos iOS em dispositivos não Apple sempre foi debatida. Este post destaca que o principal desafio é legal e de licenciamento, não técnico. O Contrato de Licença do Programa de Desenvolvedores da Apple proíbe explicitamente a instalação, uso ou execução de SDKs iOS ou outros softwares da Apple em dispositivos não Apple. Embora o caso Oracle v. Google tenha alterado o cenário de direitos autorais em relação à engenharia reversa para compatibilidade, o autor argumenta que implantar aplicativos construídos em dispositivos não Apple diretamente na App Store acarreta riscos legais significativos, com a Apple mantendo o direito de rescindir as contas de desenvolvedores infratores.

Melhoria do tempo de inicialização do Java com o cache AOT

2025-05-11

Esta melhoria reduz significativamente o tempo de aquecimento de aplicativos Java coletando perfis de execução de métodos durante execuções de treinamento do aplicativo e armazenando-os no cache AOT. Na inicialização na produção, o compilador JIT pode usar imediatamente esses perfis para gerar código nativo, eliminando a espera pela coleta de perfis e resultando em inicialização e desempenho de pico mais rápidos. Essa técnica não requer alterações de código e é compatível com os comandos de criação de cache AOT existentes. Experimentos mostram uma redução de 19% no tempo de aquecimento para um programa de exemplo simples.

Desenvolvimento Cache AOT

GlassFlow: ETL em tempo real para ClickHouse

2025-05-11
GlassFlow: ETL em tempo real para ClickHouse

O GlassFlow é um processador de stream em tempo real projetado para engenheiros de dados, simplificando a criação e a gestão de pipelines de dados entre o Kafka e o ClickHouse. Ele possui uma interface amigável para construir e gerenciar pipelines de dados em tempo real, com desduplicação e junções temporais integradas. Lidando com eventos atrasados e garantindo processamento exatamente-uma-vez, o GlassFlow escala para lidar com dados de alta taxa de transferência, entregando resultados precisos e de baixa latência sem sacrificar a simplicidade ou o desempenho. A interface web intuitiva simplifica a configuração e o monitoramento do pipeline, enquanto sua arquitetura robusta garante o processamento confiável de dados. Ele suporta desenvolvimento local e implantação do Docker e inclui uma configuração de demonstração abrangente para integração rápida.

Desenvolvimento processamento em tempo real

Revisão da Qualidade da Documentação do Ecossistema Rust: Acertos e Erros

2025-05-11
Revisão da Qualidade da Documentação do Ecossistema Rust: Acertos e Erros

Este artigo fornece uma avaliação aprofundada da qualidade da documentação em vários crates populares do ecossistema Rust. Ele abrange várias áreas, incluindo geração de números aleatórios, tratamento de tempo, frameworks web, engines de jogos e tratamento de erros. O autor avalia a documentação de cada crate com base em quatro quadrantes (explicações, guias práticos, tutoriais, referência) e destaca exemplos excelentes (como a documentação abrangente e a justificativa de design do `jiff`) e áreas de melhoria (documentação incompleta ou falta de orientação prática em alguns crates). Esta revisão oferece insights valiosos para desenvolvedores Rust e aponta direções para melhorar a documentação do ecossistema Rust.

Desenvolvimento

Roame Contrata: Engenheiro Full-Stack Sênior para Revolucionar Reservas de Viagens com IA

2025-05-11
Roame Contrata: Engenheiro Full-Stack Sênior para Revolucionar Reservas de Viagens com IA

A Roame, um motor de busca de voos que utiliza pontos e milhas de cartão de crédito, está procurando um Engenheiro Full-Stack Sênior. Apoiada por investidores de primeira linha, a Roame capacita milhões a maximizar o valor de seus pontos. O candidato ideal possui 4+ anos de experiência, domínio de Next.js, Firebase e Go, e um forte entendimento de pipelines de IA. A vaga, localizada em São Francisco, exige trabalho presencial. A Roame oferece salário competitivo, participação acionária, benefícios e uma cultura que enfatiza a colaboração e a iteração rápida.

Desenvolvimento Reserva de Viagens

Solid Queue do Rails 8: Um mergulho profundo no novo processador de tarefas em segundo plano (Parte 1)

2025-05-11
Solid Queue do Rails 8: Um mergulho profundo no novo processador de tarefas em segundo plano (Parte 1)

O Rails 8 apresenta o Solid Queue, uma nova biblioteca para processamento de tarefas em segundo plano que elimina a necessidade de serviços externos como o Redis. Este artigo mergulha na arquitetura do Solid Queue, explicando a interação entre Jobs e Workers e como as tabelas do banco de dados (solid_queue_jobs, solid_queue_ready_executions, solid_queue_claimed_executions, solid_queue_processes) gerenciam o enfileiramento, a execução e o monitoramento de tarefas. O Solid Queue alcança alto desempenho e confiabilidade por meio de um design inteligente de banco de dados e o uso de instruções FOR UPDATE SKIP LOCKED, empregando um processo supervisor para evitar a perda de tarefas. O artigo também destaca as limitações do SQLite e os recursos de monitoramento de desempenho do AppSignal, prometendo um mergulho mais profundo na segunda parte.

Desenvolvimento Tarefas em segundo plano

arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

2025-05-11
arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

arXivLabs é uma estrutura que permite que colaboradores desenvolvam e compartilhem novos recursos do arXiv diretamente em nosso site. Indivíduos e organizações que trabalham com o arXivLabs adotaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade de dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento

Lazarus IDE 4.0 Lançado!

2025-05-11

A equipe Lazarus tem o prazer de anunciar o lançamento do Lazarus 4.0! Construído com o FPC 3.2.2, este lançamento inclui inúmeras melhorias e correções de bugs. Downloads estão disponíveis no SourceForge (e espelhos) para Windows, Linux e macOS. Os requisitos mínimos do sistema foram atualizados; consulte o site oficial para obter detalhes. O código-fonte também está disponível no Gitlab para contribuições da comunidade.

Desenvolvimento

Executando NetBSD em um antigo i486SX: Um emulador de FPU suave nasceu

2025-05-11
Executando NetBSD em um antigo i486SX: Um emulador de FPU suave nasceu

Um desenvolvedor simulou com sucesso uma unidade de ponto flutuante (FPU) ausente em um antigo laptop i486SX. Após meses de trabalho, ele implementou com sucesso um emulador de FPU suave no NetBSD 10 e tornou o projeto de código aberto. Este projeto não apenas traz máquinas antigas i486SX de volta à vida, mas também oferece novas possibilidades para entusiastas de retrocomputação. Ele foi testado com sucesso na máquina virtual 86Box.

Desenvolvimento

Desenvolvimento de um driver ASUS ACPI WMI para controle de ventoinha em OpenBSD

2025-05-11

O autor descreve sua jornada na criação de um driver ASUS ACPI WMI para OpenBSD, com o objetivo de controlar a velocidade da ventoinha do seu laptop. O processo envolveu superar desafios com a ordem de bytes ACPI e WMI, utilizando acpidump e iasl para analisar o código ACPI do sistema e, finalmente, alcançar o controle da velocidade da ventoinha. O autor compara as abordagens de desenvolvimento de drivers no Linux e FreeBSD, destacando a organização conveniente do código do OpenBSD.

Desenvolvimento Desenvolvimento de Drivers

Engenheiro do Google de longa data deixa a empresa após 19 anos, refletindo sobre a evolução do Go

2025-05-11

Um engenheiro sênior que passou 19 anos no Google, fortemente envolvido no desenvolvimento da linguagem de programação Go, deixou a empresa. O artigo reflete sobre sua jornada de 14 anos com Go, desde a contribuição para o front-end do compilador até a modelagem de recursos da linguagem, como genéricos, e a influência na direção geral do projeto. O autor acredita que Go ainda tem um espaço significativo para crescimento e espera contribuir para seu desenvolvimento futuro.

Desenvolvimento

Hashing Adaptativo no SBCL: Tornando as Tabelas Hash Mais Rápidas e Robus

2025-05-11

Uma palestra no ELS de 2024 focou em hashing adaptativo, com o objetivo de tornar as tabelas hash de uso geral mais rápidas e robustas. A teoria tradicional de tabelas hash se preocupa principalmente com custos assintóticos de pior caso, negligenciando o impacto de fatores constantes no desempenho do mundo real. Esta pesquisa introduz uma abordagem adaptativa online, ajustando a função hash com base na distribuição real da chave para reduzir colisões e melhorar a utilização do cache. Experimentos demonstram melhorias significativas na redução de comparações esperadas e na aceleração das operações PUT, particularmente com distribuições de chaves específicas. As tabelas hash internas do SBCL agora empregam essa técnica, alternando dinamicamente funções hash (incluindo pesquisa linear, hash de deslocamento de bits e MurmurHash) com base em contagens de colisões e tamanho da tabela hash. Para chaves compostas como strings e listas, uma estratégia de truncamento é usada, ajustando dinamicamente o comprimento de truncamento quando ocorrem muitas colisões. Essa melhoria aprimora a velocidade da tabela hash do SBCL em casos comuns e a robustez em outros.

Desenvolvimento hashing adaptativo

A Ascensão e Queda (e Ascensão?) do Visual Basic

2025-05-11
A Ascensão e Queda (e Ascensão?) do Visual Basic

Em 1988, Alan Cooper mostrou a Bill Gates o Tripod, um kit de construção de shell inovador para o Windows. Sua interface intuitiva de arrastar e soltar permitiu que os usuários criassem shells personalizados sem profundo conhecimento do sistema operacional. Isso evoluiu para o Visual Basic, uma linguagem de programação visual revolucionária que capacitou inúmeros desenvolvedores, especialmente aqueles que estavam fazendo a transição de mainframes. A facilidade de uso do VB democratizou a programação, tornando-a acessível a milhões. No entanto, a mudança do Microsoft para o .NET e o VB.NET, embora adicionasse recursos, sacrificou a simplicidade que tornou o VB tão popular, levando muitos desenvolvedores a abandoná-lo. Esta história destaca a tensão entre inovação e decisões comerciais e o impacto duradouro de uma ferramenta aparentemente simples.

Desenvolvimento

Desastre de Desempenho do OpenSSL 3.0 e o Futuro do Ecossistema de Bibliotecas SSL

2025-05-11
Desastre de Desempenho do OpenSSL 3.0 e o Futuro do Ecossistema de Bibliotecas SSL

A equipe HAProxy aprofunda-se no desastre de desempenho causado pelo OpenSSL 3.0 e seu impacto no ecossistema de bibliotecas SSL. O lançamento do OpenSSL 3.0 resultou em uma degradação significativa do desempenho em ambientes multithread, apresentando desafios para muitos projetos que dependem do OpenSSL. O artigo compara soluções alternativas como BoringSSL, LibreSSL, WolfSSL e AWS-LC, analisando suas compensações em funcionalidade, desempenho e manutenção. Os testes de desempenho revelam que o OpenSSL 3.0 tem um desempenho significativamente inferior em comparação com outras bibliotecas em cenários multithread, forçando as organizações a provisionar mais hardware para manter a taxa de transferência. O artigo também explora o protocolo QUIC e sua relação com as bibliotecas SSL, juntamente com o tratamento da API QUIC pela equipe OpenSSL. Por fim, o artigo recomenda que os usuários do HAProxy escolham bibliotecas SSL adequadas com base em suas necessidades, como AWS-LC ou WolfSSL, e pede que a comunidade trabalhe em conjunto para resolver os problemas de desempenho do OpenSSL 3.0.

Desenvolvimento Bibliotecas SSL

Origens mal compreendidas da OOP: corrigindo o registro

2025-05-10

Este artigo desmascara o equívoco comum de que Alan Kay inventou tanto a programação orientada a objetos (OOP) quanto o conceito de objetos. Na realidade, a linguagem Simula foi um precursor significativo da OOP, fato reconhecido pela equipe do Smalltalk. Embora Kay tenha cunhado o termo "objetos", ele mais tarde se arrependeu, enfatizando a passagem de mensagens como a ideia central da OOP. O artigo explora ainda mais as contribuições únicas do Smalltalk para a OOP, particularmente seu princípio de design de tratar tudo como um objeto e seu mecanismo inovador de tratamento de mensagens. O autor argumenta que a evolução da OOP não foi um evento singular, mas uma confluência de ideias e necessidades, com diferentes desenvolvedores entendendo e aplicando a OOP de maneiras diferentes em vários contextos.

Desenvolvimento

LoopMix128: PRNG rápido e robusto com período de 2^128

2025-05-10
LoopMix128: PRNG rápido e robusto com período de 2^128

LoopMix128 é um gerador de números pseudo-aleatórios (PRNG) extremamente rápido com um período garantido de 2^128, injetividade comprovada e aprovações limpas em BigCrush e PractRand (32 TB). Projetado para aplicações não criptográficas onde velocidade e qualidade estatística são importantes, ele supera significativamente os geradores de bibliotecas padrão e compete ou supera outros PRNGs modernos de alta velocidade como wyrand e xoroshiro128++. Sua performance é respaldada por testes rigorosos, passando nos testes BigCrush e PractRand sem anomalias, e ostentando um estado injetor comprovado de 192 bits permitindo streams paralelos.

Desenhando o Triângulo de Sierpinski com Operações Bit a Bit: Um Hack Incrível de Manipulação de Bits

2025-05-10
Desenhando o Triângulo de Sierpinski com Operações Bit a Bit: Um Hack Incrível de Manipulação de Bits

Este artigo revela um truque impressionante de manipulação de bits: gerar o famoso fractal do triângulo de Sierpinski usando apenas uma simples operação bit a bit E (&). O autor detalhadamente decompõe a operação bit a bit, revelando os princípios matemáticos subjacentes. Mostra como a natureza fractal inerente da contagem binária e a remoção iterativa de blocos, alcançada através da manipulação de bits, gera o triângulo de Sierpinski clássico. Esta técnica utiliza de forma inteligente as capacidades de operação binária dos computadores, simplificando o processo aparentemente complexo de geração de gráficos em código conciso, resultando numa solução surpreendentemente elegante.

Desenvolvimento

arXivLabs: Experimentos com Colaboração da Comunidade em Novos Recursos

2025-05-10
arXivLabs: Experimentos com Colaboração da Comunidade em Novos Recursos

arXivLabs é uma estrutura que permite a colaboradores desenvolverem e compartilharem novos recursos do arXiv diretamente no nosso site. Indivíduos e organizações que trabalham com o arXivLabs adotaram e aceitaram nossos valores de abertura, comunidade, excelência e privacidade dos dados do usuário. O arXiv está comprometido com esses valores e trabalha apenas com parceiros que os respeitam. Tem uma ideia para um projeto que agregará valor à comunidade do arXiv? Saiba mais sobre o arXivLabs.

Desenvolvimento
1 2 91 92 93 95 97 98 99 214 215