Category: Desenvolvimento

Não crie sua própria criptografia: por que os desenvolvedores continuam falhando na criptografia

2025-02-01
Não crie sua própria criptografia: por que os desenvolvedores continuam falhando na criptografia

Desenvolvedores frequentemente acreditam erroneamente que o uso de bibliotecas de criptografia de baixo nível evita os riscos de 'criar sua própria criptografia'. Este artigo argumenta que muitos desenvolvedores não entendem a criptografia, e mesmo o uso de bibliotecas existentes não garante segurança se erros forem cometidos no design do protocolo ou no gerenciamento de chaves. O autor apresenta exemplos do mundo real e destaca a importância de um gerenciamento de chaves robusto e a necessidade de os desenvolvedores entenderem profundamente e terem revisão especializada de suas implementações criptográficas.

Desenvolvimento

Fuja das Gigantes: Abraçando a Liberdade e os Desafios do Linux

2025-02-01

Este artigo mergulha nas razões para mudar de sistemas operacionais proprietários para o Linux. O Linux, baseado em princípios de código aberto, dá aos usuários controle completo sobre seu ambiente de computação e oferece uma grande quantidade de aplicativos gratuitos. Embora o Linux possa apresentar desafios, como uma curva de aprendizado íngreme e problemas de compatibilidade, seu forte suporte comunitário, alta personalização e proteção da privacidade do usuário o tornam uma opção muito atraente. O artigo também apresenta distribuições do Linux amigáveis ​​para iniciantes (como Ubuntu, Linux Mint e Fedora) e algumas alternativas de software de código aberto comumente usadas.

Desenvolvimento

Terminal Linux do Android 16 agora executa aplicativos gráficos Linux

2025-02-01
Terminal Linux do Android 16 agora executa aplicativos gráficos Linux

A ambição do Google de transformar o Android em um sistema operacional de PC completo está dando um grande passo. O aplicativo Terminal Linux na próxima versão beta do Android 16 agora possui a capacidade de executar aplicativos gráficos Linux, incluindo Doom. Essa façanha impressionante se deve a melhorias na aceleração de hardware e suporte ao servidor de exibição. Embora ainda não esteja disponível na versão beta mais recente, essa funcionalidade, que utiliza o Android Virtualization Framework (AVF), prepara o caminho para executar programas de desktop mais complexos no Android, potencialmente fechando a lacuna entre o Android e o Chrome OS.

Por que o Tracebit escolheu C#? A história da pilha de tecnologia de uma startup de segurança

2025-02-01
Por que o Tracebit escolheu C#? A história da pilha de tecnologia de uma startup de segurança

O Tracebit, um produto de segurança SaaS B2B, surpreendentemente escolheu C# em vez de alternativas populares como Python ou Go. O autor detalha o raciocínio por trás dessa decisão, considerando fatores como produtividade, disponibilidade de código aberto, recursos multiplataforma, popularidade, segurança de memória, coleta de lixo, tipagem estática, estabilidade, bibliotecas integradas e ferramentas. Os pontos fortes do C# em produtividade, estabilidade e um ecossistema rico se mostraram cruciais para a rápida iteração e crescimento do Tracebit, especialmente no gerenciamento de uma grande base de código e na colaboração eficaz dentro de uma equipe.

Servidor Mirascope MCP: Integrando LLMs com Serviços Locais de Forma Segura

2025-02-01
Servidor Mirascope MCP: Integrando LLMs com Serviços Locais de Forma Segura

O servidor MCP (Protocolo de Contexto de Modelo) do Mirascope permite expor recursos, ferramentas e prompts a clientes LLM por meio de um protocolo padronizado. Este artigo demonstra a construção de um servidor simples de recomendação de livros usando MCP, mostrando como registrar ferramentas, recursos e prompts. Ele detalha dois estilos de definição: decorador e função-primeiro. O servidor MCP suporta vários recursos, incluindo funções síncronas e assíncronas, opções de configuração flexíveis e compatibilidade com ferramentas e prompts Mirascope padrão, permitindo a integração segura e confiável entre clientes LLM e serviços locais.

