Category: Desenvolvimento

FLAME: Um modelo de linguagem pequeno para fórmulas de planilhas

2025-01-22
FLAME: Um modelo de linguagem pequeno para fórmulas de planilhas

Modelos de linguagem grandes são caros para treinar e implantar para auxiliar na criação de fórmulas do Excel. Este artigo apresenta o FLAME, um modelo baseado em Transformer treinado exclusivamente em fórmulas do Excel. Com apenas 60 milhões de parâmetros e uma fração dos dados de treinamento usados por modelos maiores, o FLAME atinge desempenho competitivo ou até mesmo superior em tarefas de reparo, conclusão e recuperação de fórmulas em comparação com modelos como Codex e CodeT5. Isso é atribuído aos seus novos objetivos de pré-treinamento e tokenizador específico do Excel.

Desenvolvimento fórmula

Um ano após abandonar o React: o sucesso do renderização do lado do servidor da Scholarly

2025-01-22

A Scholarly, uma empresa em rápido crescimento, manteve uma pilha de tecnologia notavelmente simples: Rails, Stimulus e MySQL, complementados por Turbo e ActionCable para interatividade aprimorada. Sua experiência após um ano de abandono do React demonstra que essa abordagem de renderização do lado do servidor melhora significativamente a eficiência dos testes, a velocidade do aplicativo e a produtividade do desenvolvedor. Em comparação com front-ends JS complexos, essa abordagem leve reduz os custos de manutenção de código, minimiza riscos e permite que a equipe entregue valor mais rapidamente, concentrando-se nos objetivos principais do negócio.

Desenvolvimento

Evo: Controle de Versão Reinventado

2025-01-22
Evo: Controle de Versão Reinventado

Evo é um sistema moderno de controle de versão, com prioridade para uso offline, projetado para simplificar os fluxos de trabalho de desenvolvimento e melhorar a colaboração em equipe. Diga adeus a ramificações complexas do Git e a frustrantes conflitos de mesclagem. O Evo usa espaços de trabalho em vez de ramificações, suporta mesclagem inteligente de arquivos JSON e YAML e oferece autenticação integrada e assinatura de confirmação opcional. Sua filosofia principal é simplicidade, eficiência e confiabilidade. Construído com Go, ele suporta arquivos grandes e permissões granulares.

Desenvolvimento alternativa ao git

A Essência das Abstrações Bem-Sucedidas: Isolando a Complexidade

2025-01-22
A Essência das Abstrações Bem-Sucedidas: Isolando a Complexidade

No desenvolvimento de software, a complexidade é inevitável, mas pode ser contida. Chris Krycho argumenta que a chave para abstrações bem-sucedidas reside em confinar a complexidade a áreas bem definidas. Ele usa exemplos como o verificador de empréstimos do Rust, que isola a complexidade da segurança de memória dentro de seu sistema de tipos, e o TypeScript, que ilumina e gerencia a complexidade existente por meio de tipos. Isso reflete a filosofia dos microsserviços, onde serviços individuais permanecem simples, enquanto a complexidade geral é gerenciada. O autor afirma que a abstração bem-sucedida não consiste em eliminar a complexidade, mas sim em isolá-la e controlá-la de forma eficaz, melhorando assim a eficiência do desenvolvimento e a qualidade do código.

Nuvens Fotorrealistas em 10 Linhas de Código: Desvendando o 'Tiny Clouds' do Shadertoy

2025-01-22
Nuvens Fotorrealistas em 10 Linhas de Código: Desvendando o 'Tiny Clouds' do Shadertoy

O shader 'Tiny Clouds' do Shadertoy gera nuvens impressionantemente realistas usando apenas 10 linhas de código. Este artigo mergulha nas intrincadas do código, explicando seu inteligente rastreamento de raios inverso, amostragem de movimento browniano fractal (FBM) e técnicas de mesclagem alfa. Ele revela como o renderização de nuvens de alta qualidade é alcançada com um código tão conciso. O autor também explora otimizações de código interessantes, como o uso de macros para reduzir o comprimento e o emprego de uma função seno para adicionar aleatoriedade para uma aparência mais orgânica. A análise destaca o poder da codificação eficiente e de algoritmos inteligentes para alcançar resultados visuais impressionantes.

