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

Rodrigo Coutinho

OPINIÃO

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

Pedir Tite fora da seleção é coisa de ''negacionista da bola''

Colunista do UOL

08/06/2021 23h26

Por mais que a afirmação do título da coluna dê a entender o contrário, o texto não tem a pretensão de estabelecer uma verdade absoluta ou mostrar um viés antidemocrático. Todas as opiniões, desde que não carreguem conteúdo criminoso ou discriminatório, são válidas na sociedade plural em que vivemos. Mas algumas delas, como pedir a cabeça de Tite no comando técnico da seleção, se distanciam de qualquer fundamentação minimamente razoável.

Há muitos anos, o Brasil não tinha um profissional tão capacitado e merecedor, quando foi contratado, para ocupar o cargo mais '' cornetado'' do país. Tite não é o melhor técnico do mundo e nem inquestionável. Podemos enumerar alguns pontos de discordância nas escalações, convocações e posicionamentos, mas há quanto tempo um treinador da seleção não buscava ser tão esclarecedor e coerente em suas ações e justificativas?

A vitória sobre o Paraguai, em Assunção, foi a 40ª em 54 jogos da Era Tite. No mesmo período, o Brasil foi derrotado apenas quatro vezes, só uma delas em competições oficiais, a fatídica eliminação para a Bélgica no último Mundial. Números que revelam a quantidade necessária de resultados positivos num ambiente de tanta pressão, e que dão o respaldo e a certeza de que a continuidade pode render frutos. Se não a conquista da próxima Copa do Mundo, a formação de um time e o desenvolvimento dos principais jogadores disponíveis para vestir a ''amarelinha''.

O Brasil tem uma equipe com padrões bem nítidos e variações igualmente claras, seja em esquemas táticos adotados ou na forma de atacar. Particularmente não concordo com a estrutura mais ''posicional'' adotada desde o amistoso contra a Rússia, antes da Copa do Mundo de 2018. A cultura dos jogadores de meio e ataque no Brasil ainda não é a de ocupar o espaço e esperar a chegada da bola no setor. De lá pra cá esse modelo sofreu adaptações e algumas melhorias, mas ainda é possível tirar mais de algumas peças.

A questão, porém, é entender que o universo de uma seleção é totalmente diferente de um clube. Se por um lado há mais qualidade disponível e o poder de escolher os melhores, por outro a rotina de poucos dias de treinamento e jogos espaçados dificulta o fortalecimento coletivo. A formação de um padrão de jogo que possa ser aprimorado nas competições oficiais. Por isso o trabalho de Tite é louvável. São poucas as seleções com essa condição. E o Brasil é uma delas.

Mesmo com as oscilações naturais diante do cenário descrito, o time segue dando respostas. Umas mais contundentes, outras nem tanto. O que não podemos perder de vista é a qualidade e a seriedade do trabalho que vem sendo desenvolvido. Questionar Tite é saudável e muitas vezes necessário. Querer trocá-lo por quem debocha do conhecimento e da preparação é rejeitar uma verdade desconfortável, manifestando um caráter radical e controverso. O dia em que Tite sair, alguém melhor do que ele precisa assumir. E no Brasil, neste momento, não há nem quem esteja no mesmo nível.