;(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ávio revela quem foi o pior treinador que teve na carreira

Sávio pelo Real Madrid na semifinal da Liga dos Campeões de 2000 - Matthew Ashton/EMPICS via Getty Images
Sávio pelo Real Madrid na semifinal da Liga dos Campeões de 2000 Imagem: Matthew Ashton/EMPICS via Getty Images

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

27/10/2020 10h43

Ex-jogador com agens de sucesso por Flamengo, Real Madrid e Real Zaragoza, Sávio declarou que o galês John Toschack foi o pior treinador que teve em toda a sua carreira. O técnico, que teve duas agens pelo Real Madrid (a primeira entre 1989 e 1990) e trabalhou com o ex-atacante brasileiro em 1999.

Sávio recordou que, assim como seus companheiros, não gostava dos trabalhos diários do galês e que o treinador não acrescentava muito para o time.

"O pior (técnico da minha carreira)? Tive um que não gostei no Real Madrid. Que foi um galês, o (John) Toshack. Esse foi um trabalho muito ruim, não gostei. Foi o que eu menos gostei, vamos dizer assim. Eu não gostava do trabalho dele do dia a dia. Era um trabalho que, para mim, para o grupo, não acrescentava muita coisa. Os treinamentos, a maneira de trabalhar, de lidar com o grupo, taticamente dentro de campo, posicionamento. Por todos esses motivos, não achei o trabalho dele bom", disse em entrevista ao site da ESPN Brasil.

Real Madrid menos favorito na Liga dos Campeões

Na mesma entrevista, Sávio analisou as chances de título do atual Real Madrid na Liga dos Campeões - o time espanhol estreou com derrota em casa para o Shakhtar Donetsk (UCR). Para o ex-atacante, o clube merengue nunca pode ser desconsiderado por ser o maior campeão e ter um grande elenco, mas ele entende que outros times surgem com maior favoritismo na atual temporada.

"Quando a gente fala de Real Madrid, a camisa é forte, principalmente em Liga dos Campeões da Europa. É aquele time que vai chegando, que vai ando pelas etapas e, mesmo com dificuldades, vai crescendo nas fases finais. Mas, se a gente olhar hoje, apesar de ter ganhado o Campeonato Espanhol na última temporada, se pega o início da temporada, vai ser sempre favorito? Vai. Pelo poder e pela qualidade técnica dos jogadores", avaliou.

"Mas se pegar os dois, três, quatro principais clubes, a gente tem algumas dúvidas e muitos não vão colocar o Real Madrid como um dos principais favoritos a ganhar a Champions. É um grupo que já ganhou tudo. Todo esse grupo ou grande parte dele ganhou as quatro Champions. Eu não sei, acho que estamos vendo a nível europeu, Inglaterra principalmente, clubes que entram com certo favoritismo na Champions", completou.

Com a camisa do Real Madrid, Sávio conquistou uma vez o Campeonato Espanhol (2000-01), uma vez a Supercopa da Espanha (2001), uma vez a Supercopa Europeia (2002), três vezes a Liga dos Campeões da Europa (1997-98, 1999-00 e 2001-02), e uma vez a Copa Intercontinental (1998).