Category: Desenvolvimento

Glasskube migra de Docusaurus para Starlight para documentação técnica

2025-05-27
Glasskube migra de Docusaurus para Starlight para documentação técnica

Philip, um engenheiro da Glasskube, compartilha sua experiência na migração de sua estrutura de documentação técnica do Docusaurus para o Starlight. A postagem detalha uma comparação dos dois frameworks em termos de design, SEO, experiência do desenvolvedor, velocidade de construção e extensibilidade. O Docusaurus, baseado em React, sofre com tempos de construção mais lentos e personalização limitada; o Starlight, construído em Astro, possui tempos de construção mais rápidos e suporte ao Tailwind CSS, mas carece de integração Mermaid e recursos de páginas de marketing. A Glasskube escolheu o Starlight por sua experiência de desenvolvedor superior e aparência mais moderna, apesar de algumas deficiências. A postagem também compartilha seus aprendizados na escrita de documentação técnica, cobrindo estrutura, análise de comportamento do usuário e estilo de escrita, enfatizando clareza e concisão.

Desenvolvimento escolha de framework

Engenheiro de P&D Híbrido: Metade Pesquisa, Metade Engenharia

2025-05-27
Engenheiro de P&D Híbrido: Metade Pesquisa, Metade Engenharia

Esta não é uma vaga típica de Engenheiro Fundador em uma empresa em estágio inicial. É uma divisão 50/50 entre pesquisa e engenharia. Embora a experiência em ambas as áreas seja ideal, um forte background quantitativo e sede de aprendizado podem compensar a falta de experiência em pesquisa. Domínio em desenvolvimento web (Javascript, Node.js) e Python é obrigatório. O trabalho é aberto e requer conforto com a incerteza; espere muitos experimentos fracassados. No entanto, você terá grande autonomia e a liberdade de resolver problemas como achar melhor. Esta vaga é perfeita para aqueles que prosperam em liberdade e desafios.

Desenvolvimento Engenheiro de P&D

Entendimento superficial da tecnologia: bom o suficiente é bom o suficiente

2025-05-27

O autor argumenta que uma compreensão superficial das tecnologias que os engenheiros usam é suficiente. Mergulhos profundos em índices de banco de dados, modelos de linguagem grandes, etc., permitem uma tomada de decisão melhor; por exemplo, escolher modelos apropriados para saída JSON e evitar erros causados por limitações em modelos menores. Em vez de ir fundo em uma área, o autor defende um amplo conhecimento em muitas áreas para melhor se adaptar às novas tendências. Aprender novas tecnologias deve se concentrar na compreensão dos princípios fundamentais e explicá-los simplesmente para outras pessoas, enquanto usa LLMs para verificação de fatos para garantir a precisão.

Desenvolvimento

Servidor MCP eficiente da Xata: OpenAPI, Kubb e um toque de Next.js

2025-05-27
Servidor MCP eficiente da Xata: OpenAPI, Kubb e um toque de Next.js

A Xata construiu um servidor MCP que permite a interação segura em tempo real entre modelos de IA e ferramentas/APIs. Em vez de codificar manualmente cada ferramenta, eles aproveitaram sua especificação OpenAPI existente e o Kubb, uma ferramenta de geração de código, para automatizar o processo. Essa abordagem usa a especificação OpenAPI como uma única fonte de verdade, garantindo desenvolvimento rápido e consistência. O post detalha a migração para o Kubb, a criação de geradores personalizados e a construção do servidor MCP com Next.js, resultando em uma integração de IA eficiente.

Desenvolvimento

Pyrefly e ty: Dois novos verificadores de tipos Python baseados em Rust surgem

2025-05-27

Na PyCon 2025, o Pyrefly do Meta e o ty do Astral, dois novos verificadores de tipos Python baseados em Rust, fizeram sua estreia. O Pyrefly visa ser mais rápido, mais portátil e mais capaz do que seu predecessor, enquanto se envolve ativamente com a comunidade de código aberto. O ty enfatiza uma "garantia gradual", significando que a remoção de anotações de tipo não deve causar erros de tipo. Ambos utilizam o Ruff para análise de AST e oferecem integração de linha de comando e IDE. Benchmarks mostraram o ty geralmente mais rápido, mas eles diferem na inferência de tipo e no tratamento de erros. O Pyrefly é mais agressivo, potencialmente detectando mais erros, mas também introduzindo mais falsos positivos; o ty é mais conservador, priorizando a compatibilidade do código. Ambos estão em alfa inicial, e sua evolução futura é emocionante de se observar.

