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

Para estudo, apps como Uber e Lyft aumentam poluição em vez de reduzir

Aplicativo da Uber  - Getty Images
Aplicativo da Uber Imagem: Getty Images

De Tilt, em São Paulo

26/02/2020 17h02

Apps de carona como Uber, 99 e Cabify costumam se apoiar na ideia de que ajudam a reduzir a poluição, já que as pessoas podem usá-los para se locomover em vez de dirigir seus próprios carros. Mas um novo estudo divulgado pela Union of Concerned Scientists na terça-feira (25) revelou que viagens no Uber e Lyft (rival da empresa nos EUA), causam um aumento médio de 69% na poluição climática.

O motivo é que essas corridas normalmente substituem viagens de baixo carbono, como ciclismo, transporte público e caminhada. Segundo o estudo, as empresas poderiam contribuir para reduzir essas emissões ao eletrificar as frotas de veículos ou incentivar os clientes a fazerem viagens em grupo.

"Para que as corridas contribuam para melhores resultados climáticos e de congestionamento, as viagens devem ser compartilhadas e elétricas, além de incentivar modos de baixas emissões, como transporte de massa, ciclismo e caminhada", diz o relatório.

Apesar das dificuldades, tanto a Uber como a Lyft mostraram já mostraram que estão comprometidas em reduzir a emissão de carbono.

As empresas tentaram promover as viagens compartilhadas, mas encontraram resistência dos clientes. Também mantêm esforços para emissão de bilhetes de transporte público integrados aos seus respectivos aplicativos, o que ainda se faz de forma lenta.

Já a implementação de serviços de compartilhamento de bicicletas e scooters estão sujeitos aos regulamentos e condições locais.

De acordo com o site The Verge, as empresas enviaram seus posicionamentos em relação ao resultado da pesquisa.

Uber

"Queremos que o Uber faça parte da solução para lidar com as mudanças climáticas, trabalhando com as cidades para ajudar a criar um futuro de transporte com baixo carbono. Para desbloquear as oportunidades que temos para reduzir as emissões, continuaremos investindo em produtos e advogando políticas que reduzam a posse de carros, promovam viagens mais comuns e apoiem uma maior adoção de bicicletas, scooters, veículos ecológicos e o uso de transporte público".

Lyft

"Este relatório, como muitos antes, faz alegações enganosas sobre o compartilhamento de carro. A Lyft incentiva o uso de eios compartilhados, foi a primeira empresa de viagens compartilhadas a colocar informações de transporte público em nosso aplicativo e, no ano ado, fez uma das maiores implantações isoladas de veículos elétricos no país. Estamos ansiosos para continuar esse trabalho em parceria com as cidades, para avançar no transporte compartilhado e sustentável".

SIGA TILT NAS REDES SOCIAIS