Category: Desenvolvimento

LLMs Explicam Programas Lineares: De Projeto Paralelo a Pesquisa da Microsoft

2025-02-10

Em 2020, enquanto trabalhava na cadeia de suprimentos do Google, o autor desenvolveu um projeto paralelo para ajudar a entender programas lineares (LPs). Quando os LPs se tornam complexos, entender seus resultados é desafiador até mesmo para especialistas. A abordagem do autor envolveu modificar interativamente o modelo e comparar os resultados para explicar o comportamento do modelo, descobrindo que adicionar metadados semânticos simplificou o processo. Recentemente, pesquisadores da Microsoft publicaram um artigo usando modelos de linguagem grandes (LLMs) para traduzir consultas em linguagem natural em consultas estruturadas, obtendo um resultado semelhante. O autor acredita que os LLMs são uma ótima solução para traduzir a ambiguidade humana em consultas estruturadas, processadas por um sistema de otimização clássico robusto, com os resultados resumidos pelo LLM. Embora o trabalho anterior do autor tenha permanecido não publicado, ele argumenta que entender as explicações de sistemas mais simples é crucial para explicar sistemas de IA mais complexos.

PDFSyntax: Uma ferramenta de visualização de PDF em Python sem dependências

2025-02-10
PDFSyntax: Uma ferramenta de visualização de PDF em Python sem dependências

PDFSyntax é uma biblioteca Python independente, sem dependências, que visualiza a estrutura interna de arquivos PDF como HTML interativo. Ele analisa, descompacta e formata dados PDF, adicionando hiperlinks e índices para permitir navegação lógica pelo PDF, incluindo a travessia de objetos e o rastreamento de revisões. Uma simples operação de linha de comando gera HTML estático visualizável diretamente em um navegador sem exigir JavaScript. Recursos incluem indexação reversa, indexação de páginas, um mapa de miniaturas, extração de fluxos de objetos, descompressão de fluxos e realce de sintaxe. Arquivos criptografados ainda não são suportados.

Desenvolvimento

Python 3.14: Avaliação de Anotações Diferida e um Novo Interpretador

2025-02-10
Python 3.14: Avaliação de Anotações Diferida e um Novo Interpretador

O Python 3.14 chegou com atualizações empolgantes! Os PEPs 649 e 749 introduzem a avaliação de anotações diferida, aumentando o desempenho e simplificando a escrita de anotações. Um novo interpretador baseado em chamadas de cauda oferece melhorias significativas de velocidade (média geométrica de 9-15% no pyperformance) em compiladores e arquiteturas específicos. Finalmente, o PEP 741 aprimora a API C de configuração do Python, preparando o caminho para melhorias futuras. Essas atualizações se combinam para tornar o Python mais rápido e poderoso!

Desenvolvimento Anotações

K: Uma Linguagem de Programação Concisa, Rápida e Orientada a Vetores

2025-02-10

A família de linguagens K é uma série de linguagens concisas, rápidas e orientadas a vetores, projetadas por Arthur Whitney. Não se trata de uma única versão, mas sim de uma sequência em evolução de iterações levemente incompatíveis. Este livro concentra-se em implementações de código aberto da linguagem K e na comunidade em torno delas, incluindo ngn/k (k6) e oK (k5/6). Explora as características da linguagem K, a curva de aprendizado e a relação com APL e J. Embora conhecida por sua concisão e velocidade, a linguagem K apresenta uma curva de aprendizado íngreme, exigindo prática dedicada.

Rust tentando alcançar Ada: Uma batalha na programação de segurança crítica

2025-02-10
Rust tentando alcançar Ada: Uma batalha na programação de segurança crítica

Ada domina a área de programação de segurança crítica há mais de quatro décadas. Nos últimos dez anos, Rust tentou competir, com resultados variados. Esta palestra explorará os poderosos recursos do Ada para garantir código sem bugs, particularmente suas declarações robustas de subtipos e facilidade de uso, e compará-los às capacidades do Rust, destacando onde o Rust fica aquém e seu progresso em alcançar Ada.

A Arte das Variáveis Globais em C++

2025-02-10

Este artigo explora técnicas eficazes para usar variáveis globais em C++. O autor argumenta que as variáveis globais não são inerentemente ruins; a chave está em sua aplicação adequada. O artigo apresenta vantagens e desvantagens, descrevendo quatro regras: 1. Torne difícil o uso incorreto; 2. Restaure os valores originais após alterar os estados observáveis; 3. Não retorne referências ou ponteiros para o estado interno; 4. Não torne o código difícil de testar. Por meio de exemplos de código, o autor demonstra o uso correto e as possíveis armadilhas, recomendando variáveis locais de thread para multithreading.