Desenvolvimento Verificador de Tipos

arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

2025-05-27
arXivLabs: Projetos Experimentais com Colaboradores da Comunidade

arXivLabs é uma estrutura que permite que colaboradores desenvolvam e compartilhem 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

Malai 0.2.5 Lançado: Compartilhamento Fácil de Serviços TCP Locais

2025-05-27

O Malai 0.2.5 apresenta a capacidade de compartilhar seus serviços TCP locais, permitindo que você exponha com segurança qualquer serviço TCP em execução localmente (por exemplo, SSH, Postgres, Redis etc.) para o mundo externo. Basta usar um comando simples para compartilhar uma porta e conectar-se de outras máquinas usando o comando `malai tcp-bridge`. Além disso, o Malai agora inclui um comando `malai folder` para compartilhar pastas locais. Essa atualização fornece uma maneira mais conveniente e segura para desenvolvedores e equipes colaborarem, como para depuração remota, compartilhamento de bancos de dados ou servidores de jogos.

Desenvolvimento Compartilhamento de Rede

De Arc para Dia: A Pivô da The Browser Company para IA

2025-05-27
De Arc para Dia: A Pivô da The Browser Company para IA

A The Browser Company anuncia sua mudança de foco do projeto de navegador Arc para um novo navegador baseado em IA, Dia. O artigo explica que, apesar da base de usuários leais do Arc, ele ficou aquém das expectativas devido a limitações de crescimento, hesitação em abraçar a IA e problemas de comunicação. O autor admite que o Dia não é uma simples iteração do Arc, mas sim uma resposta ao futuro dos navegadores — a IA irá remodelar fundamentalmente como interagimos com computadores, e os navegadores tradicionais serão substituídos por navegadores de IA. O Dia visa resolver as deficiências do Arc, oferecendo uma experiência mais simples, rápida e segura. O artigo também menciona o futuro do Arc, afirmando que ele não será de código aberto imediatamente, mas continuará sendo mantido.

Desenvolvimento Mudança de Foco

Homelab silencioso: Cluster OpenShift em ThinkCentre Tinys restaurados

2025-05-27
Homelab silencioso: Cluster OpenShift em ThinkCentre Tinys restaurados

Este artigo descreve um homelab silencioso e de baixo consumo de energia construído com PCs Lenovo ThinkCentre Tiny restaurados. Executando o Red Hat Enterprise Linux, essas máquinas compactas são usadas para hospedar um cluster OpenShift, embora sejam versáteis o suficiente para o Kubernetes ou outros aplicativos em contêineres. O autor detalha o hardware, os custos (cerca de € 416 no total) e até mesmo fornece uma solução de montagem em rack impressa em 3D. Um exemplo perfeito de como construir uma configuração de servidor doméstico potente, mas discreta.

Desenvolvimento

Cline: Abandonando o RAG para um Novo Paradigma em Assistência de Código com IA

2025-05-27
Cline: Abandonando o RAG para um Novo Paradigma em Assistência de Código com IA

Cline, um assistente de código de IA, rejeita a abordagem popular de RAG (Retrieval Augmented Generation) em favor de um método mais alinhado com o pensamento de desenvolvedores. O artigo destaca três problemas importantes com o RAG para código: lógica de código fragmentada, dessincronização entre índice e código e riscos de segurança. Cline aborda esses problemas entendendo a estrutura do código (ASTs), explorando a lógica do código arquivo por arquivo e construindo contexto para fornecer sugestões de código mais precisas e seguras. Ele utiliza poderosos modelos de linguagem modernos, lendo e entendendo o código diretamente na máquina local sem bancos de dados vetoriais ou embeddings, evitando as armadilhas do RAG e oferecendo sugestões de código superiores.

Desenvolvimento assistente de código IA

DuckLake: Solução Unificada Leve para Data Lake e Catálogo

2025-05-27
DuckLake: Solução Unificada Leve para Data Lake e Catálogo

