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

Julio Gomes

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Gomes: Simeone, Griezmann e Suárez espantam fantasmas em Milão

Griezmann e Suárez comemoram gol do Atlético de Madri sobre o Milan na Champions - REUTERS/Daniele Mascolo
Griezmann e Suárez comemoram gol do Atlético de Madri sobre o Milan na Champions Imagem: REUTERS/Daniele Mascolo

Receba os novos posts desta coluna no seu e-mail

Email inválido

Nos primeiros 30 minutos de jogo, o Milan amassou o Atlético de Madrid. Mas aí Kessié foi infantilmente expulso. O jogo mudou, e o Atlético de Madrid foi buscar a virada nos minutos finais, com o gol da vitória anotado aos 52min da etapa final.

Foi uma noite de Liga dos Campeões da Europa em que três personagens do Atlético de Madrid espantaram fantasmas: Simeone, Griezmann e Suárez.

Foi no estádio de San Siro que Simeone perdeu sua segunda final de Champions League diante do Real Madrid, em 2016, nos pênaltis. Segundo ele mesmo contaria anos depois, pensou em deixar o Atlético de Madrid após aquela derrota. Mas ficou. E lá se vão quase 10 anos no cargo, o técnico mais longevo das grandes ligas europeias. Por superstição - chamem como quiserem -, o Atlético mudou o hotel em relação à viagem de 2016 e nem treinou no San Siro antes do jogo desta terça, quis ficar o menos possível na cidade.

Naquela final, Griezmann, em sua primeira agem pelo Atlético, perdeu um pênalti quando o time levava 1 a 0 do Real Madrid. Na volta ao clube depois de três anos com a camisa do Barcelona, o francês foi vaiado pelos torcedores atléticos. E, em cinco partidas, apresentava um "saldo" de zero gols, zero assistências e zero finalizações a gol.

Com o Atlético pressionando o Milan em busca do empate, Griezmann entrou no segundo tempo hoje e, aos 39min do segundo tempo, meteu um golaço para fazer 1 a 1 e furar o paredão milanista. A primeira finalização em seis jogos. O primeiro gol. E um gol importante. Que muda a situação do Atlético na Champions e pode significar o resgate da relação de Griezmann com sua torcida.

Por fim, aos 48min da etapa final, em lance de bate e rebate dentro da área, a bola toca involuntariamente na mão de Kalulu - não tem jeito, é muito difícil um árbitro não dar esse pênalti. E Luís Suárez, minutos depois, bateu para decretar a virada do Atlético.

Suárez não fazia um gol fora de casa em jogo de Champions League havia seis anos, eram 25 partidas de seca. Algo que ele mesmo chamou de "uma coisa que vai além de uma sequência ruim". Era outro fantasma. Quase um bloqueio. Que o uruguaio quebrou chutando no meio do gol, mas mandando para dentro.

Foi uma vitória justa do Atlético?

É difícil fazer a avaliação. Com 11 contra 11, o Milan foi realmente muito superior, assustadoramente superior. Mas a expulsão de Kessié muda tudo, e Kessié não joga no Atlético. Azar do Milan. Com um a mais em campo, o Atlético foi amontoando bons jogadores em campo e, de fato, jogou mais do que simplesmente chuveirar na área e tentar ganhar no abafa. O Atlético, de fato, construiu a virada. Que saiu em um pênalti bobo, mas, de novo, a ingenuidade do jovem time do Milan não é culpa de Simeone.

O "grupo da morte" ganha contornos mais claros agora. O Liverpool tem seis pontos, o Atlético tem quatro, o Porto tem um e o Milan fica sem nada. Liverpool e Atlético, favoritos a ficar com a vaga, se enfrentam duas vezes agora, reeditando um confronto épico de mata-mata disputado no início do ano 2020, logo antes de a pandemia mudar nossas vidas.

Errata: este conteúdo foi atualizado
Diferentemente do publicado inicialmente, Atlético acumula quatro pontos. O erro foi corrigido.

** Este texto não reflete, necessariamente, a opinião do UOL