Category: Desenvolvimento

Unidades de Execução Frequentemente São Pipelinadas

2024-12-30

Este artigo explora o pipeline de unidades de execução em microarquiteturas fora de ordem. A autora inicialmente supôs que as unidades de execução permanecem ocupadas até a conclusão da µop, mas usando a microarquitetura Firestorm (A14 e M1) como exemplo, demonstra que duas unidades de execução inteiras podem lidar com múltiplas multiplicações simultaneamente, cada uma levando três ciclos. Ao comparar sequências de instruções dependentes e independentes, a autora revela que muitas combinações de unidade de execução/µop são altamente pipelinadas, permitindo que uma µop seja emitida enquanto a unidade processa outras. Isso reduz o tempo de execução para instruções independentes de 6 ciclos previstos para 4. Finalmente, a autora explica por que as tabelas de latência e largura de banda de instruções especificam a taxa de transferência recíproca – é equivalente a ciclos/instrução.

Panel Graphic Walker: Exploração interativa de dados com HoloViz Panel

2024-12-30
Panel Graphic Walker: Exploração interativa de dados com HoloViz Panel

O Panel Graphic Walker é uma biblioteca Python que integra o poder do Graphic Walker ao HoloViz Panel para exploração interativa de dados em Jupyter Notebooks e aplicativos Panel. Ele oferece uma interface semelhante ao Tableau, permitindo que os usuários criem visualizações e tabelas dinâmicas rapidamente com código mínimo. Ele suporta vários backends de dados e renderizadores e pode lidar com grandes conjuntos de dados usando computação do lado do servidor. O projeto está em seus estágios iniciais; recomenda-se fixar uma versão específica.

Zig: Mais Seguro e Rápido que Rust Inseguro?

2024-12-30
Zig: Mais Seguro e Rápido que Rust Inseguro?

Este post de blog compara Rust e Zig através da implementação de um interpretador de bytecode com garbage collection. O autor achou o Rust inseguro incrivelmente desafiador, citando regras de aliasing complexas e comportamento indefinido como obstáculos importantes. Em contraste, Zig ofereceu uma experiência mais amigável para desenvolvedores em operações de memória inseguras, incluindo detecção de vazamento de memória embutida e ergonomia de ponteiros melhorada. A implementação em Zig acabou sendo mais segura, rápida e fácil de desenvolver do que sua contraparte em Rust.

Desenvolvimento Segurança de Memória

curl recebe atualização importante: suporte à leitura de arquivos parciais

2024-12-30
curl recebe atualização importante: suporte à leitura de arquivos parciais

O lançamento do curl 8.12.0 trará um recurso empolgante: a capacidade de ler partes de arquivos. Os usuários agora podem usar um novo sistema de variáveis para extrair intervalos específicos de bytes de arquivos e usá-los em linhas de comando curl. Isso adiciona flexibilidade significativa à maneira como o curl lida com arquivos, permitindo tarefas como extrair o início de um arquivo como nome de usuário ou uma seção no meio para um corpo POST. Isso expande significativamente as capacidades do curl, proporcionando aos usuários uma ferramenta de linha de comando mais robusta.

Desenvolvimento manipulação de arquivos

curl-impersonate atualizado: recursos aprimorados de imitação de navegador

2024-12-30
curl-impersonate atualizado: recursos aprimorados de imitação de navegador

O projeto lexiforest/curl-impersonate é um fork ativo do curl-impersonate, aprimorando as capacidades de imitação de navegador e oferecendo suporte a mais versões e destinos de build. Este projeto modifica o curl para imitar o comportamento de navegadores principais (Chrome, Edge, Safari e Firefox) durante as conexões TLS e HTTP, contornando restrições de sites baseadas em impressão digital. As atualizações incluem suporte para ECH, compressão ZSTD, curva X25519Kyber768 e mais versões de navegador, fornecendo ferramentas de linha de comando e funções de biblioteca aprimoradas.

