Enable javascript in your browser for better experience. Need to know to enable it? Go here.

Linguagens & Frameworks

Adote ?

  • Em uma mudança que reflete a introdução do SwiftUI pela Apple, o Google introduziu o Jetpack Compose como uma abordagem nova e bem diferente para construir interfaces de usuário para aplicativos Android modernos. O Compose traz ferramentas mais poderosas e uma API Kotlin intuitiva. Na maioria dos casos, menos código é necessário, e ficou mais fácil criar interfaces de usuário em tempo de execução em vez de definir uma IU estática que pode ser preenchida com dados. Com Compose Multiplatform e Kotlin Multiplatform as pessoas desenvolvedoras agora têm um kit de ferramentas unificado para construir aplicações nativas para desktop, web e Android. O Wear OS 3.0+ também está incluído e com suporte para iOS já presente no Kotlin Multiplatform Mobile, é provável que o iOS seja compatível com Compose no futuro.

  • React Hooks introduziram uma nova abordagem para gerenciar lógica com estado. Considerando que os componentes React sempre estiveram mais próximos das funções do que das classes, os Hooks adotaram isso e trouxeram estado para as funções, em vez de usar classes para levar a função ao estado com métodos. Outro elemento básico do gerenciamento de estado em aplicações React é o Redux, e já observamos que a biblioteca está sob escrutínio, o que sugere que às vezes a complexidade do Redux não vale a pena e, em tais casos, uma abordagem simples usando Hooks é preferível. Fazer rollout disso pode rapidamente se tornar complicado caso você esteja trabalhando individualmente; portanto, recomendamos considerar uma combinação de React Context e os hooks useContext e useReducer, como explicado neste blog post.

