Category: Desenvolvimento

Executando LLMs Localmente: Privacidade, Custo e Experimentação

2025-03-11
Executando LLMs Localmente: Privacidade, Custo e Experimentação

Este artigo explora as vantagens e os métodos de executar modelos de linguagem grandes (LLMs) localmente. Embora reconhecendo que LLMs locais não corresponderão aos serviços em nuvem em termos de desempenho, o autor destaca seus benefícios para privacidade, controle de custos e desenvolvimento experimental. Três ferramentas são apresentadas: Ollama (fácil de usar, extensa biblioteca de modelos), Llama.cpp (multiplataforma, poderosa) e Llamafiles (executável único, fácil compartilhamento). O artigo também abrange aspectos cruciais como seleção de modelos, parâmetros, quantização e capacidades do modelo, alertando sobre os tamanhos dos arquivos do modelo e segurança. Em última análise, executar LLMs localmente oferece aos desenvolvedores uma abordagem flexível e controlável para o desenvolvimento de IA.

UUIDv7: Um novo padrão de UUID baseado em tempo

2025-03-11
UUIDv7: Um novo padrão de UUID baseado em tempo

O UUIDv7 é um novo padrão de UUID baseado em tempo que combina os benefícios dos UUIDs tradicionais com sistemas distribuídos modernos e escaláveis. Ao contrário do UUIDv4 gerado aleatoriamente, o UUIDv7 oferece identificadores globalmente exclusivos e ordenados por tempo, tornando-o ideal para aplicações que exigem carimbos de data/hora e exclusividade. Ele aborda preocupações de privacidade associadas ao UUIDv1 e mantém compatibilidade com bibliotecas UUID existentes. Casos de uso importantes incluem sistemas distribuídos, indexação de bancos de dados, registro e monitoramento e comércio eletrônico.

Desenvolvimento

Reduzindo o tamanho de build do Godot: de 93 MB para 6,4 MB

2025-03-11
Reduzindo o tamanho de build do Godot: de 93 MB para 6,4 MB

Este artigo detalha como reduzir drasticamente o tamanho de build de projetos do motor de jogo Godot. O autor otimiza sistematicamente um projeto, começando com a desativação de 3D, servidores de texto avançados e módulos desnecessários. Técnicas como o uso da ferramenta de compressão UPX, otimização WebAssembly (wasm-opt) e compressão Brotli também são exploradas. O artigo usa um simples jogo 2D de rebote como exemplo, mostrando o impacto de cada etapa com comparações claras de antes e depois. É um guia prático que abrange várias estratégias de otimização e seus prós e contras.

Desenvolvimento Otimização de Engine

Compilador TypeScript Nativo: Aumento de Desempenho de 10x

2025-03-11
Compilador TypeScript Nativo: Aumento de Desempenho de 10x

A equipe do TypeScript anunciou uma porta nativa do compilador e das ferramentas do TypeScript para melhorar dramaticamente o desempenho. Essa implementação nativa deve acelerar drasticamente a inicialização do editor, reduzir a maioria dos tempos de compilação em 10 vezes e reduzir substancialmente o uso de memória. Testes iniciais mostram melhorias na velocidade de compilação de mais de 10 vezes para vários projetos grandes (por exemplo, VS Code, Playwright). O TypeScript nativo futuro (previsto como TypeScript 7) suportará refatorações mais avançadas, análise de código mais profunda e lançará a base para ferramentas de desenvolvimento de IA de próxima geração. O TypeScript 6 (baseado em JS) continuará sendo mantido para garantir uma transição suave.

Cinder JIT: Representação Eficiente de Tipos Usando Bitsets e Semirreticulados

2025-03-11
Cinder JIT: Representação Eficiente de Tipos Usando Bitsets e Semirreticulados

O compilador JIT Cinder emprega uma representação de tipo inteligente, tratando tipos como conjuntos (mesmo reticulados) e escolhendo uma representação compacta de bitset. Este artigo examina como o Cinder utiliza bitsets e estruturas de semirreticulado para tratamento eficiente de informações de tipo, cobrindo a representação de tipos básicos, uniões de tipos e especialização. Codificando informações de tipo em bitsets, o Cinder representa efetivamente uniões de tipos e permite distinções de tipos mais granulares. Além disso, o Cinder introduz um mecanismo de especialização para rastrear o valor específico de objetos individuais, melhorando ainda mais a eficiência de otimização do compilador. O artigo também discute o tipo Bottom e detalhes sobre a geração da rede de tipos.

Desenvolvimento Sistema de tipos Bitsets

