Category: Desenvolvimento

Situação atual do HTTP/3: Desafios e oportunidades no caminho para a adoção

2024-12-16
Situação atual do HTTP/3: Desafios e oportunidades no caminho para a adoção

As especificações do HTTP/3 estão completas, mas aguardam publicação final. O suporte do lado do servidor é surpreendentemente alto, especialmente entre os principais sites. Grandes empresas como o Cloudflare habilitaram o HTTP/3, e os navegadores o suportam amplamente. No entanto, o suporte do lado do cliente, como no curl, permanece incompleto, em grande parte devido ao desenvolvimento atrasado de bibliotecas TLS com suporte a QUIC. O suporte QUIC do OpenSSL foi adiado, enquanto alternativas como BoringSSL e quictls têm limitações. Embora o HTTP/3 prometa melhorias de velocidade, os benefícios do mundo real dependem das condições da rede. A adoção generalizada depende da publicação da especificação e de bibliotecas TLS maduras.

Desenvolvimento

Vec::drain do Rust: Aproveitando Drop para Segurança

2024-12-16
Vec::drain do Rust: Aproveitando Drop para Segurança

Este artigo mergulha no método Vec::drain do Rust e sua implementação Drop, mostrando como a propriedade previne bugs sutis — relacionados à memória e outros. Vec::drain otimiza o desempenho mantendo uma referência mutável ao vetor original e apenas lendo/atualizando o armazenamento original. A chave está na implementação Drop da estrutura Drain, que usa um DropGuard para garantir que, mesmo que o iterador seja descartado prematuramente, os elementos restantes sejam movidos com segurança de volta ao vetor original, garantindo a segurança da memória. O artigo explica detalhadamente os detalhes de implementação de Drain e DropGuard, abordando casos especiais como tipos de tamanho zero e proveniência de ponteiros.

Desenvolvimento

Novo modo --shuffle do GNU Make: Descobrindo bugs ocultos em compilações paralelas

2024-12-16

Por onze anos, bugs difíceis de reproduzir afetaram as compilações paralelas no GNU Make. Inspirado nisso, um novo modo `--shuffle` foi desenvolvido para reorganizar aleatoriamente as metas do Makefile, simulando uma ordem de compilação não determinística. Isso revelou efetivamente bugs ocultos em mais de 30 pacotes, incluindo gcc, vim e ghc. Agora parte do GNU Make 4.4, este modo é acessível via `make --shuffle` ou a variável de ambiente `GNUMAKEFLAGS=--shuffle`. Este recurso poderoso ajuda os desenvolvedores a identificar e resolver problemas de compilação paralela, destacando a melhoria contínua das ferramentas de desenvolvimento de software.

Novo balanceador de carga do Google, PReQuaL: além do balanceamento de carga da CPU

2024-12-16

O Google Research apresentou o PReQuaL (Probing to Reduce Queuing and Latency), um novo balanceador de carga, na NSDI 2024. Diferentemente do balanceamento de carga da CPU tradicional, o PReQuaL sonda ativamente a latência do servidor e as solicitações ativas para selecionar servidores, reduzindo drasticamente a latência de cauda, as taxas de erro e o consumo de recursos em sistemas como o YouTube. Implantado no YouTube por mais de um ano, o PReQuaL melhorou significativamente a utilização do sistema. Essa abordagem inovadora desafia a sabedoria convencional e oferece um novo paradigma para sistemas distribuídos de alto desempenho.

Desenvolvimento balanceamento de carga

Uma Jornada de Engenharia de Software em CAD e Impressão 3D: Um Elevador de Webcam Superengenhado

2024-12-16

Um engenheiro de software experiente, cansado do mundo virtual da programação, ansiava por criar no mundo real. Ele adquiriu uma impressora 3D Bambu Lab X1C e rapidamente dominou a impressão 3D. Em seguida, começou a aprender o software CAD Fusion 360, surpreendentemente encontrando seus conceitos de restrição semelhantes às restrições da IU do iOS, e o design CAD paramétrico refletindo a programação funcional. Seu primeiro projeto: um elevador de webcam superengenhado para resolver o problema da webcam obstruindo sua tela. Este projeto não apenas lhe proporcionou a alegria da impressão 3D e do design CAD, mas também uma compreensão profunda da fabricação, materiais e outros detalhes que precisam ser considerados na fase de design.

