Category: Desenvolvimento

Quebrando as proteções anti-depuração de um aplicativo iOS Widget

2025-02-17
Quebrando as proteções anti-depuração de um aplicativo iOS Widget

Esta postagem detalha a experiência do autor ao quebrar as proteções anti-depuração de um aplicativo iOS Widget. O aplicativo empregou vários métodos de proteção, incluindo o bloqueio da conexão do depurador, saída antecipada na injeção de código e travamento do telefone inteiro quando executado em um dispositivo com jailbreak. O autor analisou sistematicamente essas proteções, focando no uso da solicitação `PT_DENY_ATTACH` da função `ptrace` para evitar a conexão do depurador. O autor explica como contornar `ptrace` e evitar a travada do telefone, obtendo sucesso na conexão do depurador e injeção de código.

Moderadores do Reddit lutam contra spam de IA generativa: uma guerra que consome tempo

2025-02-17
Moderadores do Reddit lutam contra spam de IA generativa: uma guerra que consome tempo

Moderadores do Reddit estão enfrentando um aumento de spam gerado por IA generativa, cheio de postagens irrelevantes e ataques a usuários. Embora alguns moderadores reconheçam o potencial da IA para conteúdo novo, muitos acham a saída de baixa qualidade e a dificuldade em distinguir conteúdo gerado por IA de conteúdo gerado por humanos esmagadora. O maior problema, no entanto, não é o conteúdo em si, mas o investimento significativo de tempo necessário para moderação. Essa perda de tempo, gasta identificando postagens geradas por IA, respondendo a evangelistas da IA e lidando com recursos, desvia recursos de outras atividades de construção de comunidade. Os moderadores descrevem lutar contra entusiastas da IA como uma luta constante.

Desenvolvimento Moderação do Reddit

Um Ano Depurando Travamentos de Suspensão/Reabilitação no Linux com GPUs AMD

2025-02-17

O autor encontrou um problema persistente em que seu sistema Linux, equipado com uma GPU AMD RX 570, travava ou apresentava falhas após tentar suspender, muitas vezes resultando em uma tela preta ao despertar. Após mais de um ano de depuração intensa, envolvendo análise de logs, ajustes de configuração do systemd, um shell de depuração e até mesmo engenharia reversa com Ghidra, a causa raiz foi identificada como um bug no driver amdgpu relacionado ao backup da VRAM em uso alto de memória. A solução, finalmente implementada, utiliza a API de notificador de gerenciamento de energia para fazer o backup preventivo da VRAM antes da suspensão, evitando erros de esgotamento de memória. Essa correção deve estar presente na versão estável do kernel Linux 6.14.

Desenvolvimento driver de GPU

Executando Rails no seu navegador: A magia do WebAssembly

2025-02-17
Executando Rails no seu navegador: A magia do WebAssembly

Imagine executar um blog Rails totalmente funcional no seu navegador — frontend e backend — sem servidores ou nuvens! O WebAssembly torna possível executar frameworks do lado do servidor localmente, confundindo os limites do desenvolvimento web clássico. Esta publicação mostra como empacotar um aplicativo Rails em um módulo WebAssembly e executá-lo no navegador, recriando a magia do famoso tutorial de "blog em 15 minutos" do Rails, mas desta vez, seu navegador é o tempo de execução. Isso não é apenas uma demonstração técnica; mostra as possibilidades ilimitadas do WebAssembly, incluindo aplicativos offline e desenvolvimento de aplicativos locais.

Desenvolvimento Aplicativos de Navegador

Projetos de código aberto podem vender fragmentos de SBOM

2025-02-17
Projetos de código aberto podem vender fragmentos de SBOM

A varredura de código-fonte para informações de licenciamento é um trabalho árduo e muitas vezes duplicado devido à falta de compartilhamento de recursos entre as empresas. Este artigo propõe uma solução: projetos de código aberto podem vender fragmentos de SBOM (componentes no CycloneDX ou pacotes no SPDX com detalhes precisos de licenciamento). Patrocinando o projeto no GitHub, as empresas obteriam acesso a informações de SBOM atualizadas continuamente, evitando trabalho redundante e garantindo a precisão das informações de licenciamento.

