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

Menon

OPINIÃO

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

Menon: Juventude deu um choque de realidade no Corinthians de Sylvinho

Sylvinho, técnico do Corinthians, à beira da Neo Química Arena - Ag. Corinthians
Sylvinho, técnico do Corinthians, à beira da Neo Química Arena Imagem: Ag. Corinthians

08/09/2021 21h55Atualizada em 09/09/2021 12h18

Foi nos campinhos do celular, na lousa, em uma prancheta, na folha de papel em mesa de bar ou até, quem sabe, em algum Estrelão empoeirado e ressuscitado para a nobre missão. Foi assim, ou até na palma da mão que os corintianos estão desenhando e projetando seu novo time, com Willian, Renato Augusto, Roger Guedes e Giuliano.

Só com Giuliano e um pouco de Renato Augusto já houve grande melhora. Contra o Juventude estaria Roger Guedes e a certeza de que tudo será extraordinário com Willian. Showtime.

Não foi.

O Juventude foi muito melhor. Vagner comandou o meio campo e o Corinthians não jogou. Foi dominado.

Só não digo que foi injustiça porque não gosto de falar de corda em casa de enforcado. Vivemos em um país em que um bufão hidrófobo quer implantar um golpe contra o STF.

Também é difícil falar em injustiça quando vemos um gol como aquele de Roger Guedes. Cobrança de falta magistral. Aos 39 do segundo tempo, no segundo chute a gol do Corinthians.

Alguns pontos parecem claros:

1) Se Renato Augusto não aguenta 90 minutos, é melhor não começar.

2) Essa história de quadrado mágico nunca deu muito certo. Não é só colocar em campo virtual. Tem que treinar para dar resultado no campo real.

3) De que adianta ter Renato Augusto, Roger Guedes e Giuliano, se a bola não chega até Jô? É questão de tempo? Ou é hora de um Fora, Jô?

4) Quem é que marca? Vai escalar os quatro na frente e deixar o tramou duro para Gabriel. Ou Rony? Ou os dois. E, se for uma dupla, que. É que sai? Mosquito? Quem mais?

Sylvinho tem bons jogadores e a obrigação de montar um time. Melhor do que há dois meses, quando a obrigação também e istia e tinha de ser cumprida com Natel e Cafu.

, ou até napalms