Desenvolvimento

Mentiras que Programadores Acreditam Sobre Ponteiros Nulos

2025-02-01
Mentiras que Programadores Acreditam Sobre Ponteiros Nulos

Este artigo desmascara equívocos comuns sobre ponteiros nulos. Explora falácias que vão do simples (a dereferência de um ponteiro nulo nem sempre causa um crash imediato do programa) ao bizarro (o endereço de um ponteiro nulo nem sempre é 0). O autor argumenta contra a dependência em otimizações do compilador ou especificidades de hardware, destacando os perigos de assumir comportamentos consistentes entre plataformas. O artigo enfatiza que C deve ser tratado como uma linguagem de alto nível, não apenas como "assembly portátil", e encoraja o uso de recursos de segurança de memória de linguagens modernas para código mais robusto e portátil.

Desenvolvimento ponteiro nulo

Ferramenta de Coleta de Dados Open Source RudderStack Coleta Senhas

2025-02-01
Ferramenta de Coleta de Dados Open Source RudderStack Coleta Senhas

A ferramenta de coleta de dados de código aberto RudderStack foi descoberta com uma grave vulnerabilidade de segurança que, em determinadas circunstâncias, coleta senhas de usuários. A vulnerabilidade decorre de seu recurso autotrack, que coleta todos os atributos DOM dos elementos em que um usuário clica. Esses atributos podem conter informações sensíveis, como senhas. Isso reflete uma vulnerabilidade semelhante encontrada no Mixpanel há dois anos. Embora a RudderStack tenha corrigido parcialmente o problema, a correção está incompleta e riscos potenciais permanecem. Os usuários são aconselhados a proceder com cautela e monitorar as atualizações.

Desenvolvimento coleta de dados

Sparrow: Implementação C++ Leve do Apache Arrow

2025-02-01
Sparrow: Implementação C++ Leve do Apache Arrow

Sparrow é uma nova biblioteca C++ projetada para simplificar a integração do formato colunar do Apache Arrow. Criada para atender às necessidades de projetos como o ArcticDB, ela fornece uma API C++ leve e moderna, focada na leitura e escrita de dados Arrow. Aproveitando iteradores, intervalos e conceitos da biblioteca padrão C++, o Sparrow oferece uma interface limpa e fácil de usar, facilitando a integração com projetos C++ existentes. Ele suporta vários tipos de dados, incluindo tratamento de valores nulos, e fornece construtores para simplificar a criação de estruturas de dados complexas.

Desenvolvimento Armazenamento Colunar

Temporizadores Watchdog: Um Mal Necessário (ou Bem Essencial)?

2025-01-31

Este artigo explora o papel crítico dos temporizadores watchdog em sistemas embarcados. Usando a falha da missão espacial Clementine devido a um watchdog mal implementado e a necessidade de reinicializar um exaustor de cozinha como exemplos, o autor destaca a importância de temporizadores watchdog confiáveis na prevenção de falhas de software. O artigo detalha vários projetos de temporizadores watchdog, incluindo opções internas e externas, e oferece estratégias para construir temporizadores watchdog altamente confiáveis. Isso inclui o uso de watchdogs com janela, watchdogs externos independentes da CPU e o monitoramento do estado de todas as tarefas em um sistema multitarefa. O autor defende a inclusão de temporizadores watchdog até mesmo em sistemas aparentemente simples, defendendo técnicas como redefinições periódicas de estruturas de dados para aumentar a confiabilidade.

Desenvolvimento temporizadores watchdog

Executando Linux em um PDF: Um emulador RISC-V no seu navegador

2025-01-31
Executando Linux em um PDF: Um emulador RISC-V no seu navegador

