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

Se Jesus quer mesmo a seleção, talvez tenha cometido o maior dos erros

Jorge Jesus, ex-técnico do Flamengo, disse que quer voltar ao comando do clube brasileiro - Valter Gouveia/Getty
Jorge Jesus, ex-técnico do Flamengo, disse que quer voltar ao comando do clube brasileiro Imagem: Valter Gouveia/Getty

06/05/2022 12h09

Receba os novos posts desta coluna no seu e-mail

Email inválido

Eu não sei qual foi a intenção de Jorge Jesus. Se ele quer mesmo cavar uma vaga no Flamengo, se ele quer só tumultuar, porque está na bronca com os acontecimentos de dezembro ou se foi bobinho (difícil de acreditar) a ponto de achar que o que falou na quarta à noite não se transformaria em notícia (aliás, parabéns ao Renato Maurício Prado, furaço e textaço).

O que sei é que Jorge Jesus queimou o filme com a opinião pública aqui no Brasil e em Portugal - hoje, aliás, acordei com uma mensagem de um caro colega português ("agora vocês sabem quem é o verdadeiro Jorge Jesus aí no Brasil").

Se a intenção do treinador era maior do que o Flamengo, ou seja, seleção brasileira, talvez ele tenha dado um o em falso definitivo. Claro que a decisão sobre quem será o próximo técnico da seleção ainda parece estar longe de acontecer. Antigamente, a CBF tinha um comando centralizado e Ricardo Teixeira decidia quem, como e quando. De uns tempos para cá, talvez a opinião pública tenha mais influência do que antes.

Se quem quer que esteja tomando conta da CBF esteja a fim de escolher já um técnico para substituir Tite - e é melhor trabalhar com antecedência, se for para procurar um estrangeiro top -, esta seria uma boa hora para Jorge Jesus. Não há nenhum grande nome internacional disponível e ele ficou no imaginário popular do brasileiro, não só do flamenguista. Estava lá dando sopa no Rio...

Se, anteontem, a CBF tivesse anunciado um princípio de acordo para Jorge Jesus assumir a seleção em 2023, creio que a notícia seria recebida de forma positiva. E hoje? Pois é.

A falta de ética do português, considerando, ainda por cima, que há um "patrício" no comando do Flamengo, pegou mal demais. O brasileiro não é assim o povo mais ligado à ética no planeta, mas uma coisa é o "me engana que eu gosto", outra é uma desfaçatez dessas. Tem muita gente sem escrúpulos virando herói no new Brazil, mas trairagem escancarada é um negócio que não a muito pela garganta.

Jorge Jesus é ótimo técnico, sempre foi, mas o ego dificultou alguns caminhos. As coisas são dinâmicas por aqui, mas talvez ele tenha fechado não uma, mas duas portas ao mesmo tempo nesta agem pelo Rio.