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

Foguete da missão Ártemis resiste tempestade e mantém prazo de lançamento

Foguete SLS da missão Artemis com Lua cheia ao fundo - Nasa/Cory Huston
Foguete SLS da missão Artemis com Lua cheia ao fundo Imagem: Nasa/Cory Huston

De Tilt*, em São Paulo

12/11/2022 16h54

A Nasa confirmou que a missão não tripulada Artemis 1 — que marca o início do retorno da humanidade à Lua — não ará por mais adiamentos e terá outra tentativa de lançamento no prazo já estabelecido, de 16 de novembro. A janela de lançamento será de duas horas, e se inicia às 1h04 do horário local (3h04 no horário de Brasília).

Tanto integrantes da agência aeroespacial quanto entusiastas do assunto temiam que a missão fosse adiada outra vez, já que o SLS (Space Launch System ou Sistema de Lançamento Espacial) estava no módulo de lançamento quando foi atingido pela tempestade tropical Nicole, que impediu o lançamento marcado para o dia 14 de novembro.

A primeira tentativa aconteceu no dia 29 de agosto deste ano, mas foi adiada por um superaquecimento. Em 3 de setembro, mais um vazamento de combustível foi o culpado. Após reparos bem-sucedidos, se seguiram adiamentos devido a condições climáticas — época de furações na Flórida.

Os técnicos da instituição temiam que os ventos — que chegaram a 160 km/h — poderiam impactar nos sistemas e até mesmo causar danos internos ao SLS, o que levariam a mais adiamentos.

A confirmação veio pela declaração do associado da Nasa, Jim Free, que informou que o foguete precisava apenas de pequenos reparos.

"Nesse exato momento, nada está nos impedindo", afirmou o porta-voz da instituição em sua conta no Twitter.

Prazo apertado

Os técnicos da Nasa farão mais checagens padrões nos sistemas do SLS neste domingo (13), um procedimento padrão antes do lançamento. Mas é bem possível que as coisas não estejam tão boas para a agência, que pode perder os motores do foguete após tantos adiamentos.

Isso acontece porque os dois propulsores, construídos pela Northrop Grumman, vencem em 9 de dezembro e 14 de dezembro deste ano. Caso o SLS não seja lançado até lá, é possível que a Nasa precise recalcular prazos e realizar mais ajustes.

Isto também não é tudo: para o lançamento, a agência aeroespacial precisa de uma licença de exposição ambiental, que, para o caso da Artemis 1, também expira em 15 de dezembro. Se o foguete não for lançado até lá, é possível que a Nasa precise obter outra autorização — o que também faria com que o SLS asse mais tempo no chão.

(*) Com informações da matéria de Nicole D'Almeida