Migração de banco de dados com tempo de inatividade zero verificada com PlusCal

2025-03-11

Esta postagem de blog detalha como o autor usou PlusCal, uma DSL para TLA+, e verificação formal para garantir a correção de uma migração de banco de dados com tempo de inatividade zero. Um modelo PlusCal foi construído simulando operações de usuário Upsert, Delete e Get em um banco de dados, juntamente com um processo de migração em segundo plano. Ao simular um sistema sem migração e um com migração, e verificar a consistência dos resultados da operação Get em todos os estados, o autor garantiu a correção do algoritmo de migração. A verificação formal ajudou na detecção precoce de falhas, como o tratamento inadequado de TOMBSTONES, e destacou a importância de operações atômicas, como a atomicidade da verificação e inserção de dados durante a migração.

Desenvolvimento

8 Padrões Visuais para Melhorar a Legibilidade do Código

2025-03-11
8 Padrões Visuais para Melhorar a Legibilidade do Código

Um programador auditando código descobriu que estava mentalmente fatigado apesar do código de alta qualidade. O culpado não era a complexidade ciclomática, mas a legibilidade. Pesquisas revelaram oito padrões visuais para melhorar a legibilidade: minimizar a contagem de linhas/operadores/operandos; evitar novidades em formas de funções, operadores ou açúcar sintático; agrupar cadeias longas de funções; manter os condicionais curtos; evitar gotos; minimizar a aninhamento; usar nomes de variáveis descritivos e visualmente distintos; e encurtar a duração de vida das variáveis. Esses padrões ajudam a melhorar a legibilidade do código, reduzir bugs e aumentar a produtividade do desenvolvedor.

Desenvolvimento legibilidade de código

GCC 15 terá suporte para COBOL!

2025-03-11

Uma grande atualização está chegando ao compilador GCC 15: o suporte ao front-end da linguagem COBOL foi mesclado! Esta é uma etapa significativa para o suporte COBOL do GCC, facilitando a migração de aplicativos COBOL legados de mainframes para ambientes Linux e de nuvem. Embora a popularidade do COBOL não seja mais o que era, essa fusão ainda é uma surpresa bem-vinda. Os desenvolvedores podem usar o comando `gcobol` para invocar o front-end do compilador COBOL. Espere o suporte COBOL, juntamente com muitos outros recursos, na versão estável do GCC 15.1 nas próximas semanas.

Desenvolvimento

Assistente de Pesquisa Profunda Local: Uma poderosa ferramenta de pesquisa de IA combinando LLMs e pesquisa na web

2025-03-11
Assistente de Pesquisa Profunda Local: Uma poderosa ferramenta de pesquisa de IA combinando LLMs e pesquisa na web

Um poderoso assistente de pesquisa com tecnologia de IA que realiza análises profundas e iterativas usando vários LLMs e pesquisas na web. O sistema pode ser executado localmente para garantir privacidade ou configurado para usar LLMs baseados em nuvem para capacidades aprimoradas. Ele suporta processamento local (usando modelos Ollama) e LLMs em nuvem (Claude, GPT) e pode analisar o conteúdo completo da página da web, em vez de apenas trechos. Além disso, ele oferece opções de saída ricas, incluindo descobertas de pesquisa detalhadas com citações, relatórios de pesquisa abrangentes e resumos rápidos, e possui pesquisa de documentos locais (RAG), permitindo que os usuários pesquisem e recuperem conteúdo de suas próprias coleções de documentos.

Desenvolvimento Ferramenta de Pesquisa

Sidekick: Um poderoso aplicativo LLM local para macOS

2025-03-11
Sidekick: Um poderoso aplicativo LLM local para macOS

Sidekick é um aplicativo LLM nativo para macOS que roda completamente localmente, acessando seus arquivos, pastas e sites sem precisar de softwares adicionais. Usando tecnologia RAG, ele lida com grandes conjuntos de dados, suporta vários modelos de raciocínio, incluindo um interpretador de código, gera imagens e possui recursos avançados de renderização Markdown, além de ferramentas de assistente de escrita integradas. O Sidekick prioriza a simplicidade e a facilidade de uso, operando totalmente offline, sem rastreamento de conversas e com uma abordagem de código aberto para transparência.

Desenvolvimento LLM local

Uma Odisseia de 9 Meses: Implementando Bel em Clojure

2025-03-11

