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

Oscar Roberto Godói

Enquanto a bola não rola, acreditemos que 2020 será melhor para arbitragem

O árbitro Marcelo Aparecido Ribeiro em partida Chapecoense e Atlético-MG pelo Brasileirão 2019 - Tarla Wolski/Futura Press/Folhapress
O árbitro Marcelo Aparecido Ribeiro em partida Chapecoense e Atlético-MG pelo Brasileirão 2019 Imagem: Tarla Wolski/Futura Press/Folhapress

30/12/2019 12h44

Na virada do ano, o mercado da bola toma conta do noticiário esportivo e informa as contratações de técnicos e jogadores que darão alegrias ou tristezas aos torcedores. Alguns até que são reforços, outros nem tanto. Todas as discussões provocadas pelas interpretações acertadas ou não dos árbitros são esquecidas. Até o VAR cai no esquecimento.

Então, como estão os árbitros nesse período de festividades? Poucos se sentem bem e confortáveis depois de um ano com boas escalas, jogos importantes e atuações convincentes. Uma minoria está feliz por ter conseguido ingressar no quadro internacional da Fifa em 2020, enquanto os substituídos estão arrasados por fracassarem com o distintivo Fifa, principalmente os que saem por incompetência e não por idade. É a vida.

Sabemos que no Brasil o preenchimento das vagas internacionais (10 árbitros e 10 assistentes) é feito muito mais por favores e interferência política/geográfica do que por competência dos escolhidos. Poucos até que merecem a promoção. Outros nem serão escalados ou serão lembrados para jogos ou competições insignificantes.

Infelizmente, para desespero de quem tem competência, não são promovidos para o quadro da Fifa os 10 melhores de cada função. A cabeça do árbitro continua sendo servida na bandeja para pagamento de favores eleitorais e outros interesses, lamentavelmente, com a conivência da classe. Sindicatos e Associações que deveriam defender os árbitros não o fazem. Estão muito mais a serviço dos "patrões".

É árbitro dando golpe em árbitro e virando manchete de noticiário policial. Como que safados podem comandar, com atitudes honestas, um segmento do futebol que precisa ser (e aparentar ser) idôneo?

Alguns nomes quando estão do lado de cá (fora) são apontados como solução. Porém, quando assumem determinadas funções, se bandeiam para o lado mais forte, do "patrão", decepcionando aqueles que confiavam numa mudança de comportamento e conduta do quadro ou da classe que ainda entendo ser a mais importante para o futebol.

Então, enquanto a bola não rola e ninguém assopra o apito, vamos acreditar que 2020 será melhor, em tudo.

Saúde!

Oscar Roberto Godói