DuckLake oferece uma solução leve e integrada para construir um data lake e catálogo. Ele permite uma configuração de 'DuckDB multijogador' com várias instâncias do DuckDB lendo e escrevendo no mesmo conjunto de dados — um modelo de concorrência não suportado pelo DuckDB padrão. Mesmo que você use apenas o DuckDB como ponto de entrada do DuckLake e banco de dados do catálogo, você ainda se beneficia de recursos como consultas de viagem no tempo, particionamento de dados e armazenamento de dados em vários arquivos em vez de um único arquivo de banco de dados potencialmente enorme.

Desenvolvimento

AWS Aurora DSQL: Uma Revolução na Arquitetura de Banco de Dados de JVM para Rust

2025-05-27
AWS Aurora DSQL: Uma Revolução na Arquitetura de Banco de Dados de JVM para Rust

A AWS anunciou o Aurora DSQL na re:Invent, e este post mergulha em sua jornada de desenvolvimento. Para enfrentar o desafio de escalar horizontalmente as gravações em bancos de dados tradicionais, a equipe da AWS inicialmente usou JVM, mas encontrou graves gargalos de desempenho, especialmente problemas de latência de cauda causados pela coleta de lixo. Eles finalmente decidiram reescrever o plano de dados em Rust, o que melhorou significativamente o desempenho e reduziu a latência de cauda. Além disso, a equipe também migrou o plano de controle para Rust, evitando as complexidades de múltiplas linguagens. Este projeto demonstra que questionar soluções existentes e experimentar novas tecnologias (mesmo migrações de linguagem caras) pode trazer recompensas significativas.

Desenvolvimento

Definições de Eventos LiveStore: Um Sistema de Gerenciamento de Tarefas Conciso

2025-05-27
Definições de Eventos LiveStore: Um Sistema de Gerenciamento de Tarefas Conciso

Este trecho de código define eventos para gerenciar uma lista de tarefas no framework LiveStore. Inclui quatro eventos: criação de uma tarefa (todoCreated), marcação como concluída (todoCompleted), marcação como não concluída (todoUncompleted) e exclusão de uma tarefa (todoDeleted). Cada evento usa Schema.Struct para definir sua estrutura de dados, garantindo a consistência e integridade dos dados. Isso demonstra um design conciso e eficiente de sistema de gerenciamento de tarefas, utilizando uma arquitetura orientada a eventos para rastrear mudanças no status das tarefas.

Desenvolvimento Assistido por IA: A Ascensão do Arquiteto

2025-05-27
Desenvolvimento Assistido por IA: A Ascensão do Arquiteto

De NoCode ao desenvolvimento assistido por IA, os avanços tecnológicos não tornaram os desenvolvedores obsoletos; em vez disso, remodelaram os papéis e as necessidades de habilidades. Ondas anteriores de NoCode, computação em nuvem e desenvolvimento offshore não eliminaram os desenvolvedores, mas sim criaram novas especializações, como especialistas em NoCode e engenheiros DevOps, muitas vezes com salários mais altos. O desenvolvimento assistido por IA segue esse padrão. A IA se destaca na geração de código, mas luta com a arquitetura de sistemas. Portanto, a habilidade mais valiosa na engenharia de software será a arquitetura de sistemas - um domínio em que a IA está significativamente atrasada. A IA acelera o desenvolvimento, aumentando a complexidade da manutenção do sistema e destacando o papel crucial de arquitetos experientes na gestão e mitigação de riscos.

Desenvolvimento

LumoSQL: Aprimorando o SQLite com Segurança e Desempenho

2025-05-27

LumoSQL é uma modificação, não um fork, do banco de dados SQLite amplamente utilizado. Ele aprimora o SQLite adicionando recursos de segurança, privacidade, desempenho e medição, e possui mecanismos de armazenamento de valores-chave plugáveis, como o LMDB. Usando uma ferramenta 'not-forking' inovadora, o LumoSQL gerencia vários upstreams de código sem fazer forks, colaborando com o projeto SQLite para introduzir melhorias sem comprometer a estabilidade do core do SQLite. O LumoSQL demonstra melhorias que muitos usuários precisam, mas não estão prontamente disponíveis no projeto SQLite core devido à sua abordagem cautelosa.

Desenvolvimento

Builds do Mesa 25.1.1 para Windows Lançados: Solução de Problemas Comuns

