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

Yuri Marçal sobre haters: 'Acho engraçado o ódio que jogam gratuitamente'

Bruno Calixto

Colaboração para Nossa

11/06/2022 04h00

Quem vê close não vê corre. E quem vê Yuri Marçal com 1 milhão de seguidores no Instagram e a recente estreia do especial "Ledo Engano", na Netflix, não imagina que há quatro anos a sua carreira estava bem distante do stand-up comedy.

No episódio de "Botequim da Teresa", que contou com a participação da sua mãe, Márcia, ele explica que a comédia fazia parte da sua vida de um jeito informal. Estava sempre ligado nas novidades do mundo do entretenimento e não perdia a oportunidade de fazer piadas.

Foi na internet que Yuri foi cavando o seu espaço enquanto ainda estava na faculdade de Direito. Quando a apresentadora Teresa Cristina comenta sobre a apresentação para 2 mil pessoas na casa de espetáculos Vivo Rio, no Flamengo, ele confessa que aquele foi um momento de emoção.

Yuri Marçal - Zo Guimaraes/UOL - Zo Guimaraes/UOL
Yuri Marçal: do Procon à Netflix
Imagem: Zo Guimaraes/UOL

Não só porque pediu a esposa, Jennifer Dias, em casamento, mas também porque viu o filme da sua vida ar na cabeça.

"É o contexto todo. Há quatro anos, trabalhava no Procon atendendo gente. Já trabalhei em escritório de advocacia e no Tribunal de Justiça".

A internet trouxe a chance de me divulgar e das pessoas se identificarem".

Botequim da Teresa | Yuri Marçal e bolinho de vaca atolada - Zo Guimaraes/UOL - Zo Guimaraes/UOL
Yuri começou com vídeos de comédia na internet
Imagem: Zo Guimaraes/UOL

O desejo de divertir e entreter, oferecendo um bom espetáculo a quem está ao redor, pulsa dentro dele desde cedo.

"Vem muito da minha paixão pela arte, pela comédia em si. Ela estaria presente independente da área que eu fosse exercer, seja Direito ou outra profissão", comenta o carioca, que não chegou a se formar e trancou a faculdade no último período para se dedicar integralmente à vocação.

Joguei a 'culpa' na comédia e preferi largar o Direito, que estava 'real' me incomodando."

Atacado por haters "desde sempre", o ator e comediante entende que receber críticas faz parte da produção de conteúdo de humor sobre assuntos sérios, como o racismo. E diz que usa da ironia para contra-atacar:

Se não fosse isso, realmente me afetaria demais. Normalmente, embora não todas as vezes, porque a gente é ser humano, eu acho muito engraçado o ódio que jogam para mim gratuitamente".

Sextas de samba

Botequim da Teresa | Yuri Marçal e bolinho de vaca atolada - Zo Guimaraes/UOL - Zo Guimaraes/UOL
Imagem: Zo Guimaraes/UOL

O "Botequim da Teresa", que vai ao ar todas as sextas, é o programa perfeito para quem ama boa música e papos interessantes. Teresa Cristina resgata a história de bares tradicionais do Rio de Janeiro, faz receitas clássicas de cada um deles e recebe convidados para conversas descontraídas. Assista à nova temporada no site de Nossa, no UOL Play ou no YouTube de Nossa (inscreva-se e receba atualizações fresquinhas).