Desenvolvimento imitação de navegador

86Box: Emulando o Legado do x86

2024-12-30
86Box: Emulando o Legado do x86

O 86Box é um emulador x86 de baixo nível que executa sistemas operacionais e softwares mais antigos projetados para sistemas IBM PC e compatíveis, de 1981 até designs de sistemas relativamente recentes baseados no barramento PCI. Possui uma interface fácil de usar, emulação de baixo nível de processadores baseados em 8086 até o Celeron da era Mendocino, grande variedade de personalização de máquinas virtuais e suporte a diversos periféricos. Permite a execução de MS-DOS, versões antigas do Windows, OS/2, diversas distribuições Linux e sistemas antigos como BeOS ou NEXTSTEP.

Desenvolvimento emulador x86

MiceWine: Executando aplicativos e jogos do Windows em Android

2024-12-30
MiceWine: Executando aplicativos e jogos do Windows em Android

O projeto MiceWine visa executar aplicativos e jogos do Windows em smartphones Android. Ele usa uma versão personalizada do Wine compilada para Android e Box64 para melhor desempenho. Atualmente em desenvolvimento constante, usa um XServer baseado em Termux-X11. Suporta Android 10 e superior. GPUs Adreno 7xx e 6xx são suportadas com Turnip/Zink, enquanto outras têm suporte parcial com nativo/Zink (experimental). Vulkan nativo em GPUs não Adreno é experimental e requer testes.

Desenvolvimento Aplicativos Windows

Analogia hidráulica: um obstáculo ao ensino de eletrônica

2024-12-30
Analogia hidráulica: um obstáculo ao ensino de eletrônica

Muitos livros introdutórios de eletrônica usam a analogia hidráulica para explicar circuitos, comparando a corrente elétrica ao fluxo de água e as baterias a bombas. No entanto, o autor argumenta que essa analogia é profundamente falha, especialmente ao explicar componentes semicondutores como JFETs e MOSFETs. A analogia falha em representar com precisão suas curvas características, dificultando o aprendizado. O autor defende o abandono dessa analogia imprecisa e, em vez disso, aprender eletrônica a partir de princípios mais fundamentais.

Python em 2024: Mais rápido, mais poderoso e mais popular do que nunca

2024-12-30
Python em 2024: Mais rápido, mais poderoso e mais popular do que nunca

Em 2024, o Python consolidou sua posição como uma das principais linguagens de programação. O Python 3.13 introduziu um aumento significativo de desempenho com a versão experimental "sem GIL" e um compilador JIT. A remoção de módulos obsoletos simplificou a linguagem, enquanto seu papel crucial em IA, aprendizado de máquina e ciência de dados impulsionou sua popularidade a novas alturas. O Python superou o JavaScript em uso no GitHub e alcançou um notável 18% no índice Tiobe, consolidando seu lugar entre as três principais linguagens de programação.

Desenvolvimento

Sobrecarga da Abstração Lambda em Haskell: Uma Abordagem Elegante para Design de EDSL

2024-12-30
Sobrecarga da Abstração Lambda em Haskell: Uma Abordagem Elegante para Design de EDSL

Este artigo apresenta um novo método para sobrecarregar a abstração lambda em Haskell para construir linguagens de domínio específicas incorporadas (EDSLs). Usando de forma inteligente um tipo `Port` e funções `encode`/`decode`, o autor traduz elegantemente funções Haskell em morfismos dentro de uma categoria personalizada. Isso resulta em uma sintaxe concisa e intuitiva, evitando as complexidades das abstrações Arrow e a notação proc. A abordagem requer código Haskell mínimo e nenhum metaprogramação ou plug-ins de compilador. Um exemplo de DSL de diagrama de fluxo demonstra a aplicação do método, juntamente com discussões sobre como prevenir duplicação e lidar com efeitos colaterais.

Desenvolvimento Abstração Lambda