hk: Um Gerenciador de Hooks do Git em Rust com Desempenho Imbatível

2025-02-17

hk é um gerenciador de hooks de pré-commit do Git escrito em Rust, focado em desempenho e facilidade de uso. Ele resolve problemas encontrados em ferramentas existentes como `mise` e `pre-commit`, como executar tarefas apenas quando certos arquivos são alterados e a gestão trabalhosa de plugins. Usando o formato de configuração pkl e uma lógica avançada de execução paralela, o hk melhora significativamente a velocidade. Comparado ao `lefthook`, o hk é mais rápido e possui mais recursos integrados, eliminando a dependência de plugins do `pre-commit`. Atualmente em desenvolvimento, o hk visa alcançar a mesma facilidade de uso do `lefthook` e `pre-commit`, melhorando continuamente o desempenho e os recursos.

Desenvolvimento

Um Projeto Legado: Por que Lutar com o Passado Torna Você um Desenvolvedor Melhor

2025-02-17
Um Projeto Legado: Por que Lutar com o Passado Torna Você um Desenvolvedor Melhor

Este artigo detalha a experiência do autor trabalhando em um projeto legado construído com o sistema de construção Ant desatualizado e sem injeção de dependência moderna. Os desafios encontrados forçaram uma reavaliação das melhores práticas de desenvolvimento de software moderno — código limpo, testes automatizados, CI/CD e ágil — e forneceram uma compreensão mais profunda de sua lógica subjacente. Embora árduo, o término bem-sucedido do projeto ofereceu insights valiosos sobre a evolução das metodologias de desenvolvimento e a importância da colaboração em equipe e da propriedade ponta a ponta.

Hospedagem Unix Compartilhada x Nuvem: A Migração de um Blogueiro Veterano

2025-02-17

Após 15 anos com a Dreamhost, um blogueiro veterano migrou seu domínio oils.pub para a Mythic Beasts devido à instabilidade no suporte FastCGI da Dreamhost. A postagem explora as compensações entre a hospedagem Unix compartilhada e os serviços em nuvem. O autor argumenta que, embora os serviços em nuvem pareçam modernos, eles carecem de protocolos abertos e estabilidade a longo prazo; a hospedagem compartilhada, embora com opções limitadas, oferece melhor capacidade de programação e portabilidade com base no Unix, tornando-a mais adequada para scripts leves e manutenção de longo prazo. Vários provedores de hospedagem compartilhada são comparados, recomendando-se finalmente a Mythic Beasts e a OpalStack por seu forte suporte a Unix.

Desenvolvimento hospedagem compartilhada

Armadilhas de desempenho do armazenamento local de threads C++: 0 + 0 > 0?

2025-02-17
Armadilhas de desempenho do armazenamento local de threads C++: 0 + 0 > 0?

Este artigo mergulha nas implicações de desempenho do uso de variáveis thread_local em C++. Ao analisar o código de assembly, o autor revela discrepâncias significativas de desempenho em diferentes cenários, particularmente com variáveis thread_local com construtores e aquelas usadas em bibliotecas compartilhadas. Mesmo acessos simples podem sofrer desacelerações dramáticas devido a chamadas de construtores, carregamento dinâmico de bibliotecas compartilhadas e outros fatores. O artigo termina com diretrizes de otimização de desempenho e discute melhorias futuras, com o objetivo de ajudar os desenvolvedores a evitar armadilhas de desempenho thread_local.

Desenvolvimento

A Crise dos Mantenedores de Código Aberto: Esgotamento, Pressão e um Futuro Incerto

2025-02-17
A Crise dos Mantenedores de Código Aberto: Esgotamento, Pressão e um Futuro Incerto