O desenvolvedor @ading2210 conseguiu o feito notável de executar um sistema Linux dentro de um arquivo PDF. Aproveitando o mecanismo Javascript dentro de PDFs e uma versão compilada em asm.js do emulador RISC-V TinyEMU, um ambiente Linux funcional é criado. A saída é exibida usando caracteres ASCII, e a entrada é gerenciada por meio de um teclado virtual. Embora os tempos de inicialização sejam lentos (30-60 segundos), o projeto mostra as capacidades surpreendentes do formato PDF. O código é de código aberto e suporta sistemas de 32 e 64 bits.

Desenvolvimento

Experimento de Programação Assíncrona: Integrando Lua com libuv e Módulos C

2025-01-31
Experimento de Programação Assíncrona: Integrando Lua com libuv e Módulos C

Este projeto explora a integração de módulos compilados em C com scripts Lua, utilizando a biblioteca libuv para operações assíncronas. O projeto inclui o interpretador Lua, a biblioteca libuv e módulos C personalizados, demonstrando como compilar e carregar módulos C em Lua, resultando em um servidor HTTP simples. A estrutura do projeto é clara, com instruções detalhadas de instalação e compilação, além de exemplos de código, tornando-o ideal para aprender sobre a integração de Lua e C e técnicas de programação assíncrona.

Desenvolvimento

O triunfo inesperado da amostragem por rejeição: um mergulho profundo nos testes de desempenho

2025-01-31

Ao otimizar seu ray tracer, PSRayTracing, o autor se aprofundou nos testes de desempenho para algoritmos que geram vetores aleatórios dentro de um círculo/esfera unitária. Inicialmente, ele acreditava que uma solução analítica seria mais eficiente do que a amostragem por rejeição. No entanto, benchmarks em Python e C++, em vários compiladores e plataformas de hardware, produziram resultados surpreendentes: com otimizações de compilador ativadas, a amostragem por rejeição frequentemente superou a abordagem analítica. O autor conclui que testes de desempenho práticos são cruciais ao otimizar o código, evitando a dependência de suposições teóricas, pois as estratégias de otimização do compilador e as variações de hardware afetam significativamente o desempenho final.

arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

2025-01-31
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 projetos experimentais

arXivLabs: Experimentos com Colaboração da Comunidade

2025-01-31
arXivLabs: Experimentos com Colaboração da Comunidade

arXivLabs é uma estrutura que permite a colaboradores desenvolverem e compartilharem novos recursos diretamente no site do arXiv. 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 plataforma aberta

A Classe Singleton do Ruby: Um mergulho profundo

2025-01-31

Este artigo mergulha na classe singleton do Ruby, um recurso crucial para sua semântica orientada a objetos, apesar de ter faltado um nome oficial por anos. Ele explica que uma classe singleton não é realmente um singleton ou uma classe, mas sim uma solução elegante para o problema de anexar métodos a uma classe específica em uma linguagem puramente orientada a objetos. O artigo compara as soluções em Python e Smalltalk, detalhando o mecanismo do Ruby para implementar métodos de classe usando classes singleton, incluindo três sintaxes para definir métodos de classe singleton. Finalmente, ele explora por que o Ruby escolheu essa abordagem, destacando a consistência e a importância das classes singleton dentro do sistema orientado a objetos do Ruby.

Desenvolvimento Classe Singleton

O Enigma do Desembrulho da Pilha no Perf

2025-01-31
O Enigma do Desembrulho da Pilha no Perf

Perf, uma poderosa ferramenta de análise de desempenho, usa interrupções de estouro de contador PMU para capturar estados de thread para perfilhamento. No entanto, o desembrulho da pilha apresenta um desafio. Compiladores modernos omitem ponteiros de quadro por padrão, tornando o rastreamento de pilha difícil. Embora seja possível recompilar com -fno-omit-frame-pointer, é caro e pode levar a incompatibilidades de bibliotecas do sistema. DWARF oferece uma alternativa, mas sua complexidade e sobrecarga de desempenho são substanciais, levando Linus Torvalds a rejeitar seu uso no desembrulho de pilha do kernel. Portanto, o Perf emprega um compromisso: copiar apenas a parte superior da pilha para o espaço do usuário para desembrulho. Isso limita o tamanho da pilha (65.528 bytes), mas equilibra efetivamente o desempenho e a praticidade.