IOCCC comemora 40º aniversário com a 28ª competição

2024-12-30

O Concurso Internacional de Código C Ofuscado (IOCCC) está realizando sua 28ª competição, marcando seu 40º aniversário. Este evento celebra a criatividade e as habilidades de codificação excêntricas na linguagem de programação C. Para usar o aplicativo web Mastodon, é necessário JavaScript; como alternativa, considere usar um aplicativo nativo do Mastodon.

Problemas com Programação Orientada a Objetos em Guile

2024-12-30

Este artigo explora as discrepâncias entre o sistema de programação orientada a objetos do Guile Scheme, GOOPS, e o Common Lisp Object System (CLOS), destacando as deficiências do GOOPS. O GOOPS carece da elegância e robustez do CLOS em várias áreas-chave: a especialização de setter não se compõe com herança, faltam qualificadores de método before/after/around, os algoritmos de combinação de métodos não são controláveis, a especialização de argumentos de método é limitada, os argumentos de palavra-chave não são suportados e faltam strings de documentação. O autor sugere melhorias, como imitar o comportamento do CLOS, adicionar qualificadores de método e melhorar o mecanismo de especialização de argumentos de método para melhorar a elegância do código e reduzir bugs.

Desenvolvimento

Criando um emulador de computador completo em C: Do portão NAND ao Tetris

2024-12-30
Criando um emulador de computador completo em C: Do portão NAND ao Tetris

Este projeto visa criar um emulador de computador completo em C do zero, seguindo o curso NandToTetris. Ele começa com um único portão NAND e constrói progressivamente chips mais complexos, como multiplexadores e demultiplexadores, culminando em um sistema capaz de executar Tetris. Ao contrário de outros projetos de emuladores que começam no nível da CPU, este constrói metodicamente toda a pilha de hardware. O projeto está em seus estágios iniciais, com o autor planejando implementar um montador após concluir os componentes de hardware.

Little Snitch: O Guardião da Segurança de Rede do seu macOS

2024-12-30
Little Snitch: O Guardião da Segurança de Rede do seu macOS

Little Snitch é um monitor de rede e firewall de aplicativos pessoal para macOS que lhe dá controle sobre quais aplicativos se conectam à internet. Ele alerta você sobre cada tentativa de conexão, permitindo que você permita ou negue o acesso, garantindo que seus dados permaneçam seguros. Os recursos incluem modo silencioso, um gráfico de tráfego visual, gerenciamento de regras flexível, criptografia DNS integrada e identificação de processo criptográfico para frustrar malware. Monitore e gerencie a atividade de rede do seu Mac com facilidade, protegendo sua privacidade.

Desenvolvimento

CI mais rápido com Mill: Estratégias de testes seletivos

2024-12-30

Executar todos os testes em grandes bases de código é ineficiente. Este artigo explora três abordagens de testes seletivos: baseada em pastas, baseada em dependências e baseada em heurística. A baseada em pastas é simples, mas pode perder erros; a baseada em dependências é mais completa, mas pode testar demais; a baseada em heurística otimiza a seleção de testes com regras personalizadas, equilibrando velocidade e exaustividade. A ferramenta de construção Mill suporta nativamente testes seletivos baseados em dependências, melhorando significativamente a eficiência do CI. No entanto, combiná-la com métodos heurísticos otimiza ainda mais o equilíbrio entre velocidade e cobertura de testes.

O Problema Zombocom: De 'Qualquer Coisa' a 'Algo Específico' no Desenvolvimento de Software

2024-12-29
O Problema Zombocom: De 'Qualquer Coisa' a 'Algo Específico' no Desenvolvimento de Software

