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

Ronnie Von bateu o telefone na cara de um beatle porque achou que era trote

Colaboração para Splash, do Rio

29/06/2022 04h00

Ronnie Von não é um beatlemaníaco qualquer. Filho de diplomata, ouvia antes de todo mundo os lançamentos do Fab Four nos anos 1960. Seu primeiro sucesso, "Meu Bem", era uma versão de "Girl", do álbum "Rubber Soul". E até hoje segue um fã devoto do Quarteto de Liverpool.

No "OtaLab" desta semana, Otaviano Costa perguntou se essa iração sempre se manteve à distância. "Você já teve contato com o Paul, com o Ringo? Já teve algum momento de encontro emocionante, inesquecível?"

Ronnie riu e contou a história de quando ele NÃO gravou com um beatle. O causo inclui ainda outra figura muito popular, o bicampeão de Fórmula 1 Emerson Fittipaldi.

Emerson é um amigo querido de juventude. É como se fosse um irmão. E ele tinha um outro irmão, que era o George Harrison. Emerson e ele eram muito amigos.

Um dia, Emerson soube que Ronnie preparava um novo disco, e teve uma ideia. "Eu estava pra gravar uma música chamada ‘Cachoeira’. E o Emerson armou com o George de eu gravá-la num estúdio dentro da casa dele, na Inglaterra", disse.

Pelo jeito só faltou combinar com Ronnie, que atendeu um telefonema em sua casa e ouviu alguém falar do outro lado da linha: "Ronnie? George Harrison speaking" (Ronnie? George Harrison falando, em português).

O beatle não sabia, mas Ronnie Von era alvo constante de trotes telefônicos dos amigos. E pensou que este era mais um.

Desliguei na cara do George Harrison. Eu-desliguei-o-telefone-na-cara-do-George-Harrison. E não tive coragem de ligar de volta para me desculpar. Que vergonha eu tenho.

Em vez de George Harrison na Inglaterra, Ronnie gravou "Cachoeira" com o Roupa Nova em Botafogo, no Rio de Janeiro. A música foi um dos hits de 1984 e um dos grandes sucessos de sua carreira.

Mas deixei de gravar com o George, no meu único encontro com um beatle, do qual vou me arrepender pelo resto da vida.

OtaLab

O "OtaLab", o programa de internet que parece TV, pode ser acompanhado pelos canais do Splash no YouTube, Twitter e Facebook. Você pode assistir a toda a programação do Canal UOL aqui.