A conferência State Of Open de 2025 destacou a situação difícil dos mantenedores de código aberto: voluntários dedicam inúmeras horas a projetos com pouco apoio, levando muitos a desistir ou a considerar desistir. A renúncia do líder do projeto Asahi Linux, Hector Martin, devido ao esgotamento e a usuários exigentes exemplifica essa crise. Os mantenedores enfrentam pressão dos usuários, pedidos intermináveis e mensagens negativas ocasionais. Mesmo com patrocínio corporativo mínimo, as demandas superam em muito o apoio. Pesquisas revelam que muitos mantenedores estão considerando desistir, e muitos projetos podem deixar de ser mantidos. O problema não é apenas financeiro; também requer mais contribuidores para compartilhar tarefas não relacionadas a código, como gerenciamento de comunidade e arrecadação de fundos. Mas a mudança precisa de um catalisador — talvez o colapso de um grande projeto finalmente convença as pessoas de que pagar aos mantenedores de código aberto é crucial.

O preenchimento automático do ChatGPT é um fracasso de UX/UI?

2025-02-17
O preenchimento automático do ChatGPT é um fracasso de UX/UI?

Este artigo questiona o design de UX/UI do recurso de preenchimento automático do ChatGPT. O autor argumenta que, embora o preenchimento automático seja útil nas barras de pesquisa devido a um espaço de resposta limitado e alta taxa de sucesso, ele é perturbador no bate-papo. O ChatGPT frequentemente falha em prever a entrada do usuário, interrompendo seu processo de pensamento e causando frustração. O autor compara o preenchimento automático do ChatGPT a um colega que constantemente interrompe conversas, questionando a usabilidade do design e expressando confusão sobre seu valor percebido.

Desenvolvimento

Modelando a Rede Social da Irmandade com SQL

2025-02-17

Este trecho de código demonstra um modelo de banco de dados relacional simples que descreve as amizades no universo de O Senhor dos Anéis de Tolkien. Usando instruções SQL `INSERT`, ele define arestas 'friend' conectando personagens como Frodo, Sam, Gandalf, Aragorn, Legolas, Gimli e Bilbo, ilustrando sua rede social. Isso fornece dados fundamentais para analisar os relacionamentos entre personagens e construir um gráfico social.

Banco de dados SQLite de 6,4 TB impulsiona a atualização do Searchcode.com

2025-02-17

O Searchcode.com, um mecanismo de busca de código-fonte, migrou seu banco de dados do MySQL para o SQLite, resultando em um enorme banco de dados SQLite de 6,4 TB — provavelmente uma das maiores instâncias públicas. Impulsionada pelo desejo de uma implantação de binário único e dependências reduzidas, a migração não foi sem desafios. Problemas como travamento do banco de dados e complexidades de compilação cruzada foram superados usando conexões duplas de banco de dados, uma versão SQLite Go pura e compactação em nível de sistema de arquivos (BTRFS com zstd). O resultado? Um Searchcode.com significativamente mais rápido e escalável com velocidade de pesquisa aprimorada e processos de back-end.

Umami: Uma alternativa ao Google Analytics focada em privacidade

2025-02-17
Umami: Uma alternativa ao Google Analytics focada em privacidade

Umami é uma alternativa simples, rápida e focada na privacidade ao Google Analytics. Suporta bancos de dados MariaDB, MySQL e PostgreSQL. A instalação é simples: clone o repositório GitHub, instale as dependências e configure a conexão com o banco de dados. Por padrão, ele é executado em http://localhost:3000. Imagens Docker estão disponíveis para facilitar a implantação. Instruções detalhadas de início rápido são fornecidas.

Desenvolvimento análise

WinterBreak: Novo Jailbreak para Kindle Lançado

2025-02-17

Um novo jailbreak para Kindle, o WinterBreak, foi lançado no dia de Ano Novo de 2025 por HackerDude. Baseado em Mesquito, esta ferramenta oferece um processo de jailbreak simples. Os usuários precisam extrair os arquivos do WinterBreak para seus Kindles, reiniciar e, em seguida, executá-lo através da Kindle Store. Etapas de solução de problemas são fornecidas para erros comuns, como "Erro inesperado" na Kindle Store, geralmente resolvidos por uma redefinição de fábrica e exclusão do cache. O projeto reconhece as contribuições significativas de seus testadores beta.