Este artigo explora o 'Problema Zombocom' – a falha de muitas plataformas low-code/no-code, super aplicativos, etc., devido à sua incapacidade de atender às necessidades específicas do usuário. O autor argumenta que o sucesso depende de resolver um problema específico para um usuário específico, encontrando o encaixe perfeito entre produto e mercado. A história de sucesso da Amazon ilustra isso: começou como uma livraria online, expandindo gradualmente para outras áreas. Da mesma forma, o Excel obteve sucesso porque inicialmente visava proprietários de pequenas empresas e contadores. O autor enfatiza que as plataformas devem surgir de produtos, não o contrário; crie primeiro produtos excelentes e autônomos, depois considere a plataforma. Em última análise, o autor conclui que a chave para o sucesso reside na combinação do pensamento sistêmico e do pensamento de produto — entender as oportunidades em nível de sistema, enquanto identifica o primeiro melhor cliente, transformando assim um 'produto de uso único' em uma 'plataforma'.

Stripe lança silenciosamente a API V2: Melhorias REST e mudança de DX

2024-12-29

A Stripe lançou silenciosamente sua API V2 em outubro, com mudanças de corpos de solicitação codificados em formulário para JSON e introdução de paginação no estilo HATEOAS. A V2 visa melhorias de velocidade e carregamento de subobjetos controlado por meio de um parâmetro `include`. A verdadeira idempotência também é tentada para melhor lidar com solicitações com falha. No entanto, ainda são necessárias melhorias no uso de verbos REST e modelagem de recursos. O autor argumenta que uma ótima experiência de desenvolvedor (DX) agora depende mais de SDKs de alta qualidade do que de uma API REST perfeita.

Desenvolvimento

Executando LLMs Localmente: Um Guia para Desenvolvedores

2024-12-29
Executando LLMs Localmente: Um Guia para Desenvolvedores

Um desenvolvedor compartilha sua experiência executando Modelos de Linguagem Grandes (LLMs) em um computador pessoal. Usando uma máquina de alta especificação (CPU i9, GPU 4090, 96 GB de RAM), juntamente com ferramentas de código aberto como Ollama e Open WebUI, eles executaram com sucesso vários LLMs para tarefas como conclusão de código e consulta de notas. O artigo detalha o hardware, software, modelos usados e métodos de atualização, destacando as vantagens de segurança de dados e baixa latência de executar LLMs localmente.

BSD kqueue: Uma Montanha de Dívida Técnica

2024-12-29

Este artigo examina as diferenças entre o BSD kqueue e o Linux epoll na programação de rede. O kqueue usa filtros de eventos, oferecendo funcionalidade poderosa, mas com falta de composição, levando ao acúmulo de dívida técnica. O epoll, por outro lado, manipula diretamente os handles do kernel, oferecendo maior composição e permitindo o monitoramento flexível de vários recursos do kernel, como sockets, caminhos do sistema de arquivos e temporizadores. O autor argumenta que o design do epoll é superior, pois evita o problema de adicionar constantemente novos tipos de filtros de eventos ao kqueue com cada novo recurso.

Desenvolvimento programação de rede

Extensão Racket: Incorporando Imagens em Código-Fonte

2024-12-29
Extensão Racket: Incorporando Imagens em Código-Fonte

Esta biblioteca Racket permite incorporar imagens diretamente em arquivos de código-fonte, eliminando a necessidade de referências a arquivos externos. Ela utiliza uma extensão µ reader e codificação uuencode para converter dados de imagem em uma representação textual, resolvendo o problema dos formatos de arquivo binários (como WXME) criados por métodos tradicionais de incorporação de imagens, incompatíveis com ferramentas como git. A biblioteca fornece funções de empacotamento e desempacotamento para converter facilmente imagens em texto incorporável e decodificá-las para exibição. Embora o tratamento de erros e a formatação de texto possam ser melhorados, ela oferece uma maneira conveniente de criar projetos Racket autocontidos.

Por que não uso Design Orientado a Domínio

2024-12-29

