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

Flamengo

Com sensação de dever cumprido, Fábio Matias agradece chance no Flamengo

Colaboração para o UOL, em São Paulo

29/01/2022 20h44

Técnico do sub-20, Fábio Matias iniciou a temporada de 2022 como treinador do Flamengo no Campeonato Carioca. Hoje (29), após o empate sem gols fora de casa diante do Volta Redonda, o comandante destacou que retorna para as categorias de base na Gávea com suas obrigações feitas.

"Com certeza. O objetivo era dar rodagem e visibilidade aos atletas da base. Grande parte dos jogadores tem idade de juniores. Temos esse sentimento de dever cumprido. Óbvio que queiramos entregar com seis pontos, mas dentro do processo de construção, essa experiência foi muito válida", destacou.

Ele também mostrou gratidão pela chance que teve enquanto os principais jogadores finalizam a pré-temporada. Por fim, evitou falar quais peças devem integrar o grupo do profissional com o técnico Paulo Sousa.

"É uma oportunidade única trabalhar no profissional do Flamengo. Essas outras questões de quem será aproveitado são pertinentes ao profissional, dos jogadores que estarão lá e continuarão conosco. Nós, da base, somos e para que os jogadores tenham sequência e possam, um dia, estar lá. Estou muito feliz de ter feito esse processo inicial de trabalho e agora é focar em nosso trabalho no sub-20", completou.

Confira outros trechos da coletiva

O que o profissional tira desses dois jogos com a base

Acredito que seja outro processo a partir de agora, a ser conduzido pelo profissional. Essas questões (do que será aproveitado) cabem para eles conduzir nessa sequência de trabalho.

Queda de desempenho em relação ao primeiro jogo

São dois jogos em um intervalo muito curto e jogos diferentes, contra equipes diferentes. Por isso, podemos ter alguma oscilação, como hoje. Mesmo assim, riamos chances claras de gols e, infelizmente não terminamos tão bem as jogadas.

Volta de João Gomes

É um atleta que está retornando de covid e foi inserido no segundo tempo. É um atleta que é uma ativo enorme do clube, com muita qualidade e um domínio enorme do espaço. A tendência é crescer e desenvolver mais, por vir de alguns dias parados.

Avaliação do estádio

É uma avaliação que o profissional deve fazer. Eles estiveram presentes e avaliaram. Agora, possivelmente, não vamos jogar aqui na base. É uma questão voltada ao profissional.

Arbitragem errou ao não dar um pênalti para o Flamengo?

Acredito que foi um pênalti claro e acaba sendo determinante ao resultado. Mas não é algo intencional, faz parte do jogo e vida que segue. Isso também serve de reflexão para a arbitragem no momento.

Flamengo