Experimente ?

  • Arium é um framework de teste automatizado para aplicativos 3D escritos em Unity. Os testes funcionais são uma parte importante de uma pirâmide de teste saudável. Arium, que é construído como um wrapper no framework Unity Test, permite escrever testes funcionais para aplicativos 3D em várias plataformas. Nós o usamos com sucesso em alguns de nossos projetos.

  • Chakra UI é uma biblioteca de componentes de IU para React.js projetada para acessibilidade. Gostamos especialmente por seus recursos de acessibilidade, incluindo modo escuro e compatibilidade com as diretrizes da Web Accessibility Initiative – Accessible Rich Internet Applications (WAI-ARIA). Além disso, é fácil de testar e customizar, o que contribui para uma boa experiência de desenvolvimento, acelerando o processo de desenvolvimento de soluções de IU em ambientes de produção.

  • DoWhy é uma biblioteca Python para realizar inferência e análise causais de ponta a ponta. Embora os modelos de aprendizado de máquina possam fazer previsões com base em dados factuais, explorando a correlação de variáveis presentes no momento, são insuficientes em cenários em que precisamos questionar e se e _ por que: _e se uma variável mudou? Qual seria o impacto no resultado? A inferência causal é uma abordagem para responder a essas perguntas, estimando o efeito causal, ou seja, a magnitude pela qual um resultado mudaria, se mudássemos uma das variáveis causais. Esta abordagem é aplicada quando não podemos chegar à resposta por meio de observações e coleta de dados de testes A/B — devido ao custo dos experimentos ou limitações. A biblioteca DoWhy estima o efeito causal com base em um processo que usa os fatos e dados coletados no passado, bem como as suposições que podem ser feitas conhecendo o domínio. DoWhy usa um processo de quatro etapas de modelagem do gráfico de relações causais com base em suposições, identificando uma causa para um resultado, estimando o efeito causal e, finalmente, desafiando essas suposições, refutando o resultado. Usamos essa biblioteca com sucesso em produção e é uma das bibliotecas comumente usadas em casos de uso de estimativa causal.

  • Embora vários frameworks prometam a mesma facilidade de desenvolvimento e escalabilidade típicas de geradores de sites estáticos, continuamos tendo boas experiências com Gatsby.js. Particularmente, nós o usamos para construir e implantar sites que podem ser escalados para um grande número de usuários, sem precisarmos nos preocupar com o planejamento de capacidade ou a infraestrutura de implantação. Nossos times de desenvolvimento também ficaram impressionados com o foco na acessibilidade, suporte para navegadores antigos e o fato de poderem reutilizar sua experiência com React.js. Em resumo, sentimos que Gatsby amadureceu bem e é uma escolha sólida neste espaço.

  • Jetpack Hilt chegou recentemente à versão 1.0 e podemos dizer que tivemos boas experiências com o framework. O Jetpack Hilt fornece extensões para integrar Hilt com várias outras bibliotecas AndroidX, como WorkManager e Navigation, expandindo ainda mais o alcance do Hilt para oferecer às pessoas desenvolvedoras uma maneira padrão de incorporar a injeção de dependência Dagger em aplicativos Android. Já destacamos Koin como um framework de injeção de dependência nativo do Kotlin anteriormente no Radar, e recomendamos não tentar substituí-lo em uma base de código extensa já existente. No entanto, para iniciar novos projetos, Hilt parece ser o caminho a se seguir atualmente.

  • Para muitas organizações, o desenvolvimento móvel multiplataforma vem se tornando uma opção forte, especialmente à medida que a experiência de ponta a ponta de construção de aplicativos móveis multiplataforma se torna mais agradável e eficiente. Kotlin Multiplatform Mobile (KMM) é um SDK fornecido pela JetBrains que aproveita os recursos multiplataforma em Kotlin e inclui ferramentas e recursos projetados para otimizar a experiência de desenvolvimento. Com o KMM, você escreve o código uma vez para a lógica de negócio e o core do aplicativo em Kotlin, e em seguida o compartilha com aplicativos Android e iOS. Você pode escrever código específico para plataforma apenas quando necessário, por exemplo, para aproveitar as vantagens dos elementos nativos da IU, e o código específico é mantido em visualizações diferentes para cada plataforma. Estamos mudando o KMM para o anel Experimente devido à sua rápida evolução e vemos algumas organizações usando como padrão.

  • lifelines é uma biblioteca para análise de sobrevivência em Python. Originalmente desenvolvida para eventos de nascimento e morte, evoluiu para uma biblioteca de análise de sobrevivência completa para prever qualquer tempo de duração. Além dos casos de uso médico (como responder: por quanto tempo essa população vive em média?), nós o usamos no varejo e na indústria para responder a perguntas como: há quanto tempo o usuário está inscrito em um serviço?; ou quando devemos realizar a próxima manutenção preventiva?

  • Aplicações web, especialmente as que se destinam a uso interno em empresas, geralmente são escritas em duas partes. A interface do usuário e alguma lógica de negócio são executadas no navegador web, enquanto a maior parte da lógica de negócio, além de autorização e persistência, são executadas em um servidor. Essas duas metades normalmente se comunicam via JSON sobre HTTP. Os endpoints não devem ser confundidos com uma API real, 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 uma costura válida para testar as peças individualmente. Ao testar a parte do JavaScript, o lado do servidor pode ser um mock ou stub no nível da rede usando uma ferramenta como Mountebank. Mock Service Worker oferece uma abordagem alternativa para interceptar solicitações no navegador. Isso também simplifica os testes manuais. Como Mountebank, o Mock Service Worker é executado fora do navegador como um processo Node.js para testar interações de rede. Além das interações REST, também executa mocks de APIs GraphQL — um bônus, já que pode ser complexo simular manualmente no nível da rede com GraphQL.

  • Gerenciamento de estado em aplicações React tem sido um tópico recorrente no Radar, e recentemente esclarecemos nossa posição sobre Redux, um framework popular neste espaço. NgRx é, em essência, Redux para Angular . É um framework para construir aplicações reativas com Angular, fornecendo maneiras de gerenciar o estado e isolar os efeitos colaterais. Nossos times relatam que usar o NgRx foi simples, principalmente porque é construído com RxJS, e destacam um trade-off semelhante àquele que já conhecemos do Redux: adicionar gerenciamento de estado reativo traz uma complexidade adicional que só compensa em aplicações maiores. A experiência de desenvolvimento é aprimorada por esquemas, uma biblioteca de scaffolding, além de um conjunto de ferramentas que permitem o rastreamento visual de estado e depuração de viagem no tempo.

  • Originalmente, as anotações de tipo foram adicionadas ao Python para oferecer suporte à análise estática. No entanto, considerando o quão amplamente as anotações de tipo, e as anotações em geral, são usadas em outras linguagens de programação, era apenas uma questão de tempo antes que as pessoas desenvolvedoras começassem a usar as anotações de tipo do Python para outros fins. pydantic se enquadra nesta categoria. A biblioteca permite que você use anotações de tipo para validação de dados e gerenciamento de configurações em tempo de execução. Quando os dados chegam como, digamos, um documento JSON e precisam ser analisados em uma estrutura Python complexa, pydantic garante que os dados recebidos correspondam aos tipos esperados ou relata um erro caso não correspondam. Embora você possa usar pydantic diretamente, muitas pessoas desenvolvedoras têm o usado como parte do FastAPI, um dos frameworks Python para web mais populares. Na verdade, o uso de pydantic em FastAPI é considerado tão indispensável que uma alteração recentemente proposta para Python, com o objetivo de reduzir o custo de carregamento de código anotado na memória, foi reconsiderada porque teria quebrado o uso de anotações de tipo em tempo de execução.

  • Avaliamos Quarkus há dois anos, e agora nossos times já têm mais experiência usando-a. Quarkus é uma stack Java nativa do Kubernetes, adaptada para OpenJDK HotSpot e GraalVM. Nos últimos dois anos, Quarkus conectou as melhores bibliotecas do mundo Java e simplificou a configuração do código, proporcionando a nossos times uma experiência de desenvolvimento muito boa. Quarkus tem um tempo de inicialização muito rápido (dezenas de milissegundos) e um baixo consumo de memória RSS; isso ocorre por causa de sua abordagem de compilação contêiner-primeiro, que usa técnicas de compilação antecipada para fazer injeção de dependência em tempo de compilação e, assim, evita a execução custos de tempo de reflexão. Nossos times também tiveram que lidar com as desvantagens: Quarkus leva quase dez minutos para compilar em nosso pipeline; alguns recursos que dependem de anotações e reflexão (como ORM e serializador) também são limitados. Em parte, essas desvantagens são resultado do uso do GraalVM. Portanto, se sua aplicação não está rodando para FaaS, usar Quarkus com HotSpot também é uma boa escolha.

  • Quando queremos animações em aplicativos React Native, React Native Reanimated 2.0 é o caminho a seguir. Anteriormente, usamos Reanimated 1.x, mas havia problemas relacionados à complexidade da linguagem declarativa Reanimated e também alguns custos de desempenho adicionais relacionados à inicialização e comunicação entre o thread React Native JavaScript e o thread de IU. Reanimated 2.0 é uma tentativa de reimaginar a maneira de executar animações no thread de interface do usuário, permitindo programar as animações em JavaScript e executá-las no thread de IU usando uma nova API chamada animation worklets. A biblioteca faz isso gerando um contexto JavaScript secundário no thread de interface do usuário que, então, é capaz de executar funções JavaScript. Estamos usando em nossos projetos React Native que precisam de animações e gostamos bastante.

  • React Query é frequentemente descrita como a biblioteca de busca de dados para React que faltava. Buscar, armazenar em cache, sincronizar e atualizar o estado do servidor é um requisito comum em muitas aplicações React e, embora os requisitos sejam bem compreendidos, obter a implementação correta é notoriamente difícil. React Query fornece uma solução simples e direta usando hooks. As pessoas desenvolvedoras de aplicativos podem simplesmente passar uma função que resolve seus dados e deixar todo o resto para o framework. Gostamos de sua funcionalidade out-of-the-box, mas também das muitas possibilidades de configuração quando necessário. As ferramentas para pessoas desenvolvedoras, infelizmente ainda não disponíveis para React Native, ajudam na compreensão de como o framework funciona, beneficiando quem está começando a usá-lo. Em nossa experiência, a versão 3 do framework trouxe a estabilidade necessária para ser usada em produção em nossos projetos de clientes.

  • Nossos times de desenvolvimento continuaram sendo produtivos com Tailwind CSS e estão impressionados com sua capacidade de escala para grandes equipes e bases de código. Tailwind CSS oferece uma abordagem alternativa para ferramentas e frameworks CSS que reduz a complexidade por meio de classes CSS de utilitário de nível inferior. As classes CSS de Tailwind podem ser facilmente personalizadas para se adequar à identidade visual de qualquer cliente. Também descobrimos que o framework trabalha particularmente bem com Headless UI. O CSS de Tailwind permite que você evite escrever quaisquer classes ou CSS por conta própria, o que leva a uma base de código mais sustentável a longo prazo. Tailwind CSS parece oferecer o equilíbrio certo entre capacidade de reutilização e personalização para criar componentes visuais.

  • Desde que mencionamos pela primeira vez o TensorFlow Lite no Radar em 2018, nós o usamos em vários produtos e temos o prazer de informar que o framework funciona como anunciado. O caso de uso padrão é integrar modelos pré-treinados em aplicativos móveis, mas o TensorFlow Lite também oferece suporte ao aprendizado no dispositivo, o que expande as possibilidades de aplicação. Os vários exemplos no site mostram muitas áreas comuns de aplicação, como classificação de imagens e detecção de objetos, mas também sugerem novas formas de interação usando, por exemplo, estimativa de pose e reconhecimento de gestos.

  • Mencionamos pela primeira vez o Three.js no Radar no anel Avalie em 2017. Desde então, esta biblioteca de renderização 3D para a web evoluiu e melhorou rapidamente. As APIs WebGL padrão foram aprimoradas e o Three.js adicionou suporte para WebXR, tornando-o uma ferramenta viável para a criação de experiências imersivas. Ao mesmo tempo, o suporte do navegador para renderização 3D e APIs de dispositivos WebXR melhorou, tornando a web uma plataforma cada vez mais atraente para conteúdo 3D. Embora existam outras bibliotecas de renderização 3D, nossos times passaram a preferir Three.js, especialmente quando pareado com React Three Fiber para abstrair alguns dos detalhes de baixo nível. Descobrimos que as pessoas desenvolvedoras ainda precisam estar cientes dos problemas de desempenho e, às vezes, precisam reestruturar os dados para otimizar a velocidade de renderização.

  • Ao criar uma interface de usuário com SwiftUI, a ideia é construir um modelo de visualização que possa ser mapeado facilmente para os elementos da IU. Nesses casos, a maioria dos testes pode ser feita no modelo, usando frameworks de teste de unidade padrão, o que torna esses testes fáceis de escrever e rápidos de executar. Para testar as ligações entre o modelo e as visualizações, as pessoas desenvolvedoras geralmente usam XCUITest, um framework de automação de teste que inicia o aplicativo completo e controla remotamente a interface. Funciona e os testes são razoavelmente estáveis, mas demoram muito para serem executados.

    Para uma abordagem mais rápida para escrever testes de unidade para SwiftUI, tente ViewInspector, um framework de código aberto que usa a API de reflexão pública do Swift para acessar as visualizações subjacentes criadas por SwiftUI. Com o ViewInspector, um teste simplesmente instancia uma visualização SwiftUI, localiza os elementos da interface que precisam ser testados e, em seguida, faz afirmações contra esses elementos. As interações básicas, como taps, também podem ser testadas. Como muitos frameworks de teste de IU, fornece uma API para localizar elementos de interface, seja especificando um caminho por meio da hierarquia de visualização ou usando um conjunto de métodos localizadores. Esses testes são geralmente mais simples do que os XCUITests e são executados com muito mais rapidez. Como uma palavra de cautela, no entanto, dada a facilidade com que os testes podem ser escritos usando ViewInspector, você pode acabar tendo que lidar com a tentação de testar demais a interface. Testar mapeamentos um-para-um simples é apenas um registro de partidas dobradas. E embora o ViewInspector torne mais fácil testar o código SwiftUI, lembre-se de manter a maior parte da lógica no modelo.

  • Vowpal Wabbit é uma biblioteca de aprendizado de máquina de uso geral. Mesmo que tenha sido originalmente criada no Yahoo! Research há mais de uma década, ainda queremos mencioná-lo para destacar que continua sendo onde muitas das mais novas técnicas de aprendizado de máquina são adicionadas primeiro. Se você tiver interesse em aprendizado de máquina, fique de olho nas inovações do Vowpal Wabbit. Observe também que a Microsoft mostrou um interesse mais profundo no Vowpal Wabbit nos últimos anos, empregando um grande contribuidor e integrando-o em suas ofertas do Azure, por exemplo em seu designer de aprendizado de máquina e no Personalizer.

  • Zap é uma biblioteca de registro estruturada de alto desempenho para GoLang, mais rápida do que a implementação padrão de log e outras bibliotecas de log. Zap tem um logger "bonito", fornecendo uma interface estruturada e no estilo printf, bem como uma implementação (ainda) mais rápida com apenas a interface estruturada. Nossos times a têm usado amplamente em grande escala e estão felizes em recomendá-la como sua solução ideal.

