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

Danilo Lavieri

Ceni e Flamengo devem tirar lições do Cruzeiro para gerir guerra de egos

Rogério Ceni conhece sua "nova casa" em dia de apresentação no Flamengo

Colunista do UOL

10/11/2020 12h03

Receba os novos posts desta coluna no seu e-mail

Email inválido

O principal obstáculo de Rogério Ceni no Flamengo será a experiência como treinador para controlar a guerra de egos na Gávea. Tudo isso com a exigência da torcida para ver um time jogando como era com Jorge Jesus. Por maior que seja a sua trajetória dentro de campo, o ex-goleiro tem poucos anos na gestão de um grupo e tem o Cruzeiro como seu grande exemplo recente de como as coisas podem dar errado, apesar das boas ideias.

Ao chegar na Toca da Raposa, Ceni encontrou um grupo cheio de medalhões, com currículo recheado de conquistas e não teve o respaldo que precisava para enfrenta-los. O treinador detectou que alguns atletas estavam acomodados e tentou bater de frente com alguns alvos específicos.

O tempo mostrou que o agora técnico do Flamengo tinha mais razão do que a diretoria. O Cruzeiro afundou, mas as lições daquele episódio precisam ser aproveitadas pelo ex-goleiro e pelo seu novo time.

Ao chegar na Gávea, Ceni encontrará atletas contemporâneos, com quem já disputou os três pontos dentro do gramado, como é o caso de Gagibol e Everton Ribeiro. Vai ter que se reconciliar com Rodrigo Caio, com quem teve problemas no São Paulo já como treinador pelo episódio de fair-play contra o Corinthians.

O técnico vai comandar Filipe Luís, que já demonstrou vontade de ser técnico no futuro e tem suas ideias sobre tática. Vai trabalhar com Diego, que marcou os são-paulinos no início dos anos 2000 por pisar no símbolo do clube em pleno Morumbi. Ceni era o goleiro daquela partida. São inúmeros exemplos.

Para ter sucesso, um técnico não pode ter só boas ideias. Ele precisa convencer os seus atletas que aquele é o caminho certo e fazer todos remarem para uma só direção. Eventualmente, ele precisará barrar atletas, promover outros e isso gera instabilidades normais em um dia a dia de trabalho.

Ao mesmo tempo que tem uma qualidade técnica incomparável no elenco, o comandante precisará de muito respaldo da diretoria, da torcida e dos líderes do grupo para poder implantar o que ele achar certo. Segundo publicou o jornalista PVC em seu blog no ge.com, os atletas gostaram da ideia. E esse é um o importante.

Querendo ou não, Ceni pega um Flamengo com a sombra de Jorge Jesus. Menos do que aconteceu com Domenec Torrent, até pelo fracasso do espanhol no seu trabalho. Mas o nível de exigência da torcida será ver de novo o time que via com o português. E isso é muito diferente do que lutar por uma vaga na Sul-Americana com o Fortaleza.