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

Elon Musk contra Jeff Bezos: entenda o embate dos bilionários pelo espaço

Wikimedia Commons
Imagem: Wikimedia Commons

De Paris

02/05/2021 13h41

Em busca da conquista do espaço, os bilionários Elon Musk e Jeff Bezos travam uma batalha implacável e repleta de golpes baixos.

Na noite de segunda-feira, Elon Musk publicou um tuíte particularmente sugestivo e com conotação sexual sobre um projeto de Jeff Bezos para desenvolver um dispositivo de pouso na lua para a Nasa, que acabou escolhendo a SpaceX, divisão espacial de Musk.

"É mais do que uma batalha pelo espaço", disse Dan Ives, analista da empresa. "É uma batalha de egos".

É "algo pessoal" entre os dois homens, que inauguraram suas empresas espaciais no início dos anos 2000, e estão no topo do ranking das grandes fortunas.

Jeff Bezos, de 57 anos, é o homem mais rico do mundo com 202 bilhões de dólares, enquanto Elon Musk, 48 anos, dono da Tesla e SpaceX, ocupa o terceiro lugar com US$ 167 bilhões, de acordo com a Forbes.

O desenvolvimento de projetos espaciais acontece por meio de contratos públicos bem-sucedidos, propostos principalmente pela Nasa e pelas Forças Armadas dos Estados Unidos, o que permite a estas empresas dispor de orçamentos consideráveis para desenvolver programas com fins comerciais.

Nesse aspecto, Elon Musk tem hoje uma clara vantagem. A SpaceX, com sua rede Starlink, colocou centenas de satélites em órbita com seu próprio equipamento. Jeff Bezos, que planeja investir 10 bilhões de dólares em sua constelação de satélites Kuiper, ainda não lançou nenhum satélite após ter sofrido atrasos no desenvolvimento de seu primeiro foguete.

A divisão Azure da Microsoft, especialista em computação remota, se juntou à SpaceX no final de 2020 em um projeto de 10 bilhões de dólares, após uma licitação do Pentágono vencida contra a Amazon, a gigante fundada por Bezos.

A SpaceX "adquiriu um certo grau de confiança com a Nasa", observa Xavier Pasco, diretor da Foundation for Strategic Research.

Assim, a empresa de Elon Musk garante o abastecimento regular da Estação Espacial Internacional (ISS) desde 2012, e transporta astronautas da Nasa e de outras agências.

Tribunais

"O simples fato de a SpaceX ser certificada para enviar astronautas é uma etapa muito importante", diz Pasco.

"A Blue Origin (empresa fundada por Bezos) não tem essa confiança, pois não está operacional", continua o especialista. Isso enfurece Bezos, forçado a questionar na justiça várias decisões.

Além da batalha dos egos, existe também a batalha financeira.

"Bezos e Musk sabem que o vencedor da próxima batalha espacial será coroado em um ou dois anos", diz Dan Ives. E o retorno financeiro desse enorme mercado realmente começará em 15 a 20 anos e pode chegar a várias centenas de bilhões de dólares, explica.