Desenvolvimento impressão 3D design CAD

Adélie Linux 1.0-BETA6 Lançado: Compatibilidade Aprimorada e Recursos Mais Ricos

2024-12-16
Adélie Linux 1.0-BETA6 Lançado: Compatibilidade Aprimorada e Recursos Mais Ricos

O Adélie Linux lançou sua versão 1.0-BETA6, oferecendo suporte para arquiteturas ARM, POWER e x86 de 32 e 64 bits, abrangendo smartphones, consoles de jogos e supercomputadores. Esta versão inclui mais de 35 novos pacotes, atualizações para GCC 13, LLVM 18, Rust 1.80 e kernel Linux 6.6 LTS, além de suporte aprimorado para GRUB e Wayland. Vários bugs foram corrigidos e a experiência do usuário foi aprimorada. Embora alguns problemas conhecidos ainda persistam, a equipe do Adélie está trabalhando ativamente em soluções e recebe relatórios de bugs e feedback.

Desenvolvimento distribuição Linux

Cyphernetes: Automação de Gerenciamento de Cluster Kubernetes Nativo em Nuvem

2024-12-16

Cyphernetes é um projeto que automatiza o gerenciamento de clusters Kubernetes nativos em nuvem. Ele reduz significativamente a complexidade operacional, simplificando os processos de implantação, atualizações e gerenciamento. Imagine dimensionar seu cluster sem esforço para lidar com picos de tráfego, reparar falhas automaticamente e garantir a estabilidade do serviço — tudo sem intervenção manual. O Cyphernetes atua como um administrador de cluster Kubernetes experiente, protegendo seus aplicativos 24 horas por dia, 7 dias por semana, permitindo que você se concentre na inovação.

Desenvolvimento Operações automatizadas

Navegador Dillo: 25 anos de história, uma história de ressurreição

2024-12-16

O navegador web Dillo, nascido em 1999, resistiu a 25 anos de desenvolvimento. Ele estagnou várias vezes, mas persistiu. Inicialmente liderado por Jorge Arellano Cid, passou por fases principais do GTK e FLTK, com a mudança de desenvolvedores-chave e o projeto passando por altos e baixos. Em 2024, Rodrigo Arias Mallo assumiu, e com a ajuda da comunidade, lançou a versão 3.1.1, trazendo este navegador veterano de volta aos holofotes. A história do Dillo exemplifica o espírito de código aberto e é uma história lendária de legado tecnológico e inovação.

Desenvolvimento navegador de código aberto

Hyperbola GNU/Linux-libre: Um sistema operacional leve comprometido com liberdade e suporte de longo prazo

2024-12-15

Hyperbola GNU/Linux-libre é um projeto de sistema operacional comunitário que visa fornecer uma distribuição de suporte de longo prazo totalmente gratuita, estável, segura, simples e leve. Ele utiliza o gerenciamento de pacotes do Arch Linux e patches de segurança do Debian, aderindo às Diretrizes de Distribuição de Sistemas Livres GNU. Suporta arquiteturas i686 e x86_64, e planeja lançar um sistema baseado em BSD, HyperbolaBSD. Notícias recentes incluem o suporte contínuo para sistemas de 32 bits, a descontinuação de conjuntos de patches do Debian além da versão 12 e preocupações expressas sobre a declaração da Free Software Foundation sobre aprendizado de máquina.

Mapa de Projetos GitHub: Visualizando 400.000+ Projetos

2024-12-15
Mapa de Projetos GitHub: Visualizando 400.000+ Projetos

O desenvolvedor Anvaka criou um mapa interativo que visualiza mais de 400.000 projetos do GitHub usando dados publicamente disponíveis. O projeto usa similaridade de Jaccard para calcular os relacionamentos entre os projetos e o algoritmo de Leiden para agrupamento. O resultado é uma representação visualmente impressionante do ecossistema do GitHub, permitindo que os usuários pesquisem e explorem as conexões entre os projetos, revelando sua complexidade e riqueza.