2025-05-27
Builds do Mesa 25.1.1 para Windows Lançados: Solução de Problemas Comuns

As builds do Mesa 25.1.1 para Windows (usando Visual Studio e MSYS2 Mingw-w64) agora estão disponíveis. Este lançamento foi patrocinado pela Petrosky, fornecendo uma máquina de build dedicada. O lançamento aborda inúmeros problemas comuns, como erros de libgallium_wgl.dll, libEGL.dll e libvulkan-1.dll ausentes, muitas vezes corrigíveis reimplantando aplicativos ou usando ferramentas de correção fornecidas. Uma documentação abrangente detalha as diferenças entre os pacotes MSVC e MinGW, o conteúdo do pacote, a configuração e o uso de vários drivers (llvmpipe, GLonD3D12, zink, etc.), compatibilidade com software antigo, substituições de configuração de contexto OpenGL e fornece soluções e configurações de variáveis de ambiente.

Desenvolvimento

Clojure MCP: Desenvolvimento Impulsionado por REPL com Assistência de IA

2025-05-27
Clojure MCP: Desenvolvimento Impulsionado por REPL com Assistência de IA

O Clojure MCP é um projeto em estágio alfa que fornece um conjunto abrangente de ferramentas para auxiliar no desenvolvimento de projetos Clojure, conectando modelos de IA ao Clojure nREPL. Ele inclui todos os recursos do Claude Code, integra ferramentas como clj-kondo e parinfer e se integra perfeitamente ao Claude Desktop. Os desenvolvedores podem aproveitar a IA para desenvolvimento incremental, validando o código no REPL e usando ferramentas como leitura inteligente de arquivos, edição com reconhecimento de estrutura e avaliação de código para maior eficiência. O projeto também possui um fluxo de trabalho para manter um resumo de projeto amigável à LLM, permitindo que o assistente de IA entenda rapidamente a estrutura do código. O projeto é licenciado sob a GNU Affero General Public License v3.0.

Desenvolvimento

arXivLabs: Construindo Novos Recursos arXiv com Colaboração da Comunidade

2025-05-27
arXivLabs: Construindo Novos Recursos arXiv com Colaboração da Comunidade

arXivLabs é uma estrutura que permite que desenvolvedores colaborem e compartilhem novos recursos arXiv diretamente no site arXiv. Os participantes devem adotar os valores do arXiv de abertura, comunidade, excelência e privacidade de dados do usuário. Tem uma ideia para melhorar a comunidade arXiv? Saiba mais sobre arXivLabs e participe!

Desenvolvimento

yes-rs: Reescrevendo o comando Unix 'yes' em Rust, com velocidade e segurança de memória

2025-05-27
yes-rs: Reescrevendo o comando Unix 'yes' em Rust, com velocidade e segurança de memória

Cansado da versão em C do comando Unix 'yes', insegura em termos de memória e propensa a estouros de buffer? Apresentamos yes-rs, uma reescrita em Rust que não apenas é incrivelmente rápida, mas também garante segurança de memória com zero blocos de código inseguros. Com impressionantes 1302 linhas de código Rust (em comparação com as ~50 linhas do C original), yes-rs oferece tratamento de erros moderno, abstrações de custo zero e a capacidade de gerar strings personalizadas. Construído com Cargo, é fácil de instalar e usar. Para aqueles que exigem o máximo de desempenho e segurança, yes-rs é a solução!

Desenvolvimento

Stalwart v0.12: Plataforma unificada de comunicação e colaboração

2025-05-27
Stalwart v0.12: Plataforma unificada de comunicação e colaboração

Stalwart v0.12 chegou, transformando-se de um poderoso servidor de email em uma plataforma completa de comunicação e colaboração. Este lançamento apresenta suporte nativo para calendários, contatos e armazenamento de arquivos, eliminando a necessidade de integrações de terceiros. Os usuários podem gerenciar eventos, listas de endereços e documentos por meio de qualquer cliente compatível com padrões. Melhorias na filtragem de spam, otimizações de desempenho aprimoradas para grandes implantações e coordenação de cluster flexível completam os recursos principais. Lançamentos futuros adicionarão agendamento CalDAV, notificações de eventos e suporte JMAP para uma experiência ainda mais suave.

Desenvolvimento Plataforma de Colaboração