Biblioteca de Scripting em Go: script — Simplificando Tarefas de Administração de Sistemas

2025-01-31
Biblioteca de Scripting em Go: script — Simplificando Tarefas de Administração de Sistemas

A biblioteca `script` para Go oferece recursos semelhantes a scripts shell para administradores de sistemas, incluindo leitura de arquivos, execução de subprocessos, contagem de linhas, correspondência de strings e muito mais. Ela processa fluxos de dados usando uma abordagem de pipeline com uma API limpa, tornando a programação em Go tão eficiente e conveniente quanto scripts shell. `script` suporta uma ampla gama de operações, desde E/S de arquivos e solicitações HTTP até execução de comandos externos e filtros personalizados, simplificando significativamente as tarefas de administração de sistemas. Por exemplo, ela replica facilmente a funcionalidade do `grep` e suporta execução concorrente para melhor desempenho.

Desenvolvimento

uscope: Um depurador gráfico de código nativo para Linux

2025-01-31
uscope: Um depurador gráfico de código nativo para Linux

uscope é uma ferramenta de depuração gráfica de código nativo e cadeia de ferramentas de introspecção para Linux, atualmente em desenvolvimento inicial. O autor planeja adicionar recursos como suporte para várias linguagens de programação (C, Zig, C++, Go, Rust, Odin, Jai, etc.), depuração de programas multithread, navegação de código, depuração remota e muito mais. O projeto visa construir um sistema de depuração flexível e extensível com uma interface amigável para o usuário. O autor também planeja construí-lo como uma biblioteca para que outros desenvolvedores possam construir ferramentas mais interessantes com base nele.

Desenvolvimento código nativo

VoidDB supera LMDB, BoltDB, LevelDB e BadgerDB em benchmarks

2025-01-31
VoidDB supera LMDB, BoltDB, LevelDB e BadgerDB em benchmarks

Benchmarks recentes revelam o desempenho superior do VoidDB em comparação com bancos de dados incorporados líderes, como LMDB, BoltDB, LevelDB e BadgerDB. O VoidDB supera significativamente a concorrência nas operações Put, Get e GetNext. Especificamente, a operação Put do VoidDB é quase quatro vezes mais rápida que a do BoltDB e quase três vezes mais rápida que a do LevelDB. Isso destaca o desempenho convincente do VoidDB em cenários de alta taxa de transferência, oferecendo aos desenvolvedores uma opção de banco de dados altamente eficiente e confiável.

Desenvolvimento banco de dados incorporado

MillenniumDB: Um novo sistema de gerenciamento de banco de dados orientado a grafos

2025-01-31
MillenniumDB: Um novo sistema de gerenciamento de banco de dados orientado a grafos

MillenniumDB é um sistema de gerenciamento de banco de dados orientado a grafos desenvolvido pelo Millennium Institute for Foundational Research on Data (IMFD). Ele suporta vários modelos de grafos, oferecendo suporte bastante completo para RDF/SPARQL e uma linguagem de consulta de grafo de propriedades personalizada. Embora ainda esteja em desenvolvimento ativo e não esteja pronto para produção, ele fornece funcionalidade substancial e planeja adicionar suporte a GQL em breve. São fornecidas instruções detalhadas de instalação, configuração e uso, incluindo implantação do Docker.

Linux 6.14: Atualizações de Virtualização KVM

2025-01-31

O próximo kernel Linux 6.14 inclui diversas melhorias no subsistema de Máquina Virtual baseada em Kernel (KVM). As atualizações incluem: remoção de limpezas de TLB redundantes em CPUs AMD; reformulação da infraestrutura de recursos KVM x86 CPUID para melhor rastreamento de capacidades de vCPU; trabalho contínuo no suporte a máquinas virtuais Intel Trust Domain Extensions (TDX); aprimoramento do tratamento de VM-exit para melhor paridade entre VMX e SVM; e suporte adicionado para as extensões Zabha, Svvptc e Ziccrse para convidados RISC-V KVM. Essas mudanças prometem melhor desempenho e estabilidade para máquinas virtuais.

