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

Brino: Marcos Leonardo fez um dos piores jogos pelo Santos; veja notas

Colaboração para o UOL, em Aracaju

24/07/2022 21h52

No primeiro jogo sob comando de Lisca, o Santos não saiu do zero contra o lanterna Fortaleza neste domingo (24) no Castelão. Em um jogo muito disputado e com poucas chances de gol, o Peixe até poderia ter marcado com Marcos Leonardo, mas esbarrou nas chances perdidas e em decisões erradas nos contra-ataques. Com o resultado, o Alvinegro Praiano termina o primeiro turno do Brasileirão no meio da tabela, na 9ª colocação, com 26 pontos.

Na Live do Santos, transmitida pelo UOL Esporte após os jogos do Peixe, os jornalistas Maurício Barros e Gabriela Brino analisaram a atuação da equipe no primeiro jogo sob comando de Lisca. A dupla elogiou o sistema defensivo, que quase não cedeu chances ao Fortaleza, e criticou a partida de Marcos Leonardo. "Ele poderia ter decidido o jogo, teve algumas boas chances e não fez. Foi um dos piores jogos dele pelo Santos", disse Brino.

Confira as notas do Santos

João Paulo

Barros: quando exigido, foi firme - nota 6,5.

Brino: não sofreu - nota 6.

Madson

Barros: cumpriu bem a função, mas sem brilho - nota 5.

Brino: inseguro na defesa - nota 4,5.

Eduardo Bauermann

Barros: atuação correta - nota 6.

Brino: muito atento atrás na defesa - nota 6,5.

Alex

Barros: foi uma boa notícia, bastante correto em campo -nota 6.

Brino: foi seguro e não prejudicou o time - nota 6.

Felipe Jonatan

Barros: tem melhorado defensivamente, mas precisa arriscar mais no ataque - nota 5.

Brino: foi participativo - nota 5,5.

Camacho

Barros: não conseguiu fazer a saída de bola - nota 5.

Brino: não é um primeiro volante - nota 5.

Rodrigo Fernández

Barros: cumpriu o papel - nota 5.

Brino: um pouco mais tímido hoje - nota 5.

Bruno Oliveira

Barros: não jogou, só entrou em campo, pegou muito pouco na bola, não vai bem quando começa de titular, muito mal hoje - nota 3,5.

Brino: sente muito a responsabilidade quando entra jogando, não vale a pena insistir como titular no momento - nota 5.

Lucas Braga

Barros: participativo, ativo, interessado, é um cara que não se esconde nem se abate, tem um lado mental forte - nota 5.

Brino: foi o melhor da partida, quem mais insistiu na frente - nota 6,5.

Marcos Leonardo

Barros: hoje perdeu muitos gols - nota 4.

Brino: poderia ter definido o jogo, mas tomou decisões erradas, foi um dos piores jogos dele pelo Santos, teve algumas chances e não fez nenhuma - nota 3,5.

Léo Baptistão

Barros: não foi bem, participou pouco - nota 4.

Brino: esperava muito mais - sem nota.

Ângelo

Barros: entrou bem, criou, foi para cima - nota 6,5.

Brino: entrou muito bem, colocou o Marcos Leonardo na cara do gol duas vezes - nota 6.

Lisca

Barros: o time poderia ter jogado mais, mas os gols perdidos não é culpa dele - nota 5.

Brino: teve apenas três dias para treinar o time, e o grande problema do Santos foi a tomada de decisão na frente. Ele escalou bem e substituiu bem - nota 6,5.

A próxima edição da Live do Santos será na segunda (1), logo após a partida contra o Fluminense, pelo Brasileirão. Você pode acompanhar a live pelo Canal UOL, no app Placar UOL, na página do Santos no UOL Esporte ou no canal do UOL Esporte no YouTube.