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

Danilo Lavieri

OPINIÃO

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

Prass tem ótimas ideias de gestão, mas vai enfrentar resistência no Brasil

Prass contou como foi a sua conversa com o presidente do Vasco para assumir cargo de gestão - Instagram / Fernando Prass
Prass contou como foi a sua conversa com o presidente do Vasco para assumir cargo de gestão Imagem: Instagram / Fernando Prass

Colunista do UOL

18/02/2022 12h53

Receba os novos posts desta coluna no seu e-mail

Email inválido

Fernando Prass caminha para assumir um cargo de gestão no futebol em breve. O ex-goleiro concedeu entrevista ao UOL Esporte hoje (18) e deu ótimas ideias de como vê o modelo ideal para istrar um clube de futebol. Quase tudo do que foi falado por ele está nos cursos teóricos de boas maneiras, a questão é que nem sempre é isso o que impera no Brasil, que ainda flerta com amadorismo em muitos casos.

Ele foi taxativo ao afirmar que muito além de montar um bom time, o mais importante do gestor é conseguir fazer isso de forma sustentável. Não dá para adiantar verbas, comprometer receitas futuras e só pensar nos três anos de gestão que um presidente tem no clube. O importante é que todo aquele planejamento seja feito sem prejudicar o sucessor.

Nem mesmo os bons exemplos de Flamengo e Palmeiras, que preferiram itir para suas torcidas que ficariam um tempo sem ganhar nada até recuperar a saúde financeira, são suficientes por aqui. Na verdade, há vários casos de clubes que só pensam no resultado imediato e, quando vão perceber, já estão em um buraco difícil de sair. Já há os que estão lá no fundo e outros que caminham diretamente para esse mesmo destino.

"Tenho um amigo no Palmeiras que, quando surgiu a ideia de processar os responsáveis por gerir mal o clube, ele foi contra. Eu perguntei o motivo para ele ser contra e ele me disse que se fosse processar o presidente que fazia dívida, ninguém gostaria de ser presidente. É torcedor. Ele não precisa entender de números, de gestão, não precisa entender nem de futebol. Ele toma as decisões conforme as regras que ele mesmo entende, e não nas regras do mercado. Ele não bota na conta as despesas, o fluxo, as multas, o limite de inscrição. Por isso que é importante as pessoas de cima serem competentes e preparadas e não pensar apenas no que diz a arquibancada", afirmou o ex-goleiro.

No papo, que já está disponível no canal do UOL Esporte no Youtube e vai ao ar amanhã também em texto, ele ainda falou sobre que nem sempre a SAF (Sociedade Anônima do Futebol) vai ser a solução para todos os problemas e explicou como foi suas conversas recentes com o Vasco. Ele ainda criticou a cultura do futebol brasileiro de os times pensarem muito mais nos benefícios próprios do que no produto Brasileirão de uma forma geral e pediu a criação de uma liga dos clubes.

Na parte tática, ele elogiou bastante o trabalho de Abel Ferreira, diz que o português acrescenta muito ao futebol brasileiro e que gostaria de ter visto por mais tempo Jorge Jesus atuando por aqui. Por fim, ainda itiu que se sentiu bastante chateado pela forma que sua saída foi conduzida do Palmeiras e deu detalhes de como faria diferente se estivesse em casos como esse no cargo de gestão.

Siga também as opiniões de Danilo Lavieri no Twitter, no Instagram e no TikTok