Desenvolvimento Variáveis Globais

Sandbox baseado em processo do Verona: Executando código não confiável com segurança

2025-02-10
Sandbox baseado em processo do Verona: Executando código não confiável com segurança

Este projeto descreve um mecanismo de sandbox baseado em processo para Verona, projetado para executar com segurança código externo não confiável. Aproveitando o isolamento de processo, ele não requer modificações no SO, executando bibliotecas não confiáveis em uma região de memória compartilhada e se comunicando com um processo pai confiável por meio de um IPC cuidadosamente projetado. O mecanismo suporta callbacks e emulação de chamadas de sistema, garantindo a segurança do processo pai; mesmo que comprometido, o sandbox não pode acessar a memória do pai ou recursos do sistema. Atualmente, suporta tecnologias de sandbox Capsicum e seccomp-bpf, e visa melhorar a eficiência e compatibilidade.

Desenvolvimento

Rust vs. Ada: Um Duelo de Segurança de Memória

2025-02-10

Este artigo compara a eficácia do Rust e do Ada na prevenção de erros comuns relacionados à memória. O Rust se destaca na prevenção direta de erros, mas a evitação de alocação dinâmica de memória pelo Ada e o suporte à prova formal de correção ajudam a evitar completamente muitos erros comuns. O artigo examina erros comuns de memória, como vazamentos, estouros de buffer, uso após liberação, liberação dupla e condições de corrida, comparando como cada linguagem os lida. Embora o Rust possua verificações mais rigorosas em tempo de compilação, as capacidades de análise estática do Ada e o controle mais estrito de ponteiros oferecem uma alternativa convincente. Em última análise, o autor conclui que ambas as linguagens oferecem pontos fortes exclusivos: o Rust prioriza a segurança em tempo de compilação, enquanto o Ada enfatiza a prevenção de erros desde o início.

Desenvolvimento

Sete Pecados Capitais de Diagramas de Arquitetura Técnica

2025-02-10
Sete Pecados Capitais de Diagramas de Arquitetura Técnica

Este artigo descreve sete erros comuns a serem evitados ao criar diagramas de arquitetura técnica, oferecendo soluções para cada um. Esses erros incluem: criar diagramas teóricos em vez de concretos; misturar níveis de abstração; incluir muitas preocupações sobrepostas; setas sem rótulo; composição enganosa; contexto ausente; e texto explicativo ausente. O artigo enfatiza a importância de transmitir informações do sistema de forma clara e precisa, sugerindo o uso de vários diagramas para lidar com a sobrecarga de informações e adicionar rótulos e texto explicativo para melhorar a compreensão e a eficácia dos diagramas de arquitetura.

Frupidity: O Assassino Silencioso da Produtividade e Inovação

2025-02-10
Frupidity: O Assassino Silencioso da Produtividade e Inovação

A frugalidade é uma virtude, mas a frupidity – a busca imprudente de cortes de custos à custa da produtividade – é um assassino silencioso. Este artigo usa o exemplo de uma empresa fictícia, PennyTech, para ilustrar como a economia em ferramentas, infraestrutura e viagens leva a perdas significativas em eficiência e moral. O autor argumenta que a verdadeira eficiência reside em gastos inteligentes, não em cortes de custos cegos, e enfatiza a importância de valorizar o tempo dos engenheiros e evitar decisões de curto prazo que, em última análise, custam mais do que economizam.

Desenvolvimento

Adeus, Geradores de Sites Estáticos: Meu Blog Agora É HTML Puro

2025-02-10

Cansado das constantes atualizações e problemas de compatibilidade com geradores de sites estáticos, meu blog passou por inúmeras iterações, finalmente se estabelecendo em HTML puro, usando md-block para Markdown e highlight.js para realce de sintaxe. Os players de áudio e vídeo embutidos no navegador e a longevidade do HTML me libertam das dores de cabeça de compatibilidade de temas e garantem a disponibilidade de conteúdo a longo prazo.

Desenvolvimento

Obrigado, Bootstrap: Uma Ode de um Desenvolvedor

2025-02-10

O autor utiliza extensivamente o Bootstrap para CSS em seus projetos pessoais, como Anki Books e Larder. Ele elogia a facilidade do Bootstrap em criar widgets de IU interativos. Um exemplo-chave detalha a personalização do tema do Larder usando as variáveis de cor do Bootstrap, adotando as cores da bandeira transgênero. O autor expressa satisfação com o resultado e destaca a eficiência do Bootstrap em propagar mudanças de cor por todo o site, economizando tempo de desenvolvimento significativo e simplificando o design de cores complexo.

