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

Prisão no auge da fama: 'Me condenaram pelo meu nome', diz Rennan da Penha

Bruno Calixto

Colaboração para Nossa

22/05/2022 04h00

Em 2019, Rennan da Penha era o maior DJ de funk do Brasil. Havia acelerado o ritmo musical para "150" e transformado o Baile da Gaiola em um case de sucesso das comunidades.

Mas no dia 20 de março, foi do estrelado para trás das grades: o Tribunal de Justiça do Rio de Janeiro determinou a sua prisão por associação ao tráfico de drogas.

A pena era para durar seis anos e oito meses, mas em 23 de novembro foi liberado do regime fechado com a mudança da compreensão sobre cárcere em segunda instância. Durante sete meses, dividiu-se entre a Bangu 9 e a Bangu 2.

Me acusaram de ser olheiro do tráfico por uma mensagem que enviei avisando meus amigos de um tiroteio"

Moradora da Vila da Penha, Teresa Cristina relativiza a situação. "Quando tem tiroteio no Morro do Sereno, eu aviso meu sobrinho."

Teresa Cristina, Rennan da Penha, sanduíche de sardinha - Zo Guimaraes/UOL - Zo Guimaraes/UOL
Teresa Cristina recebeu Rennan da Penha no "Botequim da Teresa"
Imagem: Zo Guimaraes/UOL

Rennan diz que é comum pessoas serem acusadas de olheiros. "Colocar 27 pessoas na cadeia é o que o povo quer ver. A maioria não fica presa nem um ano, é só para vender notícia."

Essa não foi a primeira vez que o funkeiro foi preso. Em 2016, ele cumpriu pena de janeiro a julho. "Incluíram no processo uma foto minha com um fuzil de madeira e fita crepe. Isso é uma tradição de Carnaval entre as crianças da favela".

De acordo com ele, o desembargador que o condenou disse que ele estava mostrando, com arrogância, a existência de um grupo fortemente armado na comunidade. "Para alegria dele, aquela imagem não foi tirada dentro da favela", ironiza.

Me condenou unicamente pelo nome que carrego, Rennan da Penha."

Prêmio Multishow

Rennan da Penha - Fabrizia Granatieri/UOL - Fabrizia Granatieri/UOL
Rennan da Penha: DJ mudou batida do funk
Imagem: Fabrizia Granatieri/UOL

Ele estava na prisão quando soube do Prêmio Multishow 2019. O criador do Baile da Gaiola foi premiado nas categorias "canção do ano" e "melhor produtor".

"Soube pelas tias da visita. Falaram: 'filho você ficou em primeiro lugar'. Na hora, não entendi. Depois, os agentes penitenciários me contaram: 'Tu ganhou o Prêmio Multishow. Não é normal o funk ganhar prêmio, ainda mais contando do nosso cotidiano na favela", declara Rennan, que recebeu os troféus dois dias após sair de Bangu.

Sextas de samba

Botequim da TEresa - 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).