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

Espaço é o limite: Musk inicia plano de dar internet veloz ao mundo inteiro

6.fev.2018 - Elon Musk no Cabo Canaveral, na Flórida  - REUTERS/Joe Skipper
6.fev.2018 - Elon Musk no Cabo Canaveral, na Flórida Imagem: REUTERS/Joe Skipper

Janaína Garcia

Colaboração para o UOL

15/05/2019 16h26

Elon Musk não para. Desta vez, na cauda de sua empresa de foguetes, a SpaceX, o multimilionário fundador da Tesla e de um conglomerado tecnológico espera lançar na noite desta quarta-feira (15) o primeiro de 12 mil satélites Starlink que prometem cobrir a Terra com internet de alta velocidade.

A ação, revolucionária, deve acontecer entre as 22h30 e a meia-noite de hoje (entre 23h30 e 1h de quinta no Brasil), desde que sob boas condições meteorológicas, com o lançamento de um foguete Falcon 9 da base de Cabo Canaveral, na Flórida. Na ponta do foguete serão colocados 60 satélites projetados para testar um backbone (esquema de ligações centrais de um sistema de redes mais amplo) flutuante de internet batizado de Starlink.

O lançamento joga luz nas ações futuras de Musk em relação ao mundo digital: o Starlink tem previsão de ficar pronto só em 2027, com um total aproximado de 12 mil satélites - nada menos que seis vezes o total de espaçonaves operacionais que orbitam a Terra. A meta é ambiciosa: garantir internet de alta velocidade, baixa latência e economicamente ível ao redor do planeta, inclusive a áreas rurais ou remotas.

Os custos também são espaciais: US$ 10 bilhões ou mais, de acordo com o presidente e diretor de operações da SpaceX, Gwynne Shotwell, embora documentos vazados sugiram que que esse montante possa superar os US$ 30 bilhões/ano.

No último sábado (12), Musk tuitou: "Muito provavelmente vai dar errado na primeira missão", itiu, sem fornecer muitos detalhes sobre a operação envolvendo a Starlink.

Projeto pode afetar a vida de todo o mundo

Segundo o site "Business Insider", porém, especialistas estão animados. "Esta é a nova rede mais empolgante que já vimos em muito tempo", declarou Mark Handley, pesquisador de redes de computadores da University College, em Londres. Handley estudou e modelou a Starlink e definiu que o projeto pode afetar a vida de "potencialmente todo mundo".

O site "Engadget" detalhou um pouco mais como será a operação com o Falcon 9 e seus 60 satélites apertadinhos rumo à operação espacial. Cada um dos painéis planos envolvidos possui várias antenas de alto rendimento e um único solar. Cada satélite pesa em torno de 227 kg - muito pouco, para algo do tipo.

Empreendedor vida louca ou gênio incompreendido: quem é Elon Musk?

Leia mais

Embora pequenos, os satélites estão recheados de recursos operacionais, tais como propulsores alimentados por criptônio que auxiliarão, entre outras funções, a ajustar a posição em órbita e a manter a altitude pretendida. Além disso, cada satélite é dotado de um sistema de navegação Startracker, que permitirá que a SpaceX os aponte com precisão.

Como a quantidade de lixo espacial em órbita é considerável, mesmo na órbita inferior dos satélites, sempre há o risco de colisão. Pensando nisso, os satélites serão capazes de rastrear esses detritos e poderão evitá-los de forma autônoma. Alinhado a padrões de segurança bastante atuais, 95% de todos os componentes do projeto queimarão na atmosfera terrestre ao fim do ciclo de vida de cada satélite - ainda que a SpaceX planeje abranger 100% no futuro.