Desenvolvimento relacionamentos de projetos

Vercel lança ƒun: Um ambiente de execução local para funções Serverless

2024-12-15
Vercel lança ƒun: Um ambiente de execução local para funções Serverless

A Vercel lançou o ƒun, um ambiente de execução local para desenvolvimento de funções serverless, permitindo que desenvolvedores emulem o ambiente AWS Lambda localmente. O ƒun suporta vários tempos de execução, incluindo Node.js e Python, permitindo testes e depuração rápidos de funções serverless sem implantação na nuvem. Embora o ƒun busque aproximar-se do ambiente Lambda real, existem algumas diferenças importantes, principalmente em termos de sandbox de processos e permissões de usuário.

Arrastar e Soltar Imagens no Bevy 0.15 na Web

2024-12-15

Esta publicação demonstra como integrar APIs nativas da web via WASM com o Bevy 0.15 para habilitar a funcionalidade de arrastar e soltar imagens em um navegador web. Ela detalha o uso de wasm-bindgen, gloo e bevy_channel_trigger para lidar com eventos DOM em Rust, extrair dados de arquivos e passá-los para o mecanismo Bevy para carregamento e renderização de imagens. O processo espelha a implementação em JavaScript, mas utiliza as capacidades do Rust, abordando o tratamento de erros e vazamentos de memória de ouvintes de eventos. O resultado é um aplicativo web Bevy capaz de carregar e exibir imagens PNG soltas.

Desenvolvimento Desenvolvimento Web

Indicador de Foco para Programadores: O Nascimento do FlowLight

2024-12-15

Inspirado em um artigo de pesquisa sobre o impacto de interrupções no trabalho, o programador Shae Erisson criou um sistema DIY chamado FlowLight para indicar se um programador está em um estado de foco de "fluxo". O sistema monitora o tempo ocioso no editor Emacs; quando o programador está inativo por um período, o LED de uma placa Adafruit MagTag muda de cor (verde para ocioso, vermelho para ocupado). Erisson também escreveu um servidor HTTP em CircuitPython para controlar remotamente a cor do LED e exibir o status. Embora o sistema tenha espaço para melhorias, como monitoramento de tempo ocioso mais granular e uma exibição mais visualmente atraente, ele ajuda efetivamente os programadores a evitar interrupções e melhorar a produtividade.

Desenvolvimento programador foco fluxo

Programa WASM ignora o sandbox do sistema de arquivos node:wasi

2024-12-15
Programa WASM ignora o sandbox do sistema de arquivos node:wasi

Este projeto demonstra uma prova de conceito mostrando como um programa WASM pode ignorar a restrição de diretório preopens no node:wasi para acessar arquivos fora do sandbox. Normalmente, os programas WASM estão limitados ao acesso a diretórios preabertos. No entanto, usando links simbólicos para substituir arquivos em um momento preciso e executando um processo externo, essa limitação pode ser contornada. Isso não é uma vulnerabilidade de segurança prática no node:wasi, mas sim um caso limite potencial. O projeto destaca que não se deve depender do node:wasi para impedir completamente que código malicioso acesse arquivos externos.

Desenvolvimento

Otimização de GPU MacOS: Desperdício de Recursos para Velocidade

2024-12-15

O desenvolvedor da Anukari encontrou um gargalo ao otimizar o desempenho da GPU no MacOS. Devido ao controle limitado do sistema sobre o desempenho da GPU, o mecanismo de regulação de desempenho da GPU da Apple apresentou desempenho ruim no caso de uso da Anukari, resultando em falhas de áudio. O desenvolvedor implementou uma solução alternativa: dedicar um warp de threadgroup da GPU a cálculos inúteis para 'enganar' o sistema a aumentar a velocidade do relógio da GPU, reduzindo significativamente a latência de áudio e melhorando o desempenho. Embora grosseiro, este método se mostrou eficaz na resolução de problemas de desempenho do MacOS. No entanto, as melhorias de desempenho variaram significativamente entre diferentes DAWs (Ableton e GarageBand), exigindo otimização adicional.