Desenvolvimento

py3-TTS-Wrapper: Biblioteca unificada de texto para fala multiplataforma

2025-02-10
py3-TTS-Wrapper: Biblioteca unificada de texto para fala multiplataforma

py3-TTS-Wrapper é uma biblioteca Python que fornece uma interface unificada para fácil integração com vários serviços de texto para fala (TTS), como AWS Polly, Google TTS e Microsoft Azure TTS. Suporta SSML para controle aprimorado, permitindo a personalização de voz, idioma, volume, tom e taxa. Recursos incluem streaming, saída de arquivo e suporte a mecanismos off-line (eSpeak-NG, PicoTTS). Se você precisa de TTS em seu projeto ou deseja explorar diferentes mecanismos TTS, o py3-TTS-Wrapper simplifica o processo.

Desenvolvimento

arXivLabs: Projetos experimentais com colaboração da comunidade

2025-02-09
arXivLabs: Projetos experimentais com colaboração 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

Pontos Dolorosos do Usuário de Terminal: Até os Experientes Enfrentam Dificuldades

2025-02-09

Uma pesquisa com 1600 usuários de terminal revela frustrações persistentes, mesmo entre usuários experientes (40% com mais de 21 anos de experiência). As principais questões incluem lembrar a sintaxe de comandos (awk, jq, sed, etc.), atalhos de teclado (tmux, editores de texto) e navegar pelas inconsistências entre sistemas (diferenças de SO, variações de editores). A configuração de cores, copiar/colar (através de SSH, tmux, etc.), a dificuldade em descobrir ferramentas úteis, uma curva de aprendizado íngreme, a administração do histórico do shell e a documentação deficiente também surgiram com frequência. Os resultados destacam as dificuldades contínuas que até mesmo usuários experientes enfrentam com detalhes minuciosos do terminal, enfatizando a necessidade de uma experiência de usuário melhorada.

Três Dias de Inferno: De Utilitário Python para Aplicativo Web

2025-02-09
Três Dias de Inferno: De Utilitário Python para Aplicativo Web

O autor passou três dias tentando converter um utilitário Python simples em um aplicativo web. Tentativas iniciais usando as estruturas Flask e Bottle falharam devido a problemas de CORS e às complexidades das solicitações assíncronas. Uma incursão na API Fetch do JavaScript e uma API REST do Node.js se mostraram muito trabalhosas para manter. No final, o autor voltou ao aplicativo Bottle original, aceitando o tempo de espera do usuário para a conclusão da solicitação em troca de um código mais simples e fácil de manter. Isso destaca a importância das escolhas de tecnologia — às vezes, a solução mais simples é a melhor.

Desenvolvimento

Melhores Práticas do PostgreSQL: Construindo um Banco de Dados Robusto e Confiável

2025-02-09
Melhores Práticas do PostgreSQL: Construindo um Banco de Dados Robusto e Confiável

Este artigo descreve as melhores práticas para bancos de dados PostgreSQL, cobrindo design de banco de dados, otimização de desempenho, segurança, backup e recuperação, manutenção e monitoramento e práticas de desenvolvimento. De convenções de nomenclatura e design de esquema a estratégias de indexação, otimização de consultas, controle de acesso, políticas de senha, estratégias de backup e métricas de monitoramento, o artigo fornece orientação detalhada com exemplos de código para ajudar os desenvolvedores a construir um sistema de banco de dados PostgreSQL robusto, eficiente e seguro. Configurações de alta disponibilidade, incluindo configuração de replicação e balanceamento de carga, também são enfatizadas para garantir a confiabilidade e escalabilidade do sistema de banco de dados.

Desenvolvimento Melhores Práticas

Prêmios Ada/SPARK Crate of the Year Anunciados!

2025-02-09
Prêmios Ada/SPARK Crate of the Year Anunciados!

Os resultados dos prêmios Ada/SPARK Crate of the Year 2024 foram anunciados! Lionel Draghi venceu o prêmio Ada Crate of the Year com o BBT, uma ferramenta de linha de comando que utiliza especificações de comportamento em Markdown fáceis de entender para testes automatizados. Kevin Chadwick levou para casa o prêmio SPARK Crate of the Year com o elogs, uma biblioteca de log com segurança de memória (certificada em Nível Prata SPARK) que permite aos usuários especificar o comprimento máximo da mensagem. Por fim, o interpretador Lisp incorporável de Brent Seidel, bbs_lisp, venceu o prêmio Embedded Crate of the Year, mostrando os pontos fortes do Ada em sistemas embarcados.

