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

Presentaços do Al Ahly evitam vexame do Flamengo

Gabigol disputa bola durante duelo entre Flamengo e Al Ahly - Christopher Lee - FIFA/FIFA via Getty Images
Gabigol disputa bola durante duelo entre Flamengo e Al Ahly Imagem: Christopher Lee - FIFA/FIFA via Getty Images

11/02/2023 14h58

Receba os novos posts desta coluna no seu e-mail

Email inválido

O que é e não é vexame no futebol? Alguns dizem que perder não necessariamente é vexame, se você tiver lutado, competido. O Flamengo teve uma atuação vexaminosa neste sábado, na disputa de terceiro lugar. E a vitória não muda isso, porque o que pega é a falta de intensidade, combatividade e de qualquer tipo de organização tática.

O Al Ahly foi melhor que o Flamengo durante quase todo o jogo. Para ser mais exato, até os 24min do segundo tempo. Mas aí começou a cometer erros individuais inacreditáveis, o técnico demorou para mexer no time (que cansou de tanto correr) e o Flamengo ganhou de presente a virada e a terceira colocação no Mundial de Clubes da Fifa. Os erros bizarros do Al Ahly tiram do Flamengo a péssima imagem deixada? Na minha opinião, não.

O que mais assusta é a falta de competitividade. O Flamengo não ganha uma segunda bola sequer, não parece ser um time a fim de brigar. Também assusta, possivelmente como decorrência, o espaço que deixa em campo, os buracos no meio de campo. Thiago Maia joga a partida inteira correndo atrás, perdidinho, sem saber para onde ir. Vidal, que foi titular pela ausência de Gerson, dá um carrinho aqui, outro ali, mas não tem velocidade. Os quatro da frente não marcam ninguém, e a zaga esteve em uma tarde para esquecer. Ayrton Lucas é muito bom no ataque, mas defensivamente também deixa a desejar, como no primeiro gol do Al Ahly.

O Al Ahly foi o time mais organizado em campo e pagou o preço de tantos erros a partir dos 24min da etapa final.

O primeiro erro, o pênalti perdido por Ali, com jogo empatado em 1 a 1. Este ainda foi "corrigido" pelo gol de Abdelkader pouco depois, deixando enfileirados vários jogadores do Flamengo dentro da área. Neste momento, o Flamengo estava completamente fora da partida. Mas aí veio o tropeção de Abdelfatah, lateral direito, em uma investida de Ayrton Lucas. Primeiro, o juiz deu pênalti e nem amarelo mostrou. Chamado pelo VAR, percebeu que a falta havia sido cometida fora da área. E resolveu dar cartão vermelho direto.

Poderia ser vermelho, poderia ser amarelo, depende da interpretação. Acho que o vermelho cabe, o erro maior foi mesmo de Abdelfatah. Aí veio o contra ataque de 2 contra 1 em que Sherif, cara a cara com Santos, chutou fraco em cima do goleiro. Seria o 3 a 1 do Al Ahly, mas não foi.

Com dez em campo, o time ficou totalmente desorganizado e o técnico não percebeu que precisava fazer alterações. O Flamengo aproveitou e foi ganhando mais presentes. O goleiro El Shenawy contribuiu saindo mal do gol e deixando Pedro fazer o 2 a 2. Depois Hany cometeu pênalti estúpido na área, virou o 3 a 2. E, para completar, Dieng ainda deu uma "assistência" para Pedro fazer o quarto. Nenhum dos três gols teve a ver com construção de jogadas, todos foram dados pelo Al Ahly.

O Flamengo virou porque o adversário "construiu" a virada para ele. Os problemas defensivos e de competitividade são claros, vamos ver como Vítor Pereira fará para resolvê-los.