Este post detalha uma jornada de nove meses na implementação da linguagem de programação Bel em Clojure. Inicialmente concebido como um projeto de fim de semana, o autor encontrou vários desafios: criar um analisador personalizado para a sintaxe única do Bel; lidar com o estilo de passagem de continuação do Bel, o que exigiu uma reimplementação da pilha de chamadas do interpretador para superar problemas de estouro de pilha; e otimizar o desempenho usando estruturas de dados Java. O autor aprofunda os recursos poderosos do Bel, como `lit`, `globe`, `scope`, `mac` e `err`, mostrando as capacidades habilitadas por continuações. Embora o projeto ainda esteja em desenvolvimento, o autor destaca as valiosas lições aprendidas ao longo dessa experiência desafiadora, mas gratificante.

Desenvolvimento

Automatizando Mudanças de Endereço IP e Rede no Kubernetes

2025-03-11
Automatizando Mudanças de Endereço IP e Rede no Kubernetes

O cluster Kubernetes do autor depende de endereços IP atribuídos dinamicamente, criando vulnerabilidades na sua configuração de rede. Para resolver isso, foi criada uma implantação Kubernetes que verifica e atualiza periodicamente os endereços IP públicos do seu gateway Unifi usando a API Unifi. Ao detectar mudanças nos endereços IP ou redes IPv6, ela atualiza automaticamente as regras do firewall Unifi e os recursos de serviço Kubernetes (incluindo a configuração MetalLB), e notifica o usuário via MQTT. O programa é escrito em Python e utiliza as APIs Kubernetes e Unifi para automação.

Shef: Crie receitas de shell sem a bagunça

2025-03-11
Shef: Crie receitas de shell sem a bagunça

Shef é uma poderosa ferramenta de linha de comando que permite criar fluxos de trabalho complexos de shell sem o trabalho de escrever scripts bash intrincados. Inspirado no CyberChef, o Shef usa um formato YAML simples para encadear comandos, incorporar prompts interativos, implementar loops e lógica condicional e criar receitas reutilizáveis. Ele simplifica a criação de scripts shell oferecendo recursos como criação de modelos, transformações e tratamento fácil de erros, tornando-o uma ferramenta inovadora para automatizar tarefas e gerenciar processos complexos.

Desenvolvimento

Algoritmo de organização de ícones do Explorador do Windows O(n²) causa travamentos

2025-03-10
Algoritmo de organização de ícones do Explorador do Windows O(n²) causa travamentos

Um usuário do Windows encontrou travamentos no explorador de arquivos, e o autor usou ferramentas de análise de desempenho para identificar o culpado: um algoritmo ineficiente de organização de ícones. A complexidade de tempo O(n²) do algoritmo resultou em tempos excessivamente longos de organização com muitos ícones, mesmo quando ocultos. O autor verificou isso experimentalmente, destacando a necessidade de os desenvolvedores evitarem algoritmos tão ineficientes.

Desenvolvimento

Você é péssimo em CSS: Uma Resenha do Livro

2025-03-10

O livro 'You Suck At CSS' de Rex Riepe não se trata de evitar CSS, mas sim de dominá-lo de forma eficiente. O livro é direcionado a iniciantes e especialistas, com o objetivo de ajudar desenvolvedores a concluir tarefas de front-end rapidamente, enfatizando a eficiência em equipe. Ele suporta a estrutura California Stylesheets e foca no desenvolvimento web rápido usando tecnologias modernas. O livro também contextualiza o porquê do CSS e seu ecossistema serem como são.

Desenvolvimento

Repensando rastreadores de bugs: uma separação de preocupações

2025-03-10

Após anos usando vários rastreadores de bugs, o autor identifica uma falha fundamental em sua representação de dados, levando a frustrações recorrentes. Três problemas principais são destacados: um campo unificado de 'Versão de Correção' que confunde fatos e planos; um sistema de dois níveis de Status e Resolução que confunde a realidade do código com intenções futuras; e a confusão entre listas de bugs e listas de tarefas, criando dificuldades para tarefas não relacionadas a bugs. O autor propõe um princípio de 'separação de preocupações', sugerindo uma divisão em tabelas de 'fatos' e 'planos'. A tabela de fatos registra informações objetivas sobre bugs (existência, versão, gravidade), enquanto a tabela de planos acompanha intenções, cronogramas e prioridades subjetivas. Essa separação simplifica o rastreamento de bugs, acomoda melhor diferentes tipos de projetos e até permite a omissão completa da tabela de planos para projetos focados apenas na resolução de bugs.

Desenvolvedor de 55 anos enfrenta 10 anos de prisão por sabotar a rede de seu antigo empregador

2025-03-10
Desenvolvedor de 55 anos enfrenta 10 anos de prisão por sabotar a rede de seu antigo empregador