Os Grandes Modelos de Linguagem Põem Fim à Programação?

2024-12-15

Avanços recentes em grandes modelos de linguagem (LLMs) geraram debates sobre a obsolescência da programação. Este artigo argumenta contra essa visão excessivamente otimista. Concentrando-se na complexidade computacional da síntese de programas, o autor demonstra que gerar código correto é um problema PSPACE-completo, o que significa que até mesmo entradas de tamanho moderado podem exigir tempo exponencial. Embora os LLMs possam auxiliar programadores e aumentar a eficiência, suas limitações inerentes impedem que substituam completamente os programadores humanos. O cerne da programação continua sendo a resolução de problemas e o design de sistemas, exigindo engenhosidade e criatividade humanas.

Computação Otimista: Um Caminho para um Software Melhor

2024-12-15

Este ensaio explora o conceito de "Computação Otimista", não como um otimismo cego, mas como uma convergência de várias ideias poderosas: simplicidade e facilidade de uso ("boot to kill"), princípios local-first e empoderamento do usuário. O autor argumenta que, limitando dependências, simplificando fluxos de trabalho, criando uma experiência perfeita de "apenas funciona" e dando aos usuários mais controle, podemos construir software mais confiável, seguro e duradouro. Essa filosofia se aplica tanto a usuários individuais quanto ao desenvolvimento de software empresarial, visando, em última análise, um mundo digital que respeita a privacidade e a propriedade de dados do usuário.

Desenvolvimento computação otimista

Spark x DuckDB x Polars: Comparação de Desempenho para Cargas de Trabalho Pequenas e Médias

2024-12-15
Spark x DuckDB x Polars: Comparação de Desempenho para Cargas de Trabalho Pequenas e Médias

Este artigo compara os motores de processamento de dados Spark, DuckDB e Polars, avaliando seu desempenho, custo e facilidade de desenvolvimento em conjuntos de dados de 10 GB e 100 GB. Os resultados mostram que, para conjuntos de dados grandes e tarefas ETL, o Spark continua sendo dominante devido às suas capacidades de computação distribuída e ecossistema maduro. O DuckDB e o Polars se destacam em consultas interativas e exploração de dados em conjuntos de dados menores. O autor recomenda uma abordagem estratégica de combinação e correspondência, usando o Spark para ETL, o DuckDB para consultas interativas e o Polars para cenários de nicho, adaptando a escolha do motor às necessidades específicas.

Motor de Inferência LLM Rápido Construído do Zero

2024-12-15

Este artigo detalha a jornada do autor na construção de um motor de inferência LLM do zero usando C++ e CUDA, sem depender de nenhuma biblioteca. O processo proporcionou um mergulho profundo em toda a pilha de inferência LLM, de kernels CUDA à arquitetura do modelo, mostrando como as otimizações impactam a velocidade de inferência. O objetivo era criar um programa capaz de carregar pesos de modelos de código aberto comuns e realizar inferência de lote único em um único servidor CPU+GPU, melhorando iterativamente o throughput de tokens para superar o llama.cpp. O artigo descreve meticulosamente as etapas de otimização tanto na CPU quanto na GPU, incluindo multithreading, quantização de pesos, SIMD, fusão de kernels e quantização de cache KV, analisando gargalos e desafios. O resultado final alcança um desempenho próximo ao de ponta para inferência LLM local.

Desenvolvimento inferência LLM

Priorizando código descartável a documentos de design: Uma abordagem de desenvolvimento de software mais eficiente

2024-12-15
Priorizando código descartável a documentos de design: Uma abordagem de desenvolvimento de software mais eficiente

No desenvolvimento de software, o método tradicional de documento de design mais desenvolvimento incremental nem sempre é eficiente. O autor Doug Turnbull propõe uma abordagem de "ataque de código": implementar rapidamente um protótipo usando um PR temporário, obter feedback antecipado da equipe, refinar o design e, em seguida, dividi-lo gradualmente em PRs implantáveis. Este método incentiva a iteração rápida, a detecção precoce de problemas e considera o próprio código como a melhor documentação. Embora os documentos de design ainda tenham valor em situações específicas, o autor defende "mostrar, não contar", usando protótipos de código para validação e iteração rápidas para alcançar um desenvolvimento de software mais eficiente.