Tony Marston, um desenvolvedor de software experiente com quatro décadas de experiência na construção de aplicativos empresariais, explica por que ele não usa Design Orientado a Domínio (DDD). Ele argumenta que o DDD superenfatiza a teoria de design orientado a objetos às custas do design de banco de dados e da reusabilidade de código em sistemas grandes. Ele prefere uma arquitetura em camadas com uma classe separada para cada tabela de banco de dados, utilizando herança e o padrão de Método de Modelo para reutilização de código. Marston acredita que essa abordagem se adapta melhor a projetos do mundo real e aumenta a eficiência do desenvolvimento.

10 Ferramentas Essenciais do Django para Melhorar o Desempenho, a Segurança e a Produtividade

2024-12-29

Este artigo explora dez ferramentas indispensáveis para o seu próximo projeto Django, cobrindo gerenciamento de dependências, perfil de desempenho e muito mais para aumentar a eficiência do desenvolvimento, segurança e desempenho. De Poetry para gerenciamento de dependências a Silk para perfil de desempenho, cada ferramenta — incluindo Django Extensions, Django REST Framework, djangorestframework-camel-case, Django Storages, django-simple-history, django-otp, Celery e Gunicorn com Uvicorn Workers — é explicada com comparações a alternativas como Pipenv, FastAPI e django-reversion. Essas ferramentas ajudam a construir aplicativos Django mais rápidos, mais seguros e eficientes.

Desenvolvimento Ferramentas

SQLite3: O Herói Anônimo dos Bancos de Dados

2024-12-29

O SQLite3 é um banco de dados embutido leve e poderoso que silenciosamente gerencia dados para bilhões de implantações. Ao contrário de seus equivalentes mais complexos e barulhentos, o SQLite3 opera como um único arquivo, sem exigir configuração de servidor. Ele possui funcionalidade SQL completa, superando a E/S de arquivo direta em velocidade e gerenciando bancos de dados de até 281 terabytes. De telefones a sites, sua estabilidade, facilidade de uso e recursos robustos o tornam uma escolha ideal para muitos projetos, particularmente aqueles com necessidades moderadas de dados ou requisitos mais simples de gerenciamento de banco de dados.

Desenvolvimento banco de dados embutido

Projeto de código aberto libsearch no GitHub: Busca de texto completo sem índice para JavaScript

2024-12-29
Projeto de código aberto libsearch no GitHub: Busca de texto completo sem índice para JavaScript

libsearch é uma biblioteca de busca de texto completo em JavaScript de código aberto no GitHub que permite buscas de texto rápidas sem exigir um índice pré-construído. Ela utiliza o mecanismo de expressão regular altamente otimizado dos motores JavaScript modernos, transformando strings de consulta em filtros de expressão regular para busca e empregando um algoritmo TF-IDF aproximado para classificação. Esta biblioteca é adequada para aplicações simples que não exigem indexação complexa, sendo particularmente útil para prototipagem rápida e aplicativos web pequenos.

A vingança do programador: as tribulações de executar HelloWorld no z/OS

2024-12-29
A vingança do programador: as tribulações de executar HelloWorld no z/OS

Uma programadora, outrora despreocupada com a interação com o sistema operacional na pós-graduação, se viu lutando com o sistema z/OS da IBM anos depois para um post de blog. O z/OS, muito diferente dos ambientes modernos de engenharia de software, apresentou inúmeros desafios com sua interface baseada em texto, scripts JCL e convenções de nomenclatura exclusivas da IBM. O artigo detalha suas lutas na criação de arquivos (conjuntos de dados), usando o editor ISPF, alocação de conjuntos de dados, compilação, ligação, carregamento e tratamento de saída com SPOOL. Ele compartilha dicas práticas e lições aprendidas, um testemunho dos desafios de trabalhar com sistemas legados.

Desenvolvimento Mainframe IBM

Aplicativo de Simulação de Fluidos WebGL Lançado: Experimente Efeitos Realistas de Fluidos!

2024-12-29
Aplicativo de Simulação de Fluidos WebGL Lançado: Experimente Efeitos Realistas de Fluidos!

