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

Samuel Rosa sobre Beatles: 'Melhor banda de pop rock de todos os tempos'

Colaboração para Splash, em São Paulo

17/12/2021 04h00

Samuel Rosa 'saiu da caixa' de várias formas ao lado de Tiago Abravanel. Em um papo divertido e muito musical, Samuel falou das suas referências e cantou músicas pela primeira vez, em mais de 30 anos de carreira.

O "Sai da Caixa" é um programa musical do Canal UOL, apresentado por Abravanel e está na sua segunda temporada. Além de Samuel, nomes como Pocah, Salgadinho e Felipe Araújo.

Você não precisa ter visto ao vivo um determinado cantor, banda ou time para saber que são os melhores no que entregavam. Assim analisou Samuel Rosa, ao falar sobre The Beatles.

Eu também não precisei ver os Beatles tocando ao vivo para saber que foi a melhor banda de pop rock de todos os tempos. Samuel Rosa

A comparação veio após o cantor eleger seu top 5 de jogadores de futebol com: "Pelé, Garrincha, Maradona, Messi e Tostão. Esse time que eu não vi jogar, mas eu sei que foi o melhor time que o Cruzeiro teve. E que foi um dos melhores times que o Brasil teve".

samuel - Reinaldo Canato/UOL - Reinaldo Canato/UOL
Sai da Caixa: Tiago Abravanel recebe Samuel Rosa
Imagem: Reinaldo Canato/UOL

Uma música para cada momento

Depois de ter sido desafiado a cantar músicas de fora do seu repertório, com Luiz Melodia e Pepeu Gomes, Abravanel propôs um outro desafio: definir uma música para cada momento.

Para um mineirinho, não podia começar diferente: "Uma música para lembrar de Minas Gerais", pediu Abravanel. "Clube da Esquina 1", respondeu Samuel rapidamente. Para a surpresa de todos, na hora de escolher uma música para jogar futebol, "É Uma Partida de Futebol", não foi a escolhida por ele, mas sim "Homem Gol, de Jorge Ben Jor.

Entre outras, Samuel Rosa elegeu "Gabriel" do Beto Guedes uma ótima pedida para chorar. "Qualquer uma do Oasis", para ouvir baixinho, no fone de ouvido e Empire of the Sun para estourar na caixa de som.

... e ainda espero respostas

Inspirado em "Resposta", um dos hits de Skank, Abravanel quis saber se tem alguns pontos da vida que Samuel ainda espera a sonhada resposta.

Espero várias! A nossa existência mesmo, qual sentido disso aqui? O que é? Samuel Rosa

A Fazenda: Ex-peões voltam para sede em atividade da reta final

Você pode assistir a toda a programação do Canal UOL aqui