Sqawk: Ferramenta de linha de comando baseada em SQL para processamento de arquivos delimitados

2025-05-26
Sqawk: Ferramenta de linha de comando baseada em SQL para processamento de arquivos delimitados

Sqawk é uma ferramenta de linha de comando baseada em SQL inspirada no awk, projetada para o processamento eficiente de arquivos delimitados por separadores, como CSV e TSV. Ela carrega dados em tabelas na memória, permitindo consultas SQL poderosas (SELECT, INSERT, UPDATE, DELETE) com filtragem, classificação, agregação e junções de várias tabelas. O Sqawk possui recursos como inferência automática de tipo, suporte a valores nulos, delimitadores personalizados e um modo de operação seguro que evita a modificação acidental de arquivos. Sua sintaxe intuitiva e velocidade o tornam ideal para tarefas de manipulação de dados.

Desenvolvimento

Aumento de Desempenho do Dav1d: Otimizações de Alinhamento de Cache

2025-05-26
Aumento de Desempenho do Dav1d: Otimizações de Alinhamento de Cache

Um desenvolvedor melhorou significativamente o desempenho do decodificador de vídeo Dav1d otimizando o alinhamento de memória de suas estruturas. Ao reorganizar os membros das estruturas e usar tipos de dados mais compactos, a fragmentação de memória foi reduzida, atingindo o alinhamento ideal de 8 bytes em processadores de 64 bits. Os resultados dos benchmarks mostraram uma redução de aproximadamente 0,5% e 2,8% no tempo de decodificação para vídeos 1080p e 4K, respectivamente. Essa otimização destaca a importância do gerenciamento meticuloso da memória para ganhos de desempenho e oferece insights valiosos para otimizar outros projetos em C/C++.

CSMWrap: Simulando BIOS herdado em sistemas UEFI

2025-05-26
CSMWrap: Simulando BIOS herdado em sistemas UEFI

CSMWrap é um hack inteligente que emula um BIOS de PC herdado em sistemas somente UEFI. Usando o CSM (Módulo de Suporte de Compatibilidade) e VESA VBIOS do SeaBIOS, ele permite inicializar FreeDOS, Windows XP e Windows 7 no QEMU e em alguns hardwares reais. Isso é conseguido desbloqueando a região de memória do BIOS herdado, carregando o módulo SeaBIOS CSM, configurando o mapeamento de memória e muito mais. Observe que o Boot Seguro e a Decodificação acima de 4G devem ser desabilitados, e pode haver problemas de configuração de modos de vídeo do Windows.

Desenvolvimento

A Luta Elegante: Projetando Membros Públicos/Privados em uma Linguagem de Script

2025-05-26

Um desenvolvedor, construindo um projeto de console de fantasia, luta para adicionar um sistema de módulos à sua linguagem de script. Explorando várias abordagens para distinguir declarações públicas e privadas - palavras-chave modificadoras (como `public` e `private` do Java), seções modificadoras (como C++), símbolos em identificadores (como o sublinhado do Python), manifestos de exportação (como Scheme) e símbolos em declarações (como `*` do Oberon) - eles se inclinam para uma solução nova: prefixar palavras-chave de declaração com um sublinhado (por exemplo, `rec_` para registros privados, `def_` para funções privadas). Embora não convencional, este método oferece concisão e evita a repetição de símbolos em cada local de uso.

Desenvolvimento sistema de módulos

CSS Paint Worklet: Personalizando Imagens de Fundo

2025-05-26
CSS Paint Worklet: Personalizando Imagens de Fundo

Este exemplo mostra como criar imagens de fundo dinâmicas usando CSS Paint Worklet. Definindo as propriedades personalizadas `--boxColor` e `--widthSubtractor`, e usando o seletor CSS `nth-of-type`, geramos imagens de fundo com cores e larguras variadas para os itens da lista. O JavaScript registra um script externo de paint worklet, `boxbg.js`, que contém a lógica para desenhar o fundo. O resultado final é personalizável; ajuste os valores das propriedades personalizadas nas Ferramentas do Desenvolvedor para alterar as cores e larguras.

Desenvolvimento Fundo Personalizado

Árvores Preguiçosas Chegam ao Determinate Nix 3.5.2: Um Aumento Massivo de Desempenho para o Nix

