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

David Luiz atrapalha (e muito) o Flamengo de Vitor Pereira

David Luiz em ação pelo Flamengo contra o Palmeiras pelo Campeonato Brasileiro 2022 - MB Media/Getty Images
David Luiz em ação pelo Flamengo contra o Palmeiras pelo Campeonato Brasileiro 2022 Imagem: MB Media/Getty Images

Colunista do UOL

05/03/2023 20h12

Receba os novos posts desta coluna no seu e-mail

Email inválido

Vitor Pereira está focado em achar soluções para a montagem do seu meio de campo, mas a verdade é que se o português conseguisse olhar para os outros setores do time, veria que David Luiz não merece nem de perto o cargo de insubstituível. Hoje (5), na derrota para o Vasco no Maracanã, ele foi novamente um dos piores e finalmente foi substituído durante uma partida este ano.

Pode até ser uma condição temporária, mas o que o experiente zagueiro atrapalha o time neste momento da temporada é assustador. Na hora de defender, ele adota uma postura preguiçosa e para no meio da jogada, como aconteceu no lance em que Ayrton Lucas acabou cometendo pênalti. Quando precisa subir com a linha defensiva, faz uma porção de faltas desnecessárias no meio-campo.

Na hora de atacar, também consegue atrapalhar seus companheiros, muitas vezes fazendo faltas dentro da área fora da jogada e que muitas vezes são percebidas pelo juiz ou pelo VAR.

Tudo isso fica ainda mais problemático para uma equipe que não tem como principal característica do meio-campo a marcação. Como Gerson, Vidal e Thiago Maia não conseguem ser combativos como era João Gomes, a linha de zaga fica ainda mais exposta e dá menos margem para um jogador com as características atuais de David Luiz.

Como já mostrou que não tem receio de mexer nos jogadores mais experientes ao sacar Everton Ribeiro várias vezes, Vitor Pereira deveria dar mais chances a Pablo. O jogador precisa de uma maior sequência para poder ter ritmo de jogo e aí voltar a exibir o ótimo futebol que teve na agem no Corinthians.

É bom o técnico saber que o tempo para achar uma solução para o Flamengo está acabando. E não se trata de uma torcida ou opinião deste colunista, mas de uma realidade que a diretoria flamenguista já deixou clara com a sua postura na hora de gerenciar o comando da equipe.

David Luiz responde

Na tarde desta segunda-feira (6), David Luiz procurou o blog para responder às críticas e emitiu uma nota, que você pode ler aqui com novas considerações ou logo abaixo.

"Esse texto não é uma reportagem. Trata-se de uma opinião e, como tal, está sujeita ao contraditório. E estou aqui para manifestar meu repúdio à forma como meu trabalho foi analisado. Onde estão os dados, com minha intensidade de treinamento e meu desempenho nas partidas? No lugar de informação, apenas achismos. Não existe ninguém insubstituível em qualquer ambiente profissional. Há dedicação, paixão, seriedade, capacidade e concentração. E nada disso me falta, quando estou com a camisa do Flamengo. Seguirei me entregando à missão de levar bons resultados à Nação Rubro-Negra sem deixar nosso caminho ser desviado por quem escreve somente com o objetivo de atrapalhar"

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