Desenvolvimento

A longa guerra do Rust pelo kernel do Linux

2025-02-09
A longa guerra do Rust pelo kernel do Linux

Rust está avançando no kernel do Linux, mas a transição será longa e contenciosa. Embora o Rust ofereça vantagens significativas em segurança de memória e seja apoiado por empresas como o Google, sua adoção enfrenta forte resistência dentro da comunidade do kernel. Preocupações com sua curva de aprendizado íngreme e desafios de integração com o código C existente geraram debates acalorados, até mesmo descritos como uma “guerra religiosa”. No entanto, os proponentes argumentam que o Rust melhora a estabilidade e a segurança do kernel, atraindo mais desenvolvedores. Em última análise, a substituição completa do C pelo Rust depende da maturidade tecnológica e do consenso da comunidade.

Desenvolvimento

Domando o sistema de arquivos imutável do Steam Deck com Nix e Home Manager

2025-02-09
Domando o sistema de arquivos imutável do Steam Deck com Nix e Home Manager

O sistema de arquivos imutável do Steam Deck torna difícil a instalação de pacotes que persistem em atualizações do sistema. Este guia mostra como usar Nix e Home Manager para resolver isso de forma elegante. Nix é um gerenciador de pacotes declarativo; basta listar os pacotes desejados em um arquivo de configuração, e ele cuida da instalação. Home Manager simplifica o uso do Nix. O guia detalha a instalação do Nix e Home Manager no seu Steam Deck, gerenciamento de pacotes (instalação, remoção) e oferece dicas como criar atalhos na área de trabalho e executar a coleta de lixo.

Desenvolvimento

arXivLabs: Construindo novos recursos do arXiv com colaboradores da comunidade

2025-02-09
arXivLabs: Construindo novos recursos do arXiv com colaboradores da comunidade

arXivLabs é uma estrutura que permite que desenvolvedores colaborem com a comunidade arXiv para criar e compartilhar novos recursos diretamente no site do arXiv. Os participantes devem aderir aos valores essenciais do arXiv de abertura, comunidade, excelência e privacidade dos dados do usuário. Se você tiver uma ideia para um projeto que agregará valor à comunidade arXiv, saiba mais sobre o arXivLabs.

Desenvolvimento

Assinatura de Solicitação de API: Armadilhas e Boas Práticas

2025-02-09

Este artigo examina os desafios de segurança da assinatura de solicitações de API, especialmente as dificuldades de assinar objetos JSON. O autor destaca que, embora a assinatura HMAC simples seja segura, assinar diretamente dentro do objeto JSON pode levar a vários problemas, como várias representações equivalentes de JSON resultando em falhas de validação de assinatura. O artigo compara e analisa vários métodos de assinatura, incluindo a canonização de JSON, a adição de dados de assinatura redundantes e o uso de formatos alternativos. Exemplos de esquemas de assinatura da AWS e do Flickr ilustram os riscos de segurança de implementações com falhas. Por fim, o autor recomenda priorizar o TLS e evitar a assinatura embutida em JSON, optando por assinatura externa para garantir a segurança da solicitação da API.

Escalonando PostgreSQL: Problemas estranhos e soluções para startups de alto crescimento

2025-02-09
Escalonando PostgreSQL: Problemas estranhos e soluções para startups de alto crescimento

Este post aborda os desafios comuns de escalonamento do PostgreSQL enfrentados por startups de alto crescimento. Ele cobre problemas como contenção de bloqueio, inchaço de índice, ineficiências de armazenamento TOAST e as complexidades de escalonamento vertical versus horizontal, tabelas somente de anexação versus tabelas com muitas atualizações e multilocatário. Para cada problema, são oferecidas soluções práticas, que vão desde ajustes de parâmetros do banco de dados e ferramentas de concorrência até repensar os padrões de acesso a dados e utilizar recursos como bloqueios consultivos. O autor também explora tópicos avançados, como migrações de esquema sob carga, atualizações com tempo de inatividade zero e estratégias eficientes de consultas COUNT. Este é um recurso valioso para engenheiros que se esforçam para otimizar o desempenho do PostgreSQL em ambientes exigentes.

Kanata: Remapeador de teclado multiplataforma para maior conforto

2025-02-09
Kanata: Remapeador de teclado multiplataforma para maior conforto