Desenvolvimento

Wine 10.0: Suporte mais suave para aplicativos Windows no Linux

2025-01-22
Wine 10.0: Suporte mais suave para aplicativos Windows no Linux

A equipe Wine lançou oficialmente o Wine 10.0, marcando um ano inteiro de desenvolvimento extensivo com mais de 6.000 alterações. Este lançamento estável introduz atualizações importantes projetadas para melhorar o desempenho, a compatibilidade e a experiência visual ao executar aplicativos Windows no Linux (e outras plataformas não Windows). Melhorias incluem suporte total para arquitetura ARM64EC, emulação x86 de 64 bits, melhor escalonamento de alta DPI e atualizações no Direct3D e Vulkan.

Desenvolvimento Compatibilidade com Windows

Princípio da Substituição de Liskov: O Verdadeiro Significado da Herança

2025-01-22
Princípio da Substituição de Liskov: O Verdadeiro Significado da Herança

Este artigo mergulha no Princípio da Substituição de Liskov (LSP), um princípio SOLID frequentemente mal compreendido. Usando o problema clássico retângulo-quadrado, ele ilustra violações comuns do LSP: subtipos falhando em substituir totalmente os tipos base. O autor defende o uso de composição e interfaces em vez de herança para evitar violações do LSP, fornecendo um exemplo prático com processamento de pagamento. Violações comuns do LSP, como lançar exceções inesperadas e retornar resultados inconsistentes com o tipo base, são descritas, juntamente com como garantir a conformidade do LSP por meio de testes de contrato e pré/pós-condições claras. Em última análise, o artigo enfatiza que o LSP é mais do que apenas herança — trata-se de compatibilidade comportamental e atendimento de expectativas. Seguir o LSP leva a um código mais confiável e manutenível.

JReleaser: Lançamentos de Projetos sem Dor de Cabeça

2025-01-21

O JReleaser simplifica o processo de lançamento de projetos, suportando diversas linguagens como Java, Go e Node.js. Ele cria pacotes facilmente para várias plataformas (Homebrew, Snapcraft, etc.), publica-os em serviços como GitHub e GitLab, e até gera logs de alterações automaticamente e anuncia lançamentos no Twitter. Seja CLI, Maven, Gradle ou Ant, o JReleaser otimiza seu fluxo de trabalho, permitindo que você se concentre no desenvolvimento.

Sigstore: Protegendo a Cadeia de Suprimentos de Software de Código Aberto

2025-01-21
Sigstore: Protegendo a Cadeia de Suprimentos de Software de Código Aberto

Sigstore é um projeto de código aberto que visa proteger as cadeias de suprimentos de software por meio de assinaturas digitais e logs transparentes. Ele simplifica o processo de verificação de software, permitindo que os desenvolvedores verifiquem facilmente a integridade e a origem do software, prevenindo assim softwares maliciosos e ataques à cadeia de suprimentos. A força principal do Sigstore reside em sua facilidade de uso e integração com ferramentas existentes, contribuindo para um ecossistema de software mais seguro e confiável.

Adeus, Kamal: Implementando Rails com Dokku

2025-01-21
Adeus, Kamal: Implementando Rails com Dokku

