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

Bufoni tem ajuda de 'personal dos famosos' para manter físico em alto nível

A skatista Letícia Bufoni tem um cuidado especial com seu corpo e compartilha a rotina de treinos nas redes sociais - Reprodução
A skatista Letícia Bufoni tem um cuidado especial com seu corpo e compartilha a rotina de treinos nas redes sociais Imagem: Reprodução

Do UOL, no Rio de Janeiro*

02/06/2023 04h00

A skatista Letícia Bufoni gosta de compartilhar com seus seguidores nas redes sociais a sua rotina de treinos e cuidados especiais com o seu corpo.

Na semana ada, ela participou do Red Bull Rio Conquest e teve o apoio presencial de uma pessoa que a ajuda a manter o alto nível físico: o personal trainer Norton Mello, também conhecido como o "personal dos famosos".

A reportagem do UOL esteve no evento, observou que Norton conversava com Letícia durante as baterias e conversou com Bufoni para entender como funciona essa parceria no dia a dia —já que ele mora no Brasil e ela, nos Estados Unidos.

"O Norton está aqui me ajudando na minha preparação física. Eu tenho um treinador da Red Bull nos Estados Unidos, então eles sempre estão em contato. Como ele [Norton] está aqui no Brasil, veio para me ajudar no evento. Eu já treino a vida inteira, então, gosto muito de estar cuidando do meu corpo, ainda mais que já não sou mais tão nova assim", disse Letícia, que completou 30 anos em abril.

"É muito importante estar cuidado do corpo, treinando, e isso acaba espelhando na pista, né? Quando eu vou andar de skate isso acaba me prevenindo de lesão, eu fico mais forte, então é muito importante ter alguém aqui que está me ajudando nisso", acrescentou.

No Rio Conquest, Letícia Bufoni retornou a uma competição de skate após 10 meses afastada. Ela enfrentou nas quartas de final a compatriota Rafaela Murbach e venceu. Na semi, perdeu para Gabi Mazetto, e na disputa pelo 3º lugar foi derrotada por Vitória Mendonça.

Norton tem ado no futebol e viralizou durante a pandemia

norton mello - Reprodução/Instagram - Reprodução/Instagram
Personal das estrelas, Norton Mello realiza treinos ao vivo diários
Imagem: Reprodução/Instagram

Durante a pandemia causada pelo coronavírus, Norton decidiu fazer lives diárias e gratuitas de treinamento funcional para ajudar a população que estava em isolamento social. A ideia era proporcionar saúde física e mental num momento complicado para todos —mas até hoje ele segue com as lives, e no mesmo horário.

Em entrevista ao UOL, naquela época, Norton afirmou que sua relação com o esporte vem desde muito novo. Aos oito anos, ele jogava nas categorias de base do São Paulo.

"Eu sempre fui apaixonado por futebol, desde criancinha, eu tive estímulo do meu pai. Então com três anos, já estava correndo para lá e para cá, querendo jogar bola toda hora. Com oito anos de idade, eu entrei nas categorias de base do São Paulo. ei minha adolescência inteira lá. Depois, eu fui para o Palmeiras e também atuei no profissional do Criciúma", contou.

Em sua carreira como personal, Norton coleciona uma lista enorme de "alunos ilustres". Ele já trocou ideia sobre treinos com Cristiano Ronaldo e atendeu atletas como Douglas Costa, Nelsinho Piquet e Ronaldinho Gaúcho. Além de famosos do mundo do entretenimento como Sorocaba, Felipe Araújo, Maraísa, Flávia Pavanelli, Jade Picon e Gabriela Pugliesi.