;(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: Palmeiras faz jogo ridículo, e Flamengo mostra caráter de campeão

Michael cumprimenta Pedro, ao marcar o gol de empate do Flamengo diante do Palmeiras - Marcello Zambrana/AGIF
Michael cumprimenta Pedro, ao marcar o gol de empate do Flamengo diante do Palmeiras Imagem: Marcello Zambrana/AGIF

12/09/2021 17h57

Receba os novos posts desta coluna no seu e-mail

Email inválido

O Palmeiras teve duas semanas para se preparar para o Flamengo. Será que se preparou para o Flamengo errado? Tipo, o titular? O fato é que entrou em campo um Flamengo super desfalcado, sem alguns de seus principais jogadores, e o Palmeiras não jogou nada. Com muita força mental e um sistema defensivo sólido, o Flamengo mostrou o caráter de um time campeão.

Geralmente, quando tem tempo para trabalhar e foca em um jogo específico, Abel Ferreira costuma mandar bem. É quando o Palmeiras cresce. Não foi o que aconteceu para o jogo enorme deste domingo.

O Palmeiras fez um jogo muito, muito fraco. Sem ideias, amarrado, sem incomodar, sem pressionar. As melhores jogadas no primeiro tempo foram contra ataques ligados por Wéverton, nenhuma construção. Em um deles, o goleiro encontrou Dudu, que encontrou Wesley, que foi para cima de Isla e meteu o gol.

O Palmeiras descobriu, ali, o "mapa da mina". Mas resolveu não aproveitá-lo. Wesley foi lá jogar do lado direito, enquanto Piquerez não incomodou como deveria pela esquerda. Dudu tampouco funcionou como armador, como havia feito contra o São Paulo. O Palmeiras não aproveitou o ponto fraco do adversário e resolveu "atacar" Ramon do outro lado - o substituto de Filipe Luís fez um jogo quase perfeito.

Se o Flamengo não tem exatamente um exímio marcador na lateral direita, do mesmo problema sofre Abel. Marcos Rocha ficou olhando enquanto Michael subia, "a la Romário", para empatar o jogo menos de um minuto depois. A construção da jogada, pelo outro lado, teve Arrascaeta e Éverton Ribeiro como protagonistas.

Não bastassem os desfalques de Gabriel Barbosa, Filipe Luís, etc, o Flamengo ainda perdeu Arrascaeta no primeiro tempo. Era totalmente do Palmeiras a obrigação de fazer jogo e dominar o adversário. Não foi o que aconteceu.

No segundo tempo, Pedro fez, de cabeça, o gol da virada. Seria importantíssimo para o Flamengo recuperar Pedro, o centroavante deprimido após ficar fora da Olimpíada. Aliás, foi dele também o gol da vitória no primeiro turno. O Brasileirão acaba com Flamengo 6 x 0 Palmeiras e isso depois de já ter levado a melhor na Supercopa do Brasil. Já são nove jogos sem vitória palmeirense neste duelo que é o maior do país no momento.

Abel mexeu no time na etapa final, mas não houve reação. O Palmeiras teve a bola no segundo tempo, mas ameaçou pouco. Jogou com pouca velocidade, pouca criatividade. E, no contra ataque, Michael, novamente para cima de Marcos Rocha, matou a partida.

Não há nem a arbitragem para Abel Ferreira usar como desculpa, como fez contra o Galo. Foi um jogo horroroso do Palmeiras, talvez o pior da temporada, dada a importância do duelo.

O Flamengo mostrou a força do elenco e mostrou, principalmente, uma defesa firme. Deu poucos espaços para o Palmeiras e fez um jogo sério, focado, sem bobeadas.

O Brasileirão vai ficando com cara de só dois times, não mais de três.