Desenvolvimento

Construindo Malhas com Incorporação Esférica: Uma Nova Abordagem de Reconstrução de Superfície

2025-01-31

Este artigo explora uma nova abordagem para reconstrução de superfície 3D: incorporação esférica. Este método projeta uma nuvem de pontos em uma esfera e, em seguida, usa o casco convexo para construir uma malha, abordando os problemas de buracos que os métodos tradicionais podem encontrar ao lidar com formas complexas e dados ausentes. Embora este método mostre algumas vantagens ao processar o modelo Stanford Bunny, especialmente em garantir a integridade da malha, ainda há espaço para melhorias em eficiência e precisão. Em comparação com métodos tradicionais, como a reconstrução de superfície de Poisson, ele requer mais iterações e ajuste de parâmetros para atingir resultados ideais. O artigo detalha o processo de implementação do algoritmo e demonstra o desempenho do algoritmo sob diferentes parâmetros com exemplos de código.

FOSDEM 2025: Vislumbrando a trilha de dispositivos móveis de código aberto

2025-01-31
FOSDEM 2025: Vislumbrando a trilha de dispositivos móveis de código aberto

O FOSDEM, um evento gratuito para desenvolvedores de software em Bruxelas, Bélgica (1º e 2º de fevereiro de 2025), terá uma trilha dedicada a 'FOSS em dispositivos móveis'. Esta sessão de meio dia (1º de fevereiro, 14h55 - 19h00) sediará várias palestras sobre desenvolvimento móvel de código aberto. Além das palestras, vários estandes de projetos oferecem oportunidades para networking e colaboração. Um encontro casual está programado para domingo, 2 de fevereiro, às 14h. Não perca a chance de se conectar com outros desenvolvedores e pegar alguns adesivos!

Desenvolvimento Desenvolvimento Mobile

Restrições de Aplicação de Sugestões de Código GitHub: Problemas que Você Pode Encontrar

2025-01-31
Restrições de Aplicação de Sugestões de Código GitHub: Problemas que Você Pode Encontrar

Este trecho da documentação do GitHub lista várias restrições encontradas ao aplicar sugestões de código, como nenhuma alteração de código, pull requests fechados, visualização de um subconjunto de alterações, aplicação de apenas uma sugestão por linha, aplicação em linhas excluídas, sugestões inválidas e outras restrições temporárias. Essas limitações visam manter a integridade e a consistência da base de código e garantir a aplicação eficaz das sugestões.

ldump: Serializador Lua para Estruturas de Dados Complexas

2025-01-31
ldump: Serializador Lua para Estruturas de Dados Complexas

ldump é um serializador Lua robusto capaz de lidar com estruturas de dados complexas, incluindo referências circulares, funções (mesmo com upvalues), metatabelas, corrotinas e dados do usuário. Ele serializa dados em código Lua executável, desserializado via `load(data)()`. O ldump prioriza funcionalidade e flexibilidade em vez de velocidade e tamanho, tornando-o ideal para cenários que exigem o salvamento de estados de jogos complexos. Embora a saída seja grande, algoritmos de compressão modernos podem reduzir significativamente seu tamanho. Ele suporta Lua 5.1 a 5.4 e LuaJIT, e foi extensivamente testado para casos de borda.

Desenvolvimento

O Pesadelo Não-Determinístico dos Testes de UI do React

2025-01-31

Testar UIs do React apresenta um desafio único devido ao seu mecanismo de atualização assíncrona. Diferentemente da manipulação direta do DOM, o mecanismo de renderização do React atualiza a UI de forma assíncrona, tornando difícil para os testes capturar precisamente o tempo das atualizações do estado da UI. Utilitários de teste como `act` e `waitFor` oferecem soluções alternativas, mas basicamente se resumem a 'eventualmente, algo acontecerá'. Pequenas mudanças na UI (como atrasos de animação, ordem de atualização de estado) podem facilmente quebrar os testes, exigindo modificações extensas em conjuntos de testes existentes. Isso resulta em altos custos de manutenção para testes de UI do React, um ponto problemático comum para muitas equipes de desenvolvimento.

