;(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: Sóbis e Independente desqualificam Futebol e Democracia

Rafael Sobis jogador do Cruzeiro durante partida contra o Náutico no estádio Mineirão pelo campeonato Brasileiro B 2021 - Fernando Moreno/Fernando Moreno/AGIF
Rafael Sobis jogador do Cruzeiro durante partida contra o Náutico no estádio Mineirão pelo campeonato Brasileiro B 2021 Imagem: Fernando Moreno/Fernando Moreno/AGIF

23/01/2022 15h55Atualizada em 23/01/2022 15h55

O jogo do bicho é uma instituição centenária. Mais que centenária. Foi criado em 1892, no Rio, pelo Barão Drummond, com a intenção de arre andar fundos para o Jardim Zoológico.

Sobreviveu até hoje, mesmo na clandestinidade, mesmo com a proibição de jogos no Brasil porque segue à risca uma lei antiga: vale o que está escrito.

Quem joga sabe que, se ganhar, vai receber, mesmo sem saber quem vai pagar. É o fio de bigode.

Futebol precisa ser assim. Se não for, perde a credibilidade. E a credibilidade é importante para que a grande paixão nacional se mantenha forte.

E Rafael Sóbis, que viveu de futebol, deu uma punhalada em seu ganha-pão. Confessou que em 2016, jogando no Cruzeiro, fez corpo mole em um jogo contra o Inter, que lutava para não cair. Atendeu a pedidos recebidos durante a semana do jogo. Gente do Inter, ele diz. Jogadores? Dirigentes?

Não apareceu na área do rival. Não se esforçou nos escanteios. E foi oestado por Mano Menezes, seu treinador.

Todas as desconfianças antigas de torcedores ganham status de verdade verdadeira, mesmo que não em de lenda urbana. Afinal, se um jogador prejudica os companheiros (e o prêmio pela vitória que não veio?) e outros trabalhadores que caíram para a segunda divisão. Uma vergonha.

E a Independente? A maior torcida organizada do SÃO PAULO ameaçou bater em torcedores do SÃO PAULO que ousarem dizer o nome Trikas no estádio.

Quanto â mudança de estatuto, nenhum pio. Tigrões contra a torcida e tchutchuca contra Casares. Ou qualquer outro presidente.