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

Palmeiras

Quem é Abel Ferreira, técnico português que virou o alvo do Palmeiras

Abel Ferreira, técnico do PAOK, durante partida contra o Panathinaikos em fevereiro de 2020 - Vladimir Rys Photography/Getty Images
Abel Ferreira, técnico do PAOK, durante partida contra o Panathinaikos em fevereiro de 2020 Imagem: Vladimir Rys Photography/Getty Images

Thiago Ferri

Do UOL, em São Paulo

28/10/2020 14h59Atualizada em 28/10/2020 17h19

O português Abel Ferreira, comandante do PAOK (GRE), é o grande nome do momento no Palmeiras e está perto de assumir o cargo de técnico. Pouco conhecido no Brasil, o treinador de 41 anos de idade ganhou destaque recentemente ao eliminar o badalado Benfica (POR), de Jorge Jesus, em fase classificatória para a Liga dos Campeões da Europa.

Como jogador, Abel atuou em Portugal por Penafiel, Vitória de Guimarães, Braga e Sporting, clube no qual começou a carreira como treinador, no time sub-19. Foi no Braga, porém, que o comandante ganhou destaque e acabou se transferindo para o clube grego.

O escolhido é considerado pelo Palmeiras como dono de ideias modernas, que podem fazer o time jogar melhor depois de demitir Vanderlei Luxemburgo. Além disso, mostrou bons resultados atuando em equipe sem grandes orçamentos e bom trabalho na formação de atletas de base, uma das principais premissas do Verdão.

Como publicou o blog de Marcel Rizzo, a oferta do Verdão é de um salário de cerca de 120 mil euros (perto de R$ 800 mil), um pouco acima do que o clube planejava pagar a Miguel Ángel Ramírez.

O treinador se diz ambicioso e apaixonado. No Braga, quebrou recordes durante a temporada de 2017/2018, aquela em que o time foi quarto colocado no Português, fez mais pontos (75) e venceu mais vezes (24) na sua história até então. O trabalho seduziu o PAOK para levá-lo, em julho de 2019.

"Cuide do processo, e o resultado virá", disse Abel, ao The Coaches' Voice. "Temos um estigma: você só é bom se vencer. Se você perde, é fraco. Para mim, isto é mentira. Você é julgado no fim de semana pelo que fez durante a semana. É aí que as pessoas vão ver se o seu time é organizado ou não, se trabalha bem a bola ou não. O seu teste é no domingo", concluiu.

Abel cita como mentor Jesualdo Ferreira, histórico técnico português com agem curta no Santos em 2020. Especialmente na ideia de que é preciso ensinar seus jogadores. "Eu me considero um técnico que gosta de ensinar, de perguntar aos meus atletas — o 'como' e o 'por que', que é o que o Jesualdo me ensinou", detalhou.

Considerado alguém que estuda o futebol e suas evoluções, Abel Ferreira não define um estilo de jogo. Segundo ele, é preciso ser balanceado para entender quando é preciso tomar conta da posse de bola e dominar, ou quando é preciso ter uma estratégia diferente.

"Se você enfrenta alguém do mesmo nível que você, tudo bem, vou atacar. Mas se você ataca uma montanha, precisa ser diferente. Em alguns jogos você será protagonista, vai dominar a bola. Mas em outros precisa itir que seu adversário é mais forte. E, neste caso, você precisa ser balanceado", justificou.

Ainda que a negociação com o Palmeiras esteja caminhando bem, ainda resta um acerto entre os clubes em relação à multa rescisória. Abel Ferreira, porém, mostrou-se bastante interessado em assumir o Verdão.

Palmeiras