Menu

Linguagens & Frameworks

Adote?

  • Arrow é promovida como a companheira funcional da biblioteca padrão de Kotlin. Na verdade, o pacote de abstrações de alto nível e prontas para uso fornecido por Arrow provou ser tão útil que nossos times agora a consideram um padrão sensato ao trabalhar com Kotlin. Recentemente, em preparação para o release 1.0, a equipe da Arrow introduziu várias mudanças, incluindo a adição de novos módulos, mas também algumas descontinuações e remoções.

    Histórico
  • jest-when é uma biblioteca JavaScript leve que complementa o Jest combinando argumentos de chamada de função simulada. Jest é uma ótima ferramenta para testar a stack; jest-when permite que você espere por argumentos específicos para funções simuladas, habilitando você a escrever testes de unidade mais robustos de módulos com muitas dependências. É fácil de usar e oferece ótimo suporte para vários matchers, e é por isso que nossos times adotaram jest-when como escolha padrão para simulações neste espaço.

    Histórico

Experimente?

  • Nos casos em que a implementação em Node.js é necessária, observamos que Fastify é uma opção que deixa nossos times bastante satisfeitos. Este framework web oferece facilidade no manuseio de validações de requisição-resposta, suporte para TypeScript e um ecossistema de plugins que proporciona aos nossos times uma experiência mais simples de desenvolvimento de software. Embora seja uma boa opção no ecossistema Node.js, mantemos nosso conselho anterior: não caia em cenários de uso excessivo de Node.

    Histórico
  • Com a complexidade crescente das aplicações de página única (SPA) em JavaScript, gerenciar o estado com previsibilidade está se tornando cada vez mais importante. A imutabilidade pode ajudar a garantir que nossas aplicações se comportem de forma consistente, mas infelizmente o JavaScript não oferece estruturas de dados profundamente imutáveis integradas (veja a proposta ES para Records e Tuples). Immer — que significa "sempre" em alemão — é um pequeno pacote que permite trabalhar com o estado imutável de uma forma mais conveniente. É baseado no mecanismo copy-on-write, tem uma API mínima e opera em objects e arrays JavaScript normais. Isso significa que o acesso aos dados é feito normalmente e nenhum grande esforço de refatoração é necessário ao introduzir a imutabilidade em uma base de código existente. Muitos de nossos times agora o usam em suas bases de código JavaScript e o preferem em relação ao Immutable.js, e é por isso que nós estamos o movendo para Experimente.

    Histórico
  • Decidimos mover o Redux de volta ao anel Experimente para ilustrar que não o consideramos mais a abordagem padrão para gerenciamento de estado em aplicações React. Nossa experiência mostra que o Redux ainda é um framework valioso em muitos casos, mas comparado a outras abordagens, ele leva a um código mais detalhado e difícil de seguir. A inclusão do Redux Sagas geralmente aumenta esse problema. Como alternativa, você em geral pode usar os recursos das versões recentes do React para gerenciar o estado de maneira eficaz sem um framework adicional. No entanto, queremos destacar que quando você atinge o ponto em que sua solução de gerenciamento de estado simples começa a se tornar complexa, pode valer a pena recorrer ao Redux ou talvez ao recém-publicado pelo Facebook, Recoil.

    Histórico
  • A linguagem de programação Rust continua a crescer em popularidade e foi eleita a linguagem "mais amada" do Stack Overflow por pessoas desenvolvedoras por cinco anos consecutivos. Nós também gostamos. É uma linguagem rápida, segura e expressiva que tem cada vez mais utilidade à medida que seu ecossistema cresce. Por exemplo, Rust está começando a ser usada para ciência de dados e aprendizado de máquina e pode fornecer um aumento significativo de desempenho. Há também o Materialize, um banco de dados de baixa latência orientado para streaming que é escrito em Rust.

    Histórico
  • single-spa é um framework JavaScript que reúne vários micro frontends em uma única aplicação frontend. Apesar de desaconselharmos a anarquia de micro frontends, ou seja, o uso de micro frontends como uma desculpa para combinar vários frameworks, o single-spa suporta exatamente isso. Entendemos que existem cenários legítimos, como atualizar para uma nova revisão de um framework em vários micro frontends, em que a integração entre vários frameworks é necessária. single-spa tem sido o framework de escolha para integração de micro frontends para nossos times. Eles também têm achado que o single-spa funciona bem com SystemJS e gerenciando diferentes versões de um dependência única.

    Histórico
  • O ecossistema Kotlin continua crescendo, e mais bibliotecas vêm se beneficiando dos recursos da linguagem Kotlin para substituição de alternativas Java. Strikt é uma biblioteca que permite escrever asserções de teste em um estilo muito fluente. Ela usa lambdas e blocos Kotlin para tornar seus testes menos prolixos, mantendo a legibilidade. Strikt também suporta a construção de asserções personalizadas, o que pode tornar seus testes mais específicos para o domínio.

    Histórico
  • Já apresentamos várias bibliotecas de gerenciamento de estado no Radar, mas XState tem uma abordagem um pouco diferente. É um framework JavaScript e TypeScript simples, para criar máquinas de estado finito e visualizá-las como gráficos de estado. Ele se integra com os frameworks JavaScript reativos mais populares (Vue.js, Ember.js, React.js e RxJS), e é baseado no padrão W3C para máquinas de estado finito. Outro recurso notável é a serialização de definições de máquina. Uma coisa que achamos útil ao criar máquinas de estados finitos em outros contextos (particularmente ao escrever lógica de jogo) é a capacidade de visualizar estados e suas possíveis transições. Gostamos do fato de ser muito fácil fazer isso com o visualizador do XState.

    Histórico

