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

Marcel Rizzo

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Relatório da Fifa explica por que Thiago Silva foi eleito melhor do Mundial

Thiago Silva recebe o prêmio de melhor jogador do Mundial de Clubes - Michael Regan - FIFA/FIFA via Getty Images
Thiago Silva recebe o prêmio de melhor jogador do Mundial de Clubes Imagem: Michael Regan - FIFA/FIFA via Getty Images

Colunista do UOL

21/02/2022 14h00

A eleição de Thiago Silva como o melhor jogador do Mundial de Clubes, encerrado em 12 de fevereiro em Abu Dhabi, foi definida pelo grupo técnico da Fifa por meio de uma ferramenta que analisa em tempo real até 15 mil dados por partida. O Chelsea de Thiago venceu o Palmeiras na final por 2 a 1, mas o gol palmeirense nasceu de um pênalti cometido pelo zagueiro, que colocou a mão na bola dentro da área.

No relatório, ao qual o blog teve o, os especialistas escrevem que "tanto na semifinal quanto na final, ele [Thiago Silva] compôs forte na defesa, principalmente contra os atacantes velozes e técnicos do Palmeiras e do Al Hilal , mas também atuou fortemente para sua equipe na posse de bola". O pênalti cometido é ignorado na análise.

O documento diz que Thiago Silva, apesar de zagueiro, foi o jogador que mais tempo ficou com bola em toda a competição. E explicou o motivo: "em grande parte devido à forma como o Palmeiras se ajustou em um bloco baixo na final e permitiu que ele [Thiago Silva] ficasse com a bola. Em seus dois jogos disputados, ele manteve a bola 93% das vezes após recebê-la e teve uma taxa de sucesso de 96% na distribuição".

Thiago Silva, sempre de acordo com o relatório, foi o segundo jogador em efetividade defensiva, com dez jogadas bloqueadas e dez bolas "limpas", ou seja, ele afastou o perigo que rondava seu gol outras dez vezes, somando as duas partidas do Chelsea. O documento não diz quem foi o primeiro, mas o blog apurou ter sido o também zagueiro do Chelsea Rudiger, eleito o melhor em campo na final do Mundial.

"(Thiago) Silva jogou muito bem na semifinal contra o Al Hilal. Ele teve que defender nesta partida, e fez bem. Na final foi diferente. Na posse de bola, ele fez sua parte porque o Palmeiras permitiu-lhe ter a bola e ele fez um excelente trabalho", disse no relatório Alberto Zaccheroni, ex-técnico italiano que fez parte do grupo técnico da Fifa durante o Mundial. Além dele definiram o melhor do Mundial Pascal Zuberbühler, ex-goleiro suíço que é o especialista da posição no grupo, o ex-jogador e ex-técnico da seleção inglesa Steve McClaren e o ex-jogador escocês Roy Aitken.

O bola de prata, segundo melhor jogador do Mundial, foi o atacante palmeirense Dudu e o terceiro o volante Danilo.