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

Perrone

OPINIÃO

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

Perrone: Confiar em seu trabalho é um dos principais méritos de Abel

Abel Ferreira, técnico do Palmeiras, após a classificação à final da Libertadores, diante do Galo - Staff Images / CONMEBOL
Abel Ferreira, técnico do Palmeiras, após a classificação à final da Libertadores, diante do Galo Imagem: Staff Images / CONMEBOL

29/09/2021 07h55

Receba os novos posts desta coluna no seu e-mail

Email inválido

Um dos principais méritos de Abel Ferreira ao levar o Palmeiras para sua segunda final de Libertadores seguida foi confiar em seu trabalho. O treinador não sucumbiu às críticas de grande parte da torcida e da imprensa, que com razão, cobravam um futebol mais ofensivo de seu time.

O português confiou na estratégia de evitar ao máximo ao risco de levar gol do Altético-MG no confronto em casa para carregar a vantagem do tento como visitante no Mineirão.

Confiou que se saísse de São Paulo sem ter sua defesa vazada na primeira partida, mesmo não ando de um empate, teria boas chances de alcançar a classificação no segundo jogo.

Acreditou que, nesse caso, não precisaria escancarar sua defesa para buscar a classificação em Belo Horizonte. Poderia fazer isso com três zagueiros, paciência e equilíbrio entre ataque e defesa.

Sua confiança não foi abalada pelas reclamações diante da anêmica atuação de seu ataque, que fez apenas quatro finalizações contra 11 do adversário no primeiro jogo, segundo o Sofascore, mesmo sendo o mandante.

Abel confiou no que treinou, nas orientações que ou a seu time, nas armas que tinha no banco de reservas para buscar uma mudança na segunda partida.

Demonstração disso foi a serenidade com que pediu a seus atletas que usassem a cabeça depois de o Galo fazer 1 a 0 no Mineirão, nesta terça (28).

Ao fazer um gesto apontando para a cabeça foi como se dissesse para os atletas: "calma, lembrem que sabíamos que poderíamos ar por isso, que treinamos para enfrentar essa situação".

O técnico palmeirense confiou em Gabriel Veron, que na sua primeira jogada após sair do banco deu uma assistência para Dudu, na única bola que conseguiu mandar no gol, segundo o Sofascore, empatar o jogo. O 1 a 1 era um dos resultados que colocariam o Alviverde na decisão. Deu certo.

Abel confiou na eficiência de seu time. Acreditou que não precisaria de um caminhão de chances para balançar as redes. Isso demonstra confiança nos treinamentos.

Quando um treinador confia demais em suas convicções e perde, isso ganha o nome de teimosia. Quando ele alcança seus objetivos, entra para a história como alguém que confiou no seu taco. Mesmo ando perto de um desastre, como antes de Hulk perder um pênalti no primeiro jogo.