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

André Rocha

OPINIÃO

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

Barcelona derrete em La Liga porque não dá mais para viver de Messi

Ronald Koeman, técnico do Barcelona, e Lionel Messi - REUTERS/Albert Gea
Ronald Koeman, técnico do Barcelona, e Lionel Messi Imagem: REUTERS/Albert Gea

Colunista do UOL Esporte

17/05/2021 08h55

O noticiário sobre o Barcelona no domingo foi monopolizado, com justiça, pela conquista da Liga dos Campeões de futebol feminino, goleando o Chelsea por 4 a 0 na final.

Mas houve uma pontinha para a apuração de bastidores de que, entre os homens, a permanência de Ronald Koeman no comando técnico é uma incógnita para a próxima temporada. Apesar da conquista da Copa do Rei pelo time catalão.

Muito pela forma com que a equipe derreteu na liga espanhola e ficou sem chances de título na penúltima rodada ao emendar um empate em 3 a 3 com o Levante e derrota, no Camp Nou, de virada para o Celta de Vigo por 2 a 1. A distância para o líder Atlético de Madri era de dois pontos e subiu para sete.

Messi fez gols nas duas partidas, é o artilheiro absoluto com 30 gols. Mais nove assistências, participando de quase metade dos 84 gols do Barça. Ninguém pode reclamar de falta de desempenho do gênio argentino em sua possível última temporada no clube.

Pode ser a despedida justamente porque não dá mais para Messi levar nas costas um time com tantos problemas. Koeman tentou equilibrar os setores ao utilizar três zagueiros e liberar os alas Dest e Alba. Mas o retorno de Piqué voltou a deixar a defesa lenta e seus companheiros Mingueza, Lenglet e Araújo não colaboram com regularidade. E Busquets é outro ídolo na reta final da carreira que não entrega mais a intensidade necessária, apesar da qualidade intacta.

Na frente, a mesma inconstância com Dembelé e Griezmann oscilando demais, Pedri ainda verde para assumir grandes responsabilidades e Braithwaite, que não consegue ser o contraponto de força física e presença de área como se imaginava. Desperdiçou chance clara de manter o time respirando na liga, pouco antes do gol da virada do Celta.

Resta Frenkie de Jong tentando compensar tudo entre as duas intermediárias, mas são muitos buracos para cobrir. Mesmo em uma edição de liga sem muito brilho, o Barcelona não conseguiu ser competitivo até o final. Porque não adianta ser disparado o ataque mais positivo, líder em posse, acerto de es e finalizações, mas ter média superior a um gol sofrido por jogo. São 38, contra 24 do Atlético e 27 do Real Madrid.

City e Chelsea decidem a Champions sustentados também por defesas fortes. Nas grandes ligas, a tendência é apenas o Bayern vencer sem ser o menos vazado. O jogo requer cada vez mais versatilidade, inteligência e elenco homogêneo para ser consistente. O Barcelona tem uma escola que já parece antiquada, problemas financeiros e políticos...e Lionel Messi. Ainda.

Não é mais o suficiente. Por isso vale olhar com carinho para o grande feito das mulheres. Agora elas são o Barça que dá certo.

(Estatísticas: Whoscored.com)