Desenvolvimento Jailbreak Kindle

Alocação de Registradores em Compiladores: Um Mergulho Profundo

2025-02-17
Alocação de Registradores em Compiladores: Um Mergulho Profundo

Este artigo fornece uma explicação clara das complexidades da alocação de registradores em compiladores. Começando com um exemplo simples de função, ele demonstra como as variáveis são mapeadas para registradores e como o espaço de pilha (spilling) é usado quando os registradores são insuficientes. O artigo detalha dois algoritmos, varredura linear e coloração de grafos, e explora desafios adicionais em arquiteturas do mundo real, como convenções de chamada e limitações do conjunto de instruções. Mesmo a alocação de registradores aparentemente simples é repleta de desafios de otimização e compensação, tornando-a um aspecto notavelmente desafiador da implementação do compilador.

Desenvolvimento alocação de registradores

A Espada de Dois Gumes das Ferramentas de Codificação de IA: Velocidade x Compreensão

2025-02-17
A Espada de Dois Gumes das Ferramentas de Codificação de IA: Velocidade x Compreensão

Uma nova geração de programadores depende de ferramentas de codificação de IA (como o Copilot) para aumentar a eficiência, mas ao custo de compreender a lógica subjacente do código. O autor contrasta isso com a abordagem de aprendizado profundo de programadores que anteriormente usavam o Stack Overflow, apontando que a conveniência das ferramentas de IA mascara uma falta de conhecimento fundamental, potencialmente levando os desenvolvedores a não terem a capacidade de resolver problemas complexos. O artigo sugere que os programadores devem manter uma mentalidade crítica ao usar ferramentas de IA, participar ativamente de discussões técnicas e tentar construir projetos do zero para aprofundar sua compreensão.

(nmn.gl)

Desenvolvedor de driver open-source veterano renuncia devido a preocupações com inclusão

2025-02-17

O desenvolvedor do driver Nouveau, Karol Herbst, renunciou ao cargo de mantenedor do driver de gráficos Linux NVIDIA de código aberto devido a desentendimentos com a comunidade upstream do kernel Linux sobre inclusão e respeito. Em sua renúncia, Herbst declarou sua crença de que a comunidade de código aberto deve operar com base em princípios de igualdade e respeito, expressando sua desaprovação de declarações feitas por outros mantenedores percebidas como excludentes. Ele citou a frase "somos a linha azul fina" como uma preocupação particular, destacando o dano que tais declarações causam. Embora os desenvolvedores da Red Hat, Lyude Paul e Danilo Krummrich, continuem com a manutenção do Nouveau, a Red Hat também está desenvolvendo a NOVA, um novo driver de kernel NVIDIA de código aberto baseado em Rust.

Desenvolvimento driver Nouveau

Instalador do Windows 95: A história surpreendentemente complexa de um pequeno SO

2025-02-17
Instalador do Windows 95: A história surpreendentemente complexa de um pequeno SO

Este artigo revela a complexidade oculta do programa de instalação do Windows 95. Para criar um instalador aparentemente simples, a equipe teve que construir um minissistema operacional do zero dentro do MS-DOS, incluindo bibliotecas gráficas, um gerenciador de janelas, suporte multilíngue e até mesmo compatibilidade com o Windows 3.1. Eles acabaram percebendo que era muito mais eficiente usar o tempo de execução do Windows 3.1 existente, evitando enormes esforços de desenvolvimento. A história destaca a importância da reutilização de código na engenharia de software e expõe a natureza surpreendentemente complexa do programa de instalação do Windows 95.

Desenvolvimento

oklch() no CSS Color 4: Uma Mudança de Jogo para Sistemas de Design

2025-02-17
oklch() no CSS Color 4: Uma Mudança de Jogo para Sistemas de Design