Ghostty 1.1.0 Lançado: Correções Críticas de Bugs e Melhorias na Qualidade de Vida

2025-01-31
Ghostty 1.1.0 Lançado: Correções Críticas de Bugs e Melhorias na Qualidade de Vida

O Ghostty 1.1.0, um mês em desenvolvimento, incorpora contribuições de 84 desenvolvedores em 564 commits. Esta versão se concentra em correções críticas de bugs e melhorias na qualidade de vida com base no feedback da versão 1.0 inicial. As principais melhorias incluem: correção de vazamentos de descritores de arquivos; adição de decorações do lado do servidor (SSD) para Linux, para uma aparência mais nativa em diferentes ambientes de desktop; melhoria significativa na confiabilidade e consistência do IME; um novo prefixo de keybind `performable:` ; melhorias no alpha blending do macOS para cores mais precisas; e aprimoramentos significativos no terminal rápido, com suporte a janelas de tela cheia nativas. Versões futuras removerão a opção `gtk-adwaita` e imporão uma dependência `libadwaita` para melhor estabilidade e manutenibilidade.

Desenvolvimento lançamento de software

O Design do Go: Uma Troca Deliberada

2025-01-31

Este artigo mergulha na filosofia de design da linguagem de programação Go, explorando seus pontos fortes e fracos. Nascido no Google, o Go tinha como objetivo simplificar a escrita e a manutenção de códigos de servidores concorrentes em larga escala. O autor analisa os recursos do Go - sua API de sistema de arquivos simplificada, falta de sobrecarga de operadores, tratamento de erros explícito e interoperabilidade com outras linguagens - para explicar as compensações por trás de suas escolhas de design. Embora criticado por aspectos como sua antiga falta de genéricos e suporte inferior ao Windows, o autor argumenta que essas são compensações conscientes feitas para alcançar seus objetivos de design primários, tornando o Go, em última análise, uma linguagem eficiente e fácil de usar para projetos de engenharia de grande porte.

Hydro: Uma estrutura de programação distribuída de alto desempenho em Rust

2025-01-31
Hydro: Uma estrutura de programação distribuída de alto desempenho em Rust

Hydro é uma estrutura de programação distribuída de alto nível para Rust, permitindo a criação de serviços distribuídos escaláveis e corretos por construção. Ao contrário das arquiteturas tradicionais de ator ou RPC, o Hydro emprega APIs coreográficas e um tempo de execução DFIR de thread único de alto desempenho. Ele simplifica a implantação por meio do Hydro Deploy, suportando ambientes locais e em nuvem. Usando um processo de compilação em duas etapas, ele gera planos de implantação localmente e, em seguida, compila para binários DFIR para cada máquina, implantando-os na nuvem com base no plano e nas especificações de recursos em nuvem. O Hydro foi usado para construir vários sistemas distribuídos de alto desempenho, incluindo implementações de protocolos clássicos como commit em duas fases e Paxos.

sixos: Um sistema operacional baseado em Nixpkgs que substitui o systemd pelo s6

2025-01-31
sixos: Um sistema operacional baseado em Nixpkgs que substitui o systemd pelo s6

Adam Joseph anunciou o lançamento do sixos, um novo sistema operacional construído com o Nixpkgs e usando o s6 em vez do systemd. Rejeitando o design monolítico do systemd, o sixos emprega o combinador infuse mais simples para gerenciamento de serviços, espelhando o tratamento de pacotes do Nixpkgs. Ele também integra o ownerboot para controle de versão completo e gerenciamento seguro do firmware, eliminando a distinção artificial entre firmware e software. Atualmente rodando em estações de trabalho, servidores, roteadores e muito mais, o sixos oferece uma alternativa leve e segura.

Desenvolvimento
1 2 162 163 164 166 168 169 170 204 205