Um desenvolvedor de software de 55 anos enfrenta até 10 anos de prisão por implantar código malicioso que sabotou a rede de seu antigo empregador, causando supostamente centenas de milhares de dólares em perdas. Davis Lu, que trabalhou na Eaton Corp. por cerca de 11 anos, ficou aparentemente insatisfeito com uma "reorganização" corporativa em 2018 que "reduziu suas responsabilidades". Seus esforços para sabotar a rede começaram naquele ano, e no ano seguinte, ele havia implantado diferentes formas de código malicioso, criando "loops infinitos" que excluíam arquivos de perfil de colegas de trabalho, impedindo logins legítimos e causando travamentos do sistema. Um 'interruptor de desligamento' chamado 'IsDLEnabledinAD', aparentemente uma abreviação de 'Is Davis Lu enabled in Active Directory', ativou-se automaticamente no dia da demissão de Lu em 2019, afetando usuários da Eaton Corp. globalmente.

O Dilema do Mantenedor de Código Aberto: Como Realmente Ajudar

2025-03-10

Um desenvolvedor no Hacker News destaca os desafios enfrentados pelos mantenedores de código aberto. Grandes organizações dependem desses projetos para economizar custos, mas raramente contribuem de volta, deixando os mantenedores sobrecarregados. O problema principal é a comunicação deficiente: os mantenedores carecem de diretrizes claras de contribuição, deixando os colaboradores inseguros sobre como ajudar efetivamente. O autor sugere que os mantenedores indiquem claramente suas necessidades — se aceitam PRs, como enviar relatórios de bugs e se aceitam apoio financeiro — para melhorar a eficiência e a colaboração.

Desenvolvimento manutenção

Livro Didático de Aprendizado por Reforço de Sucesso: Fundamentos Matemáticos e Vídeos Acompanhantes

2025-03-10
Livro Didático de Aprendizado por Reforço de Sucesso: Fundamentos Matemáticos e Vídeos Acompanhantes

Um livro didático de aprendizado por reforço que recebeu mais de 5.000 estrelas, oferecendo uma introdução matemática, porém acessível, aos conceitos fundamentais, problemas e algoritmos clássicos. O livro inclui vários exemplos e é acompanhado por vídeos de palestras em chinês e inglês (disponíveis no Bilibili e YouTube). Desenvolvido ao longo de anos de experiência em ensino, é adequado para alunos de graduação, pós-graduação, pesquisadores e profissionais.

Desenvolvimento

Três Passos para Implantações com Zero Downtime no AWS EKS

2025-03-10
Três Passos para Implantações com Zero Downtime no AWS EKS

O engenheiro Jakob, da Glasskube, compartilha sua experiência em alcançar implantações com zero downtime no AWS EKS. O artigo mergulha no funcionamento do AWS Load Balancer Controller, destacando dois potenciais problemas de inatividade durante atualizações contínuas: atrasos na verificação de integridade e atrasos na terminação de pods. Três soluções são apresentadas: habilitar Pod Readiness Gates, implementar o desligamento suave do aplicativo e usar um contêiner sidecar ou adicionar um atraso de terminação no aplicativo. Essas três etapas previnem erros 502/504 durante atualizações contínuas, resultando em implantações com 100% de zero downtime.

O Visual Studio apodrece sua mente? Um lamento de um programador

2025-03-10

Este artigo explora o impacto do Visual Studio na forma de pensar dos programadores. Embora reconheça sua utilidade, o autor argumenta que a forte automação do Visual Studio, particularmente o IntelliSense, pode prejudicar o desenvolvimento de habilidades de programação reais e criatividade. O autor contrasta isso com a alegria pura de programar sem tais ajudas, enfatizando os benefícios mentais de uma abordagem mais prática. A peça também se aprofunda na história das ferramentas de programação e especula sobre as mudanças futuras trazidas por Avalon (WPF) e XAML.

Desenvolvimento

arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

2025-03-10
arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

arXivLabs é uma estrutura que permite que colaboradores desenvolvam e compartilhem novos recursos do arXiv diretamente em nosso site. Indivíduos e organizações que trabalham com o arXivLabs abraçaram 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

Rastros de Pilha: Uma Ferramenta de Depuração Subestimada

2025-03-10

Este artigo destaca a importância dos rastros de pilha na depuração. Usando um exemplo em Python, ele demonstra como os rastros de pilha identificam locais de erros e chamadas de funções. No entanto, o artigo observa desafios na obtenção e manutenção de rastros de pilha completos em linguagens modernas como Go e Rust, e em arquiteturas de microsserviços. Embora existam soluções alternativas, elas exigem esforço extra em comparação com a facilidade de uso do Python. O autor defende a priorização dos rastros de pilha, argumentando que seus benefícios superam qualquer sobrecarga de desempenho.