O Kamal, da Basecamp, oferece uma solução para implantar Rails em servidores bare metal, mas não é a ferramenta mais fácil de usar. Este artigo destaca uma alternativa mais simples: Dokku – essencialmente, um Heroku auto-hospedado. O autor fornece um guia passo a passo para implantar um aplicativo Rails usando Dokku, cobrindo instalação, criação de aplicativo, configuração do banco de dados (PostgreSQL), configuração de variáveis de ambiente, configuração de domínio e SSL (com Let's Encrypt) e uso de um Procfile para processos web e release. Uma seção de bônus apresenta a gem Deployless, automatizando todo o processo de implantação para maior eficiência.

Desenvolvimento

A Curiosa História das Âncoras de Expressões Regulares: Por que `$` e `^`?

2025-01-21
A Curiosa História das Âncoras de Expressões Regulares: Por que `$` e `^`?

Este artigo investiga as origens históricas do uso de `$` e `^` como âncoras de linha em expressões regulares. Remontando ao editor de texto QED, `$` inicialmente representava o fim do buffer, posteriormente adaptado por Ken Thompson para significar o fim de uma linha em regexes. A escolha de `^` provavelmente se deveu ao conjunto de caracteres limitado da máquina de escrever Teletype Model 35, com `^` já presente no ASCII-67. Não foi uma escolha de design brilhante, mas sim uma consequência das limitações de hardware e conjunto de caracteres daquela época, tornando-se uma convenção em regexes.

Desenvolvimento

As vantagens das linguagens da família Lisp para a construção de aplicativos de bioinformática complexos e flexíveis

2025-01-21

Este artigo apresenta uma justificativa para expandir a presença da família de linguagens de programação Lisp em pesquisas de bioinformática e biologia computacional. Simplificando, as linguagens da família Lisp permitem que os programadores escrevam programas que rodam mais rápido do que em outras linguagens. Linguagens como Common Lisp, Scheme e Clojure facilitam a criação de softwares poderosos e flexíveis que são necessários para domínios complexos e em rápida evolução como a biologia. O artigo destaca várias características importantes que distinguem as linguagens da família Lisp de outras linguagens de programação e explica como essas características podem ajudar os pesquisadores a serem mais produtivos e a criar códigos melhores.

Foqos: Recupere seu foco com NFC

2025-01-21

Foqos é um aplicativo de foco que utiliza a tecnologia NFC para ajudar os usuários a se manterem concentrados. Crie vários perfis para diferentes cenários (trabalho, estudo, hora de dormir, etc.). Grave esses perfis em tags NFC para ativação instantânea com um único toque - sem necessidade de desbloqueio ou abertura do aplicativo. Foqos é gratuito, privado e de código aberto para sempre. Sem assinaturas, rastreamento ou coleta de dados. Apenas foco puro.

Desenvolvimento aplicativo de foco

Notebooks Jupyter e LLMs: Uma otimização de custos inesperada

2025-01-21

O autor usou LLMs para assistência de codificação, inicialmente com uma configuração ContinueDev + OpenRouter. Os custos aumentaram inesperadamente. A investigação revelou que arquivos Jupyter Notebook (.ipynb) contêm conteúdo oculto significativo (saídas de código, metadados, imagens codificadas em base64), levando a uma grande contagem de tokens e aumento dos custos de chamada do LLM. A solução foi converter arquivos .ipynb em arquivos .py e remover imagens codificadas em base64. Isso reduziu os custos em 94% e também a latência. A postagem destaca a importância de uma entrada consciente ao usar LLMs e recomenda verificar os custos regularmente.

Desenvolvimento Otimização de Custos

Guiado pela beleza de nossa suíte de testes: Uma história de Rust, Uxn e rigor de engenharia

2025-01-21

No verão passado, o autor lançou o Raven, uma implementação independente da CPU Uxn e do orquestrador Varavara. Recentemente, para melhorar a estabilidade e o desempenho, o autor construiu uma infraestrutura de teste robusta, incluindo CI do GitHub Actions, teste de instantâneos, prevenção estática de pânico e fuzzing. Esta postagem detalha os desafios e soluções encontrados durante a construção desses testes, como problemas com a confiabilidade dos executores do Windows e ARM do GitHub Actions e armadilhas na prova estática da ausência de pânico e no fuzzing. O autor melhorou com sucesso o desempenho e a confiabilidade do Raven, garantindo a portabilidade entre plataformas. A jornada destaca o poder do Rust, cargo-fuzz e até mesmo (suspiro) GitHub Actions na criação de sistemas robustos e corretos.

Desenvolvimento Máquina Virtual Testes

Maximizando as Instalações de Pacotes Alpine: Um Desafio NP-Difícil

2025-01-21

Este artigo descreve um experimento para determinar o número máximo de pacotes Alpine Linux que podem ser instalados simultaneamente. O autor analisou os arquivos APKINDEX do Alpine, extraindo as dependências, conflitos e relações de fornecimento dos pacotes. Esses foram traduzidos em restrições para um solucionador PuLP. O experimento instalou com sucesso 98,5% dos pacotes do repositório principal e 97,8% do repositório principal + comunidade. Isso demonstra a otimização algorítmica da instalação de pacotes, oferecendo insights sobre a construção de imagens de contêiner mais enxutas.

Lições Aprendidas Construindo Aplicativos de LLM

2025-01-21

Esta postagem resume as lições aprendidas na construção de aplicativos usando Modelos de Linguagem Grandes (LLMs). LLMs excel em transformar grandes quantidades de texto em resumos concisos; eles têm dificuldades em gerar mais texto do que a entrada ou em confiar em seus dados pré-treinados para raciocínio complexo. Aplicativos de LLM eficazes devem fornecer ao LLM todas as informações necessárias, permitindo que o LLM execute a condensação de texto. O autor aconselha contra o uso de LLMs para tarefas que exigem conhecimento especializado humano (por exemplo, diagnóstico médico) e enfatiza que os LLMs devem aumentar, não substituir, os trabalhadores humanos. Evite usar LLMs para tarefas que podem ser feitas com código regular.

Corrigindo um Bug Subtil no Comando uname do Apache NuttX RTOS: Variáveis Estáticas Causam Problemas

2025-01-21
Corrigindo um Bug Subtil no Comando uname do Apache NuttX RTOS: Variáveis Estáticas Causam Problemas

Esta publicação detalha a jornada de depuração de um bug aparentemente menor no comando `uname` do Apache NuttX RTOS. O problema inicial: o hash do commit estava faltando na saída. A investigação levou a um caminho tortuoso, envolvendo a inspeção da imagem do kernel, a chamada de `uname` na inicialização do kernel e a desmontagem do aplicativo. O culpado? Uma variável estática corrompida (`g_version`) responsável por armazenar o hash do commit dentro dos aplicativos NuttX. Esse comportamento inesperado destacou a importância da depuração completa em sistemas embarcados, enfatizando que mesmo anomalias menores podem sinalizar problemas mais profundos e graves.

Desenvolvimento correção de bug

Dokploy: Soluções de Implantação Sem Esforço

2025-01-21
Dokploy: Soluções de Implantação Sem Esforço

Dokploy é uma plataforma de implantação multiservidor de código aberto, fácil de usar, projetada para simplificar a implantação e a gestão de aplicativos. Suporta vários métodos de implantação, incluindo Nixpacks, Heroku Buildpacks e Dockerfiles personalizados, e integração nativa com Docker Compose. Recursos incluem gerenciamento avançado de usuários, gerenciamento de banco de dados com backups, acesso à API e CLI e suporte a clusters Docker Swarm. Monitoramento em tempo real, alertas, vários modelos de código aberto e uma comunidade vibrante aprimoram ainda mais suas capacidades. Seja para implantar projetos pequenos ou aplicativos em larga escala, o Dokploy oferece uma solução flexível e eficiente.

Desenvolvimento

Redis UNLINK vs DEL: Uma Imersão Profunda na Mecânica Interna

2025-01-21
Redis UNLINK vs DEL: Uma Imersão Profunda na Mecânica Interna

Os comandos UNLINK e DEL do Redis removem chaves, mas suas implementações internas diferem. O comando DEL remove chaves sincronicamente e libera memória, enquanto o comando UNLINK coloca a remoção em uma fila de fundo para processamento assíncrono. A natureza 'não bloqueante' do UNLINK não é absoluta; ele calcula o custo de remover um objeto: se o custo for inferior a 64, ele remove sincronicamente; caso contrário, assincronicamente. O artigo mergulha no código-fonte do Redis, explicando os detalhes da implementação de UNLINK e DEL, incluindo o cálculo de slot de chave, desvinculação em duas fases e remoção assíncrona, e discute o papel do LAZYFREE_THRESHOLD.

Desenvolvimento

Fadiga de Frameworks: Por que os desenvolvedores estão com raiva de novas tecnologias?

2025-01-21
Fadiga de Frameworks: Por que os desenvolvedores estão com raiva de novas tecnologias?

O fluxo constante de novos frameworks JavaScript — de Svelte a Solid e Qwik — deixou os desenvolvedores exaustos. Cada um promete velocidade incrível e desempenho aprimorado, mas os desenvolvedores se veem em um ciclo perpétuo de aprendizado, consumindo tempo e energia preciosos. Isso gerou debates acalorados, com alguns argumentando que novos frameworks reinventam a roda, enquanto outros expressam receios sobre a segurança no emprego e a obsolescência de habilidades existentes. O artigo sugere que a raiva dos desenvolvedores em relação a novos frameworks é um mecanismo de autodefesa decorrente de ansiedades sobre as perspectivas de carreira futuras. Entender essa perspectiva pode promover uma evolução mais saudável da indústria.

Atividade da Comunidade Perl: Novo Podcast, Workshop e Desafios Semanais

2025-01-21
Atividade da Comunidade Perl: Novo Podcast, Workshop e Desafios Semanais

A comunidade Perl está agitada com notícias empolgantes! Um novo podcast, "The Underbar", foi lançado, trazendo as últimas novidades em Perl. O Workshop Alemão de Perl/Raku acontecerá em Munique, oferecendo uma ótima oportunidade para desenvolvedores se conectarem e aprenderem. O Desafio Semanal, uma competição de codificação popular, garantiu patrocínio por mais um ano, continuando a fornecer aos entusiastas do Perl exercícios de programação semanais. O boletim informativo desta semana também apresenta atualizações em vários módulos Perl e artigos cobrindo tópicos diversos, como criação de música MIDI, processamento de dados de geolocalização e análise de desempenho.

Desenvolvimento Eventos da Comunidade

OpenSSL Rejeita API QUIC: Um Retrocesso para a Adoção do HTTP/3?

2025-01-21
OpenSSL Rejeita API QUIC: Um Retrocesso para a Adoção do HTTP/3?

O OpenSSL, a biblioteca TLS mais popular, rejeitou adicionar uma API QUIC às suas próximas versões, criando um obstáculo significativo para a adoção generalizada do HTTP/3. Apesar de um pull request da comunidade (PR8797) ter oferecido as APIs necessárias, o comitê de gerenciamento do OpenSSL decidiu construir uma pilha QUIC completa do zero, um processo que deverá levar vários anos. Essa decisão gerou frustração na comunidade, pois já existem bibliotecas QUIC maduras. A Microsoft e a Akamai criaram o quictls, um fork do OpenSSL com a API QUIC, como uma solução alternativa. No entanto, essa não é uma solução sustentável, deixando o futuro da adoção do HTTP/3 incerto devido à escolha do OpenSSL.

Desenvolvimento

O pacote `context` do Go 2 deve ser descartado?

2025-01-21

Embora o pacote `context` do Go resolva o problema de cancelamento de goroutines, ele o faz à custa da legibilidade e manutenibilidade do código, espalhando-se como um vírus por toda a base de código. O autor argumenta que o `context` é excessivamente complexo, possui muitos métodos de interface e o uso de `ctx.Value` apresenta diversos problemas e é ineficiente. Ele propõe que o Go 2 deve abordar diretamente o cancelamento de goroutines no nível da linguagem, fornecendo uma solução mais simples, eficiente e não intrusiva.

Migrando do AWS App Mesh para o Amazon ECS Service Connect

2025-01-21
Migrando do AWS App Mesh para o Amazon ECS Service Connect

A AWS está desativando o AWS App Mesh em 30 de setembro de 2026. Esta publicação detalha estratégias para migrar do App Mesh para o Amazon ECS Service Connect, um serviço gerenciado que oferece confiabilidade e observabilidade aprimoradas para microsserviços em contêineres. As principais diferenças entre os dois serviços são destacadas, incluindo verificações de integridade integradas, detecção de outliers e integração aprimorada do CloudWatch. Uma estratégia de implantação azul/verde é recomendada para minimizar o tempo de inatividade durante a migração. O artigo também compara recursos como roteamento de tráfego, observabilidade, segurança e compartilhamento de recursos.

Desenhando bandeiras do mundo com a biblioteca de gráficos Turtle do Python

2025-01-21

Este post detalha a jornada do autor usando a biblioteca de gráficos Turtle do Python para desenhar bandeiras de vários países analisando arquivos SVG. Começando por um exercício simples de desenho em Java, o autor progrediu para uma implementação de análise SVG mais complexa usando Python e Turtle. Ele superou vários desafios, incluindo transformação de coordenadas, renderização de curva de Bézier e aplicação de estilo. O autor desenhou com sucesso um grande número de bandeiras, incluindo algumas anteriormente consideradas 'impossíveis', como a bandeira do País de Gales. Embora alguns problemas permaneçam sem solução, este post mostra as habilidades de programação e a persistência do autor.

Desenvolvimento

Guitaraoke: Automatizando a Geração de Acordes para Vídeos de Karaokê

2025-01-21
Guitaraoke: Automatizando a Geração de Acordes para Vídeos de Karaokê

Para melhorar sua noite mensal de Guitaraoke, Dylan Beattie construiu um sistema que exibe automaticamente acordes de músicas em vídeos de karaokê. Ele usa o plugin Vamp para extrair informações de acordes do áudio, depois ImageSharp e FFMpegCore para gerar uma sobreposição de vídeo transparente com os acordes, finalmente compondo isso no vídeo original. Isso envolve análise de áudio, processamento de imagem e composição de vídeo, resultando na exibição de acordes em tempo real para guitarristas. Melhorias futuras incluem detecção automática de batidas e processamento em lote.

Desenvolvimento Processamento de Áudio

Ruff: Um Lint e Formatador Python Extremamente Rápido

2025-01-21
Ruff: Um Lint e Formatador Python Extremamente Rápido

Ruff é uma ferramenta de lint e formatação de código Python escrita em Rust, 10 a 100 vezes mais rápida que ferramentas existentes como Flake8 e Black. Oferece paridade com ferramentas populares, com cache embutido e correção automática de erros. Com mais de 800 regras integradas e suporte para pyproject.toml, Ruff é usado em grandes projetos open-source como FastAPI e Pandas, tornando-se um divisor de águas para o desenvolvimento Python.

Desenvolvimento Lint

WordPress em Tumulto: Ações de Mullenweg Abalam os Fundamentos

2025-01-21
WordPress em Tumulto: Ações de Mullenweg Abalam os Fundamentos

Um conflito entre Matt Mullenweg, criador do WordPress, e a empresa de hospedagem WP Engine está ameaçando o futuro do WordPress. As ações agressivas de Mullenweg, incluindo a proibição da WP Engine, ofertas de pacotes de demissão para funcionários dissidentes e a redução drástica de contribuições para o projeto de código aberto, provocaram reação da comunidade e um processo judicial. Essa turbulência mina a estabilidade do WordPress e levanta preocupações sobre sua direção futura, levando até mesmo usuários e desenvolvedores a procurar alternativas. A questão central é um choque entre a governança de código aberto e os interesses comerciais, com implicações de longo alcance para a indústria de tecnologia.

Desenvolvimento conflito na comunidade

Meta lança aplicativo de edição de vídeo 'Edits' para preencher lacuna deixada pelo CapCut

2025-01-20
Meta lança aplicativo de edição de vídeo 'Edits' para preencher lacuna deixada pelo CapCut

Após a remoção do aplicativo de edição de vídeo CapCut, da ByteDance, das lojas de aplicativos, o Meta anunciou no domingo seu novo aplicativo de edição de vídeo, Edits. O chefe do Instagram, Adam Mosseri, revelou que o aplicativo será lançado no iOS no próximo mês, com o Android a seguir. O Edits possui uma suíte de ferramentas criativas, incluindo abas de inspiração e rastreamento de ideias, e uma câmera de alta qualidade, além da capacidade de compartilhar rascunhos. A jogada do Meta é vista como uma forma de capitalizar a lacuna de mercado deixada pela ausência do CapCut, espelhando lançamentos estratégicos anteriores como o Instagram Reels e o Threads.

Desenvolvimento Edição de Vídeo
1 2 180 181 182 184 186 187 188 214 215