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

São Paulo

'Superagente' e até Dorival ajudam Diniz a ser o técnico do São Paulo

Fernando Diniz quando dirigiu o Fluminense - Lucas Merçon/Fluminense FC
Fernando Diniz quando dirigiu o Fluminense Imagem: Lucas Merçon/Fluminense FC

José Eduardo Martins e Pedro Ivo Almeida

Do UOL, em São Paulo

27/09/2019 04h00

Resumo da notícia

  • São Paulo anuncia, de modo surpreendente, Fernando Diniz como técnico
  • Diniz é amigo de Dorival Júnior, de quem seguiu treinos no CT da Barra Funda
  • Empresário de David Neres, Giuliano Bertolucci conduziu as negociações
  • Parte importante do elenco dá respaldo à contratação, nova aposta de Raí

O São Paulo confirmou Fernando Diniz como seu novo técnico. O anunciou surpreendeu muita gente. Afinal, o treinador, que ficou conhecido pelo estilo ousado no plano tático, aparentemente não tinha ligações com o Tricolor. Porém, discretamente, o substituto de Cuca estreitou relações com o clube nos últimos anos. Para tanto, contou com pelo menos três fatores: o aval de jogadores considerados pilares do elenco, além de forte apoio do empresário Giuliano Bertolucci, um dos mais influentes do país, e até mesmo de Dorival Júnior.

Quando Dorival assumiu o lugar de Rogério Ceni, em julho de 2017, Diniz ou a ser visto quase diariamente no CT da Barra Funda. Amigo do então comandante, ele ganhou livre o nas dependências do clube. Na época, o ex-técnico do Audax estava desempregado e acompanhava as atividades do São Paulo para se manter próximo do mercado da bola e aproveitava a chance para trocar ideias com o colega de profissão.

Os dois ficaram amigos ainda quando Dorival dirigiu o Santos -- os dois se enfrentaram na final do Paulistão 2016, com Diniz à frente de um sensacional Audax. O relacionamento segue até hoje, não sendo raros os momentos em que um peça conselho para o outro. Nesse período, Diniz costumava sentar no banco de reservas e observar bem de perto os jogadores. Daí, surgiu até seu interesse pela contratação de Lucas Perri, goleiro reserva do São Paulo, pelo Guarani, time que comandou no fim de 2017.

Ao considerar Diniz uma opção, integrantes do departamento de futebol também acharam importante ouvir a opinião de jogadores apontados como líderes do elenco. Nesta hora, o nome do escolhido ganhou ainda mais força para o Tricolor. Afinal, as referências eram positivas de quem já tinha trabalhado com ele, como Tchê Tchê e Pablo, ou de quem o conhecia por referência de outros colegas.

Além da experiência do dia a dia do São Paulo e da palavra dos atletas, o treinador contou com a força de Giuliano Bertolucci, agente de diversos jogadores de frequência constante na seleção brasileira, como o zagueiro Marquinhos ou mesmo o atacante David Neres, ex-São Paulo. Hoje muito influente no Morumbi, ele foi o responsável por conduzir as rápidas negociações com o departamento de futebol assim que Cuca pediu demissão.

O empresário chegou a ser persona non grata nos bastidores do Tricolor em 2009, quando Juvenal Juvêncio era o presidente do clube. A rusga foi criada devido à saída forçada do meia Oscar. Nos últimos anos, Bertolucci, com toda a sua força no mercado, voltou a tratar com dirigentes Tricolor e foi um dos responsáveis pela milionária transferência de Neres para o Ajax. Por isso, tem bom trânsito tanto com o presidente Carlos Augusto de Barros e Silva, o Leco, quanto com o executivo de futebol, Raí, e o gerente executivo, Alexandre Pássaro.

São Paulo