Desenvolvimento rastro de pilha

Aumento de Desempenho do CPython: Uma História de Reviravoltas Inesperadas e Regressões do LLVM

2025-03-10

Uma recente fusão do CPython introduziu uma nova implementação do interpretador de bytecode, inicialmente mostrando ganhos de desempenho impressionantes de 10-15% em vários benchmarks. No entanto, essa melhoria resultou da circunvenção inadvertida de uma regressão do LLVM 19. Quando comparado a uma linha de base melhor (como GCC ou LLVM 19 ajustado), o aumento de desempenho real diminui para apenas 1-5%. Semanas de compilação, benchmarking e desmontagem revelaram que as limitações do LLVM 19 na duplicação de chamadas de cauda causaram a regressão. Embora o interpretador de chamadas de cauda seja uma melhoria valiosa, este incidente destaca os desafios em benchmarking, engenharia de desempenho e engenharia de software, como a dificuldade em escolher linhas de base e entender as complexidades das otimizações do compilador.

Desenvolvimento

Soco Virtual: Uma Viagem Retro à Era do 'Big Iron'

2025-03-10
Soco Virtual: Uma Viagem Retro à Era do 'Big Iron'

Lembra dos cartões perfurados? Agora você pode experimentar este método de programação retrô com 'The Virtual Keypunch', uma ferramenta online gratuita. Digite seu texto e ele gera uma imagem de cartão perfurado simulada, suportando vários tipos de cartão (FORTRAN, COBOL, etc.) e até mesmo o modo binário. Não é apenas uma experiência nostálgica divertida; oferece aos desenvolvedores uma maneira única de aprender sobre programação antiga.

Desenvolvimento

Apps Android Open Source: Privacidade, Segurança e Personalização

2025-03-10

Cansado de anúncios intrusivos e preocupações com a privacidade em aplicativos de código fechado? Aplicativos Android de código aberto oferecem uma alternativa refrescante. O código-fonte publicamente disponível garante transparência e segurança, permitindo que usuários e desenvolvedores examinem o código em busca de vulnerabilidades e elementos maliciosos. Aplicativos de código aberto geralmente priorizam a privacidade do usuário, coletando menos dados e fornecendo documentação clara sobre o uso de dados. Além disso, você pode personalizar o aplicativo para atender às suas necessidades, e uma comunidade forte suporta o desenvolvimento e as melhorias contínuas.

Free95: Sistema operacional de código aberto compatível com Windows

2025-03-10
Free95: Sistema operacional de código aberto compatível com Windows

Free95 é um sistema operacional de código aberto compatível com Windows. Ele oferece um ambiente amigável semelhante ao Windows, com a segurança e transparência adicionais da comunidade de código aberto. Seus jogos e aplicativos favoritos do Windows devem funcionar perfeitamente. O projeto visa remover o bloatware e as preocupações de segurança frequentemente associadas a sistemas operacionais proprietários, oferecendo uma alternativa livre do controle corporativo. A compatibilidade é alcançada por meio de chamadas de sistema NT e implementação da API Win32. Para contribuir, envie uma solicitação pull ou entre em contato com o desenvolvedor dripkap_19416 no Discord. Você pode compilar o sistema operacional a partir da fonte ou baixar um binário da seção Releases.

Desenvolvimento compatível com Windows

Structured: Redefinindo o Desenvolvimento de Aplicativos de Dados

2025-03-10
Structured: Redefinindo o Desenvolvimento de Aplicativos de Dados

A Structured está revolucionando a maneira como desenvolvedores constroem e implantam aplicativos de dados, consolidando toda a pilha de análise em código. Para resolver a ineficiência na implantação de aplicativos de dados intensivos em produção, a Structured oferece um SDK leve que permite aos desenvolvedores criar protótipos, implantar e gerenciar aplicativos de dados (painéis, ferramentas internas) em horas. Eles estão procurando engenheiros full-stack experientes para se juntarem à equipe e trabalharem na construção do SDK principal, no design de componentes interativos e na otimização de desempenho. A pilha de tecnologia inclui Python, TypeScript, Next.js, React, Postgres, AWS/GCP.

arXivLabs: Experimentos com Colaboração da Comunidade

2025-03-09
arXivLabs: Experimentos com Colaboração da Comunidade

arXivLabs é uma estrutura que permite a colaboradores desenvolverem e compartilharem novos recursos do arXiv diretamente no 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
1 2 141 142 143 145 147 148 149 214 215