;(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 São Paulo

O podcast para o torcedor tricolor


ANÁLISE

UOL São Paulo #25: Leandro Guerreiro: "Crespo deu padrão ao São Paulo"

Do UOL, em São Paulo

17/08/2021 16h08

Leandro Guerreiro, ex-atacante do São Paulo, é o convidado especial deste episódio. Bicampeão brasileiro em 2006 e 2007 pelo Tricolor, o ex-jogador falou sobre o atual momento do time e relembrou alguns momentos de sua agem pelo Morumbi.

No podcast UOL São Paulo #25 (ouça na íntegra no episódio acima), o apresentador Vanderlei Lima e o repórter Brunno Carvalho conversaram com o ídolo tricolor, que elogiou o trabalho do treinador Hernán Crespo e comparou o trabalho do argentino com o de Muricy Ramalho.

"Hoje o São Paulo sabe o que faz em campo. Tem um padrão de jogo. As peças, quando são alteradas, mantêm o sistema e não altera muita coisa. O São Paulo gosta de ficar com a bola. Às vezes acho que falta um pouco mais de velocidade, mas não adianta cobrar isso quando não tem jogadores para que isso aconteça", analisou Leandro.

Ao chegar ao São Paulo, Crespo adotou um esquema tático com três zagueiros, exatamente como Muricy Ramalho fez na época em que Leandro defendeu o Tricolor. Ele comparou essas duas formações. "Joga com três zagueiros, mas é diferente. Não tocava tanto a bola para trás. Dificilmente recuava a bola para o goleiro. Vi o primeiro jogo [contra o Palmeiras] e, em parte do primeiro tempo, de cada dez bolas, recuavam oito", comentou.

Para Leandro, no futebol atual, falta um pouco mais de ousadia, principalmente na parte ofensiva. "Na nossa época, tentávamos jogar para frente e usávamos bastante o Aloísio como pivô. Ele segurava bem. Tínhamos dois alas com qualidade imensa e um individual forte. Hoje se usa pouco o mano a mano, o drible. É mais o toque, cadência, segurar a bola. Às vezes você precisa arriscar mais e sair da mesmice", opinou.

Leandro elogiou o trabalho de Crespo e considera que o treinador fez o Tricolor ter mais consistência. "O time estava vindo bem com Marquinhos e Rigoni. O São Paulo tocava demais a bola e não dava aquela esticada que é necessária, como no jogo na Argentina [contra o Racing]. Mas acho que hoje o São Paulo tem um padrão de jogo", concluiu o ex-jogador.

Ouça o podcast UOL São Paulo e confira também o debate sobre o goleiro Tiago Volpi, que tem sofrido críticas da torcida por conta de algumas falhas, mas tem respaldo da diretoria.

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 São Paulo, por exemplo, no Spotify, Apple Podcasts, Amazon Music e YouTube.