Desenvolvimento protótipo de código

O Segredo das Equipes de Alto Desempenho: Sistemas de Memória Transativa

2024-12-15
O Segredo das Equipes de Alto Desempenho: Sistemas de Memória Transativa

Este artigo explora a pedra angular das equipes de alto desempenho: Sistemas de Memória Transativa (SMT). Não se trata da força de memória individual, mas de como as equipes compartilham e aproveitam efetivamente o conhecimento e as habilidades dos membros. São apresentados três tipos de memória de equipe: memória de trabalho, memória de longo prazo e memória transativa, com foco em como o SMT aprimora o desempenho da equipe. O SMT compreende dois elementos: padrões de colaboração e experiência individual. Ao construir um SMT, as equipes liberam a inteligência coletiva e superam o impacto das mudanças de membros. O artigo recomenda métodos como o Capability Comb, Manual da Equipe e prática deliberada para ajudar as equipes a estabelecer e melhorar rapidamente seu SMT.

Componentes Web Isomórficos: Renderização do Lado do Servidor Simplificada

2024-12-15
Componentes Web Isomórficos: Renderização do Lado do Servidor Simplificada

A crença de longa data de que a renderização do lado do servidor de componentes web é difícil foi questionada. Este artigo demonstra como alcançar a renderização do lado do servidor de componentes web existentes usando o Happy DOM para emular um ambiente de navegador. Dois métodos são detalhados: usando a tag `` para renderização direta e simulando o DOM para executar o código do componente e gerar HTML. O autor destaca as vantagens desta abordagem: compatibilidade com todos os componentes web, robustez em caso de falha do JavaScript e a ausência de dependência de frameworks específicos. Isso resolve o problema de renderização do lado do servidor para componentes web, oferecendo uma solução flexível e robusta.

SVC16: O Computador Virtual Mais Simples Desafia Programadores

2024-12-15
SVC16: O Computador Virtual Mais Simples Desafia Programadores

O SVC16 é um computador virtual minimalista de 16 bits projetado para a máxima simplicidade. Ele não possui registradores de CPU, realizando todas as operações em um único bloco de memória. O conjunto de instruções é extremamente simplificado, sem recursos sofisticados como som ou tamanho de tela variável. Os programadores são desafiados a escrever código de máquina e compiladores por conta própria, criando feitos incríveis com as ferramentas mais simples. O projeto fornece um emulador para executar programas criados pelo usuário e até mesmo jogos. Este é um projeto perfeito para aprender os princípios de baixo nível de computação e aprimorar as habilidades de programação.

Railgun Labs Lança Biblioteca de Algoritmos Unicode de Alto Desempenho: Unicorn

2024-12-15

A Railgun Labs lançou o Unicorn, uma biblioteca de algoritmos Unicode de alta velocidade, conhecida por sua velocidade, capacidade de incorporação, compatibilidade multiplataforma e segurança. O Unicorn suporta diversos algoritmos Unicode, incluindo normalização, conversão de maiúsculas e minúsculas, classificação e segmentação, e fornece decodificadores, codificadores e validadores para codificações UTF-8, UTF-16 e UTF-32. A biblioteca é totalmente personalizável e extensamente testada para precisão e confiabilidade. É compatível com MISRA C:2012 e em grande parte segura para threads.

Vulnerabilidade de Segurança no Acesso à Internet do Home Assistant

2024-12-15

Frederik Braun tentou usar o Home Assistant para controle remoto de casa inteligente, mas descobriu uma vulnerabilidade de segurança significativa. Embora o Home Assistant ofereça autenticação de nome de usuário/senha e autenticação de dois fatores, sua incapacidade de lidar com URLs com credenciais incorporadas e seu requisito de implantação no caminho raiz impedem camadas de segurança adicionais, como autenticação de servidor web ou caminhos ofuscados. Isso deixa a segurança do Home Assistant dependendo apenas de seus mecanismos internos, criando um risco de segurança. O autor apela à comunidade do Home Assistant para melhorar sua flexibilidade de configuração de segurança.