Avalie?

  • Quando escrevemos sobre Realidade Virtual além dos jogos, há alguns anos, não fizemos nenhuma previsão sobre quão rapidamente e em que medida as soluções de VR seriam encontrados em áreas além de video games. Em retrospectiva, certamente vimos o interesse e a adoção crescerem, mas a aceitação foi mais lenta do que parte de nós imaginou. Um motivo pode ser o ferramental. Unity e Unreal são duas ferramentas bastante maduras e aptas para desenvolver aplicações de VR. Também destacamos Godot. No entanto, essas ferramentas são bem diferentes de outras com as quais a maioria dos times de desenvolvimento web e corporativo está acostumada. Conforme continuamos a explorar, notamos que as soluções de VR baseadas na web já evoluíram significativamente, e tivemos uma experiência positiva com Babylon.js. Escrito em TypeScript e renderizando suas aplicações no navegador, Babylon.js fornece uma experiência familiar para muitos times de desenvolvimento. Além disso, Babylon.js é um software de código aberto, maduro e bem fundamentado, o que o torna ainda mais atraente.

    Histórico
  • Embora o JavaScript e seu ecossistema sejam dominantes no espaço de desenvolvimento de UI para web, novas oportunidades estão se abrindo com o surgimento de WebAssembly. Vemos Blazor como uma opção interessante para construir UIs web interativas usando C#. Gostamos particularmente desse framework de código aberto pelo fato de permitir a execução de código C# no navegador em cima do WebAssembly, aproveitando o tempo de execução e o ecossistema do .NET Standard, bem como bibliotecas personalizadas desenvolvidas na linguagem. Além disso, ele pode interoperar de forma bidirecional com código JavaScript no navegador, se necessário.

    Histórico
  • Flutter Driver é uma biblioteca de testes de integração para aplicações Flutter. Com Flutter Driver, você pode instrumentar e conduzir o conjunto de testes em dispositivos reais ou emuladores. Nossos times continuam a escrever testes de unidade e testes de widget para garantir que a maior parte da funcionalidade de negócio em aplicações Flutter seja implementada. No entanto, para testar a real interação do usuário, estamos avaliando o desempenho do Flutter Driver, e você também deveria.

    Histórico
  • Apesar de defendermos fortemente a definição de políticas de segurança como código, o conjunto de ferramentas neste espaço tem se mantido bastante limitado. Se você estiver usando produtos HashiCorp (como Terraform ou Vault) e não se importar em pagar pelas versões corporativas, você tem a opção de usar o HashiCorp Sentinel. Sentinel é, na verdade, uma linguagem de programação completa para definir e implementar decisões de políticas baseadas em contexto. Por exemplo, no Terraform, ela pode ser usada para testar violações de políticas antes de aplicar alterações de infraestrutura. No Vault, pode-se usar Sentinel para definir controle de acesso granular nas APIs. Essa abordagem tem todos os benefícios de encapsulamento, manutenção, legibilidade e extensibilidade que as linguagens de programação de alto nível oferecem, criando uma alternativa atraente para as políticas de segurança declarativas tradicionais. Sentinel está na mesma classe de ferramentas do Open Policy Agent, mas é proprietária, tem código-fonte fechado e só funciona com produtos HashiCorp.

    Histórico
  • Hermes é uma ferramenta JavaScript otimizada para inicialização rápida de aplicações React Native em Android. Ferramentas de JavaScript como V8 possuem compiladores just-in-time (JIT) que compilam o código em tempo de execução para produzir instruções otimizadas. Hermes, no entanto, adota uma abordagem diferente, compilando o código JavaScript ahead of time (AOT) em um bytecode otimizado. Como resultado, você obtém um tamanho de imagem APK reduzido, menor consumo de memória e tempo de inicialização mais rápido. Estamos avaliando cuidadosamente o uso de Hermes em algumas aplicações React Native e recomendamos que você faça o mesmo.

    Histórico
  • Temos gostado muito de usar o TypeScript há algum tempo, e adoramos a segurança que a tipagem forte oferece. No entanto, colocar dados dentro dos limites do sistema de tipos, por exemplo, de uma chamada para um serviço de back-end, pode levar a erros de tempo de execução. Uma biblioteca que ajuda a resolver esse problema é io-ts. Ela preenche a lacuna entre a verificação de tipo em tempo de compilação e o consumo em tempo de execução de dados externos, fornecendo funções de codificação e decodificação. Também pode ser usada como uma proteção de tipos personalizados. De acordo com nossos times, é uma solução elegante para um problema inconveniente.

    Histórico
  • No passado, falamos sobre o aprimoramento de ferramentas para aplicação de boas práticas de engenharia em projetos de ciência de dados. Kedro é outra boa adição neste espaço. É um framework de fluxo de desenvolvimento para projetos de ciência de dados que traz uma abordagem padronizada para a construção de dados prontos para produção e pipelines de aprendizado de máquina. Gostamos do foco nas práticas de engenharia de software e do bom design, com ênfase no desenvolvimento orientado a testes, modularidade, controle de versão e boas práticas de higienização, como manter as credenciais fora da base de código.

    Histórico
  • Um progresso constante tem acontecido desde que escrevemos sobre componentes web em 2014. LitElement, parte do Polymer Project, é uma biblioteca simples que pode ser usada para criar componentes web leves. Ela é realmente apenas uma classe base que elimina a necessidade de muito dos boilerplates comuns, tornando a programação de componentes web muito mais fácil. Tivemos sucesso ao usá-lo nas primeiras experiências em projetos e estamos otimistas para ver o amadurecimento da tecnologia.

    Histórico
  • Aplicações web, especialmente aquelas desenvolvidas para uso interno em empresas, geralmente são escritas em duas partes. A interface de usuário e parte da lógica de negócio são executadas no navegador web, enquanto a maior parte da lógica de negócio, autorizações e persistência são executadas em um servidor. Essas duas metades normalmente se comunicam via JSON por HTTP. Os endpoints não devem ser confundidos com uma API real; eles são simplesmente um detalhe de implementação de uma aplicação dividida em dois ambientes de tempo de execução. Ao mesmo tempo, fornecem um ponto de extensão válido para testar as peças individualmente. Ao testar a parte do JavaScript, o lado do servidor pode ser fragmentado e simulado no nível da rede por uma ferramenta como Mountebank. Uma abordagem alternativa é interceptar as solicitações no navegador. Gostamos da abordagem adotada pelo Mock Service Worker porque, com os service workers, a ferramenta usa uma abstração familiar para pessoas desenvolvedoras. Essa abordagem resulta em uma configuração mais simples e execução de teste mais rápida. No entanto, como eles não testam a camada de rede real, você deve implementar alguns testes de ponta a ponta como parte de uma pirâmide de testes íntegra.

    Histórico
  • Mais e mais times que usam React estão reavaliando suas opções de gerenciamento de estado, algo que também mencionamos em nossa reavaliação do Redux. Agora, o Facebook — que criou o React — publicou o Recoil, um novo framework para gerenciamento de estado, que surgiu a partir de uma aplicação interna que tinha que lidar com grandes quantidades de dados. Embora atualmente não tenhamos muita experiência prática com Recoil, vemos seu potencial. A API é simples e fácil de aprender, parece um React idiomático. Ao contrário de outras abordagens, o Recoil fornece uma maneira eficiente e flexível de ter o estado compartilhado em uma aplicação: ele oferece suporte a estados criados dinamicamente por consultas e dados derivados, bem como a observação de estado em toda a aplicação sem prejudicar a divisão de código.

    Histórico
  • Os modelos modernos de aprendizado de máquina são muito complexos e exigem grandes quantidades de conjuntos de dados de treinamento rotulados para aprender. Snorkel surgiu no laboratório de Inteligência Artificial da Stanford com a constatação de que rotular manualmente os dados é muito caro e muitas vezes inviável. O Snorkel nos permite rotular dados de treinamento de forma programática por meio da criação de funções de rotulagem. Ele emprega técnicas de aprendizado supervisionado para avaliar a precisão e as correlações das funções de rotulagem e, em seguida, determina seus pesos novamente e combina seus rótulos de saída, resultando em rótulos de treinamento de alta qualidade. O time que criou o Snorkel lançou posteriormente uma plataforma comercial chamada Snorkel Flow. Embora o Snorkel não seja mais ativamente desenvolvido, ele ainda é significativo por suas ideias sobre o uso de métodos pouco supervisionados para rotular dados.

    Histórico
  • Streamlit é um framework de aplicação de código aberto em Python, usado por cientistas de dados para construir aplicações de visualização de dados com visuais bonitos. Streamlit se destaca em relação a concorrentes como Dash por seu foco em prototipagem rápida e suporte para uma ampla gama de bibliotecas de visualização, incluindo Plotly e Bokeh. Para cientistas de dados que precisam de showcases rápidos durante o ciclo de experimentação, Streamlit é uma escolha sólida. Estamos usando em alguns projetos e gostamos da possibilidade de criar visualizações interativas com muito pouco esforço.

    Histórico
  • Continuamos a observar novos frameworks JavaScript de front-end, e Svelte se destaca como um novo e promissor framework de componente. Ao contrário de outros frameworks que utilizam virtual DOM, Svelte compila em código JavaScript puro sem framework que atualiza diretamente o DOM de maneira cirúrgica. No entanto, é apenas um framework de componente; se você está planejando construir aplicações ricas em funcionalidades, avalie o uso do Sapper junto com o Svelte.

    Histórico
  • SWR é uma biblioteca React Hooks para busca de dados remotos. Ela implementa a estratégia de cache HTTP stale-while-revalidate. A SWR primeiramente retorna os dados de cache (stale), depois envia a solicitação de busca (revalidate) e, finalmente, atualiza os valores com a resposta atualizada. Os componentes recebem um fluxo de dados, primeiro obsoletos e, em seguida, novos, de maneira constante e automática. Nossos times de desenvolvimento tiveram boas experiências com a SWR, melhorando significativamente a experiência de uso por sempre ter dados na tela. No entanto, alertamos os times para que usem a estratégia de cache SWR apenas quando apropriada para uma aplicação retornar dados obsoletos. Observe que o HTTP requer que os caches respondam a uma solicitação com a resposta mais atualizada que seja apropriada para a solicitação, e apenas em circunstâncias cuidadosamente avaliadas uma resposta obsoleta pode ser retornada.

    Histórico
  • Testing Library é uma família de pacotes para testar aplicações em vários frameworks, como React, Vue, React Native e Angular, entre outros. O conjunto de bibliotecas ajuda a testar os componentes da UI de uma forma centrada no usuário, incentivando você a testar o comportamento do usuário em vez de detalhes de implementação, como a presença de elementos na UI em um determinado momento. Entre os benefícios dessa mentalidade estão testes mais confiáveis, e é isso que destacamos como seu principal diferencial. Recomendamos que você avalie esta família de bibliotecas ao testar suas aplicações web em qualquer framework. Embora nossa experiência direta seja limitada a React Testing Library e Angular Testing Library, tivemos uma impressão positiva do que vimos.

    Histórico

Evite?

    Não encontrou algo que você esperava achar?

    Cada edição do radar inclui blips que refletem nossas experiências nos seis meses anteriores. Talvez já tenhamos falado sobre o que você procura em um radar anterior. Às vezes, deixamos coisas de fora simplesmente porque há muitas a serem abordadas. Também pode estar faltando um tópico específico porque o radar reflete nossa experiência, não se baseando em uma análise abrangente do mercado.

    Novo,Modificado,Sem alteração