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

Entregador pega onda agarrado a caminhão de lixo no Rio como protesto; veja

Daniele Dutra

Colaboração para o UOL, no Rio

10/02/2023 04h00Atualizada em 10/02/2023 10h32

O entregador Luiz Paulo de Oliveira, 28, achou uma maneira inusitada de chamar atenção da prefeitura do Rio de Janeiro para os alagamentos em dias de fortes chuvas no seu bairro, o Guadalupe, na zona norte. Deitado num papelão, ele "surfa" durante as enchentes na Avenida Brasil, umas das principais vias da cidade.

Durante o temporal desta semana, Luiz aparece agarrado a um caminhão de lixo para 'pegar onda'. O vídeo repercutiu nas redes sociais desde a última terça-feira.

A cena foi gravada por clientes do depósito de bebidas onde o homem trabalha, por volta das 15h30.

Luiz Paulo é conhecido como "Surfista da Brasil" devido ao protesto peculiar. Ele fez um vídeo parecido em 2018, mas somente agora, em 2023, ganhou uma maior repercussão.

O morador afirma que usa o bom humor para chamar atenção para a demora nas obras do BRT TransBrasil, que começaram em 2015 e ainda não foram concluídas.

"As obras já estão no terceiro governo e até agora não foram concluídas. Toda vez alaga, tem enchente e as pessoas se prejudicam. Essas obras não saem de jeito nenhum, são uma vergonha, sabe?", critica o morador.

Diversas páginas de notícias e de memes compartilharam a cena. Em uma delas, o vídeo reúne mais de 2,5 milhões de visualizações.

Meus clientes sempre veem como brincadeira, sabe? Hoje me chamam de 'Surfista da Brasil'. Até que foi visto de uma forma boa. Minha mãe nunca foi a favor, ela acha perigoso, mas a gente faz para um bem maior. Claro que tenho medo de pegar doença, mas é uma coisa de momento. Luiz Paulo, o 'Surfista da Brasil'

"Em meu trabalho, sempre fiz vídeos brincando, muitos deles perigosos e imprudentes, mas sempre com a intenção de chamar a atenção para os problemas do bairro onde moro", conta o Surfista da Brasil, que revela não saber surfar no mar do Rio de Janeiro, apenas nas enchentes.

As obras para o BRT TransBrasil foram retomadas em 2022. A previsão é para que sejam finalizadas até dezembro, segundo prefeito Eduardo Paes (PSD).

A iniciativa busca solucionar o problema do trânsito na região e transportar 150 mil pessoas, podendo chegar a 250 mil, diariamente, nos ônibus expressos.

Em nota, a prefeitura do Rio informa que retomou a BRT TransBrasil "após quatro anos de abandono e está atuando em diversas frentes para viabilizar a operação" até dezembro de 2023.

"Além disso, a construção do terminal Intermodal Gentileza foi iniciada, a compra dos ônibus está em andamento, bem como o planejamento da operação do corredor. As equipes trabalham integradas para entregar à população mais este corredor de BRT que é de suma importância para mobilidade dos cariocas", diz a gestão de Paes.