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

Jogo ruim no Equador aumenta a preocupação com a lateral-direita da seleção

27/01/2022 20h16

Receba os novos posts desta coluna no seu e-mail

Email inválido

O Brasil não precisa ter um lateral-direito espetacular, de primeiro nível. Às vezes, acontece, simplesmente não há uma opção perfeita. É o caso no momento, e o empate por 1 a 1 no Equador, pelas eliminatórias sul-americanas, aumentou as interrogações que já devem martelar a cabeça de Tite.

Emerson Royal tinha a chance e acabou expulso ainda no primeiro tempo - dá para acusar exagero do árbitro (já falaremos mais dele) no lance do primeiro amarelo, mas ele ficou sem saída no segundo. Dani Alves entrou no primeiro tempo, no lugar de Philippe Coutinho, e sofreu na etapa final.

O Equador jogou bastante por lá e criou chances. Mantenho minha posição. Diante do problema que é a lateral-direita atual, ter um cara como Daniel Alves na Copa é melhor do que não ter. Mas, ao contrário de Thiago Silva (que tampouco jogou bem hoje), Alves parece não conseguir manter o nível perto do nível de outrora com a idade que tem. E isso deve preocupar Tite.

A questão é: vale à pena insistir na busca pelo lateral ideal? Ou vale pensar fora da caixa? Jogar com três zagueiros? Usar Militão ou Fabinho por ali? O relógio está correndo.

A lateral-direita não foi o único problema em Quito. Foi o pior jogo do Brasil nas eliminatórias, com sobras. Um jogo condicionado por uma tarde infeliz de Vilmar Roldán - que, na minha opinião, é ótimo árbitro, mas que tem uns jogos assim inexplicáveis, como este.

Roldán teve a humildade de ouvir o VAR e corrigir todos os erros - ainda que alguns deles não fossem lances para o VAR chamar, pois eram lances de interpretação (a primeira expulsão de Alisson e o pênalti dado para o Equador no segundo tempo). O problema é que os erros não foram triviais. Foram enormes. E a demora para corrigi-los quebrou completamente o ritmo da partida, prejudicou o espetáculo.

O árbitro colombiano errou ao não expulsar o goleiro do Equador de cara (mas era um ângulo difícil para ele), errou ao expulsar Alisson com vermelho direto no primeiro tempo, errou ao dar dois pênaltis para o Equador e expulsar (de novo) Alisson no segundo. Todos os lances foram revisados pelo VAR, mas a demora para cada decisão foi extenuante.

Alisson foi mal na partida e deu margem para os erros do árbitro nos dois lances em que foi expulso (sem ser expulso). Militão e Thiago Silva não se encontraram, Marquinhos deixou saudades. Casemiro e Fred se salvaram, os atacantes todos, os que começaram e entraram, não conseguiram aproveitar os espaços que o Equador deixou.

Talvez a saída de Coutinho no primeiro tempo tenha sido um erro. A seleção ficou sem e, sem ligação entre meio e ataque, e Tite ficou sem a chance de observar Coutinho. A preocupação da seleção a estas horas deve ser a observação, não o resultado.

No fim, o empate é ótimo para o Equador - afinal, só três seleções conseguiram somar contra o Brasil. Com 24 pontos, a seleção equatoriana só não vai para o Catar se perder todas nas três rodadas finais. A vitória, no entanto, seria melhor ainda e praticamente definiria a classificação. Roldán é colombiano, o VAR é uruguaio, a imprensa equatoriana irá falar bastante deste jogo de hoje.

Para o Brasil, o resultado não importa tanto. As dúvidas que ficam, sim.