O aplicativo "Try Fluid Simulation" chegou! Usando WebGL, ele oferece simulações de fluidos impressionantemente realistas diretamente no seu navegador. Experimente o movimento hipnótico de líquidos, o fluxo e refluxo de ondas e muito mais, tudo com controles simples. Crie fluidos de várias formas e texturas com alguns cliques, testemunhando o poder dos motores físicos em ação. Este aplicativo é perfeito para desenvolvedores que estão aprendendo WebGL e entusiastas fascinados por gráficos de computador e simulação de fluidos. Mergulhe neste mundo fascinante de fluidos!

Desenvolvimento Simulação de Fluidos

resizer2: Gerencie janelas do Windows como no KDE/i3 com Win+Mouse

2024-12-29
resizer2: Gerencie janelas do Windows como no KDE/i3 com Win+Mouse

O resizer2 é um gerenciador de janelas para Windows que permite que você redimensione e mova janelas usando a tecla Win + mouse, semelhante aos gerenciadores de janelas KDE ou i3. Ele oferece recursos como mover, redimensionar, ajustar a opacidade, minimizar e maximizar janelas, mesmo em vários monitores. Embora exija privilégios de administrador para mover janelas do sistema e tenha algumas peculiaridades conhecidas (como incompatibilidade com alguns aplicativos em tela cheia), o resizer2 oferece uma experiência de gerenciamento de janelas mais eficiente e conveniente para usuários do Windows.

Configurando um Servidor de Email Pessoal no OpenBSD

2024-12-29

Este artigo fornece um guia passo a passo para configurar um servidor de email pessoal no OpenBSD. O autor detalha o processo, usando Opensmtpd, Dovecot, DKIMProxy e Spamd, oferecendo soluções para problemas comuns, como o limite de arquivos abertos do Dovecot. O guia cobre a seleção do servidor, a configuração do sistema, medidas de segurança e configurações detalhadas dos componentes, tornando-se um recurso valioso para usuários com alguma experiência em Linux.

Convoy abandona UUIDv4 e adota ULIDs: eficiência e escalabilidade na era do big data

2024-12-28

Durante uma migração de banco de dados de MongoDB para Postgres, a Convoy decidiu substituir o UUIDv4 por ULIDs como identificadores únicos. O artigo compara o UUIDv4 e o ULID, destacando as vantagens do ULID: capacidade de classificação lexicográfica, facilidade de uso em URLs e eficiência aprimorada de indexação de banco de dados, embora com velocidades de geração e inserção ligeiramente mais lentas. A Convoy escolheu ULIDs principalmente para resolver problemas de desempenho de paginação com grandes conjuntos de dados. Embora os ULIDs sejam marginalmente mais lentos para gerar, os ganhos de desempenho, especialmente para o processamento de dados em larga escala, são considerados úteis. O artigo também discute potenciais riscos de vazamento de informações de tempo e implicações para os dados do usuário de ULIDs, e menciona brevemente a possível adoção futura do UUIDv7.

Desenvolvimento Banco de dados

Fish Shell 4.0: Uma Reescrita Épica de C++ para Rust

2024-12-28

A equipe do Fish shell concluiu uma tarefa gigantesca: reescrever o Fish shell de C++ para Rust em quase dois anos. Devido às limitações nas ferramentas do C++, diferenças entre compiladores e plataformas, ergonomia e segurança de threads, a equipe escolheu o Rust para melhorar o desempenho, a segurança e a experiência do desenvolvedor. Usando uma abordagem de "Navio de Teseu", eles substituíram os componentes gradualmente, garantindo a estabilidade durante o processo. Embora tenham surgido desafios, como problemas de compatibilidade com o autocxx, a equipe lançou com sucesso a versão beta do Fish 4.0, com melhorias de desempenho, novos recursos e versões estáticas mais fáceis de instalar.

Desenvolvimento
1 2 185 186 187 189 191 192 193 201 202