Kanata é um remapeador de teclado multiplataforma para Linux, macOS e Windows. Ele permite múltiplas camadas de funcionalidade de teclas e personalização avançada (toque e segurar, macros, Unicode). Inspirado no kmonad, mas construído com Rust, o Kanata oferece suporte a plataformas mais amplas e uma interface mais amigável. Seu objetivo é trazer a poderosa personalização do QMK para qualquer teclado, independentemente do hardware, melhorando o conforto e a produtividade.

Desenvolvimento

O Desempenho Confuso da Coleta de Lixo Geracional

2025-02-09

O autor realizou experimentos para verificar os benefícios de desempenho da coleta de lixo geracional. Surpreendentemente, os resultados mostraram que a coleta de lixo geracional levou mais tempo do que a coleta de lixo de heap inteiro em vários benchmarks. O artigo explora várias causas potenciais, incluindo a sobrecarga da barreira de gravação, a seleção do tamanho da creche, a representatividade do benchmark e a frequência de coleta. O autor conclui que são necessárias investigações adicionais para determinar a causa raiz.

Desenvolvimento

Entendendo arquiteturas baseadas em células através de um apocalipse zumbi

2025-02-09
Entendendo arquiteturas baseadas em células através de um apocalipse zumbi

Este artigo usa um cenário vívido de cerco zumbi para explicar arquiteturas baseadas em células. O autor compara uma cidade a um sistema, com cada bairro atuando como uma 'célula' independente. Mesmo que um bairro caia, a cidade inteira não entra em colapso. Essa estratégia de isolamento, refletindo os princípios de design de arquiteturas baseadas em células, reduz efetivamente o impacto de pontos únicos de falha, garantindo a estabilidade do sistema. Por meio dessa analogia, o artigo explica claramente as vantagens e a importância das arquiteturas baseadas em células.

Ramificação Condicional na GPU: Mito x Realidade

2025-02-09

Este artigo desmascara um equívoco de longa data na computação gráfica: operadores ternários em GPUs não são ramificações condicionais. O autor usa exemplos de código e análise de código assembly para mostrar que operadores ternários ou instruções if em GPUs implementam instruções de movimentação condicional, não saltos de ramificação que alteram o ponteiro de instrução. Essas movimentações condicionais são mais eficientes, e a suposta 'otimização' usando a função step() na verdade reduz o desempenho. O artigo apela para a correção desse mal-entendido de 20 anos.

Desenvolvimento Otimização

Diretório de Exemplos FlashLearn: Guia de Início Rápido para Modelos de IA

2025-02-09
Diretório de Exemplos FlashLearn: Guia de Início Rápido para Modelos de IA

O FlashLearn fornece um diretório de scripts de exemplo para que os usuários possam começar rapidamente a usar seus modelos de IA. Basta instalar o FlashLearn, definir sua chave de API e executar os scripts Python fornecidos (por exemplo, sentiment_classification.py) para experimentar funcionalidades como classificação de sentimento. Os resultados são exibidos no console e em um arquivo results.jsonl.

Desenvolvimento scripts Python

A Magia Mundana da Tecnologia: Abraçando a Rotina

2025-02-09
A Magia Mundana da Tecnologia: Abraçando a Rotina

Este artigo usa um truque de cartas como metáfora para o sucesso na indústria de tecnologia: abraçar o trabalho tedioso. Um mágico gasta inúmeras horas preparando dúzias de caixas de chá, colocando um cartão específico em cada saquinho de chá, para realizar um feito aparentemente impossível. Isso reflete problemas aparentemente intratáveis na tecnologia. O autor relata ter enfrentado pessoalmente dois mil relatórios de bugs não marcados, revertendo um projeto parado. Gastando semanas meticulosamente organizando, categorizando e priorizando esses relatórios, a equipe pôde resolver os problemas de forma eficiente. O artigo enfatiza que, às vezes, tarefas aparentemente impossíveis produzem resultados mágicos simplesmente por estar disposto a fazer o trabalho chato e repetitivo.

Desenvolvimento trabalho repetitivo

Acesso Remoto ao Home Assistant sem IP Público: A Solução ZeroTier

2025-02-09

Este artigo detalha como acessar remotamente seu servidor Home Assistant usando o serviço gratuito ZeroTier, mesmo sem um endereço IP público. O autor explica por que muitos usuários domésticos com internet sem fio não têm acesso remoto direto, e depois descreve a configuração do ZeroTier: criação de conta, configuração de rede virtual, configuração do complemento Home Assistant e conexão de dispositivo móvel. O autor conclui alertando que o ZeroTier depende de infraestrutura de terceiros, recomendando a obtenção de um IP público e a configuração de um túnel VPN padrão para segurança a longo prazo.

Desenvolvimento
1 2 154 155 156 158 160 161 162 204 205