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

Podcast

UOL Palmeiras

O podcast para os torcedores do verdão


OPINIÃO

UOL Palmeiras #30: "Vejo o time arriscando pouco com Abel", diz Euller

Do UOL, em São Paulo

21/09/2021 16h00

Considerados como dois dos times mais fortes do Brasil, Palmeiras e Atlético-MG começam hoje a decidir qual deles estará na final da Libertadores. O primeiro capítulo será escrito a partir das 21h30, no Allianz Parque (com acompanhamento do Placar UOL), em um duelo especial para Euller. O ex-atacante já vestiu a camisa das duas equipes e sentiu o gosto de erguer o troféu pelo Verdão, em 1999.

No podcast UOL Palmeiras #30 (ouça na íntegra no episódio acima), o apresentador Vanderlei Lima, e o repórter Diego Iwata Lima conversaram com o "Filho do Vento", que falou sobre suas expectativas para o confronto. Embora tenha elogiado o trabalho de Abel Ferreira à frente do Verdão, Euller acha que o treinador poderia abrir mão da cautela.

"Vejo o Palmeiras hoje arriscando pouco. Nos jogos que eu vi do time em mata-mata, em todas as competições com o Abel, ele não gosta de correr riscos no primeiro jogo e também no início da segunda partida. Ele vai para o risco dependendo do resultado. Eu, como treinador, prefiro correr um pouco mais de risco. Se eu perder, que seja arriscando, e não por covardia", analisou o ex-jogador.

Euller, que atualmente mora na Espanha e trabalha como treinador, vê espaço para Abel evoluir na carreira. "Ele é um baita treinador, estudioso do futebol e vem evoluindo. Só tenho uma ponderação quanto ao trabalho dele que é essa questão de arriscar um pouco mais. O Palmeiras é um clube vencedor e em que não basta vencer, mas tem que se apresentar bem. Os números de vitórias são bons, mas a qualificação da equipe ainda pode melhorar e ser um time mais Palmeiras na sua grandiosidade", opinou.

O "Filho do Vento" acredita em equilíbrio no duelo entre Verdão e Galo. "Acredito que, no momento, o Palmeiras é uma equipe muito equilibrada. O Atlético-MG vem em uma ascensão. Cada semana é uma notícia boa e, dentro de campo, vai vencendo. Isso favorece muito. Para mim, as duas equipes chegam em condições iguais. Não há um favorito. Ficamos na expectativa por um bom jogo e que os técnicos sejam um pouco mais ousados", afirmou.

Entre os jogos diante do Atlético-MG, o Palmeiras tem "apenas" o clássico contra o Corinthians, no sábado (25), pelo Brasileirão. Para Euller, o time alviverde tem condições de encarar o arquirrival com a mesma força dedicada à Libertadores. "O Palmeiras tem elenco para fazer bonito nas duas competições. Pode fazer tanto um bom primeiro jogo contra o Atlético-MG como também vencer o Corinthians", completou.

Ouça o podcast UOL Palmeiras e confira o bate-papo completo com Euller, que também relembrou algumas agens de sua carreira, em especial com a camisa alviverde.

Os podcasts do UOL estão disponíveis em uol.com.br/podcasts e em todas as plataformas" de distribuição de áudio. Você pode ouvir UOL Palmeiras, por exemplo, no Spotify, Apple Podcasts, Google Podcasts, Amazon Music e YouTube.