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

OPINIÃO

Menon: 'Botafogo acabou com invencibilidade fake do São Paulo; veja notas'

Do UOL, em São Paulo

16/06/2022 19h21

Em uma atuação pouco inspirada, o São Paulo perdeu por 1 a 0 para o Botafogo nesta quinta-feira (16), no Nilton Santos, pelo Brasileirão. O Tricolor praticamente não chutou a gol e facilitou a vida do goleiro Gatito Fernández. Nem mesmo as alterações feitas pelo técnico Rogério Ceni melhoraram a produção ofensiva da equipe, que termina a rodada fora do G4.

Na Live do São Paulo, programa do UOL Esporte logo após os jogos do Tricolor, os jornalistas Marcelo Hazan, Menon e Gabriel Perecini lamentaram a falta de criatividade do time, refletida no baixo número de finalizações: foram apenas cinco (contra 16 do Botafogo), duas delas na direção do gol.

"O São Paulo foi totalmente dominado pelo Botafogo, mental, física e tecnicamente. O time não conseguiu decifrar o Kayque, volante que estava toda hora na área do São Paulo, em uma projeção intensa. O São Paulo não soube lidar com a postura desse jogador. Igor Gomes e Rodrigo Nestor, que são grandes jogadores, não conseguiram segurar o menino Kayque", analisou Menon, referindo-se ao autor do gol da vitória alvinegra.

O colunista do UOL também apontou a lentidão e a falta de criatividade do ataque como outros defeitos do Tricolor na partida. "Houve outros problemas, como muito poucas finalizações. Teve jogo construído, mas com pouca velocidade. Não dá para culpar muita coisa porque o São Paulo tem banco fraco e não tem um grande elenco. Acabou a invencibilidade, digamos, fake, que era de oito empates e sete vitórias e não dava segurança", observou.

Os comentaristas avaliaram o desempenho dos jogadores do São Paulo. Veja as notas:

Jandrei

Hazan - Trabalhou bastante e não teve culpa no gol - 6,5

Menon - Fez uma boa defesa aos 13 minutos. Não teve culpa no gol. Foi bem nas saídas pelo alto - 7

Perecini - Não conseguiu ser tão útil na saída de bola com os pés - 6

Arboleda

Hazan - 6

Menon - Foi bem pelo alto - 6,5

Perecini - Teve alguma dificuldade e furou uma bola de cabeça - 6

Leo

Hazan - 6

Menon - Teve alguns problemas no começo do jogo - 6

Perecini - Começou com alguma dificuldade, mas se acertou no segundo tempo - 6

Diego Costa

Hazan - 6

Menon - Esteve abaixo dele. Permitiu um contra-ataque - 6

Perecini - Não manteve o nível de atuações, mas continua sendo o melhor zagueiro do São Paulo - 6,5

Rafinha

Hazan - 5

Menon - Defensivamente, esteve bem, mas deu um e para o gol do Botafogo - 5,5

Perecini - Teve dificuldades par recompor. Errou muitos es - 5

Rodrigo Nestor

Hazan - Talvez uma das piores partidas dele pelo São Paulo - 4

Menon - Perdeu uma bola ridícula, errou muitos es e não chutou a gol - 4

Perecini - Muito abaixo. Demorou para soltar a bola e errou muitos es - 4,5

Patrick

Hazan - 5,5

Menon - Deu um bom drible pela esquerda, mas não vi muita coisa boa. Não foi bem ofensiva e defensivamente - 5,5

Perecini - Foi quem melhor se apresentou no meio-campo. Teve algumas recuperações de bola interessantes - 6

Igor Gomes

Hazan - 5

Menon - É sacrificado para jogar nessa posição. Não é volante marcador - 5

Perecini - O máximo que conseguiu foi girar o jogo um pouco mais rápido, mas com muitos erros - 5,5

Welington

Hazan - 5

Menon - Tem velocidade, mas precisa ter um pouco mais de raciocínio e qualidade nos cruzamentos - 5,5

Perecini - Tomou muitas decisões erradas - 5

Luciano

Hazan - 4,5

Menon - Outro jogo em que não produziu muito - 5

Perecini - Mais uma partida abaixo. O melhor momento dele foi separar a briga na confusão. Errou es e armou contra-ataque para o Botafogo. Muito displicente - 5

Calleri

Hazan - 6

Menon - Tenta sempre segurar a bola. Conseguiu dois contra-ataques - 5,5

Perecini - Não teve nenhuma chance tentou tirar uma da cartola. Foi um jogo em que morreu de fome - 5,5

Não perca! A próxima edição da Live do São Paulo será na segunda-feira (20), logo após o clássico contra o Palmeiras pelo Brasileirão. Você pode acompanhar o programa pelo Canal UOL, no app Placar UOL, na página do São Paulo no UOL Esporte ou no canal do UOL Esporte no Youtube.