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

Cruzeiro

Ceni mostra estrela nos dois gols e sai ovacionado na estreia pelo Cruzeiro

Enrico Bruno

Do UOL, em Belo Horizonte

18/08/2019 17h59

Rogério Ceni estreou com o pé direito no Cruzeiro. Na vitória por 2 a 0 sobre o Santos, hoje, no Mineirão, o treinador surpreendeu em vários momentos e literalmente suou a camisa para ver sua equipe jogar bem e com mais confiança para levar os três pontos. Bastante participativo, terminou o jogo ovacionado pelo torcedor da Raposa.

A primeira novidade no Cruzeiro de Ceni veio dos vestiários. O treinador deixou Robinho e Ariel Cabral na reserva e entrou com o lateral Dodô improvisado como volante. A expulsão de Gustavo Henrique aos cinco minutos ajudou, mas a equipe já mostrava mais apetite pelo jogo desde o início. Assim que o Santos ficou com um a menos, Rogério conversou com Fred e mandou o atacante aquecer ainda aos 20 minutos do primeiro tempo. Quatro minutos mais tarde, sacou Egídio e colocou o centroavante em campo, deixando o time com apenas Henrique de volante.

Bastante ativo na beira do gramado, Ceni não parou um segundo para sentar ou deixar de falar com seus jogadores. Ainda no início do jogo, discutiu com Fábio por alguns segundos sobre o posicionamento do goleiro, que acatou a orientação do técnico e se adiantou até fora da grande área. A postura adotada valeu para o time todo, que adiantou suas linhas, marcou a saída de bola adversária e se impôs. Com muita intensidade, o Cruzeiro ficou mais com a bola e amadureceu seu gol até balançar as redes com Fred, que deu fim a jejum de 16 jogos.

O segundo gol do Cruzeiro também teve a estrela de Ceni. Por causa de um desgaste muscular, Léo ficou de fora do jogo. e o treinador escalou Fabrício Bruno ao lado de Dedé. O defensor de 23 anos não se intimidou e fez o que o comandante exigiu nos poucos treinamentos que deu: quebrou as linhas do Santos e deu um ótimo e para Pedro Rocha. Na sequência da jogada, Fred escorou para Thiago Neves marcar.

Outra diferença em relação ao time de Mano Menezes foi a intensidade adotada pelos jogadores, mesmo quando o time estava em vantagem. Isso ficou claro após o segundo gol da equipe, marcado por Thiago Neves. Embora tenha perdido um pouco do gás na etapa final, o Cruzeiro não tirou o pé e criou muito mais que em jogos anteriores, terminando o jogo com 21 finalizações.

Cruzeiro