O Módulo de Cor CSS 4 introduz oklch(), uma nova notação de cor que define cores usando a luminosidade percebida (L), a croma (C) e a tonalidade (H), opcionalmente com alfa (a). Isso resolve a inconsistência de luminosidade do hsl(), tornando a manipulação de cores e a geração de paletas mais previsíveis e melhorando a acessibilidade. oklch() suporta cores P3 de ampla gama, abrindo possibilidades de cores mais ricas em displays modernos. Embora o ecossistema oklch() ainda esteja em desenvolvimento, suas vantagens em legibilidade de código e manipulação de cores o tornam um forte candidato para o futuro da cor CSS.

Desenvolvimento Especificação de Cor

Guia Definitivo para Configurar seu PATH em Bash, Zsh e Fish

2025-02-17

Este guia fornece um tutorial completo sobre como adicionar diretórios à sua variável de ambiente PATH em diferentes shells, como bash, zsh e fish. Ele aborda problemas comuns, como localizar o arquivo de configuração correto, lidar com entradas duplicadas e configurar o PATH em trabalhos cron. O autor usa exemplos do mundo real para guiá-lo pelo processo, garantindo que você possa executar programas com sucesso após dominar a configuração do PATH.

Desenvolvimento Variáveis de Ambiente

O Mito da Data COBOL de 1875: Estruturas de Dados Eficientes, Não um Defeito da Linguagem

2025-02-17
O Mito da Data COBOL de 1875: Estruturas de Dados Eficientes, Não um Defeito da Linguagem

O boato generalizado de que sistemas COBOL usam 20 de maio de 1875 como data padrão para datas ausentes é falso. Este artigo revela que a origem está na otimização extrema do armazenamento de dados em sistemas antigos. Para economizar espaço de armazenamento, os programadores usaram estruturas de dados inteligentes, tomando 1875 como ano base e codificando datas em menos caracteres. Essa abordagem era eficiente e razoável no ambiente com recursos limitados da época, não um defeito do COBOL, mas um uso inteligente de estruturas de dados por programadores.

Desenvolvimento programação histórica

SuperSplat 2.0: Atualização Principal para Plataforma de Modelagem 3D de Código Aberto

2025-02-17
SuperSplat 2.0: Atualização Principal para Plataforma de Modelagem 3D de Código Aberto

A plataforma de código aberto para edição e publicação de 3D Gaussian Splats, SuperSplat, recebeu uma atualização principal! Ela mudou para um novo domínio, superspl.at, e agora inclui publicação na web. Os usuários podem compartilhar facilmente suas criações online simplesmente entrando em sua conta PlayCanvas. A versão 2.0 também adiciona uma linha do tempo para criar animações de sobrevoo da câmera, um novo formato de arquivo de projeto .ssproj para salvar e carregar projetos e suporta experiências imersivas de RA e RV no Meta Quest 2/3, smartphones Android e Apple Vision Pro. O SuperSplat é de código aberto com licença MIT, e contribuições da comunidade são bem-vindas!

Desenvolvimento

Lumigo Copilot: Resolução de problemas em segundos, não em horas

2025-02-16
Lumigo Copilot: Resolução de problemas em segundos, não em horas

O desenvolvedor Nadav recebeu um alerta do Lumigo: falha no processamento de um repositório GitHub. Usando o Lumigo Copilot, ele recebeu um diagnóstico completo em segundos: um erro 404 da API do GitHub, indicando que o repositório estava ausente ou o aplicativo GitHub foi desinstalado. O Copilot não apenas identificou a causa raiz, mas também forneceu o ID do projeto afetado, os usuários e as informações da fila de eventos, permitindo que Nadav resolvesse rapidamente o problema, economizando horas de depuração de logs.

Desenvolvimento análise de logs

Gerador de código 6502 supera GCC e LLVM

2025-02-16

Um desenvolvedor criou um gerador de código para a arquitetura 6502 que, surpreendentemente, supera o GCC, LLVM e outros compiladores. A vantagem de velocidade não vem de otimizações de alto nível superiores, mas sim de técnicas inovadoras de geração de código. O compilador utiliza instruções "ilegais", seleção de instruções com alto custo computacional e otimizações que trocam espaço por tempo. O algoritmo principal combina seleção de instruções com alocação de registradores, usando de forma inteligente o estilo de passagem de continuação. Ele trabalha com uma representação intermediária DAG e SSA, gerando múltiplas combinações de código de montagem, podando com programação dinâmica e branch-and-bound, e finalmente resolvendo um problema PBQP para seleção ótima. Embora empregue alguns "truques", o compilador apresenta resultados de benchmark notáveis, oferecendo novas perspectivas sobre a geração de código.