Desenvolvimento Segurança Acesso Remoto

XFCE 4.20 Lançado: Suporte experimental ao Wayland e inúmeras melhorias

2024-12-15

Após quase dois anos de desenvolvimento, o XFCE 4.20 foi oficialmente lançado! Esta versão concentra-se na preparação da base de código para o Wayland, oferecendo agora suporte experimental ao Wayland para a maioria dos componentes, embora ainda esteja em estágios iniciais e seja recomendado para usuários avançados. O XFCE 4.20 também possui inúmeras novas funcionalidades, correções de bugs e melhorias, incluindo dimensionamento de ícones aprimorado, uma visualização de ícones com desempenho aprimorado e um gerenciador de arquivos Thunar atualizado. É importante ressaltar que o suporte ao Wayland ainda está incompleto, com alguns componentes e funcionalidades ainda a serem portados.

Desenvolvimento Ambiente de Desktop

Implementando um sistema de objetos simples do zero em Ruby

2024-12-15

Este artigo descreve como construir um sistema de objetos simples em Ruby sem usar classes. O autor usa de forma inteligente funções anônimas e tabelas hash para implementar conceitos principais de OOP, como pesquisa de métodos, herança prototípica, mixins e metaprogramação. Começando com uma função construtora, o artigo demonstra como simular variáveis privadas e interfaces públicas, criando efetivamente um comportamento semelhante a classes e herança. Através de exemplos de código claros, os leitores aprendem a criar objetos, definir métodos, implementar herança e mixins, e até mesmo construir um recurso de metaprogramação rudimentar semelhante ao `attr_accessor` do Ruby. É um guia prático para entender os fundamentos do sistema de objetos.

Palestra RubyConf 2024 de JP Camara agora no YouTube

2024-12-15

A apresentação de JP Camara sobre concorrência em Ruby na RubyConf 2024 agora está disponível no YouTube. A palestra resume sua pesquisa e escrita do último ano, e apresenta slides animados. O vídeo também está disponível no RubyVideo.

Desenvolvimento

TeaVM 0.11.0 Lançado: Novo Backend WebAssembly

2024-12-15

O TeaVM 0.11.0 foi lançado, com um novo backend WebAssembly como destaque principal. O antigo backend WebAssembly, embora funcional, teve pouca adoção devido a ganhos de desempenho insignificantes e uma experiência de desenvolvedor ruim. O novo backend, aproveitando a proposta WebAssembly GC, resolve esses problemas, melhorando a interação com as APIs JS do navegador e reduzindo o tamanho do arquivo binário. Embora atualmente seja um pouco menos rico em recursos do que o backend JS, ele já suporta JSO (API de interação Java-to-JS), com o objetivo de alcançar a paridade na próxima versão. Esta versão também inclui correções de bugs na implementação do BitSet e adiciona suporte para várias APIs JS, como leitura de arquivos, eventos de toque, a API Popover e Navigator.sendBeacon.

Desenvolvimento

Adeus a Reuniões Infinitas: Uma Nova Abordagem para o Desenvolvimento de Software de Alta Velocidade

2024-12-15

Cansado de reuniões intermináveis e planejamentos longos? Este artigo apresenta um método de desenvolvimento de software de alta eficiência: centrado em código, iteração rápida. O autor usa a confeitaria como exemplo para ilustrar o conceito de alcançar a solução ideal por meio de experimentação rápida, testes frequentes e melhoria contínua. Este método enfatiza a redução da documentação, expressando ideias diretamente em código, usando dados simulados e ferramentas de recarregamento a quente para acelerar o desenvolvimento e melhorando a legibilidade do código por meio de um estilo de código conciso e convenções de nomenclatura. O autor defende a divisão de projetos em arquivos independentemente executáveis, minimizando o tempo de reinicialização e usando ferramentas de linguagem padrão para depuração. Embora este método possa parecer um "laboratório caótico", ele pode concluir projetos de forma eficiente e evitar a redundância e ineficiência dos métodos tradicionais.

1 2 207 208 209 210 212 214 215