Avalie ?

  • Headless UI é uma biblioteca de componentes sem estilo para React.js ou Vue.js, desenvolvida pelas mesmas pessoas que criaram o Tailwind CSS. Nossos times de desenvolvimento gostam do fato de não terem que personalizar ou contornar os estilos padrão que vêm com outras bibliotecas de componentes. A rica funcionalidade e acessibilidade total dos componentes, combinadas com o estilo sem atrito, permitem que as pessoas desenvolvedoras se concentrem de forma mais produtiva no problema de negócio e na experiência do usuário. Como seria esperado, Headless UI também funciona bem com as classes CSS do Tailwind.

  • InsightFace é uma caixa de ferramentas de código aberto para análise profunda de face em 2D e 3D, baseada principalmente em PyTorch e MXNet. InsightFace usa alguns dos métodos mais recentes e precisos para detecção, reconhecimento e alinhamento faciais. Particularmente, a ferramenta nos interessa por contar com uma das melhores implementações para ArcFace, um modelo de aprendizado de máquina de ponta que detecta as semelhanças entre duas imagens. InsightFace com ArcFace recebeu uma pontuação de precisão de 99,83% no conjunto de dados Labeled Faces in the Wild (LFW). Estamos testando no contexto da desduplicação facial e vimos resultados promissores.

  • Kats é um framework leve para realizar análises de séries temporais, recentemente lançado pelo Facebook Research. A análise de séries temporais é uma área importante na ciência de dados, abrangendo os domínios do problema de previsão, detecção (incluindo a detecção de sazonalidades, outliers e pontos de mudança), extração de características e análise multivariada. Normalmente, tendemos a ter diferentes bibliotecas para diferentes técnicas em uma análise de série temporal. Kats, entretanto, pretende ser um balcão único para análises de séries temporais e fornece um conjunto de algoritmos e modelos para todos os domínios de problemas de análise de séries temporais. Anteriormente mencionamos Prophet, também do Facebook Research, que é um dos modelos que Kats implementa para previsão. Temos boas expectativas para testar Kats em problemas envolvendo análises de séries temporais.

  • Se você estiver usando Apache Kafka e criando aplicações de processamento de fluxo, ksqlDB é um ótimo framework para escrever aplicações simples usando instruções semelhantes a SQL. ksqlDB não é um banco de dados SQL tradicional. No entanto, permite que você use instruções semelhantes a SQL leves para construir novos streams ou tabelas usando como base os tópicos Kafka existentes. As consultas podem extrair dados, semelhante à leitura de um banco de dados tradicional, ou enviar resultados para a aplicação quando ocorrem mudanças incrementais. Você pode optar por executá-lo como um servidor autônomo nativamente, como parte da instalação existente do Apache Kafka ou como um serviço totalmente gerenciado na Confluent Cloud. Estamos usando ksqlDB em casos de uso de processamento de dados simples. Em casos de uso mais complexos, nos quais uma aplicação requer código de programação além de consultas SQL algébricas, continuamos usando frameworks de processamento de dados como Apache Spark ou Apache Flink tendo Kafka como base. Recomendamos experimentar ksqlDB nos cenários em que a simplicidade da aplicação permita.

  • Polars é uma biblioteca de estruturas de dados em memória implementada em Rust. Ao contrário de outras estruturas de dados (como Pandas), Polars é multithread e segura para operações paralelas. Os dados em memória são organizados no formato Apache Arrow para fornecer operações analíticas eficientes e interoperabilidade com outras ferramentas. Se você tem familiaridade com Pandas, vai se adaptar rapidamente às ligações Python de Polars. Acreditamos que Polars, com implementação em Rust e ligações Python, é uma estrutura de dados em memória com bom desempenho para ser avaliada conforme suas necessidades analíticas.

  • PyTorch Geometric é uma biblioteca de extensão de aprendizagem profunda geométrica para PyTorch. O aprendizado profundo geométrico visa construir redes neurais que possam aprender com dados não euclidianos, como grafos. Abordagens de aprendizado de máquina baseado em rede gráfica têm despertado interesse crescente na modelagem de redes sociais e nos campos biomédicos, especificamente na descoberta de medicamentos. PyTorch Geometric fornece uma biblioteca fácil de usar para projetar problemas complicados de rede de grafos, como a representação da estrutura de proteínas. Possui suporte para GPU e CPU e inclui uma boa coleção de algoritmos de aprendizado de máquina baseados em grafos fundamentados em pesquisas recentes.

  • Micro frontends continuaram ganhando popularidade desde que foram introduzidos pela primeira vez. No entanto, é fácil cair na anarquia de micro frontends se os times não conseguirem manter a consistência em uma aplicação, desde a técnica de estilo até a gestão de estado. Qiankun, que significa céu e terra em chinês, é uma biblioteca JavaScript construída para fornecer uma solução pronta para uso com esse fim. Qiankun é baseado em single-spa, portanto, permite que diferentes frameworks coexistam em uma única aplicação. Também fornece isolamento de estilo e sandbox de JavaScript para garantir que o estilo ou estado das microaplicações não interfiram um no outro. Qiankun recebeu alguma atenção na comunidade; nossos times também estão o avaliando, com a expectativa de que possa suportar uma depuração mais amigável.

  • Com o crescente interesse e — e a viabilidade — de aplicações 3D e realidade estendida (XR) em navegadores web, nossos times vem experimentando React Three Fiber para o desenvolvimento de experiências 3D na web. React Three Fiber é uma biblioteca que pega o componente React.js e o modelo de estado e os converte em objetos 3D renderizados com o Three.js. Essa abordagem abre a programação 3D da web para o grupo mais amplo de pessoas desenvolvedoras já familiarizadas com React.js e o rico ecossistema de ferramentas e bibliotecas que o cercam. No entanto, ao desenvolver aplicações com React Three Fiber, nossos times geralmente precisam manipular a cena 3D de maneira imperativa. Isso não combina bem com o paradigma do componente reativo fornecido pelo React. Não há como escapar da necessidade de entender os mecanismos básicos de renderização 3D. Ainda não há consenso sobre o React Three Fiber oferecer abstração suficiente para garantir o aprendizado de suas idiossincrasias, ou se é melhor apenas trabalhar com o Three.js diretamente.

  • Tauri é uma alternativa a Electron para criar aplicações desktop usando uma combinação de ferramentas Rust e HTML, CSS e JavaScript renderizados no WebView do sistema. Ao contrário do Electron, que empacota o Chromium, as aplicações desenvolvidas com Tauri usam o WebView subjacente, ou seja, WebKit no macOS, WebView2 no Windows e WebKitGTK no Linux. Essa abordagem tem compensações interessantes: por um lado, você obtém binários pequenos e rápidos nas aplicações; por outro lado, você precisa verificar as peculiaridades de compatibilidade entre WebViews de sistemas diferentes.

  • Transloco é uma biblioteca do Angular para construir aplicativos multilíngues. Pode ser usado em modelos e oferece uma função para cobrir casos de uso mais complexos. Como as traduções são carregadas sob demanda em tempo de execução, Transloco facilita a implementação da troca de idioma no navegador web. Também cobre a localização de números, datas e muito mais usando template pipes.

Evite ?

 
novo
Modificado
Sem alteração

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 faltar um tópico específico porque o Radar reflete nossa experiência, não se baseando em uma análise abrangente do mercado.

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 faltar um tópico específico porque o Radar reflete nossa experiência, não se baseando em uma análise abrangente do mercado.

Radar

Baixar o Technology Radar Volume 25

English | Español | Português | 中文

Radar

Mantenha-se por dentro das tendências de tecnologia

 

Seja assinante

Visite nosso arquivo para acessar os volumes anteriores