;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Chico Barney

Instagram copia coreografias do TikTok e beneficia bailarinas do Faustão

Natacha Horana e Fausto Silva na tela do Domingão - Reprodução/Globoplay
Natacha Horana e Fausto Silva na tela do Domingão Imagem: Reprodução/Globoplay

Colunista do UOL

10/07/2020 13h33

Receba os novos posts desta coluna no seu e-mail

Email inválido

Não ouse ter uma ideia genial para aplicativo de celular, caro leitor. Além de dar muito trabalho, é quase certo que Mark Zuckerberg vai copiá-lo em todas as suas redes sociais, que vão do Facebook ao WhatsApp.

Aconteceu com o Snapchat, responsável pelo surgimento dos Stories nas mais diferentes plataformas, e agora a história se repete como farsa com o Instagram Reels —o jeitinho todo especial de imitar as funcionalidades do TikTok.

A rede social chinesa se tornou rapidamente uma gigante mundial. Graças às ferramentas de edição, como dublagem e trilha sonora, os vídeos curtinhos e divertidos são uma coqueluche. Toda uma nova geração de influenciadores digitais surgiu por lá.

Mas o Instagram quer acabar com a festa. Ao oferecer para seus usuários as mesmas possibilidades de criação, pretende manter a fidelidade da turma, visto que sua base é bastante eloquente.

Eis que a nova moda surge como um desafio bastante importante no mercado da influência digital, composto basicamente por celebridades de nicho que amealham parte cada vez mais significativa das verbas publicitárias de grandes marcas.

Como a música é um elemento fundamental para este novo tipo de conteúdo, inclusive lançando novos sucessos ao topo das paradas em rádios, no YouTube e no Spotify, a rapaziada agora precisa saber dançar.

Não basta apenas fazer maquiagens lindas ou ter um excelente gosto para roupas. Dada a situação global por conta da pandemia, também não é mais possível engajar graças a destinos turísticos pitorescos.

É necessário balançar o esqueleto para atender à demanda das tendências do momento. Decorar a coreografia de "Confesso que chorei" ou "Tudo no sigilo" é livro-texto para se dar bem nos algoritmos da fama.

Eis o cenário ideal para uma nova era de ouro das bailarinas do Faustão na internet. Enquanto a turma de outras áreas do conhecimento humano precisa se adequar ao novo status quo, o mainstream finalmente alcançou quem vive dessa arte.

"Ainda bem que a dança só tende a crescer cada vez mais no Brasil e no mundo", diz Natacha Horana, integrante do balé do Domingão. "Como somos bailarinas profissionais, algumas até professoras, já estamos em um ponto na frente nesse universo. Agora é só dançar a vida ao som do coração. Se entregar nas novas ferramentas."

Yasmin Marinho é sucesso no Domingão e também no Instagram - Reprodução/Instagram - Reprodução/Instagram
Yasmin Marinho é sucesso no Domingão e também no Instagram
Imagem: Reprodução/Instagram

Yasmin Marinho, também destacada bailarina do Faustão, enxerga como uma oportunidade para todos. "Acredito que o avanço tecnológico e as redes sociais, usadas de forma positiva, para o bem, sem dúvida alguma podem beneficiar não apenas nós bailarinas, mas qualquer outra profissão que encontre seu espaço nesse universo! Na minha opinião, o que conta é a criatividade."

Seja no TikTok ou no Instagram, fato é que o jeito de produzir conteúdo está mudando. E os criadores precisarão de jogo de cintura para encarar os novos desafios. As redes sociais se tornaram a Dança dos Quase Famosos.

Voltamos a qualquer momento com novas informações.