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

Bill Gates ignora Marte e diz que mundo deve parar de comer carne

TED/Divulgação
Imagem: TED/Divulgação

Marcella Duarte

Colaboração para Tilt

18/02/2021 13h20

Bill Gates, cofundador da Microsoft, anda com a língua afiada. Ele, que é conhecido por previsões certeiras, deu algumas declarações polêmicas nos últimos dias.

Em uma entrevista ao site MIT Technology Review, sobre seu novo livro "Como Evitar um Desastre Climático", ele disse que o mundo deve parar de comer carne animal, se quisermos barrar o aquecimento global e impedir uma iminente catástrofe.

Nosso futuro alimentar, segundo o bilionário, deve se basear em plantas e em carnes sintéticas, feitas em laboratório.

Gates, que se tornou um filantropo e ativista de causas humanitárias e ambientais, propõe que as nações desenvolvidas se tornem 100% vegetarianas o mais rápido possível. Os países mais pobres, por enquanto, não teriam como fazer o mesmo, devido ao custo ainda elevado desses alimentos.

Ele acredita que a indústria de proteínas vegetais está evoluindo, e as diferenças de textura, sabor e aspecto - criticadas por muitas pessoas que as comparam com o produto animal -, estão cada vez menores. E os preços também devem baixar com o aumento da demanda nos próximos anos.

Nossos hábitos alimentares têm consequências: a criação de gado é, ao lado da queima de combustíveis fósseis, a maior responsável pela emissão de gases do efeito estufa, principalmente o metano, na atmosfera.

O livro, que aborda caminhos para conter as mudanças climáticas e garantir a sobrevivência humana, tem lançamento no Brasil marcado para março.

Já no podcast Sway, do jornal The New York Times, além de promover o livro, Gates aproveitou para alfinetar um outro bilionário da tecnologia: Elon Musk, CEO da Tesla e da SpaceX, que sonha em colonizar Marte.

"Não sou uma 'pessoa de Marte'. Prefiro salvar a Terra do que fugir dela", disse. Segundo ele, há trabalhos muito mais importantes a serem feitos aqui na Terra, como redução das emissões de carbono nas indústrias e desenvolvimento e distribuição de vacinas para o coronavírus.

"Prefiro gastar meu dinheiro nessas coisas, que ajudam as pessoas na Terra. Não acho que foguetes sejam a solução."

Morde e assopra, ele também elogiou Musk no podcast, falando sobre os carros elétricos da Tesla. "Uma das maiores contribuições para a mudança climática que alguém já fez".

Mas frisou que desenvolver veículos com energia verde é relativamente fácil, comparado com o trabalho necessário para "limpar" indústrias, transporte marítimo, pecuária e outros setores.