2025-05-26
Árvores Preguiçosas Chegam ao Determinate Nix 3.5.2: Um Aumento Massivo de Desempenho para o Nix

O Determinate Nix 3.5.2 foi lançado, trazendo o aguardado recurso de árvores preguiçosas. Isso melhora significativamente a eficiência do Nix em repositórios grandes, especialmente monorepos massivos, usando um sistema de arquivos virtual para otimizar a cópia de arquivos. Testes mostram que as avaliações no Nixpkgs podem ser 3 vezes mais rápidas e usar 20 vezes menos espaço em disco. Os usuários podem optar por ativá-lo habilitando `lazy-trees = true` em sua configuração personalizada do Nix. Embora atualmente seja opcional, a equipe enviou um pull request para mesclar isso no Nix upstream. Melhorias futuras de desempenho estão planejadas, incluindo melhor cache de avaliação, avaliação paralela para mais operações do Nix e descompactação multithread de flakes.

Desenvolvimento Árvores Preguiçosas

A Praga da Cola com IA: Um Relatório da Linha de Frente de um Professor

2025-05-26
A Praga da Cola com IA: Um Relatório da Linha de Frente de um Professor

Um professor universitário relata o fenômeno generalizado de alunos usando IA para trapacear, detalhando os desafios e estratégias que encontrou em seu ensino. De inicialmente permitir que os alunos citassem ferramentas de IA a descobrir a trapaça generalizada, ele experimentou vários métodos para dissuadir o uso de IA, incluindo o uso do Google Docs em sala de aula e a exigência de trabalhos escritos à mão. O artigo explora o impacto da IA na educação e como cultivar o pensamento crítico e as habilidades de aprendizagem nos alunos, defendendo um foco renovado no processo de aprendizagem em vez de apenas nos resultados.

Desenvolvimento cola com IA ensino

Além de Zig e Rust: Uma Abordagem Mais Amigável para Metaprogramação

2025-05-26

Este artigo explora um novo design de linguagem de programação que combina os pontos fortes do sistema de tipos Hindley-Milner do Rust e as capacidades de tempo de compilação do Zig, evitando ao mesmo tempo as complexidades da abordagem 'tipos como valores' do Zig. Ao introduzir o operador `@` para execução em tempo de compilação, o tipo `Abstract` para abstrações em tempo de compilação, os tipos `TypeInfo` e `Field` para introspecção de tipos e as funções `Code` e `parse` para manipulação de código, este design alcança poderosas capacidades de metaprogramação, como geração automática de código e a implementação de tipos utilitários semelhantes ao TypeScript, como `Partial`, mantendo a legibilidade do código e a facilidade de raciocínio. Isso representa uma nova abordagem para alcançar metaprogramação poderosa enquanto preserva a facilidade de uso do sistema de tipos, oferecendo novas perspectivas para o design de linguagens futuras.

Desenvolvimento

Mutmut: Ferramenta poderosa de teste de mutação para Python

2025-05-26
Mutmut: Ferramenta poderosa de teste de mutação para Python

Mutmut é um sistema de teste de mutação para Python fácil de usar. Ele ajuda os desenvolvedores a identificar lacunas em seus conjuntos de testes, levando a uma maior qualidade de código. Recursos principais incluem testes incrementais, execução paralela e uma interface de usuário de terminal interativa. Os usuários podem executar testes, navegar por mutantes, aplicar mutantes e configurar várias definições, como caminhos para mutar, diretórios de teste e arquivos a excluir com facilidade. Mutmut também oferece otimizações para grandes bases de código e opções de configuração extensas para diversas necessidades.

Desenvolvimento Teste de Mutação

FizzBuzz com Monads: Uma Abordagem Funcional

2025-05-26

Este artigo apresenta uma abordagem de programação funcional para o problema FizzBuzz usando Monads. A ideia central utiliza o padrão guard-sequence para verificar a divisibilidade por 3, 5 e 7, gerando 'fizz', 'buzz' e 'zork', respectivamente, ou Nothing se não for divisível. `mconcat` combina os resultados, e `fromMaybe` lida com valores Nothing, produzindo a saída correta do FizzBuzz. Esta solução elegante mostra o poder da programação funcional.

Desenvolvimento
1 2 75 76 77 79 81 82 83 214 215