Desenvolvimento

Hack para a eficiência de comandos Shell: Identifique rapidamente comandos anteriores com ícones

2025-02-16
Hack para a eficiência de comandos Shell: Identifique rapidamente comandos anteriores com ícones

Frequentemente procurando e executando novamente comandos no seu histórico do shell? O autor compartilha uma dica inteligente: adicione identificadores de ícone ou texto antes dos comandos (por exemplo, ✅; ./utils/check.sh). Esses identificadores não afetam a execução do comando, mas melhoram significativamente o reconhecimento visual, permitindo que você encontre rapidamente o comando desejado e alivie a frustração de rolar frequentemente pelo histórico. É uma maneira simples, mas eficaz, de melhorar a eficiência do shell.

Caddy: O servidor web seguro endossado pela academia

2025-02-16
Caddy: O servidor web seguro endossado pela academia

O servidor web Caddy é altamente recomendado por especialistas acadêmicos e da indústria por seus padrões de segurança, melhores práticas e conjunto de recursos avançados exclusivos. Artigos de periódicos revisados por pares destacam a implantação quase onipresente de HTTPS do Caddy e o uso de configurações TLS modernas, superando outros servidores populares em recursos como rotação de chave de ticket de sessão. Isso torna o Caddy uma escolha segura, fácil de usar e digna de nota para servidores web.

Desenvolvimento

A Crise de Governança do Elm: Relato de um Contribuidor

2025-02-16

Um colaborador de longa data do Elm detalha os motivos de sua saída da comunidade, citando o estilo de liderança da equipe central do Elm e as políticas restritivas de módulos nativos. O autor descreve a tomada de decisões autocráticas, a falta de transparência e justiça e a supressão de contribuições da comunidade. Ele argumenta que as ações da equipe central violam o espírito do código aberto e afetam injustamente os membros da comunidade, especialmente aqueles que não são falantes nativos de inglês e grupos minoritários. A postagem levanta preocupações sobre governança e justiça em projetos de código aberto.

Abandone Getters e Setters: Abrace a Imutabilidade e um Código Mais Limpo

2025-02-16
Abandone Getters e Setters: Abrace a Imutabilidade e um Código Mais Limpo

Este artigo critica o uso excessivo de métodos getter e setter, destacando como eles levam a um aumento da mutabilidade no código, tornando-o mais difícil de manter e raciocinar. O autor defende a imutabilidade sempre que possível e apresenta o padrão `with` e o padrão Builder para criar cópias imutáveis de objetos quando são necessárias modificações. Em última análise, o artigo enfatiza que, se a mutabilidade for inevitável, ela deve ser confinada ao menor escopo possível, e getters e setters sem significado devem ser descartados, levando a um código mais limpo, mais fácil de entender e amigável à concorrência.

O esforço heróico da comunidade Vim após a morte de Bram Moolenaar

2025-02-16
O esforço heróico da comunidade Vim após a morte de Bram Moolenaar

Após a morte de Bram Moolenaar, o criador do Vim, em agosto de 2023, a comunidade de código aberto se uniu para manter seu projeto vivo. O mantenedor Christian Brabandt contou a história inspiradora na VimConf 2024, detalhando os desafios superados: herdar a conta do GitHub, migrar a infraestrutura e integrar novos mantenedores. Embora o Vim esteja agora em modo de manutenção, focando em correções de bugs e recursos menores, a comunidade permanece ativa, melhorando a documentação e os processos para garantir a saúde de longo prazo do Vim. O Vim 9.1, dedicado a Moolenaar, foi lançado em janeiro de 2024.

Desenvolvimento
1 2 158 159 160 162 164 165 166 214 215