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

Vitor Guedes

OPINIÃO

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

Lixo do VAR é o protagonista do empate entre Atlético-MG e Santos

Vítória mínima do Atlético-MG sobre o Santos sinaliza equilíbrio maior que a diferença entre os dois na tabela de classificação - Pedro Souza / Atlético
Vítória mínima do Atlético-MG sobre o Santos sinaliza equilíbrio maior que a diferença entre os dois na tabela de classificação Imagem: Pedro Souza / Atlético

Colunista do UOL

11/06/2022 20h59Atualizada em 11/06/2022 20h59

Atlético-MG 1 x 1 Santos. Tudo igual, até na interferência absurda do apito.

Savinho abriu o placar logo de cara, Bauermann parou no travessão na resposta. E, à vera, Everson trabalhou mais que João Paulo e o Peixe ficou mais perto do 1 a 1 do que o Atlético-MG do 2 a 0 na primeira etapa.

No segundo tempo, o ritmo da prosa não mudou. Chance do Galo cá, bola na trave do Santos lá. Até Lucas Pires, por interferência exibicionista do VAR, ser expulso em lance que havia tomado só o amarelo. Não é absurda a expulsão do lateral santista. Absurdo é o juiz Marcelo Lima Henrique ter visto tudo, optado pelo amarelo e, após a interferência, ver o mesmo lance do monitor e mudar sua decisão: o VAR é um lixo à altura do apito brasileiro!

Mesmo com um a mais, o Atlético-MG não tomou o controle do jogo. Na falta que custou o vermelho a Pires, Hulk carimbou o travessão, mas a pressão parou aí.

E o VAR, novamente, quis aparecer. E, desta vez, em favor do Santos contra o Atlético-MG. E criou, com lupa e gigantesca vontade de ser protagonista, um "pênalti" de Jair em Bauermann: Rwan Seco cobrou e empatou, 1 a 1. Como na expulsão de Lucas Pires, dá para marcar, dá para não marcar e o que fica é a vontade do circo eletrônico em aparecer e mandar no jogo.

Na última bola, a trave impediu a virada santista em arremate de Bruno Oliveira.

Apito medonho à parte, é nítido que o Atlético-MG não está jogando a mesma bola de quem venceu o Brasileiro e a Copa do Brasil em 2021. E que o Santos está jogando bem mais que a bolinha que o levou a lutar contra a degola nos últimos dois Campeonatos Paulistas e ter ado boa parte do último Brasileiro também na briga contra o rebaixamento.

O copo meio cheio atleticano é que, na média, não está jogando pior que o líder Corinthians. O meio vazio é que, com esse futebolzinho mequetrefe, não vai dar volta olímpica na temporada nacional e internacional

Para o santista, fica o alento, do copo meio cheio, que o time, que já tinha perdido de igual para igual para o Palmeiras em jogo em que o lixo do VAR também foi a estrela, empatou no Mineirão contra outro poderoso candidato ao caneco. O meio vazio é que, sem vencer fora, o time não vai longe no Brasileirão.

Como eu não sou santista nem atleticano e parei de beber faz tempo, o que fica, analisando sobriamente, é que, por ora, se não melhorar muito nem piorar muito, nem o Galo vai ganhar nada, nem o Peixe vai sofrer até o final.

ONDE ESTÃO DOM PHILLIPS E BRUNO PEREIRA?

Eu sou o Vitor Guedes e tenho um nome a zelar. E zelar, claro, vem de ZL! É nóis no UOL!

Veja:

E me siga no Twitter e no Instagram.