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

Flamengo

Mudanças feitas por Ceni não atingem expectativas do Flamengo no Brasileiro

Rogério Ceni se seca com toalha debaixo de chuva durante partida do Flamengo contra Juventude - Pedro H. Tesch/AGIF
Rogério Ceni se seca com toalha debaixo de chuva durante partida do Flamengo contra Juventude Imagem: Pedro H. Tesch/AGIF

Colaboração para o UOL, em São Paulo

04/07/2021 21h30

O técnico Rogério Ceni foi muito cobrado pelas opções que fez na derrota do Flamengo para o Fluminense no último domingo (4). O treinador não gostou muito das cobranças e explicou o que buscou com as entradas de Thiago Maia, Max e Rodrigo Muniz no segundo tempo.

Na coletiva, ele fez questão de ressaltar o controle do Rubro-Negro no duelo e sua busca por alterações para conseguir vencer. Também destacou que as trocas feitas pelo rival não acarretaram em mudanças táticas. "O Fluminense fez as trocas, posição por posição", disse.

No entanto, as mudanças feitas por Roger Machado surtiram muito mais efeito que as de Ceni. Kayky, Luiz Henrique e André, o autor do gol, estiveram envolvidos na jogada que culminou no triunfo tricolor na Neo Química Arena, pela nona rodada do Brasileirão.

João Gomes deixou a equipe aos 25 minutos do segundo tempo. O atleta vinha sendo o principal responsável pela marcação no meio-campo e pouco dava espaços ao rival. Após sua saída, no entanto, o experiente Nenê, que havia entrado cinco minutos antes, ou a ter muito espaço. Criativo e decisivo, o jogador conseguiu distribuir as jogadas e fazer valer a velocidade das jovens peças que vieram do banco tricolor.

Thiago Maia, que entrou em seu lugar, ficou pouco tempo como o encarregado na marcação. Max teve chance aos 34, porém não demonstrou em campo a razão para ter deixado a reserva. "O Maia, que estamos colocando com o ar do tempo para que ganhe ritmo. Tem jogo a cada três dias, essa é a única maneira. O João já tinha baixado um pouco de rendimento. Depois o deslocamos para ser o 10, trouxe o Max para o setor e tentamos ser mais ofensivos possíveis e ganhar", ponderou o treinador.

Ceni também bateu forte na tecla que o grande erro cometido em campo foi o desperdício nas finalizações. Mesmo reconhecendo a falha, ele parece ciente de que o trabalho desenvolvido será suficiente para reverter o quadro. "Eu treino bastante finalização e eu quero continuar sendo sempre superior a todos adversários e ser propositivo, temos mais controle de jogo. Espero que, no momento correto, as chances que criamos sejam convertidas em gol", contou.

Para completar, Ceni começou a coletiva citando as ausências no meio-campo. Diego está machucado, Gérson foi vendido, Everton Ribeiro está na Copa América com o Brasil e Arrascaeta também estava no torneio, mas o Uruguai foi eliminado neste sábado (3). É evidente que essas peças fazem falta para a equipe, contudo é função do técnico buscar recursos para que a falta deles seja amenizada. Afinal, ele sabe que a pressão é grande. "Nem fazemos contas dos jogadores fora, dos desfalques ou não. O Flamengo quer sempre vencer", declarou.

A chance de se reabilitar no torneio será nesta quarta-feira. Pela 10ª rodada, o Fla visita o Atlético-MG no Mineirão nesta quarta-feira (7), às 19h. Com dois jogos a menos que a maioria das equipes, o Rubro-Negro tem 12 pontos e ocupa a nona colocação na tabela.

Flamengo