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

Alicia Klein

OPINIÃO

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

Flamengo é seu próprio algoz e Vítor Pereira, um problema autoinfligido

Vítor Pereira durante Flamengo e Al Hilal, pelo Mundial de Clubes - Marcio Machado/Eurasia Sport Images/Getty Images
Vítor Pereira durante Flamengo e Al Hilal, pelo Mundial de Clubes Imagem: Marcio Machado/Eurasia Sport Images/Getty Images

07/02/2023 18h38

Receba os novos posts desta coluna no seu e-mail

Email inválido

Em qualquer cenário seria difícil o Flamengo vencer o Mundial. Todo time sul-americano chega em desvantagem em relação aos europeus. Cair na semifinal, porém, sempre traz um quê de humilhação.

Talvez indevidamente, afinal se trata da sexta eliminação "precoce" de um representante da Conmebol no torneio.

O UOL perguntou aos colunistas,, ontem: "Lesões no Real Madrid aumentam chances do Flamengo?" Respondi: "As chances aumentam na medida em que o adversário chega enfraquecido, mas não coloca o Flamengo no mesmo patamar do Real Madrid. E ambos ainda precisam chegar à final. Como diz a sabedoria popular: hay que jugar."

E na hora de jugar o Rubro-negro sofreu com uma combinação de má sorte e mau futebol. Acontece até com os melhores.

O juiz não foi bem, Pulgar foi péssimo e Vítor Pereira errou demais ao se ver diante do revés causado pela expulsão de Gerson.

E aí jaz o problema e o sonho do Mundial: Vítor Pereira é um problema autoinfligido.

Time que vai para o Mundial não começa o ano em pré-temporada. Ao contrário, tem menos de um mês para se preparar para alguns dos jogos mais importantes da história do clube. Com uma Supercopa antes e uma Recopa depois.

Diante disso, e na cola da conquista da Copa do Brasil e da Libertadores, a diretoria achou por bem demitir o técnico campeão e trazer um que pouco provou por essas bandas.

Nem discutirei agora se VP é melhor que Dorival. Meu ponto é que não se faz uma mudança tão brusca quanto a de comissão técnica (ainda mais uma vencedora) às vésperas de um desafio dessa monta.

Também não é o "Real Madrid, pode esperar, a sua hora vai chegar", a chamada soberba. É erro de estratégia, de gestão mesmo.

Claro, nada garante que Dorival tivesse feito melhor hoje. Embora, sinceramente, parece-me difícil imaginar que fizesse pior. Uma equipe que já sofria na recomposição defensiva se viu, diante do Al Hilal, sem meio-campo, sem criação, sem recursos. Sem Arrascaeta. Sem Éverton Ribeiro. De propósito!

Perder é do jogo e só perde quem está lá. Mas o Flamengo colocou um obstáculo desnecessário no próprio caminho rumo ao bi.

Siga Alicia Klein no Instagram e no Twitter

Leia todas as colunas da Alicia aqui