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

Rafael Reis

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Como zagueiro do 7 a 1 virou líder da melhor defesa da Europa na temporada

Dante e o técnico Christopher Galtier são responsáveis pelo sucesso do Nice no Campeonato Francês - Divulgação
Dante e o técnico Christopher Galtier são responsáveis pelo sucesso do Nice no Campeonato Francês Imagem: Divulgação

14/09/2021 04h20

Receba os novos posts desta coluna no seu e-mail

Email inválido

Dante deixou o Brasil há uma década e meia, já foi campeão belga pelo Standard de Liège, venceu uma Liga dos Campeões com o Bayern de Munique, entrou na seleção de melhores jogadores do Campeonato Alemão e caiu em desgraça com os torcedores do seu país-natal depois de ser um dos vilões da goleada por 7 a 1 sofrida pela seleção contra a Alemanha, na Copa do Mundo-2014.

Agora, aos 37 anos e calejado por uma carreira repleta de experiências únicas, tanto positivas quanto negativas, o zagueiro baiano voltou a ganhar destaque no cenário internacional. Afinal, é ele o líder da melhor defesa da Europa neste começo de temporada.

O brasileiro é titular absoluto e capitão do Nice, único clube participante dos cinco principais campeonatos nacionais do Velho Continente (Inglês, Espanhol, Italiano, Alemão e Francês) que ainda não sofreu nenhum gol em 2021/2022.

Já são 433 minutos (quatro partidas completas da Ligue 1 e mais uma que foi interrompida na parte final do segundo tempo) de defesa intacta, marca que nem mesmo gigantes do porte de Chelsea, Liverpool, Real Madrid e Bayern de Munique atingiram.

Dante esteve em campo em todos eles. Ou seja, começou jogando todas as partidas da temporada e não foi substituído sequer uma vez.

Depois de sofrer uma ruptura no ligamento cruzado do joelho, em novembro do ano ado, e ar por uma cirurgia que o deixou seis meses afastado do futebol, o brasileiro não teve dificuldade para recuperar o ritmo de jogo e atuar em alto nível.

Segundo o site "WhoScored?", que mede o desempenho dos jogadores a partir das estatísticas do que eles produzem dentro das quatro linhas, Dante é o quarto melhor zagueiro do Campeonato Francês até o momento, com nota 7,21.

Além do capitão, no clube desde 2016, outros dois nomes têm sido apontados como responsáveis diretos pelo sucesso do sistema defensivo do Nice nesta parte inicial da temporada: o técnico Christopher Galtier e o zagueiro Jean-Clair Todibo.

Galtier foi o grande reforço do clube nesta temporada. O treinador de 55 anos foi contratado depois de surpreender a Europa ao levar o Lille à conquista da última Ligue 1. E importou da sua antiga equipe a ênfase na ideia de não sofrer gols (teve a melhor defesa da França em 2020/2021).

Já Todibo é um jovem zagueiro francês de 21 anos que foi contratado pelo Barcelona em 2019, mas só jogou cinco partidas na Catalunha. Em fevereiro, foi emprestado por um semestre ao Nice.

O reforço caiu tão bem na equipe que acabou tendo seus direitos econômicos comprados por 8,5 milhões de euros (R$ 52,4 milhões) na virada da temporada, dinheiro que agora parece uma mixaria depois da escalada no seu desempenho pelas mãos de Galtier.

Apesar de ainda não ter sofrido gols nesta temporada, o Nice ocupa apenas a quarta colocação do Francês com nove pontos, seis a menos que o Paris Saint-Germain, líder e favorito ao título.

O time de Dante até poderia estar um pouco mais acima na tabela, mas foi punido com a perda de um ponto pela confusão generalizada provocada por seus torcedores no clássico contra o Olympique de Marselha, no fim do mês ado.

Na ocasião, apoiadores do Nice lançaram objetos no gramado, invadiram o campo e agrediram jogadores do OM, que se recusaram a continuar na partida por questões de segurança. A equipe rubro-negra vencia o jogo por 1 a 0, mas o resultado não será considerado, já que a partida foi remarcada para o dia 27 de outubro.

Como foi apenas o nono colocado na temporada ada e não se classificou para nenhuma competição europeia, o clube tem agora uma semana livre para se preparar para seu próximo compromisso, contra o Monaco, domingo, em casa.