;(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

Vídeo registra meteoro no céu de Goiânia durante show de luzes de Alok

Marília Noleto

Colaboração para o UOL, em Goiânia

09/11/2020 14h39

Que o DJ goiano Alok iria encher o céu de Goiânia com luzes na noite de ontem, já era de conhecimento geral. Mas o que Victor Neves, de 31 anos, não imaginava era "flagrar" uma invasão à parte na performance do artista. Ao sacar o celular do bolso para gravar um vídeo da exibição, o piloto de aviação executiva registrou o momento da aparição de um meteoro.

"Fiquei impressionado. Foi uma situação absolutamente diferenciada. Nunca tinha visto nada dessa dimensão de tão perto. E tive a sorte de gravar", diz ele em entrevista ao UOL.

Natural de Manaus, Victor relata que ava uns dias por Goiânia e que foi para a casa do primo, também piloto, no Setor Vereda dos Buritis. Era por volta de 20h45 da noite quando conversavam e viam vídeos na internet sobre os demais eventos que Alok havia realizado. Foi nesta hora que Victor teve a ideia de gravar.

"Lá é um pouco alto e dá para ver de forma bacana. Mirei para o jogo de luzes e, em mais ou menos dois segundos, no mais tardar três, começou a cair o meteoro", conta, afirmando que tomou um susto, porque a luz era muito maior que a registrada nas imagens.

O vídeo logo ganhou repercussão nas redes sociais e chegou ao conhecimento do próprio Alok, que compartilhou o registro em seu perfil.

"Ontem quem acompanhava nossa ação com lasers em Goiânia acabou presenciando a queda de um meteorito. Surreal", vibrou o DJ em seu perfil no Instagam.

"Alok é tão f*** que até um meteoro surgiu", escreveu um internauta. Outra comentou: "Tudo acontece nessa minha Goiânia kkkkkkkkkkk". Alguns se confundiram e acreditaram se tratar de ovnis. "Os ETs estão bravos pq você está competindo c/ eles", brincou uma fã.

Curiosamente, não é de agora que Alok ganha a "colaboração" destes corpos celestes. Há alguns dias, o artista citou a agem de um outro meteoro, no último dia 26, pelo sul da Bahia, como forma inusitada de sua live. O DJ postou no Instagram vídeos falsos de luzes misteriosas no céu, com notícias sobre os fenômenos em diversas cidades do Brasil.

O show com feixes de luz azul em Goiânia começou às 20h e teve duração de três horas, nas quais um canhão de luz iluminou toda a cidade. A capital goiana foi uma das nove palcos escolhidos para a ação, que faz parte de uma contagem regressiva para uma live especial de final de ano, que será realizada pelo DJ em dezembro. As próximas paradas serão por Salvador (11), Recife (13) e Manaus (16).